From a1b204fd4c5b713a53b464e3f98e5372e1eebf66 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 24 Mar 2023 11:50:53 +0800
Subject: [PATCH] 后台修改
---
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 129 ++++++++++++++++++++++++------------------
1 files changed, 74 insertions(+), 55 deletions(-)
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 e5448c6..e8ccefb 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
@@ -163,7 +163,6 @@
@Transactional
public void directReward(Long directRewardId) {
log.info("消费补贴奖励、直推返利、分享奖励直推上级、分享奖励直推上级的直推、团队管理补贴消息,ID:{}", directRewardId);
- //获取订单信息
MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(directRewardId);
if(ObjectUtil.isEmpty(orderInfo)){
return;
@@ -186,7 +185,7 @@
Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow(
mallMember.getId(),
orderInfo.getOrderNo(),
- subsidyAmount.setScale(2, BigDecimal.ROUND_DOWN),
+ subsidyAmount.setScale(4, BigDecimal.ROUND_DOWN),
MallMoneyFlowTypeEnum.MARKET_SUBSIDIES.getCode(),
MallMoneyFlow.STATUS_SUCCESS,
MallMoneyFlow.IS_RETURN_Y,
@@ -203,51 +202,62 @@
* 2、返利对象:下单人的直推上级
* 3、金额:返利比例乘以补贴金额
*/
- //下单人的直推上级
- MallMember mallMemberOne = memberMapper.selectInfoByInviteId(mallMember.getReferrerId());
- DataDictionaryCustom rewardPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.REWARD_PERCENT.getType(),
- DataDictionaryEnum.REWARD_PERCENT.getCode()
- );
- BigDecimal rewardPercent = new BigDecimal(rewardPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
- BigDecimal directRewardAmount = subsidyAmount.multiply(rewardPercent).setScale(2, BigDecimal.ROUND_DOWN);
-
- Long marketSubsidyFlowId = mallMoneyFlowService.addMoneyFlow(
- mallMember.getId(),
- orderInfo.getOrderNo(),
- directRewardAmount,
- MallMoneyFlowTypeEnum.DIRECT_REWARD.getCode(),
- MallMoneyFlow.STATUS_SUCCESS,
- MallMoneyFlow.IS_RETURN_Y,
- mallMemberOne.getId(),
- FlowTypeEnum.BALANCE.getValue(),
- MallMoneyFlowTypeEnum.DIRECT_REWARD.getName()
- );
- memberWalletService.addBalance(directRewardAmount,mallMemberOne.getId());
/**
* 生成分享奖励的流水记录
* 1、待生效
* 2、返利对象:下单人的直推上级 10%,直推的直推 5%
* 3、金额:补贴金额乘以分享奖励的比例
*/
- DataDictionaryCustom shareOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.LEVEL_ONE.getType(),
- DataDictionaryEnum.LEVEL_ONE.getCode()
- );
- BigDecimal shareOne = new BigDecimal(shareOneDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
- BigDecimal shareOneAmount = subsidyAmount.multiply(shareOne).setScale(2, BigDecimal.ROUND_DOWN);
- Long ShareOneFlowId = mallMoneyFlowService.addMoneyFlow(
- mallMember.getId(),
- orderInfo.getOrderNo(),
- shareOneAmount,
- MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getCode(),
- MallMoneyFlow.STATUS_SUCCESS,
- MallMoneyFlow.IS_RETURN_Y,
- mallMemberOne.getId(),
- FlowTypeEnum.BALANCE.getValue(),
- MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getName()
- );
- memberWalletService.addBalance(shareOneAmount,mallMemberOne.getId());
+ if(StrUtil.isEmpty(mallMember.getReferrerId())){
+ return;
+ }
+ //下单人的直推上级
+ MallMember mallMemberOne = memberMapper.selectInfoByInviteId(mallMember.getReferrerId());
+ //生成直推返利的流水记录
+ if(ObjectUtil.isNotEmpty(mallMemberOne)){
+// DataDictionaryCustom rewardPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+// DataDictionaryEnum.REWARD_PERCENT.getType(),
+// DataDictionaryEnum.REWARD_PERCENT.getCode()
+// );
+// BigDecimal rewardPercent = new BigDecimal(rewardPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
+// BigDecimal directRewardAmount = subsidyAmount.multiply(rewardPercent).setScale(4, BigDecimal.ROUND_DOWN);
+//
+// Long marketSubsidyFlowId = mallMoneyFlowService.addMoneyFlow(
+// mallMember.getId(),
+// orderInfo.getOrderNo(),
+// directRewardAmount,
+// MallMoneyFlowTypeEnum.DIRECT_REWARD.getCode(),
+// MallMoneyFlow.STATUS_SUCCESS,
+// MallMoneyFlow.IS_RETURN_Y,
+// mallMemberOne.getId(),
+// FlowTypeEnum.BALANCE.getValue(),
+// MallMoneyFlowTypeEnum.DIRECT_REWARD.getName()
+// );
+// memberWalletService.addBalance(directRewardAmount,mallMemberOne.getId());
+ DataDictionaryCustom shareOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.LEVEL_ONE.getType(),
+ DataDictionaryEnum.LEVEL_ONE.getCode()
+ );
+ //生成分享奖励的流水记录
+ BigDecimal shareOne = new BigDecimal(shareOneDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
+ BigDecimal shareOneAmount = subsidyAmount.multiply(shareOne).setScale(4, BigDecimal.ROUND_DOWN);
+ Long ShareOneFlowId = mallMoneyFlowService.addMoneyFlow(
+ mallMember.getId(),
+ orderInfo.getOrderNo(),
+ shareOneAmount,
+ MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ mallMemberOne.getId(),
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getName()
+ );
+ memberWalletService.addBalance(shareOneAmount,mallMemberOne.getId());
+ }
+
+ if(StrUtil.isEmpty(mallMemberOne.getReferrerId())){
+ return;
+ }
//下单人的直推上级的直推
MallMember mallMemberTwo = memberMapper.selectInfoByInviteId(mallMemberOne.getReferrerId());
if(ObjectUtil.isNotEmpty(mallMemberTwo)){
@@ -256,7 +266,7 @@
DataDictionaryEnum.LEVEL_TWO.getCode()
);
BigDecimal shareTwo = new BigDecimal(shareTwoDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
- BigDecimal shareTwoAmount = subsidyAmount.multiply(shareTwo).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal shareTwoAmount = subsidyAmount.multiply(shareTwo).setScale(4, BigDecimal.ROUND_DOWN);
Long shareTwoFlowId = mallMoneyFlowService.addMoneyFlow(
mallMember.getId(),
orderInfo.getOrderNo(),
@@ -273,6 +283,11 @@
/**
* 团队管理补贴
*/
+
+
+ if(StrUtil.isEmpty(mallMember.getReferrerIds())){
+ return;
+ }
//下单人所有的上级
String referrerIds = mallMember.getReferrerIds();
List<String> refererIdList = StrUtil.split(referrerIds, ",", -1, true, true);
@@ -280,33 +295,36 @@
ArrayList<String> refererIdListUp = new ArrayList<>();
//初始级别即当前下单人的级别
String levelStart = mallMember.getLevel();
- for(String inviteId : refererIdList){
- MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId);
- String levelUp = mallMemberUp.getLevel();
- //团队补贴从区代开始
- if(!MemberAgentLevelEnum.AGENT.getName().equals(levelUp)){
- //比较两个代理级别,同级别或者大于下单人的级别都保留
- int compareLevel = MemberAgentLevelEnum.AGENT_ONE.compareLevel(levelUp,levelStart);
- if(0 < compareLevel){
- levelStart = levelUp;
- refererIdListUp.add(inviteId);
+ if(CollUtil.isNotEmpty(refererIdList)){
+ for(String inviteId : refererIdList){
+ MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId);
+ String levelUp = mallMemberUp.getLevel();
+ //团队补贴从区代开始
+ if(!MemberAgentLevelEnum.AGENT.getName().equals(levelUp)){
+ //比较两个代理级别,同级别或者大于下单人的级别都保留
+ int compareLevel = MemberAgentLevelEnum.AGENT_ONE.compareLevel(levelUp,levelStart);
+ if(0 < compareLevel){
+ levelStart = levelUp;
+ refererIdListUp.add(inviteId);
+ }
}
}
}
if(CollUtil.isNotEmpty(refererIdListUp)){
+ levelStart = mallMember.getLevel();
for(String inviteId : refererIdList){
MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId);
String levelUp = mallMemberUp.getLevel();
//获取团队分享比例
BigDecimal manageSubsidyPercent = getManageSubsidyPercent(levelStart, levelUp);
if(manageSubsidyPercent.compareTo(BigDecimal.ZERO) > 0){
- BigDecimal teamManageAmount = subsidyAmount.multiply(manageSubsidyPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal teamManageAmount = subsidyAmount.multiply(manageSubsidyPercent).setScale(4, BigDecimal.ROUND_DOWN);
//生成团队分享流水
Long teamManageFlowId = mallMoneyFlowService.addMoneyFlow(
mallMember.getId(),
orderInfo.getOrderNo(),
teamManageAmount,
- MallMoneyFlowTypeEnum.SHARE_REWARD_TWO.getCode(),
+ MallMoneyFlowTypeEnum.TEAM_REWARD.getCode(),
MallMoneyFlow.STATUS_SUCCESS,
MallMoneyFlow.IS_RETURN_Y,
mallMemberUp.getId(),
@@ -343,7 +361,8 @@
// 满足,需要减去levelStart的团队管理奖励
String minLevel = MemberAgentLevelEnum.AGENT_ONE.minLevel(agentCodeUp);
if(levelStart.equals(minLevel)
- && MemberAgentLevelEnum.AGENT.getName() != levelStart){
+ && !MemberAgentLevelEnum.AGENT.getName().equals(levelStart)){
+// && MemberAgentLevelEnum.AGENT.getName()levelStart){
BigDecimal dicManageSubsidyPercentUp = getDicManageSubsidyPercent(agentCodeUp);
BigDecimal dicManageSubsidyPercentStart = getDicManageSubsidyPercent(agentCodeStart);
manageSubsidyPercent = dicManageSubsidyPercentUp.subtract(dicManageSubsidyPercentStart);
--
Gitblit v1.9.1