From ae9faa12e8cc7984dfba8631a17e32b216a86508 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 26 Feb 2024 10:41:37 +0800
Subject: [PATCH] 抽奖
---
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 182 +++++++++++++++++++++++++++------------------
1 files changed, 108 insertions(+), 74 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 795b0c5..d8cb7de 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
@@ -50,18 +50,31 @@
List<String> ids = StrUtil.split(member.getReferrerIds(), ',');
List<MallMember> parentMembers = memberMapper.selectByInviteIds(ids);
for (MallMember parent : parentMembers) {
- //level为v6,升级董事,则看团队下有没有两个V6
- List<MallMember> mallMemberTeamMembers = memberMapper.selectAllChildAgentListByInviteId(parent.getInviteId());
- if(CollUtil.isNotEmpty(mallMemberTeamMembers)){
- List<MallMember> levelV6List = mallMemberTeamMembers.stream()
- .filter(teamMember -> teamMember.getLevel().equals(MemberLevelEnum.V6.getType()))
- .collect(Collectors.toList());
- if(CollUtil.isNotEmpty(levelV6List) && levelV6List.size() >= 2){
- parent.setLevel(MemberLevelEnum.V_DIRECTOR.getType());
- parent.setDirector(AppContants.OPTION_YES);
- memberMapper.updateById(parent);
- continue;
- }
+ //level为v6,升级董事,则看直属团队下有没有两个V6
+// List<MallMember> mallMemberChilds = memberMapper.selectByRefererId(parent.getInviteId());
+// if(CollUtil.isNotEmpty(mallMemberChilds)){
+// int directorSize = 0;
+// for(MallMember mallMemberChild : mallMemberChilds){
+// List<MallMember> mallMemberTeamMembers = memberMapper.selectAllChildAgentListByInviteId(mallMemberChild.getInviteId());
+// if(CollUtil.isNotEmpty(mallMemberTeamMembers)){
+// List<MallMember> levelV6List = mallMemberTeamMembers.stream()
+// .filter(teamMember -> teamMember.getLevel().equals(MemberLevelEnum.V6.getType()))
+// .collect(Collectors.toList());
+// if(CollUtil.isNotEmpty(levelV6List)){
+// directorSize = directorSize +1;
+// }
+// }
+// }
+// if(directorSize >= 2){
+// parent.setLevel(MemberLevelEnum.V_DIRECTOR.getType());
+// parent.setDirector(AppContants.OPTION_YES);
+// memberMapper.updateById(parent);
+// continue;
+// }
+// }
+ //V6不能再升级了
+ if(parent.getLevel().equals(MemberLevelEnum.V6.getType())){
+ continue;
}
/**
@@ -201,6 +214,12 @@
* 4、董事享受全公司入单分红2%加权(现金)
* 5、合伙人享全公司入单分红5%加权(现金)
* 6、入单后,50%入现金池 35%的H金劵入H金劵池,更新价格
+ *
+ *
+ * 新增购买套餐返佣逻辑
+ * 1、买了套餐增加权益额度
+ * 2、权益额度每次提现会减少对应的数额
+ * 3、增加每天返佣固定比例的余额
*/
//获取当前订单子表信息
List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectbyOrderId(orderId);
@@ -217,7 +236,27 @@
if(BigDecimal.ZERO.compareTo(amountTCAll) >= 0){
return;
}
- BigDecimal amountTC = new BigDecimal(1000);
+
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
+ String orderNo = mallOrderInfo.getOrderNo();
+ //购买人
+ Long memberId = mallOrderInfo.getMemberId();
+ DataDictionaryCustom equityLimitTimesDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.EQUITY_LIMIT_TIMES.getType(),
+ DataDictionaryEnum.EQUITY_LIMIT_TIMES.getCode());
+ BigDecimal equityLimitTimes = new BigDecimal(equityLimitTimesDic.getValue());
+ BigDecimal equityLimit = amountTCAll.multiply(equityLimitTimes);
+ if(BigDecimal.ZERO.compareTo(equityLimit) < 0){
+ addWalletInfoAndMoneyFlow(equityLimit,
+ memberId,
+ "equityLimit",
+ MoneyFlowTypeEnum.TC_TO_EQUITY_LIMIT.getValue(),
+ memberId,
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+ }
+
+ BigDecimal amountTC = new BigDecimal(100);
//购买套餐按照1000的基数去补贴,如5000,则补贴5次1000
int times = amountTCAll.divideToIntegralValue(amountTC).intValue();
if(times < 1){
@@ -225,10 +264,6 @@
}
for(int i = 0; i < times; i++){
- MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
- String orderNo = mallOrderInfo.getOrderNo();
- //购买人
- Long memberId = mallOrderInfo.getMemberId();
/**
* 1、购买人获得固定比例的H金劵
@@ -311,66 +346,63 @@
String referrerIds = mallMember.getReferrerIds();
List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ",");
if(CollUtil.isNotEmpty(referrerIdList)){
- List<MallMember> mallMemberTeamPerk = mallMemberMapper.selectByInviteIds(referrerIdList);
- if(CollUtil.isNotEmpty(mallMemberTeamPerk)){
- String levelNormal = MemberLevelEnum.V1.getType();
- BigDecimal cashPercentNormal = BigDecimal.ZERO;
- BigDecimal scorePercentNormal = BigDecimal.ZERO;
+ String levelNormal = MemberLevelEnum.V1.getType();
+ BigDecimal cashPercentNormal = BigDecimal.ZERO;
+ BigDecimal scorePercentNormal = BigDecimal.ZERO;
- DataDictionaryCustom poolScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- PerkEnum.POOL_SCORE_PRICE.getType(),
- PerkEnum.POOL_SCORE_PRICE.getCode());
- BigDecimal poolScorePrice = new BigDecimal(poolScorePriceDic.getValue() == null ? "1" : poolScorePriceDic.getValue());
- for(MallMember teamPerkMember : mallMemberTeamPerk){
- String level = teamPerkMember.getLevel();
- //比较两个级别的大小,level大于levelNormal返回1
- int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal);
- int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), level);
- if(compareMin >= 1 && compareMax >= 1){
- Long teamPerkMemberId = teamPerkMember.getId();
- DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- "AGENT_PERK_SET", level);
+ DataDictionaryCustom poolScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PerkEnum.POOL_SCORE_PRICE.getType(),
+ PerkEnum.POOL_SCORE_PRICE.getCode());
+ BigDecimal poolScorePrice = new BigDecimal(poolScorePriceDic.getValue() == null ? "1" : poolScorePriceDic.getValue());
+ for(String teamPerkMemberInviteId : referrerIdList){
+ MallMember teamPerkMember = mallMemberMapper.selectInfoByInviteId(teamPerkMemberInviteId);
+// for(MallMember teamPerkMember : mallMemberTeamPerk){
+ String level = teamPerkMember.getLevel();
+ //比较两个级别的大小,level大于levelNormal返回1
+ int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal);
+ int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), level);
+ if(compareMin >= 1 && compareMax >= 1){
+ Long teamPerkMemberId = teamPerkMember.getId();
+ DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ "AGENT_PERK_SET", level);
- AdminAgentInfo adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), AdminAgentInfo.class);
- BigDecimal cashPercent = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
- BigDecimal scorePercent = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
- //极差
- cashPercent = cashPercent.subtract(cashPercentNormal);
- scorePercent = scorePercent.subtract(scorePercentNormal);
+ AdminAgentInfo adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), AdminAgentInfo.class);
+ BigDecimal cashPercent = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
+ BigDecimal scorePercent = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
+ //极差
+ cashPercent = cashPercent.subtract(cashPercentNormal);
+ scorePercent = scorePercent.subtract(scorePercentNormal);
- BigDecimal cashAmount = amountTC.multiply(cashPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal cashAmount = amountTC.multiply(cashPercent).setScale(2, BigDecimal.ROUND_DOWN);
- //如果是H金劵,除以当前价格,得到数量。
- BigDecimal scoreCnt = amountTC.multiply(scorePercent).setScale(2, BigDecimal.ROUND_DOWN);
- scoreCnt = scoreCnt.divide(poolScorePrice, 2 ,BigDecimal.ROUND_DOWN);
- if(cashAmount.compareTo(BigDecimal.ZERO) > 0){
- addWalletInfoAndMoneyFlow(cashAmount,
- teamPerkMemberId,
- "balance",
- MoneyFlowTypeEnum.AGENT_CASH_PERK.getValue(),
- memberId,
- FlowTypeEnum.BALANCE.getValue(),
- orderNo);
- }
- if(scoreCnt.compareTo(BigDecimal.ZERO) > 0){
- addWalletInfoAndMoneyFlow(scoreCnt,
- teamPerkMemberId,
- "score",
- MoneyFlowTypeEnum.AGENT_SCORE_PERK.getValue(),
- memberId,
- FlowTypeEnum.SCORE.getValue(),
- orderNo);
- }
- levelNormal = level;
- cashPercentNormal = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
- scorePercentNormal = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
+ //如果是H金劵,除以当前价格,得到数量。
+ BigDecimal scoreCnt = amountTC.multiply(scorePercent).setScale(2, BigDecimal.ROUND_DOWN);
+ scoreCnt = scoreCnt.divide(poolScorePrice, 2 ,BigDecimal.ROUND_DOWN);
+ if(cashAmount.compareTo(BigDecimal.ZERO) > 0){
+ addWalletInfoAndMoneyFlow(cashAmount,
+ teamPerkMemberId,
+ "balance",
+ MoneyFlowTypeEnum.AGENT_CASH_PERK.getValue(),
+ memberId,
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
}
+ if(scoreCnt.compareTo(BigDecimal.ZERO) > 0){
+ addWalletInfoAndMoneyFlow(scoreCnt,
+ teamPerkMemberId,
+ "score",
+ MoneyFlowTypeEnum.AGENT_SCORE_PERK.getValue(),
+ memberId,
+ FlowTypeEnum.SCORE.getValue(),
+ orderNo);
+ }
+ levelNormal = level;
+ cashPercentNormal = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
+ scorePercentNormal = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
}
}
}
-
-
}
/**
@@ -419,7 +451,7 @@
);
if(poolScore.compareTo(BigDecimal.ZERO) > 0 && poolCash.compareTo(BigDecimal.ZERO) > 0){
- BigDecimal divide = poolCash.divide(poolScore, 7, BigDecimal.ROUND_DOWN);
+ BigDecimal divide = poolCash.divide(poolScore, 8, BigDecimal.ROUND_DOWN);
dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
PerkEnum.POOL_SCORE_PRICE.getType(),
PerkEnum.POOL_SCORE_PRICE.getCode(),
@@ -520,10 +552,12 @@
}
public static void main(String[] args) {
- BigDecimal amountTCAll = new BigDecimal(900);
- BigDecimal amountTCBasicAmount = new BigDecimal(1000);
- //购买套餐按照1000的基数去补贴,如5000,则补贴5次1000
- BigDecimal bigDecimal = amountTCAll.divideToIntegralValue(amountTCBasicAmount);
- System.out.println(bigDecimal);
+ String referrerIds = "23430963,23420267,23330438,23320976,23310921,23290922,23280413,23270439,23250764,23240756,23230123,23210557,23190725,23180251,23170775,23160156,23150596,23130696,23140691,23120183,22990699,22980499,23110722,20656426";
+ List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ",");
+ for(String reId : referrerIdList){
+ System.out.println(reId);
+ }
}
+
+
}
--
Gitblit v1.9.1