소스 검색

代理人3.0app开发

xuqiang 1 년 전
부모
커밋
abca120d6f

+ 33 - 9
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerUserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.partner.service.Impl;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -421,6 +422,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
             return "100";
         }
         HttpResult<PartnerRuleEntity> httpResult = queryDowngradeTask(grade, userId);
+
         PartnerRuleEntity data = httpResult.getData();
 
         List<PartnerAttribute> strategyArray = data.getRequirement();
@@ -428,6 +430,14 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         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);
+
+        return String.valueOf(value.compareTo(BigDecimal.valueOf(100)) >= 0 ? "100" : value);
+    }
+
+    private static BigDecimal getMultiply(PartnerAttribute yq, BigDecimal min, List<PartnerAttribute> strategyArray) {
         BigDecimal achieve = new BigDecimal(yq.getAchieve());
 
         BigDecimal yqPercent = achieve.divide(min, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.33"));
@@ -443,14 +453,10 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         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"));
-
-        BigDecimal value = multiply.setScale(2, RoundingMode.HALF_UP);
-
-        return String.valueOf(value.compareTo(BigDecimal.valueOf(100)) >= 0 ? "100" : value);
+        return multiply;
     }
 
 
-
     @Override
     public HttpResult<PartnerRuleEntity> queryDowngradeTask(String grade, String userId) {
         if (StringUtils.equals("1", grade)){
@@ -542,7 +548,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
             account = new PartnerPartnerAccount();
         }else {
             account.setCashFee(account.getExtractFee().subtract(account.getHistoryFee()).subtract(account.getExpired()));
-            if (partnerUser.isIdentityStatus()){
+            if (null != partnerUser && partnerUser.isIdentityStatus()){
                 BigDecimal lockCommission = liftingRecordService.queryLockCommission(params.getUserId(), params.getGrade());
                 account.setFreeze(lockCommission);
                 if (null != lockCommission) {
@@ -596,7 +602,6 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
                 handleUnregisteredUser(userId, userMap, grade, level);
             } else {
                 handleRegisteredUser(userId, partnerUser, level);
-                level.setProportional(proportional(String.valueOf(partnerUser.getGrade()),partnerUser.getUserId()));
             }
 
             list.add(level);
@@ -638,16 +643,21 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
     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");
+            if (null != partnerUser.getUpgradeTime()){
+                PartnerRuleEntity ruleEntity = ruleService.selectByGrade(String.valueOf(partnerUser.getGrade()));
+                level.setExpiryDate(new SimpleDateFormat("yyyy-MM-dd").format(PartnerDateUtils.addDays(partnerUser.getUpgradeTime(),Integer.valueOf(ruleEntity.getKhDays()))));
+            }
+            level.setProportional(proportional(String.valueOf(partnerUser.getGrade()),partnerUser.getUserId()));
         }
 
         level.setProgressBar(2);
     }
 
+
     // 处理活跃用户的逻辑
     private void handleActiveUser(PartnerUser partnerUser, MyUserLevel level) {
         level.setLockingState("2");
@@ -662,7 +672,21 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         // 检查升级条件
         boolean verified = ruleService.verifyUpgradeConditions(partnerUser.getUserId(),String.valueOf(grade));
         level.setUpgrade(verified);
-
+        if (null != partnerUser.getIdentityTime()){
+            PartnerRuleEntity ruleEntity = ruleService.selectByGrade(String.valueOf(partnerUser.getGrade()));
+            Date date = PartnerDateUtils.addDays(partnerUser.getIdentityTime(), Integer.valueOf(ruleEntity.getKhDays()));
+            String format = new SimpleDateFormat("yyyy-MM-dd").format(date);
+            System.out.println( format);
+            boolean before = PartnerDateUtils.isBefore(date);
+            if (before){
+                LocalDate localDate = date.toInstant()
+                        .atZone(ZoneId.systemDefault())
+                        .toLocalDate();
+                level.setExpiryDate(String.valueOf(0 == PartnerDateUtils.daysBetween(localDate) ? "1" : PartnerDateUtils.daysBetween(localDate)));
+            }else {
+                level.setExpiryDate(new SimpleDateFormat("yyyy-MM-dd").format(date));
+            }
+        }
         // 检查降级记录
         if (liftingRecordService.selectDowngradeRecord(
                 partnerUser.getUserId(), partnerUser.getGrade() + 1, 1) > 0) {

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

@@ -76,6 +76,10 @@ public class PartnerDateUtils {
     }
 
 
+    public static Long daysBetween (LocalDate date){
+        return ChronoUnit.DAYS.between(date,LocalDate.now());
+    }
+
     public static boolean isSameDay(Date date) {
         LocalDate currentDate = LocalDate.now();
         LocalDate compareLocalDate = date.toInstant()

+ 8 - 2
src/main/resources/mapper/modules/partner/PartnerUserMapper.xml

@@ -102,7 +102,10 @@
         </if>
         ),0) numberOrders,
         ifnull(
-            (SELECT count(id) FROM partner_user WHERE  referrer_id = #{params.userId}
+            (SELECT count(id) FROM partner_user WHERE  user_id IN
+        <foreach collection="params.relatedPerList" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
         <if test="params.startTime != null and params.endTime != null">
             AND create_time BETWEEN #{params.startTime} AND #{params.endTime}
         </if> ),0
@@ -121,7 +124,10 @@
             ),0
         ) premium,
         ifnull(
-            (SELECT SUM(extract_fee) FROM partner_premium_details where  user_id  = #{params.userId}
+            (SELECT SUM(extract_fee) FROM partner_premium_details where  user_id IN
+        <foreach collection="params.relatedPerList" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
         <if test="params.startTime != null and params.endTime != null">
             AND create_time BETWEEN #{params.startTime} AND #{params.endTime}
         </if> ),0