xuqiang 1 рік тому
батько
коміт
755d7eae9d

+ 31 - 8
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -1303,7 +1303,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         // 保存新的合伙人数据
         PartnerUser partnerUser = addNewPartnerRule(sysUser);
-        partnerUserService.insert(partnerUser);
+        partnerUserService.save(partnerUser);
         SpringUtil.getBean(UpdateRatioUtils.class).before(partnerUser.getUserId(),partnerUser.getGrade());
         return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
     }
@@ -3311,7 +3311,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         partnerUser.setGrade(Integer.valueOf(6));
         partnerUser.setReferrerId(referrerId);
         partnerUser.setCreateTime(new Date());
-        partnerUserService.insert(partnerUser);
+        partnerUserService.save(partnerUser);
     }
 
     @Override
@@ -3693,18 +3693,41 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return maxId;
     }
 
-    public void addPartnerRule(SysUser sysUser,List<String> list) {
-        Integer type = sysUser.getType();
-        if (type != 4) {
+    public void addPartnerRule(SysUser sysUser, List<String> gradeList) {
+        if (sysUser == null || sysUser.getType() != 4) {
             return;
         }
-        if (CollectionUtils.isEmpty(list)){
+        if (CollectionUtils.isEmpty(gradeList)) {
             throw new SystemException("请选择合伙人等级");
         }
-        for (String grade : list) {
-            partnerUserService.insert(getPartnerUser(sysUser,grade));
+        List<Integer> sortedGrades = gradeList.stream()
+                .map(Integer::valueOf)
+                .sorted()
+                .collect(Collectors.toList());
+        int minGrade = sortedGrades.get(0);
+        boolean hasReferrer = StringUtils.isNotEmpty(sysUser.getReferrerId());
+        for (int grade : sortedGrades) {
+            PartnerUser partnerUser = createPartnerUser(sysUser, grade, minGrade, hasReferrer);
+            partnerUserService.save(partnerUser);
         }
+    }
 
+    private PartnerUser createPartnerUser(SysUser sysUser, int grade, int minGrade, boolean hasReferrer) {
+        PartnerUser partnerUser = new PartnerUser();
+        partnerUser.setName(sysUser.getName());
+        partnerUser.setMobile(sysUser.getMobile());
+        partnerUser.setUserId(sysUser.getId());
+        partnerUser.setDeptId(sysUser.getDeptId());
+        partnerUser.setDeptName(sysUser.getDeptName());
+        partnerUser.setGrade(grade);
+        partnerUser.setCreateTime(new Date());
+        if (grade != 1) {
+            String referrerId = (grade == minGrade)
+                    ? (hasReferrer ? sysUser.getReferrerId() : sysUser.getId())
+                    : sysUser.getId();
+            partnerUser.setReferrerId(referrerId);
+        }
+        return partnerUser;
     }
 
     private  PartnerUser getPartnerUser(SysUser sysUser,String grade) {

+ 2 - 2
src/main/java/com/ydtech/modules/partner/controller/PartnerUserController.java

@@ -34,13 +34,13 @@ public class PartnerUserController extends BaseController {
     @PostMapping("/save")
     public HttpResult add(@RequestBody PartnerUser partnerUser) {
         partnerUser.setCreateTime(new Date());
-        return HttpResult.ok(partnerUserService.insert(partnerUser) > 0 ? "添加成功" : "添加失败");
+        return HttpResult.ok(partnerUserService.save(partnerUser) ? "添加成功" : "添加失败");
     }
 
 
     @PostMapping("/update")
     public HttpResult update(@RequestBody PartnerUser partnerUser) {
-        return HttpResult.ok(partnerUserService.insert(partnerUser) > 0 ? "修改成功" : "修改失败");
+        return HttpResult.ok(partnerUserService.updateById(partnerUser)  ? "修改成功" : "修改失败");
     }
 
 

+ 0 - 7
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerUserServiceImpl.java

@@ -5,7 +5,6 @@ import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.time.temporal.ChronoUnit;
 import java.util.*;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
@@ -19,7 +18,6 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.AppUserInfoVo;
-import com.ydtech.modules.admin.model.vo.SysUser2Vo;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.dao.InsUploadFilesMapper;
 import com.ydtech.modules.order.entity.api.zhongmei.constants.TimeConstants;
@@ -84,11 +82,6 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     @Value("${newPartner.expireDays}")
     private Long expireDays;
 
-    @Override
-    public int insert(PartnerUser partnerUser) {
-        return baseMapper.insert(partnerUser);
-    }
-
     @Override
     public IPage<PartnerUserVo> queryPage(QueryVo queryVo) {
         IPage<PartnerUserVo> page = baseMapper.queryPage(queryVo.getPage(),queryVo);

+ 0 - 4
src/main/java/com/ydtech/modules/partner/service/PartnerUserService.java

@@ -20,10 +20,6 @@ import java.util.Set;
 
 public interface PartnerUserService extends IService<PartnerUser> {
 
-
-    int insert(PartnerUser partnerUser);
-
-
     IPage<PartnerUserVo> queryPage(QueryVo queryVo);
 
 

+ 25 - 46
src/main/java/com/ydtech/modules/partner/utils/CalculateCommissionUtils.java

@@ -274,37 +274,48 @@ public class CalculateCommissionUtils {
         CommissionValues values = calculateCommonValues(grade, userId, rules,type,userId3,userId4);
         BigDecimal numberBD = values.number;
         BigDecimal sumPremium = values.sumPremium;
+        BigDecimal grBf = values.grBf;
         for (PartnerRulesRatio ratio : sortedList) {
             int allSatisfied = ratio.getAllSatisfied();
             List<PartnerRatio> ratioList = ratio.getPartnerRatioList();
             if (CollectionUtil.isEmpty(ratioList)) continue;
             BigDecimal min = ratioList.get(0).getMin();
             BigDecimal min1 = ratioList.get(1).getMin();
+            BigDecimal grb = ratioList.get(2).getMin();
             boolean ry = ratioList.get(0).isRy();
             boolean bf = ratioList.get(1).isBf();
-            if (ry && bf) {
+            boolean gr = ratioList.get(2).isGr();
+            if (ry && bf && gr) {
                 if (allSatisfied == 1) {
-                    if (numberBD.compareTo(min) >= 0 && sumPremium.compareTo(min1) >= 0) {
-                        return "邀请人达" + min + "人,累计保费达" + min1 + "元";
+                    if (numberBD.compareTo(min) >= 0 && sumPremium.compareTo(min1) >= 0 && grBf.compareTo(grb) >= 0) {
+                        return "邀请人达" + min + "人,累计保费达" + min1 + "元" + ",个人保费达" + grb + "元";
                     }
                 } else {
                     if (numberBD.compareTo(min) >= 0) {
                         return "邀请人达" + min + "人";
                     }else if(sumPremium.compareTo(min1) >= 0){
                         return "累计保费达" + min1 + "元";
+                    }else if(grBf.compareTo(grb) >= 0){
+                        return "个人保费达" + grb + "元";
                     }
 
                 }
-            }else if (ry && !bf){
+            }else if (ry && gr && !bf ){
                 if (allSatisfied != 1) {
-                    if (numberBD.compareTo(min) >= 0) {
-                        return "邀请人达" + min + "人";
+                    if (numberBD.compareTo(min) >= 0 && grBf.compareTo(grb) >= 0) {
+                        return "邀请人达" + min + "人" + ",个人保费达" + grb + "元";
                     }
                 }
-            }else if (!ry && bf){
+            }else if (!ry && gr && bf){
                 if (allSatisfied != 1) {
-                    if (sumPremium.compareTo(min1) >= 0) {
-                        return "累计保费达" + min1 + "元";
+                    if (sumPremium.compareTo(min1) >= 0 && grBf.compareTo(grb) >= 0) {
+                        return "累计保费达" + min1 + "元" + ",个人保费达" + grb + "元";
+                    }
+                }
+            }else if (ry && !gr && bf){
+                if (allSatisfied != 1) {
+                    if (numberBD.compareTo(min) >= 0 && sumPremium.compareTo(min1) >= 0) {
+                        return "邀请人达" + min + "人" + ",累计保费达" + min1 + "元";
                     }
                 }
             }
@@ -348,12 +359,12 @@ public class CalculateCommissionUtils {
                         return period;
                     }
                 }
-                if (!isWithinDays(assessmentTime, rules.getFixedDays())) {
+                if (!PartnerDateUtils.isWithinDays(assessmentTime, rules.getFixedDays())) {
                     updateAssessmentTimeRecursively(assessmentTime,rules.getFixedDays(),userId,grade );
                     assessmentTime = partnerUserMapper.selectAssessmentTime(userId, grade);
                 }
                 period.setStartDate(dateFormat.format(assessmentTime));
-                period.setEndDate(dateFormat.format(addDays(assessmentTime, rules.getFixedDays())));
+                period.setEndDate(dateFormat.format(PartnerDateUtils.addDays(assessmentTime, rules.getFixedDays())));
             } else if (StringUtils.equals("3", rules.getValidityPeriod())) {
                 Date fixedCycle = partnerUserMapper.selectFixedCycleTime(userId, grade);
                 if (fixedCycle == null) {
@@ -373,46 +384,14 @@ public class CalculateCommissionUtils {
     }
 
 
-    public static boolean isWithinDays(Date date, int days) {
-        LocalDate targetDate = date.toInstant()
-                .atZone(ZoneId.systemDefault())
-                .toLocalDate();
-        return Math.abs(ChronoUnit.DAYS.between(LocalDate.now(), targetDate)) <= days;
-    }
-
-
     private static void updateAssessmentTimeRecursively(Date assessmentTime, int days, String userId,String grade) {
-        Date newDate = addDaysToday(assessmentTime, days);
-        while (!isWithinDays(newDate, days)) {
-            newDate = addDaysToday(newDate, days);
+        Date newDate = PartnerDateUtils.addDaysToday(assessmentTime, days);
+        while (!PartnerDateUtils.isWithinDays(newDate, days)) {
+            newDate = PartnerDateUtils.addDaysToday(newDate, days);
         }
         partnerUserMapper.updateAssessmentTimeByDate(userId,newDate,grade);
     }
 
 
-    public static Date addDaysToday(Date date, int days) {
-        LocalDateTime localDate = date.toInstant()
-                .atZone(ZoneId.systemDefault())
-                .toLocalDateTime();
-        LocalDateTime newLocalDate = localDate.plusDays(days);
-        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())
-                .toLocalDateTime();
-        LocalDateTime newLocalDate = localDate.plusDays(days);
-        LocalDateTime endOfDay = newLocalDate.withHour(23)
-                .withMinute(59)
-                .withSecond(59)
-                .withNano(999_999_999);
-        return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
-    }
-
 
 }

+ 0 - 1
src/main/java/com/ydtech/modules/partner/utils/PartnerDateUtils.java

@@ -29,7 +29,6 @@ public class PartnerDateUtils {
         return Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant());
     }
 
-
     public static Date addDays(Date date, int days) {
         LocalDateTime localDate = date.toInstant()
                 .atZone(ZoneId.systemDefault())