Explorar el Código

合伙人bug修改

xuqiang hace 1 año
padre
commit
aaded2a05f

+ 32 - 18
src/main/java/com/ydtech/modules/partner/CalculateCommissionUtils.java

@@ -65,16 +65,10 @@ public class CalculateCommissionUtils {
         }
         }
         if (StringUtils.equals("2", grade)) {
         if (StringUtils.equals("2", grade)) {
             PartnerCommissionRules administrator = rulesVo.getAdministrator();
             PartnerCommissionRules administrator = rulesVo.getAdministrator();
-            if (isZero(gl) && isZero(hh)) {
+            if (isZero(gl)){
                 return new BigDecimal(administrator.getDefaultRatio());
                 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 {
             }else {
-                return new BigDecimal(rulesVo.getAdministrator().getSharedRatio()).subtract(gl);
+                return new BigDecimal(administrator.getSharedRatio()).subtract(gl);
             }
             }
         }
         }
         if (StringUtils.equals("3", grade)) {
         if (StringUtils.equals("3", grade)) {
@@ -83,9 +77,7 @@ public class CalculateCommissionUtils {
                 return new BigDecimal(partner.getDefaultRatio())
                 return new BigDecimal(partner.getDefaultRatio())
                         .add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
                         .add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
             } else if (isZero(hh)) {
             } 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)) {
             } else if (isZero(gl)) {
                 return new BigDecimal(partner.getSharedRatio()).subtract(hh)
                 return new BigDecimal(partner.getSharedRatio()).subtract(hh)
                         .add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
                         .add(subtractRatios(rulesVo.getAdministrator().getSharedRatio(), rulesVo.getAdministrator().getDefaultRatio()));
@@ -176,14 +168,11 @@ public class CalculateCommissionUtils {
             return period;
             return period;
         } else if (StringUtils.equals("2", rules.getValidityPeriod())) {
         } else if (StringUtils.equals("2", rules.getValidityPeriod())) {
             if (isAfterNDays(assessmentTime, rules.getFixedDays())) {
             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())) {
         } else if (StringUtils.equals("3", rules.getValidityPeriod())) {
             period.setStartDate(rules.getStartDate());
             period.setStartDate(rules.getStartDate());
             period.setEndDate(rules.getEndDate());
             period.setEndDate(rules.getEndDate());
@@ -191,6 +180,17 @@ public class CalculateCommissionUtils {
         return period;
         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) {
     public static boolean isAfterNDays(Date targetDate, int days) {
         LocalDateTime targetDateTime = targetDate.toInstant()
         LocalDateTime targetDateTime = targetDate.toInstant()
                 .atZone(ZoneId.systemDefault())
                 .atZone(ZoneId.systemDefault())
@@ -198,6 +198,20 @@ public class CalculateCommissionUtils {
         return LocalDateTime.now().isAfter(targetDateTime.plusDays(days));
         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) {
     public static Date addDays(Date date, int days) {
         LocalDateTime localDate = date.toInstant()
         LocalDateTime localDate = date.toInstant()
                 .atZone(ZoneId.systemDefault())
                 .atZone(ZoneId.systemDefault())