|
|
@@ -422,36 +422,26 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
return "100";
|
|
|
}
|
|
|
HttpResult<PartnerRuleEntity> httpResult = queryDowngradeTask(grade, userId);
|
|
|
-
|
|
|
PartnerRuleEntity data = httpResult.getData();
|
|
|
-
|
|
|
List<PartnerAttribute> strategyArray = data.getRequirement();
|
|
|
-
|
|
|
- PartnerAttribute yq = strategyArray.get(0);
|
|
|
-
|
|
|
- BigDecimal min = new BigDecimal(yq.getMin());
|
|
|
- BigDecimal multiply = getMultiply(yq, min, strategyArray);
|
|
|
-
|
|
|
- BigDecimal value = multiply.setScale(2, RoundingMode.HALF_UP);
|
|
|
-
|
|
|
+ BigDecimal multiply = getMultiply(strategyArray);
|
|
|
+ BigDecimal value = multiply.setScale(0, RoundingMode.DOWN);
|
|
|
return String.valueOf(value.compareTo(BigDecimal.valueOf(100)) >= 0 ? "100" : value);
|
|
|
}
|
|
|
|
|
|
- private static BigDecimal getMultiply(PartnerAttribute yq, BigDecimal min, List<PartnerAttribute> strategyArray) {
|
|
|
+ private static BigDecimal getMultiply( List<PartnerAttribute> strategyArray) {
|
|
|
+ PartnerAttribute yq = strategyArray.get(0);
|
|
|
+ BigDecimal min = new BigDecimal(yq.getMin());
|
|
|
BigDecimal achieve = new BigDecimal(yq.getAchieve());
|
|
|
-
|
|
|
BigDecimal yqPercent = achieve.divide(min, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.33"));
|
|
|
-
|
|
|
PartnerAttribute bf = strategyArray.get(1);
|
|
|
BigDecimal bfMin = new BigDecimal(bf.getMin());
|
|
|
BigDecimal bfAchieve = new BigDecimal(bf.getAchieve());
|
|
|
BigDecimal bfPercent = bfAchieve.divide(bfMin, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.34"));
|
|
|
-
|
|
|
PartnerAttribute gr = strategyArray.get(2);
|
|
|
BigDecimal grMin = new BigDecimal(gr.getMin());
|
|
|
BigDecimal grAchieve = new BigDecimal(gr.getAchieve());
|
|
|
BigDecimal grPercent = grAchieve.divide(grMin, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.33"));
|
|
|
-
|
|
|
BigDecimal multiply = yqPercent.add(bfPercent).add(grPercent).multiply(new BigDecimal("100"));
|
|
|
return multiply;
|
|
|
}
|
|
|
@@ -584,11 +574,11 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
|
|
|
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;
|
|
|
}
|
|
|
+ Integer minStatus = baseMapper.selectGradeIntMin(userId);
|
|
|
boolean containsKey = userMap.containsKey(1);
|
|
|
for (PartnerRule rule : partnerRules) {
|
|
|
if (!containsKey && rule.getGrade() == 1){
|
|
|
@@ -601,15 +591,14 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
level.setProportional("0");
|
|
|
handleUnregisteredUser(userId, userMap, grade, level);
|
|
|
} else {
|
|
|
- handleRegisteredUser(userId, partnerUser, level);
|
|
|
+ handleRegisteredUser(userId, partnerUser, level,minStatus);
|
|
|
}
|
|
|
-
|
|
|
list.add(level);
|
|
|
}
|
|
|
-
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
// 提取创建基础UserLevel的逻辑
|
|
|
private MyUserLevel createBasicUserLevel(PartnerRule rule) {
|
|
|
MyUserLevel level = new MyUserLevel();
|
|
|
@@ -640,7 +629,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
}
|
|
|
|
|
|
// 处理已注册用户的逻辑
|
|
|
- private void handleRegisteredUser(String userId, PartnerUser partnerUser, MyUserLevel level) {
|
|
|
+ private void handleRegisteredUser(String userId, PartnerUser partnerUser, MyUserLevel level,Integer minStatus) {
|
|
|
level.setUserId(userId);
|
|
|
level.setUserName(partnerUser.getName());
|
|
|
if (partnerUser.isIdentityStatus()) {
|
|
|
@@ -653,7 +642,13 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
}
|
|
|
level.setProportional(proportional(String.valueOf(partnerUser.getGrade()),partnerUser.getUserId()));
|
|
|
}
|
|
|
-
|
|
|
+ if (null != minStatus && minStatus < 4) {
|
|
|
+ boolean shouldPrompt = (minStatus == 3 && partnerUser.getGrade() == 4) ||
|
|
|
+ (minStatus == 2 && (partnerUser.getGrade() == 3 || partnerUser.getGrade() == 4));
|
|
|
+ if (shouldPrompt) {
|
|
|
+ level.setPrompt(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
level.setProgressBar(2);
|
|
|
}
|
|
|
|
|
|
@@ -668,6 +663,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
}else {
|
|
|
level.setZeroDays("99");
|
|
|
}
|
|
|
+ PartnerRuleEntity rule = ruleService.selectByGrade(String.valueOf(partnerUser.getGrade() + 1));
|
|
|
+ level.setUnlockDeadline(new SimpleDateFormat("yyyy-MM-dd").format(PartnerDateUtils.addDays(partnerUser.getUpgradeTime(), Integer.valueOf(rule.getCycle().getFixedDays()))));
|
|
|
Integer grade = partnerUser.getGrade();
|
|
|
// 检查升级条件
|
|
|
boolean verified = ruleService.verifyUpgradeConditions(partnerUser.getUserId(),String.valueOf(grade));
|