Commit d604c67c authored by 邓吉芬's avatar 邓吉芬

优化

parent c37d9e37
...@@ -3,7 +3,7 @@ package com.miya.draw.manager; ...@@ -3,7 +3,7 @@ package com.miya.draw.manager;
import cn.hutool.core.bean.copier.BeanCopier; import cn.hutool.core.bean.copier.BeanCopier;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import com.miya.draw.config.business.BusinessConfig; import com.miya.draw.config.business.BusinessConfigImpl;
import com.miya.draw.config.constant.ConStants; import com.miya.draw.config.constant.ConStants;
import com.miya.draw.config.exception.BusinessException; import com.miya.draw.config.exception.BusinessException;
import com.miya.draw.entity.Account; import com.miya.draw.entity.Account;
...@@ -43,7 +43,7 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -43,7 +43,7 @@ public class DrawManagerImpl implements IDrawManager {
private IAccountService accountService; private IAccountService accountService;
@Autowired @Autowired
private BusinessConfig businessConfig; private BusinessConfigImpl businessConfigImpl;
@Autowired @Autowired
private IAccountPrizeService accountPrizeService; private IAccountPrizeService accountPrizeService;
...@@ -80,32 +80,32 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -80,32 +80,32 @@ public class DrawManagerImpl implements IDrawManager {
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime start = nowTime.minusDays(3); LocalDateTime start = nowTime.minusDays(3);
LocalDateTime end = LocalDateTimeUtil.endOfDay(nowTime); LocalDateTime end = LocalDateTimeUtil.endOfDay(nowTime);
Integer maxDrawCountLimit = businessConfig.getDrawMaxCount(); Integer maxDrawCountLimit = businessConfigImpl.getDrawMaxCount();
Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(request.getPhone(),businessConfig.getActivityId(), start, end); Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(request.getPhone(), businessConfigImpl.getActivityId(), start, end);
List<String> storeIdList = activityStoreService.listAllActivityStoreId(); List<String> storeIdList = activityStoreService.listAllActivityStoreId();
List<String> goodCodeList = activityGoodsService.listAllActivityGoods(); List<String> goodCodeList = activityGoodsService.listAllActivityGoods();
List<SyncTrade> buyGoodList = syncTradeService.listCanDrawGoods(request.getPhone(), start, end, storeIdList, goodCodeList); List<SyncTrade> buyGoodList = syncTradeService.listCanDrawGoods(request.getPhone(), start, end, storeIdList, goodCodeList);
BigDecimal buyTotal = gainBuyTotal(buyGoodList); BigDecimal buyTotal = gainBuyTotal(buyGoodList);
Long purchasedAmount = buyTotal.multiply(BigDecimal.valueOf(100)).longValue(); Long purchasedAmount = buyTotal.multiply(BigDecimal.valueOf(100)).longValue();
Integer drawCountTotal =0; Integer drawCountTotal =0;
if(businessConfig.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){ if(businessConfigImpl.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){
buyTotal = getAmountTotal(buyGoodList); buyTotal = getAmountTotal(buyGoodList);
drawCountTotal = buyTotal.divide(new BigDecimal(businessConfig.getAmountunit()), RoundingMode.DOWN).intValue(); drawCountTotal = buyTotal.divide(new BigDecimal(businessConfigImpl.getAmountunit()), RoundingMode.DOWN).intValue();
//足量抽奖 //足量抽奖
}else{ }else{
drawCountTotal = buyTotal.divide(new BigDecimal(businessConfig.getDrawCountUnit()), RoundingMode.DOWN).intValue(); drawCountTotal = buyTotal.divide(new BigDecimal(businessConfigImpl.getDrawCountUnit()), RoundingMode.DOWN).intValue();
} }
drawCountTotal = Math.min(businessConfig.getDrawMaxCount(), drawCountTotal); drawCountTotal = Math.min(businessConfigImpl.getDrawMaxCount(), drawCountTotal);
drawCountTotal = drawCountTotal - alreadyDrawCount; drawCountTotal = drawCountTotal - alreadyDrawCount;
Integer joinActivityPeopleNum = accountPrizeService.countJoinActivityPeople(businessConfig.getActivityId()); Integer joinActivityPeopleNum = accountPrizeService.countJoinActivityPeople(businessConfigImpl.getActivityId());
return DrawModel.builder() return DrawModel.builder()
.alreadyDrawCount(alreadyDrawCount) .alreadyDrawCount(alreadyDrawCount)
.drawCountTotal(drawCountTotal>=0?drawCountTotal:0) .drawCountTotal(drawCountTotal>=0?drawCountTotal:0)
.maxDrawCountLimit(maxDrawCountLimit) .maxDrawCountLimit(maxDrawCountLimit)
.numOfDrawCount(Math.max(0, maxDrawCountLimit - alreadyDrawCount)) .numOfDrawCount(Math.max(0, maxDrawCountLimit - alreadyDrawCount))
.purchasedAmount(purchasedAmount) .purchasedAmount(purchasedAmount)
.taxAmountCache(Math.max(0L, BigDecimal.valueOf(businessConfig.getDrawMaxMoney()).subtract(buyTotal).multiply(BigDecimal.valueOf(100)).longValue())) .taxAmountCache(Math.max(0L, BigDecimal.valueOf(businessConfigImpl.getDrawMaxMoney()).subtract(buyTotal).multiply(BigDecimal.valueOf(100)).longValue()))
.numOfJoinActivityPeople(joinActivityPeopleNum) .numOfJoinActivityPeople(joinActivityPeopleNum)
.build(); .build();
} }
...@@ -141,7 +141,7 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -141,7 +141,7 @@ public class DrawManagerImpl implements IDrawManager {
@Override @Override
public List<DrawModel> listMinePrizeList(String phone) { public List<DrawModel> listMinePrizeList(String phone) {
List<AccountPrize> prizeList = accountPrizeService.listMinePrize(phone,businessConfig.getActivityId()); List<AccountPrize> prizeList = accountPrizeService.listMinePrize(phone, businessConfigImpl.getActivityId());
return getDrawModels(prizeList); return getDrawModels(prizeList);
} }
...@@ -182,24 +182,24 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -182,24 +182,24 @@ public class DrawManagerImpl implements IDrawManager {
int drawCountTotal =0; int drawCountTotal =0;
//判断抽奖方式 //判断抽奖方式
//满额抽奖 //满额抽奖
if(businessConfig.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){ if(businessConfigImpl.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){
BigDecimal buyTotal = getAmountTotal(buyGoodList); BigDecimal buyTotal = getAmountTotal(buyGoodList);
drawCountTotal = buyTotal.divide(new BigDecimal(businessConfig.getAmountunit()), RoundingMode.DOWN).intValue(); drawCountTotal = buyTotal.divide(new BigDecimal(businessConfigImpl.getAmountunit()), RoundingMode.DOWN).intValue();
drawCountTotal = Math.min(businessConfig.getDrawMaxCount(), drawCountTotal); drawCountTotal = Math.min(businessConfigImpl.getDrawMaxCount(), drawCountTotal);
if (drawCountTotal <= 0) { if (drawCountTotal <= 0) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额不足,已无抽奖次数"); throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额不足,已无抽奖次数");
} }
//足量抽奖 //足量抽奖
}else{ }else{
BigDecimal buyTotal = gainBuyTotal(buyGoodList); BigDecimal buyTotal = gainBuyTotal(buyGoodList);
drawCountTotal = buyTotal.divide(new BigDecimal(businessConfig.getDrawCountUnit()), RoundingMode.DOWN).intValue(); drawCountTotal = buyTotal.divide(new BigDecimal(businessConfigImpl.getDrawCountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = Math.min(businessConfig.getDrawMaxCount(), drawCountTotal); drawCountTotal = Math.min(businessConfigImpl.getDrawMaxCount(), drawCountTotal);
if (drawCountTotal <= 0) { if (drawCountTotal <= 0) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,您购买的活动商品不足,已无抽奖次数"); throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,您购买的活动商品不足,已无抽奖次数");
} }
} }
Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(phone,businessConfig.getActivityId(), start, end); Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(phone, businessConfigImpl.getActivityId(), start, end);
// 可抽奖次数> 已抽奖次数 // 可抽奖次数> 已抽奖次数
Prize prize; Prize prize;
AccountPrize accountPrize; AccountPrize accountPrize;
...@@ -221,7 +221,7 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -221,7 +221,7 @@ public class DrawManagerImpl implements IDrawManager {
} }
// 记录抽奖信息 // 记录抽奖信息
accountPrize = new AccountPrize(); accountPrize = new AccountPrize();
accountPrize.setActivityId(businessConfig.getActivityId()); accountPrize.setActivityId(businessConfigImpl.getActivityId());
accountPrize.setPrizeId(prize.getId()); accountPrize.setPrizeId(prize.getId());
accountPrize.setAccountName(phone); accountPrize.setAccountName(phone);
accountPrize.setAccountPhone(phone); accountPrize.setAccountPhone(phone);
...@@ -233,7 +233,7 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -233,7 +233,7 @@ public class DrawManagerImpl implements IDrawManager {
otherManager.sendCoupon(prize.getCouponId(), phone, accountPrize.getId()); otherManager.sendCoupon(prize.getCouponId(), phone, accountPrize.getId());
} }
} else { } else {
if (alreadyDrawCount >= businessConfig.getDrawMaxCount()) { if (alreadyDrawCount >= businessConfigImpl.getDrawMaxCount()) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的今日可抽奖次数已用完,请明日再来哦"); throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的今日可抽奖次数已用完,请明日再来哦");
} else { } else {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额或购买活动商品不足,已无抽奖次数"); throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额或购买活动商品不足,已无抽奖次数");
...@@ -255,7 +255,7 @@ public class DrawManagerImpl implements IDrawManager { ...@@ -255,7 +255,7 @@ public class DrawManagerImpl implements IDrawManager {
@Override @Override
public List<DrawModel> listAllWinningInfo(Integer size) { public List<DrawModel> listAllWinningInfo(Integer size) {
List<AccountPrize> prizeList = accountPrizeService.listAllWinningInfo(size,businessConfig.getActivityId()); List<AccountPrize> prizeList = accountPrizeService.listAllWinningInfo(size, businessConfigImpl.getActivityId());
return getDrawModels(prizeList); return getDrawModels(prizeList);
} }
......
...@@ -2,13 +2,12 @@ package com.miya.draw.service.impl; ...@@ -2,13 +2,12 @@ package com.miya.draw.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.miya.draw.config.business.BusinessConfig; import com.miya.draw.config.business.BusinessConfigImpl;
import com.miya.draw.config.constant.ConStants; import com.miya.draw.config.constant.ConStants;
import com.miya.draw.entity.ActivityGoods; import com.miya.draw.entity.ActivityGoods;
import com.miya.draw.enums.YesOrNoEnum; import com.miya.draw.enums.YesOrNoEnum;
import com.miya.draw.mapper.ActivityGoodsMapper; import com.miya.draw.mapper.ActivityGoodsMapper;
import com.miya.draw.service.IActivityGoodsService; import com.miya.draw.service.IActivityGoodsService;
import com.netflix.discovery.converters.Auto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -41,7 +40,7 @@ public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsMapper, A ...@@ -41,7 +40,7 @@ public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsMapper, A
private RedisTemplate<String, Object> redisTemplate; private RedisTemplate<String, Object> redisTemplate;
@Resource @Resource
private BusinessConfig businessConfig; private BusinessConfigImpl businessConfigImpl;
@Override @Override
public List<String> listAllActivityGoods() { public List<String> listAllActivityGoods() {
...@@ -56,7 +55,7 @@ public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsMapper, A ...@@ -56,7 +55,7 @@ public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsMapper, A
} }
LambdaQueryWrapper<ActivityGoods> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ActivityGoods> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ActivityGoods::getValidState, YesOrNoEnum.YES.getCode()); wrapper.eq(ActivityGoods::getValidState, YesOrNoEnum.YES.getCode());
wrapper.eq(ActivityGoods::getActivityId,businessConfig.getActivityId()); wrapper.eq(ActivityGoods::getActivityId, businessConfigImpl.getActivityId());
List<ActivityGoods> activityGoodsList = activityGoodsMapper.selectList(wrapper); List<ActivityGoods> activityGoodsList = activityGoodsMapper.selectList(wrapper);
if (CollectionUtils.isNotEmpty(activityGoodsList)) { if (CollectionUtils.isNotEmpty(activityGoodsList)) {
goodList = activityGoodsList.stream().map(ActivityGoods::getCode).collect(Collectors.toList()); goodList = activityGoodsList.stream().map(ActivityGoods::getCode).collect(Collectors.toList());
......
spring:
datasource:
dynamic:
hikari:
connection-timeout: 5000
idleTimeout: 600000
maxLifetime: 1800000
min-idle: 10
max-pool-size: 20
primary: db1
strict: true
datasource:
db1: #mobox
url: jdbc:p6spy:mysql://47.98.165.99:3637/draw?characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
username: mycpos
password: mycpos@888
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
type: com.zaxxer.hikari.HikariDataSource
db2: #十足
url: jdbc:p6spy:mysql://202.107.222.149:6306/szapplets?characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
username: sz_root
password: Sz20010526
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
type: com.zaxxer.hikari.HikariDataSource
redis:
database: 0
host: 47.98.165.99
port: 6379
password: redis@888
lettuce:
pool:
max-idle: 20
max-wait: 300000 #连接最大阻塞时间
max-active: 30
min-idle: 10
knife4j:
basic:
enable: true
#配置ApiBoot Logging 日志组件
api:
boot:
logging:
show-console-log: true
#实现美化打印请求日志
format-console-log-json: true
saas:
url: https://hhsaas-test.miyapay.com
hhappId: wx5e87437bdd346c77
appId: wx273772ce26499402
form: cocaCola
ahas:
namespace: mboxdev
license: b64d4c6c8ee9458e916e4bd2ab6d5a4a
xxl:
job:
admin:
addresses: http://xxljob.dev.miyahub.net
executor:
appname: xxl-job-miya-draw
ip:
port: 6149
custom:
flag: true
allow:
origins: "*"
### eureka 配置 ###
eureka:
instance:
#【默认为false】优先使用内网IP,避免配置本地host
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://120.79.123.116:8661/eureka/
#【默认为30秒】eureka客户端间隔多久去拉取服务注册信息
registry-fetch-interval-seconds: 3
\ No newline at end of file
spring:
datasource:
dynamic:
hikari:
connection-timeout: 5000
idleTimeout: 600000
maxLifetime: 1800000
min-idle: 10
max-pool-size: 20
primary: db1
strict: true
datasource:
db1:
url: jdbc:mysql://rm-bp15h28bq72fbw407.mysql.rds.aliyuncs.com:3306/drawxuehuapijiu?characterEncoding=UTF-8&useSSL=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
username: draw
password: sACSFEgGEYcWXNDeyr74
driver-class-name: com.mysql.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
db2: #十足
url: jdbc:mysql://202.107.222.149:6306/szapplets?characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
username: sz_root
password: Sz20010526
driver-class-name: com.mysql.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
redis:
database: 0
host: r-bp1e52ee6d76d334.redis.rds.aliyuncs.com
port: 6379
password:
lettuce:
pool:
max-idle: 20
max-wait: 300000 #连接最大阻塞时间
max-active: 30
min-idle: 10
knife4j:
basic:
enable: false
#配置ApiBoot Logging 日志组件
api:
boot:
logging:
show-console-log: true
#实现美化打印请求日志
format-console-log-json: false
# 发券
saas:
url: https://saas-merchant.miyapay.com
hhappId: wx743313e7a4740003
appId: wx273772ce26499402
form: sz
# 高防护
ahas:
namespace: default
license: b64d4c6c8ee9458e916e4bd2ab6d5a4a
xxl:
job:
admin:
addresses: http://172.16.115.251:6013,http://172.16.115.252:6013
executor:
appname: xxl-job-miya-draw
ip:
port: 6149
custom:
flag: true
allow:
origins: "https://hh-oss-html.miyapay.com"
### eureka 配置 ###
eureka:
instance:
#【默认为false】优先使用内网IP,避免配置本地host
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://172.16.115.216:8761/eureka/,http://172.16.115.217:8761/eureka/
#【默认为30秒】eureka客户端间隔多久去拉取服务注册信息
registry-fetch-interval-seconds: 3
spring:
application:
name: draw
cloud:
nacos:
discovery:
server-addr: 172.16.116.74:28100,172.16.116.75:28100,172.16.116.76:28100
namespace: prod
config:
server-addr: 172.16.116.74:28100,172.16.116.75:28100,172.16.116.76:28100
namespace: prod
group: SAAS-CLOUD
prefix: ${spring.application.name}
file-extension: yaml
encode: UTF-8
# 引入扩展配置
extension-configs:
- data-id: draw-bussiness.yaml
group: EXAMPLE_GROUP
refresh: true
server:
port: 6048
biz-logging:
path: ./logs/${spring.application.name}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment