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/rabbit/enumerates/RabbitQueueEnum.java | 4 +
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java | 21 +++++++
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 10 +++
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 9 ++-
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 98 ++++++++++++++++++++++++++++----
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 1
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 6 ++
src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java | 2
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java | 2
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 2
11 files changed, 141 insertions(+), 16 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
index 7079411..e1f7784 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -164,4 +164,25 @@
}
//强制卖出 end
+
+ /**
+ * 订单分红
+ * @return
+ */
+ //订单分红 start
+ @Bean
+ public DirectExchange orderBonusExchange() {
+ return new DirectExchange(RabbitQueueEnum.ORDER_BONUS.getExchange());
+ }
+
+ @Bean
+ public Queue orderBonusQueue() {
+ return new Queue(QueueConstants.ORDER_BONUS);
+ }
+
+ @Bean
+ public Binding orderBonusBind() {
+ return BindingBuilder.bind(orderBonusQueue()).to(orderBonusExchange()).with(RabbitQueueEnum.ORDER_BONUS.getRoute());
+ }
+ //订单分红 end
}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
index 00cdf65..87e697a 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -33,7 +33,7 @@
return strs;
}
- public int getLevelCode(String Level){
+ public static int getLevelCode(String Level){
int codeOne = 0;
for (MemberLevelEnum value : MemberLevelEnum.values()) {
if(value.type.equals(Level)){
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java b/src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java
index 357b52c..be25b12 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java
@@ -21,4 +21,6 @@
private BigDecimal allBonus;
private BigDecimal agentBonus;
+
+ private Integer revision;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
index d2dbc4c..79605fa 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -18,4 +18,6 @@
void agentProfit(Integer type);
void allInternetProfit();
+
+ void orderBonus(Long orderId);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index 343bd91..a74ef42 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -101,9 +101,12 @@
}
MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
- parentMember.setChildNodeCnt(parentNode.CHILD.size());
- parentMember.setLevel(dic.getCode());
- memberMapper.updateById(parentMember);
+ int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel());
+ if (Integer.parseInt(dic.getValue()) > levelCode) {
+ parentMember.setChildNodeCnt(parentNode.CHILD.size());
+ parentMember.setLevel(dic.getCode());
+ memberMapper.updateById(parentMember);
+ }
}
/**
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 571b04f..37608dc 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
@@ -374,6 +374,8 @@
agentProducer.sendAutoLevelUpMsg(member.getId());
//发送直推返利消息
agentProducer.sendOrderReturn(orderInfo.getId());
+ // 发送分红消息
+ agentProducer.sendOrderBonus(orderInfo.getId());
break;
case "4":
if (orderInfo.getOrderType() != 2) {
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("###订单分红消息结束执行###");
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
index 374da9b..2decbc2 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -10,6 +10,7 @@
public static final String AGENT_AUTO_LEVEL_UP = "meye_queue_agent_auto_level_up";
public static final String AGENT_RETURN_MONEY = "meye_queue_agent_return_money";
public static final String ORDER_RETURN_MONEY = "meye_queue_order_return_money";
+ public static final String ORDER_BONUS = "meye_queue_order_bonus";
/**
* 补贴金额 ,
* 分享补贴,星级补贴
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index dfd775b..8036bf5 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -58,4 +58,14 @@
}
}
+ @RabbitListener(queues = QueueConstants.ORDER_BONUS)
+ public void calOrderBonus(String orderId) {
+ log.info("收到订单分红消息:{}", orderId);
+ try {
+ memberProfitService.orderBonus(Long.parseLong(orderId));
+ } catch (Exception e) {
+ log.error("订单分红消息异常:", e);
+ }
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
index 831ca17..8e3e72a 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -24,6 +24,10 @@
"meye_route_key_order_return_money",
"meye_queue_order_return_money"),
+ ORDER_BONUS("meye_exchange_order_bonus",
+ "meye_route_key_order_bonus",
+ "meye_queue_order_bonus"),
+
PERK_MONEY("meye_exchange_perk_money",
"meye_route_key_perk_money",
"meye_queue_perk_money"),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index e44c1a2..a7552a4 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -86,4 +86,10 @@
log.info("发送强制卖出消息,价格:{}",value);
rabbitTemplate.convertAndSend(RabbitQueueEnum.FORCE_VOUCHER_SALE.getExchange(), RabbitQueueEnum.FORCE_VOUCHER_SALE.getRoute(),value);
}
+
+
+ public void sendOrderBonus(Long orderId) {
+ log.info("发送订单分红消息:{}", orderId);
+ rabbitTemplate.convertAndSend(RabbitQueueEnum.ORDER_BONUS.getExchange(), RabbitQueueEnum.ORDER_BONUS.getRoute(), orderId);
+ }
}
--
Gitblit v1.9.1