|
|
@@ -65,16 +65,10 @@ public class CalculateCommissionUtils {
|
|
|
}
|
|
|
if (StringUtils.equals("2", grade)) {
|
|
|
PartnerCommissionRules administrator = rulesVo.getAdministrator();
|
|
|
- if (isZero(gl) && isZero(hh)) {
|
|
|
+ if (isZero(gl)){
|
|
|
return new BigDecimal(administrator.getDefaultRatio());
|
|
|
- } else if (isZero(hh)) {
|
|
|
- return new BigDecimal(administrator.getSharedRatio()).subtract(gl)
|
|
|
- .add(subtractRatios(rulesVo.getPartner().getSharedRatio(), rulesVo.getPartner().getDefaultRatio()));
|
|
|
- } else if (isZero(gl)) {
|
|
|
- return new BigDecimal(rulesVo.getPartner().getSharedRatio()).subtract(hh)
|
|
|
- .add(subtractRatios(administrator.getSharedRatio(), administrator.getDefaultRatio()));
|
|
|
}else {
|
|
|
- return new BigDecimal(rulesVo.getAdministrator().getSharedRatio()).subtract(gl);
|
|
|
+ return new BigDecimal(administrator.getSharedRatio()).subtract(gl);
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.equals("3", grade)) {
|
|
|
@@ -83,9 +77,7 @@ public class CalculateCommissionUtils {
|
|
|
return new BigDecimal(partner.getDefaultRatio())
|
|
|
.add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
|
|
|
} else if (isZero(hh)) {
|
|
|
- return new BigDecimal(rulesVo.getAdministrator().getSharedRatio())
|
|
|
- .subtract(new BigDecimal(rulesVo.getAdministrator().getDefaultRatio()))
|
|
|
- .add(new BigDecimal(partner.getDefaultRatio()));
|
|
|
+ return gl.add(new BigDecimal(partner.getDefaultRatio()));
|
|
|
} else if (isZero(gl)) {
|
|
|
return new BigDecimal(partner.getSharedRatio()).subtract(hh)
|
|
|
.add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
|
|
|
@@ -176,14 +168,11 @@ public class CalculateCommissionUtils {
|
|
|
return period;
|
|
|
} else if (StringUtils.equals("2", rules.getValidityPeriod())) {
|
|
|
if (isAfterNDays(assessmentTime, rules.getFixedDays())) {
|
|
|
- Date date = addDays(assessmentTime, rules.getFixedDays());
|
|
|
- partnerUserMapper.updateAssessmentTimeByDate(userId, date);
|
|
|
- period.setStartDate(dateFormat.format(date));
|
|
|
- period.setEndDate(dateFormat.format(addDays(date, rules.getFixedDays())));
|
|
|
- } else {
|
|
|
- period.setStartDate(dateFormat.format(assessmentTime));
|
|
|
- period.setEndDate(dateFormat.format(addDays(assessmentTime, rules.getFixedDays())));
|
|
|
+ updateAssessmentTimeRecursively(assessmentTime,rules.getFixedDays(),userId );
|
|
|
+ assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);
|
|
|
}
|
|
|
+ period.setStartDate(dateFormat.format(assessmentTime));
|
|
|
+ period.setEndDate(dateFormat.format(addDays(assessmentTime, rules.getFixedDays())));
|
|
|
} else if (StringUtils.equals("3", rules.getValidityPeriod())) {
|
|
|
period.setStartDate(rules.getStartDate());
|
|
|
period.setEndDate(rules.getEndDate());
|
|
|
@@ -191,6 +180,17 @@ public class CalculateCommissionUtils {
|
|
|
return period;
|
|
|
}
|
|
|
|
|
|
+ private static void updateAssessmentTimeRecursively(Date assessmentTime, int days, String userId) {
|
|
|
+ Date currentDate = new Date();
|
|
|
+ Date newDate = addDaysToday(assessmentTime, days);
|
|
|
+ while (newDate.before(currentDate) && !newDate.toInstant()
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toLocalDate().isEqual(LocalDate.now())) {
|
|
|
+ newDate = addDaysToday(newDate, days);
|
|
|
+ }
|
|
|
+ partnerUserMapper.updateAssessmentTimeByDate(userId, newDate);
|
|
|
+ }
|
|
|
+
|
|
|
public static boolean isAfterNDays(Date targetDate, int days) {
|
|
|
LocalDateTime targetDateTime = targetDate.toInstant()
|
|
|
.atZone(ZoneId.systemDefault())
|
|
|
@@ -198,6 +198,20 @@ public class CalculateCommissionUtils {
|
|
|
return LocalDateTime.now().isAfter(targetDateTime.plusDays(days));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public static Date addDaysToday(Date date, int days) {
|
|
|
+ LocalDateTime localDate = date.toInstant()
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toLocalDateTime();
|
|
|
+ LocalDateTime newLocalDate = localDate.plusDays(days);
|
|
|
+ // 设置时分秒为0
|
|
|
+ LocalDateTime newDateTime = newLocalDate.withHour(0)
|
|
|
+ .withMinute(0)
|
|
|
+ .withSecond(0)
|
|
|
+ .withNano(0);
|
|
|
+ return Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ }
|
|
|
+
|
|
|
public static Date addDays(Date date, int days) {
|
|
|
LocalDateTime localDate = date.toInstant()
|
|
|
.atZone(ZoneId.systemDefault())
|