From 13a83a82de868164ba4eb7d109e978d386df8ffa Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Mon, 24 Apr 2023 22:24:48 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 98 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 86 insertions(+), 12 deletions(-)
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 c755ee4..d5d226e 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
@@ -7,8 +7,11 @@
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -30,21 +33,9 @@
private final MallMemberMapper mallMemberMapper;
private final MallOrderInfoMapper mallOrderInfoMapper;
private final MallOrderItemMapper mallOrderItemMapper;
- private final MallGoodsMapper mallGoodsMapper;
private final IApiMallMemberWalletService walletService;
private final IMallMoneyFlowService moneyFlowService;
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
- private final MallMoneyFlowMapper mallMoneyFlowMapper;
- private final MallAchieveRecordMapper mallAchieveRecordMapper;
- private final RedisUtils redisUtils;
- private final MallMemberWalletMapper mallMemberWalletMapper;
- private final IAgentService iAgentService;
- private final IMallMoneyFlowService mallMoneyFlowService;
- private final MallMqRecordMapper mallMqRecordMapper;
- private final AgentProducer agentProducer;
- private final MallScoreRecordMapper mallScoreRecordMapper;
- private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
- private final MallScoreVoucherMapper mallScoreVoucherMapper;
private final MallSystemSettingMapper mallSystemSettingMapper;
@@ -406,4 +397,87 @@
log.info("###全网分红执行--end--###");
}
+
+ @Override
+ public void orderBonus(Long orderId) {
+ log.info("###订单分红消息开始执行###");
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(orderId);
+ if (orderInfo.getOrderType() == 2) {
+ log.info("积分订单无返利");
+ return;
+ }
+
+ List<MallOrderItem> items = mallOrderInfoMapper.getMallOrderItemByOrderId(orderId);
+
+ if (CollUtil.isEmpty(items)) {
+ return;
+ }
+
+
+ DataDictionaryCustom allInternetBonusDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.ALL_INTERNET_BONUS.getType(), DataDictionaryEnum.ALL_INTERNET_BONUS.getCode());
+ DataDictionaryCustom agentBonusDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_ALL_BONUS.getType(), DataDictionaryEnum.AGENT_ALL_BONUS.getCode());
+ DataDictionaryCustom partnerBonusDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PARNER_ALL_BONUS.getType(), DataDictionaryEnum.PARNER_ALL_BONUS.getCode());
+
+ String id = RandomUtil.randomNumbers(16);
+
+ // 全网分红
+ BigDecimal totalBonus = BigDecimal.ZERO;
+
+ // 代理/股东分红
+ BigDecimal agentTotalBonus = BigDecimal.ZERO;
+ BigDecimal hundred = new BigDecimal(100);
+ for (MallOrderItem item : items) {
+ // 减去成本后算收益
+ BigDecimal amount = item.getPrice().subtract(item.getCostPrice()).multiply(BigDecimal.valueOf(item.getCnt()));
+ if (amount.compareTo(BigDecimal.ZERO) < 1) {
+ continue;
+ }
+
+ if (item.getIsNormal() == 2) {
+ BigDecimal bonus = amount.multiply(BigDecimal.valueOf(item.getNormalBonus()).divide(hundred, 2, RoundingMode.HALF_UP));
+ log.info("{}-普通商品分红:{}, 明细ID:{}", id, bonus, item.getId());
+
+ totalBonus = totalBonus.add(bonus);
+ } else {
+ BigDecimal bonus = amount.multiply(new BigDecimal(allInternetBonusDic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
+ log.info("{}-套餐全网分红:{}, 明细ID:{}", id, bonus, item.getId());
+
+ totalBonus = totalBonus.add(bonus);
+
+
+ BigDecimal agentBonus = amount.multiply(new BigDecimal(agentBonusDic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
+ log.info("{}-套餐代理分红:{}, 明细ID:{}", id, agentBonus, item.getId());
+
+ BigDecimal partnerBonus = amount.multiply(new BigDecimal(partnerBonusDic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
+ log.info("{}-套餐股东分红:{}, 明细ID:{}", id, partnerBonus, item.getId());
+
+ agentTotalBonus = agentTotalBonus.add(agentBonus).add(partnerBonus);
+ }
+ }
+
+ boolean flag = false;
+
+ int index = 0;
+ while (!flag) {
+ MallSystemSetting setting = mallSystemSettingMapper.selectById(1L);
+ if (setting == null) {
+ return;
+ }
+
+ setting.setAllBonus(setting.getAllBonus().add(totalBonus));
+ setting.setAgentBonus(setting.getAgentBonus().add(agentTotalBonus));
+ setting.setRevision(setting.getRevision() + 1);
+
+ LambdaQueryWrapper<MallSystemSetting> update = new LambdaQueryWrapper<>();
+ update.eq(MallSystemSetting::getId, setting.getId())
+ .eq(MallSystemSetting::getRevision, setting.getRevision());
+ int i = mallSystemSettingMapper.update(setting, update);
+ if (i > 0 || index > 2) {
+ flag = true;
+ }
+ index++;
+ }
+
+ log.info("###订单分红消息结束执行###");
+ }
}
--
Gitblit v1.9.1