From 836e019db92b9871cba9d440c8159b35f79e1726 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 30 Mar 2023 09:32:42 +0800 Subject: [PATCH] 根据补贴记录,减少用户贡献值 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 62 +++++++++++++++++++++++++----- 1 files changed, 51 insertions(+), 11 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 658d9fd..12fa502 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -78,6 +78,7 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; private final MallMemberWalletMapper mallMemberWalletMapper; + private final MallMqRecordMapper mallMqRecordMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -343,6 +344,15 @@ orderInfo.setPayResult("1"); changeWallet(orderInfo.getId()); + /** + * 插入一条待处理记录 + * mq处理之后,更新状态 + */ + MallMqRecord mallMqRecord = new MallMqRecord(); + mallMqRecord.setOrderId(orderInfo.getId()); + mallMqRecord.setState(2); + mallMqRecord.setRetryTimes(2); + mallMqRecordMapper.insert(mallMqRecord); //发送补贴消息 agentProducer.sendPerkMoneyMsg(orderInfo.getId()); //发送代理自动升级消息 @@ -451,9 +461,14 @@ BigDecimal star = (mallGoods.getStar()==null ? BigDecimal.ZERO : mallGoods.getStar()) .multiply(new BigDecimal(orderItem.getCnt())); starSum = starSum.add(star); +// scoreSum = scoreSum.add( +// new BigDecimal(mallGoods.getPresentPrice()) +// .multiply(new BigDecimal(3)) +// .multiply(new BigDecimal(orderItem.getCnt())) +// .abs() +// .setScale(2,BigDecimal.ROUND_DOWN)); scoreSum = scoreSum.add( new BigDecimal(mallGoods.getPresentPrice()) - .multiply(new BigDecimal(3)) .multiply(new BigDecimal(orderItem.getCnt())) .abs() .setScale(2,BigDecimal.ROUND_DOWN)); @@ -481,7 +496,8 @@ starSum, MoneyFlowTypeEnum.STAR.getValue(), orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue()); + FlowTypeEnum.STAR.getValue(), + 2); } if(starGet.compareTo(star) > 0){ BigDecimal subtract = starGet.subtract(star); @@ -494,7 +510,8 @@ starSum, MoneyFlowTypeEnum.STAR.getValue(), orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue()); + FlowTypeEnum.STAR.getValue(), + 2); } }else{ mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); @@ -503,7 +520,8 @@ starSum, MoneyFlowTypeEnum.STAR.getValue(), orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue()); + FlowTypeEnum.STAR.getValue(), + 2); } } } @@ -511,13 +529,29 @@ * 增加补贴额度 */ if (scoreSum.compareTo(BigDecimal.ZERO) > 0) { + MallMember mallMember = memberMapper.selectById(memberId); + if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){ + scoreSum = scoreSum.multiply(new BigDecimal(3)); + } + if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3 + &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){ + scoreSum = scoreSum.multiply(new BigDecimal(2.8)); + } + if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){ + scoreSum = scoreSum.multiply(new BigDecimal(2.5)); + } memberWalletService.add(scoreSum, memberId, "totalScore"); mallMoneyFlowService.addMoneyFlow( memberId, scoreSum, MoneyFlowTypeEnum.TOTAL_SCORE.getValue(), orderInfo.getOrderNo(), - FlowTypeEnum.TOTAL_SCORE.getValue()); + "", + scoreSum.toString(), + memberId, + 1, + FlowTypeEnum.TOTAL_SCORE.getValue(), + 2); } } @@ -851,7 +885,13 @@ BigDecimal total = BigDecimal.ZERO; for (AddOrderItemDto item : addOrderDto.getItems()) { MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); + if(ObjectUtil.isEmpty(sku)){ + throw new FebsException("商品已更新,请重新下单"); + } MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); + if(ObjectUtil.isEmpty(mallGoods)){ + throw new FebsException("商品已更新,请重新下单"); + } /** * 贡献点判断 */ @@ -868,6 +908,12 @@ } BigDecimal score = ObjectUtil.isEmpty(addOrderDto.getScore()) ? BigDecimal.ZERO : addOrderDto.getScore(); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal prizeScore = mallMemberWallet.getPrizeScore(); + if(prizeScore.compareTo(score) < 0){ + throw new FebsException("积分不足"); + } if(hasTc){ //系统设置的个人贡献点最大值 DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( @@ -876,15 +922,9 @@ if(ObjectUtil.isNotEmpty(starGetDic)){ String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue(); BigDecimal starGet = new BigDecimal(starGetStr); - - MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); BigDecimal star = new BigDecimal(mallMemberWallet.getStar()); if(starGet.compareTo(BigDecimal.ZERO) != 0 && starGet.compareTo(star) <= 0){ throw new FebsException("无法购买套餐"); - } - BigDecimal prizeScore = mallMemberWallet.getPrizeScore(); - if(prizeScore.compareTo(score) < 0){ - throw new FebsException("积分不足"); } } } -- Gitblit v1.9.1