|
@@ -387,7 +387,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
partnerRuleEntity.setStrategyArray(null);
|
|
partnerRuleEntity.setStrategyArray(null);
|
|
|
CommissionValidityPeriod period = ruleService.getCommissionValidityPeriod(partnerRuleEntity.getCycle(), userId, grade);
|
|
CommissionValidityPeriod period = ruleService.getCommissionValidityPeriod(partnerRuleEntity.getCycle(), userId, grade);
|
|
|
partnerRuleEntity.setAssessmentEndDate(period.getEndDate().split(" ")[0]);
|
|
partnerRuleEntity.setAssessmentEndDate(period.getEndDate().split(" ")[0]);
|
|
|
- BigDecimal bf = baseMapper.selectTotalSumPremium(userId, grade, period);
|
|
|
|
|
|
|
+ BigDecimal bf = baseMapper.subordinateMembersInsurancePremiums(userId, grade, period);
|
|
|
BigDecimal p = ruleService.getInviteData(userId, grade, period);
|
|
BigDecimal p = ruleService.getInviteData(userId, grade, period);
|
|
|
BigDecimal ownBf = baseMapper.selectOwnSumPremium(userId, period);
|
|
BigDecimal ownBf = baseMapper.selectOwnSumPremium(userId, period);
|
|
|
List<PartnerAttribute> requirement = partnerRuleEntity.getRequirement();
|
|
List<PartnerAttribute> requirement = partnerRuleEntity.getRequirement();
|
|
@@ -419,66 +419,161 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
return getAttribute(partnerRuleEntity, bf, p, ownBf, strategyArray);
|
|
return getAttribute(partnerRuleEntity, bf, p, ownBf, strategyArray);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// private List<MyUserLevel> getUserLevels(String userId, List<PartnerRule> partnerRules, Map<Integer, PartnerUser> userMap) {
|
|
|
|
|
+// List<MyUserLevel> list = new ArrayList<>();
|
|
|
|
|
+// if (partnerRules == null || userId == null || userMap == null) {
|
|
|
|
|
+// return list; // 输入参数校验
|
|
|
|
|
+// }
|
|
|
|
|
+// for (PartnerRule rule : partnerRules) {
|
|
|
|
|
+// Integer grade = rule.getGrade();
|
|
|
|
|
+// PartnerUser partnerUser = userMap.get(grade);
|
|
|
|
|
+// MyUserLevel level = new MyUserLevel();
|
|
|
|
|
+// level.setFallAmount(rule.getFallAmount());
|
|
|
|
|
+// level.setRatio(getProportion(grade));
|
|
|
|
|
+// level.setGrade(grade);
|
|
|
|
|
+// level.setGradeName(rule.getGradeName());
|
|
|
|
|
+//
|
|
|
|
|
+// if (partnerUser == null) {
|
|
|
|
|
+// level.setLockingState("0");
|
|
|
|
|
+// level.setProgressBar(0);
|
|
|
|
|
+// if (1 != grade){
|
|
|
|
|
+// if (null != userMap.get(grade + 1)){
|
|
|
|
|
+// boolean verified = ruleService.verifyUpgradeConditions(userId, String.valueOf(grade + 1));
|
|
|
|
|
+// if (verified) {
|
|
|
|
|
+// level.setUpgrade(true);
|
|
|
|
|
+// level.setProgressBar(2);
|
|
|
|
|
+// }else {
|
|
|
|
|
+// level.setProgressBar(1);
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// Long count = liftingRecordService.selectDowngradeRecord(userId,grade,0);
|
|
|
|
|
+// if (count > 0){
|
|
|
|
|
+// level.setUpgradeStatus(true);
|
|
|
|
|
+// }
|
|
|
|
|
+// } else {
|
|
|
|
|
+// level.setUserId(userId);
|
|
|
|
|
+// level.setUserName(partnerUser.getName());
|
|
|
|
|
+// if (partnerUser.isIdentityStatus()) {
|
|
|
|
|
+// level.setLockingState("2");
|
|
|
|
|
+// level.setLockCommission(accountMapper.selectCashFee(partnerUser.getUserId(), partnerUser.getGrade()));
|
|
|
|
|
+// if (partnerUser.getUpgradeCycleStartTime() != null) {
|
|
|
|
|
+// LocalDate upgradeCycleStartDate = partnerUser.getUpgradeCycleStartTime().toInstant()
|
|
|
|
|
+// .atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
|
+// level.setZeroDays(ChronoUnit.DAYS.between(LocalDate.now(), upgradeCycleStartDate));
|
|
|
|
|
+// }
|
|
|
|
|
+// String value = String.valueOf(partnerUser.getGrade());
|
|
|
|
|
+// boolean verified = ruleService.verifyUpgradeConditions(partnerUser.getUserId(),value);
|
|
|
|
|
+// if (verified) {
|
|
|
|
|
+// level.setUpgrade(true);
|
|
|
|
|
+// }
|
|
|
|
|
+// Long count = liftingRecordService.selectDowngradeRecord(partnerUser.getUserId(),partnerUser.getGrade() + 1,1);
|
|
|
|
|
+// if (count > 0){
|
|
|
|
|
+// level.setUpgradeStatus(true);
|
|
|
|
|
+// }
|
|
|
|
|
+// } else {
|
|
|
|
|
+// level.setLockingState("1");
|
|
|
|
|
+// }
|
|
|
|
|
+// level.setProgressBar(2);
|
|
|
|
|
+// }
|
|
|
|
|
+// list.add(level);
|
|
|
|
|
+// }
|
|
|
|
|
+// return list;
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
private List<MyUserLevel> getUserLevels(String userId, List<PartnerRule> partnerRules, Map<Integer, PartnerUser> userMap) {
|
|
private List<MyUserLevel> getUserLevels(String userId, List<PartnerRule> partnerRules, Map<Integer, PartnerUser> userMap) {
|
|
|
List<MyUserLevel> list = new ArrayList<>();
|
|
List<MyUserLevel> list = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ // 输入参数校验
|
|
|
if (partnerRules == null || userId == null || userMap == null) {
|
|
if (partnerRules == null || userId == null || userMap == null) {
|
|
|
- return list; // 输入参数校验
|
|
|
|
|
|
|
+ return list;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
for (PartnerRule rule : partnerRules) {
|
|
for (PartnerRule rule : partnerRules) {
|
|
|
Integer grade = rule.getGrade();
|
|
Integer grade = rule.getGrade();
|
|
|
PartnerUser partnerUser = userMap.get(grade);
|
|
PartnerUser partnerUser = userMap.get(grade);
|
|
|
- MyUserLevel level = new MyUserLevel();
|
|
|
|
|
- level.setFallAmount(rule.getFallAmount());
|
|
|
|
|
- level.setRatio(getProportion(grade));
|
|
|
|
|
- level.setGrade(grade);
|
|
|
|
|
- level.setGradeName(rule.getGradeName());
|
|
|
|
|
|
|
+ MyUserLevel level = createBasicUserLevel(rule);
|
|
|
|
|
|
|
|
if (partnerUser == null) {
|
|
if (partnerUser == null) {
|
|
|
- level.setLockingState("0");
|
|
|
|
|
- level.setProgressBar(0);
|
|
|
|
|
- if (1 != grade){
|
|
|
|
|
- boolean verified = ruleService.verifyUpgradeConditions(userId, String.valueOf(grade + 1));
|
|
|
|
|
- if (verified) {
|
|
|
|
|
- level.setUpgrade(true);
|
|
|
|
|
- level.setProgressBar(2);
|
|
|
|
|
- }else {
|
|
|
|
|
- level.setProgressBar(1);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- Long count = liftingRecordService.selectDowngradeRecord(userId,grade,0);
|
|
|
|
|
- if (count > 0){
|
|
|
|
|
- level.setUpgradeStatus(true);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ handleUnregisteredUser(userId, userMap, grade, level);
|
|
|
} else {
|
|
} else {
|
|
|
- level.setUserId(userId);
|
|
|
|
|
- level.setUserName(partnerUser.getName());
|
|
|
|
|
- if (partnerUser.isIdentityStatus()) {
|
|
|
|
|
- level.setLockingState("2");
|
|
|
|
|
- level.setLockCommission(accountMapper.selectCashFee(partnerUser.getUserId(), partnerUser.getGrade()));
|
|
|
|
|
- if (partnerUser.getUpgradeCycleStartTime() != null) {
|
|
|
|
|
- LocalDate upgradeCycleStartDate = partnerUser.getUpgradeCycleStartTime().toInstant()
|
|
|
|
|
- .atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
|
|
- level.setZeroDays(ChronoUnit.DAYS.between(LocalDate.now(), upgradeCycleStartDate));
|
|
|
|
|
- }
|
|
|
|
|
- String value = String.valueOf(partnerUser.getGrade());
|
|
|
|
|
- boolean verified = ruleService.verifyUpgradeConditions(partnerUser.getUserId(),value);
|
|
|
|
|
- if (verified) {
|
|
|
|
|
- level.setUpgrade(true);
|
|
|
|
|
- }
|
|
|
|
|
- Long count = liftingRecordService.selectDowngradeRecord(partnerUser.getUserId(),partnerUser.getGrade() + 1,1);
|
|
|
|
|
- if (count > 0){
|
|
|
|
|
- level.setUpgradeStatus(true);
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- level.setLockingState("1");
|
|
|
|
|
- }
|
|
|
|
|
- level.setProgressBar(2);
|
|
|
|
|
|
|
+ handleRegisteredUser(userId, partnerUser, level);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
list.add(level);
|
|
list.add(level);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 提取创建基础UserLevel的逻辑
|
|
|
|
|
+ private MyUserLevel createBasicUserLevel(PartnerRule rule) {
|
|
|
|
|
+ MyUserLevel level = new MyUserLevel();
|
|
|
|
|
+ level.setFallAmount(rule.getFallAmount());
|
|
|
|
|
+ level.setRatio(getProportion(rule.getGrade()));
|
|
|
|
|
+ level.setGrade(rule.getGrade());
|
|
|
|
|
+ level.setGradeName(rule.getGradeName());
|
|
|
|
|
+ return level;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 处理未注册用户的逻辑
|
|
|
|
|
+ private void handleUnregisteredUser(String userId, Map<Integer, PartnerUser> userMap,
|
|
|
|
|
+ Integer grade, MyUserLevel level) {
|
|
|
|
|
+ level.setLockingState("0");
|
|
|
|
|
+ level.setProgressBar(0);
|
|
|
|
|
+
|
|
|
|
|
+ // 只有非1级才需要检查升级条件
|
|
|
|
|
+ if (!grade.equals(1) && userMap.containsKey(grade + 1)) {
|
|
|
|
|
+ boolean verified = ruleService.verifyUpgradeConditions(userId, String.valueOf(grade + 1));
|
|
|
|
|
+ level.setProgressBar(verified ? 2 : 1);
|
|
|
|
|
+ level.setUpgrade(verified);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查降级记录
|
|
|
|
|
+ if (liftingRecordService.selectDowngradeRecord(userId, grade, 0) > 0) {
|
|
|
|
|
+ level.setUpgradeStatus(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 处理已注册用户的逻辑
|
|
|
|
|
+ private void handleRegisteredUser(String userId, PartnerUser partnerUser, MyUserLevel level) {
|
|
|
|
|
+ level.setUserId(userId);
|
|
|
|
|
+ level.setUserName(partnerUser.getName());
|
|
|
|
|
+
|
|
|
|
|
+ if (partnerUser.isIdentityStatus()) {
|
|
|
|
|
+ handleActiveUser(partnerUser, level);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ level.setLockingState("1");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ level.setProgressBar(2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 处理活跃用户的逻辑
|
|
|
|
|
+ private void handleActiveUser(PartnerUser partnerUser, MyUserLevel level) {
|
|
|
|
|
+ level.setLockingState("2");
|
|
|
|
|
+ level.setLockCommission(accountMapper.selectCashFee(partnerUser.getUserId(), partnerUser.getGrade()));
|
|
|
|
|
+
|
|
|
|
|
+ // 计算天数差
|
|
|
|
|
+ if (partnerUser.getUpgradeCycleStartTime() != null) {
|
|
|
|
|
+ LocalDate upgradeCycleStartDate = partnerUser.getUpgradeCycleStartTime()
|
|
|
|
|
+ .toInstant()
|
|
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
|
|
+ .toLocalDate();
|
|
|
|
|
+ level.setZeroDays(ChronoUnit.DAYS.between(LocalDate.now(), upgradeCycleStartDate));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查升级条件
|
|
|
|
|
+ boolean verified = ruleService.verifyUpgradeConditions(
|
|
|
|
|
+ partnerUser.getUserId(), String.valueOf(partnerUser.getGrade()));
|
|
|
|
|
+ level.setUpgrade(verified);
|
|
|
|
|
+
|
|
|
|
|
+ // 检查降级记录
|
|
|
|
|
+ if (liftingRecordService.selectDowngradeRecord(
|
|
|
|
|
+ partnerUser.getUserId(), partnerUser.getGrade() + 1, 1) > 0) {
|
|
|
|
|
+ level.setUpgradeStatus(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
public String getProportion(Integer grade){
|
|
public String getProportion(Integer grade){
|
|
|
CommissionRulesVo rulesVo = commissionService.queryAll();
|
|
CommissionRulesVo rulesVo = commissionService.queryAll();
|