Ver Fonte

代理人3.0app开发

xuqiang há 1 ano atrás
pai
commit
d47b808744

+ 0 - 1
src/main/java/com/ydtech/modules/partner/controller/NewAppPartnerController.java

@@ -25,7 +25,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.util.List;
-import java.util.Map;
 
 @Api(tags = "(新)合伙人app")
 @Slf4j

+ 5 - 0
src/main/java/com/ydtech/modules/partner/model/vo/MyUserLevel.java

@@ -43,6 +43,11 @@ public class MyUserLevel {
     @ApiModelProperty(value = "有效日期")
     private String expiryDate;
 
+    @ApiModelProperty(value = "等级比例")
+    private String unlockDeadline;
+
     private String proportional;
 
+    private boolean isPrompt;
+
 }

+ 18 - 21
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerUserServiceImpl.java

@@ -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));

+ 15 - 2
src/main/resources/mapper/modules/admin/SysPartnerAccountMapper.xml

@@ -31,9 +31,9 @@
 
     </select>
 
+<!--
 
-    <select id="selectFee" resultType="com.ydtech.modules.admin.model.SysPartnerAccount">
-        SELECT
+   SELECT
             id,user_id,
             cash_fee,
             history_fee,
@@ -65,6 +65,19 @@
             sys_partner_account
         WHERE
             user_id = #{userId}
+
+  -->
+
+    <select id="selectFee" resultType="com.ydtech.modules.admin.model.SysPartnerAccount">
+        SELECT
+            COALESCE(SUM(CASE WHEN 1=1 THEN extract_fee END), 0) AS totalAmount,
+            COALESCE(SUM(CASE WHEN 1=1 THEN history_fee END), 0) AS transferAmount,
+            COALESCE(SUM(CASE WHEN 1=1 THEN expired_amount END), 0) AS expiredAmount,
+            COALESCE(SUM(CASE WHEN 1=1 THEN cash_fee END), 0) AS unreportedAmount,
+            (SELECT COALESCE(cash_fee, 0) FROM sys_partner_account WHERE user_id = #{userId}) AS cashFee,
+            (SELECT COALESCE(history_fee, 0) FROM sys_partner_account WHERE user_id = #{userId} ) AS historyFee
+        FROM partner_partner_account
+        WHERE user_id = #{userId}
     </select>
 
 </mapper>

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

@@ -124,10 +124,7 @@
             ),0
         ) premium,
         ifnull(
-            (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>
+            (SELECT SUM(extract_fee) FROM partner_premium_details where  user_id = #{params.userId}
         <if test="params.startTime != null and params.endTime != null">
             AND create_time BETWEEN #{params.startTime} AND #{params.endTime}
         </if> ),0
@@ -996,7 +993,7 @@ SELECT
             FROM partner_user t INNER JOIN cte_name  ON t.referrer_id = cte_name.user_id
             WHERE t.grade = (cte_name.grade + 1)
         )
-        SELECT user_id FROM cte_name
+        SELECT user_id FROM cte_name WHERE grade &lt; 5
     </select>