From bd034b20e86824436e9a35ba407a8e626c67f210 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 08 Aug 2022 16:31:10 +0800 Subject: [PATCH] 20220808 --- src/main/resources/templates/febs/views/index.html | 16 ++++++++ src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 2 src/main/java/cc/mrbird/febs/system/controller/LoginController.java | 4 ++ src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java | 27 +++++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 21 ++++++++-- 5 files changed, 65 insertions(+), 5 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java index 9268dd7..d560d5d 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java @@ -91,7 +91,7 @@ PRIZE(17), /** - * 抽奖 + * 积分池收益 */ SCORE_POOL(18); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java index 203a7bd..326cfa4 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java @@ -4,6 +4,7 @@ import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; @@ -162,6 +163,19 @@ iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId()); mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), amount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); + + //积分池减少对应的数值 + String redisKey = "scorePool"; + String scorePoolRedis = redisUtils.getString(redisKey); + if(StrUtil.isBlank(scorePoolRedis)){ + redisUtils.set(redisKey,0,0L); + } + BigDecimal scorePoolOld = new BigDecimal(redisUtils.getString(redisKey)); + if(scorePoolOld.compareTo(amount) < 0){ + redisUtils.set(redisKey,0,0L); + }else{ + redisUtils.set(redisKey,scorePoolOld.subtract(amount).intValue(),0L); + } } MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation(); @@ -199,6 +213,7 @@ return new FebsResponse().success(); } + private final RedisUtils redisUtils; @Override public FebsResponse refundConfirm(Long id) { MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id); @@ -228,6 +243,18 @@ BigDecimal refundAmount = mallOrderRefund.getAmount(); //用户钱包增加对应的余额 iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId()); + //积分池减少对应的数值 + String redisKey = "scorePool"; + String scorePoolRedis = redisUtils.getString(redisKey); + if(StrUtil.isBlank(scorePoolRedis)){ + redisUtils.set(redisKey,0,0L); + } + BigDecimal scorePoolOld = new BigDecimal(redisUtils.getString(redisKey)); + if(scorePoolOld.compareTo(refundAmount) < 0){ + redisUtils.set(redisKey,0,0L); + }else{ + redisUtils.set(redisKey,scorePoolOld.subtract(refundAmount).intValue(),0L); + } //新增一条资金流水 mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java index c1ad6f2..65656f4 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java @@ -49,6 +49,8 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallMoneyFlowMapper mallMoneyFlowMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; + private final RedisUtils redisUtils; + private final MallMemberWalletMapper mallMemberWalletMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -481,8 +483,6 @@ log.info("#####==店补/董事==end==######"); } - private final RedisUtils redisUtils; - @Override public void scorePool() { log.info("#####==积分池==start==######"); @@ -517,8 +517,21 @@ return; } for(MallMember mallMember : mallMembers){ - walletService.add(income, mallMember.getId(), "score"); - moneyFlowService.addMoneyFlow(mallMember.getId(), income, MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.SCORE.getValue()); + /* + 平分成佣金,一比一减少赠送积分 + 如果没有赠送积分,则平分0 + */ + BigDecimal outCome = BigDecimal.ZERO; + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); + if(mallMemberWallet.getScore().compareTo(income) < 0){ + outCome = new BigDecimal(mallMemberWallet.getScore().intValue()); + }else{ + outCome = income; + } + walletService.add(outCome, mallMember.getId(), "commission"); + walletService.reduce(outCome, mallMember.getId(), "score"); + moneyFlowService.addMoneyFlow(mallMember.getId(), outCome, MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.COMMISSION.getValue()); + moneyFlowService.addMoneyFlow(mallMember.getId(), outCome.negate(), MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.SCORE.getValue()); } } log.info("#####==积分池==end==######"); diff --git a/src/main/java/cc/mrbird/febs/system/controller/LoginController.java b/src/main/java/cc/mrbird/febs/system/controller/LoginController.java index 81f7b7f..001c7a5 100644 --- a/src/main/java/cc/mrbird/febs/system/controller/LoginController.java +++ b/src/main/java/cc/mrbird/febs/system/controller/LoginController.java @@ -9,6 +9,7 @@ import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.service.ValidateCodeService; import cc.mrbird.febs.common.utils.Md5Util; +import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.mapper.MallAchieveRecordMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; @@ -51,6 +52,7 @@ private final MallMemberMapper mallMemberMapper; private final MallOrderInfoMapper mallOrderInfoMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; + private final RedisUtils redisUtils; @PostMapping("login") @Limit(key = "login", period = 60, count = 10, name = "登录接口", prefix = "limit") @@ -98,6 +100,8 @@ // Long todayIp = this.loginLogService.findTodayIp(); // data.put("todayIp", todayIp); + //积分池数据 + data.put("scorePool",redisUtils.get("scorePool")); //支付统计 data.put("wechatPay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.WECHAT.getName(), OrderStatusEnum.FINISH.getValue())); data.put("alipayPay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.ALIPAY.getName(), OrderStatusEnum.FINISH.getValue())); diff --git a/src/main/resources/templates/febs/views/index.html b/src/main/resources/templates/febs/views/index.html index 25a1f97..a4b1aa7 100644 --- a/src/main/resources/templates/febs/views/index.html +++ b/src/main/resources/templates/febs/views/index.html @@ -276,6 +276,22 @@ </div> </div> + <div class="layui-card-body layui-anim layui-anim-fadein"> + <div class="layui-row"> + <div class="m-title">积分池</div> + <div class="layui-row layui-col-space15"> + <div class="layui-col-md3"> + <div class="layui-panel"> + <div class="box"> + <p class="name">剩余积分</p> + <p class="num"><span id="scorePool"></span></p> + </div> + </div> + </div> + </div> + </div> + </div> + </div> </div> </div> -- Gitblit v1.9.1