From 5cb35f00b996b09c749c909d54df45bf526645bc Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 29 Mar 2023 20:14:33 +0800
Subject: [PATCH] 根据补贴记录,减少用户贡献值
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 47 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..0659ef7 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,25 @@
* 增加补贴额度
*/
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());
+ FlowTypeEnum.TOTAL_SCORE.getValue(),
+ 2);
}
}
@@ -851,7 +881,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 +904,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 +918,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