From f103bdbfea4ce1d07e6d54c927d643f0d99a6704 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 09 Jan 2023 17:01:25 +0800
Subject: [PATCH] 20221227 充值归集
---
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 117 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 62 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..9451987 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,55 @@
* 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());
+ //下单人的直推上级
+ 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());
+ }
//下单人的直推上级的直推
MallMember mallMemberTwo = memberMapper.selectInfoByInviteId(mallMemberOne.getReferrerId());
if(ObjectUtil.isNotEmpty(mallMemberTwo)){
@@ -256,7 +259,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(),
@@ -280,33 +283,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 +349,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