Browse Source

代理人app开发

xuqiang 1 year ago
parent
commit
9dc5249000

+ 2 - 18
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -339,15 +339,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             details.setJqpremium(insAreaCompany.getJqpremium());
             details.setSypremium(insAreaCompany.getSypremium());
             details.setJypremium(insAreaCompany.getJypremium());
-            BigDecimal bigDecimal;
-            BigDecimal commissionRate = user.getCommissionRate();
-            if (null == commissionRate || commissionRate.compareTo(new BigDecimal("0")) == 0){
-                bigDecimal = CalculateCommissionUtils.calculateCommission(String.valueOf(user.getGrade()), user.getUserId(),userId3,userId4);
-                redisTemplate.opsForValue().set("identity:commission:rate","0");
-            }else {
-                bigDecimal = commissionRate;
-                redisTemplate.opsForValue().set("identity:commission:rate",String.valueOf(commissionRate));
-            }
+            BigDecimal bigDecimal = CalculateCommissionUtils.calculateCommission(String.valueOf(user.getGrade()), user.getUserId(),userId3,userId4);
             details.setProportional(String.valueOf(bigDecimal));
             details.setExtractFee(details.getSumpremium().multiply(bigDecimal.divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN));
             details.setStatus(0);
@@ -388,15 +380,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         details.setJqpremium(insAreaCompany.getJqpremium());
         details.setSypremium(insAreaCompany.getSypremium());
         details.setJypremium(insAreaCompany.getJypremium());
-        BigDecimal commissionRate = partnerUser.getCommissionRate();
-        BigDecimal bigDecimal;
-        if (null == commissionRate || commissionRate.compareTo(new BigDecimal("0")) == 0){
-            bigDecimal = CalculateCommissionUtils.calculateCommission(String.valueOf(partnerUser.getGrade()), partnerUser.getUserId(),userId3,userId4);
-            redisTemplate.opsForValue().set("identity:commission:rate","0");
-        }else {
-            bigDecimal = commissionRate;
-            redisTemplate.opsForValue().set("identity:commission:rate",String.valueOf(commissionRate));
-        }
+        BigDecimal bigDecimal = CalculateCommissionUtils.calculateCommission(String.valueOf(partnerUser.getGrade()), partnerUser.getUserId(),userId3,userId4);
         details.setProportional(String.valueOf(bigDecimal));
         details.setExtractFee(details.getSumpremium().multiply(bigDecimal.divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN));
         details.setStatus(0);

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

@@ -1,14 +1,12 @@
 package com.ydtech.modules.partner.controller;
 
 
-import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.dto.PageDto;
 import com.ydtech.modules.partner.model.PartnerExpiredCommission;
 import com.ydtech.modules.partner.service.PartnerExpiredCommissionService;
-import com.ydtech.modules.partner.utils.ExpiredCommissionUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;

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

@@ -1,12 +1,14 @@
 package com.ydtech.modules.partner.controller;
 
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.partner.model.PartnerUser;
 import com.ydtech.modules.partner.model.param.QueryVo;
 import com.ydtech.modules.partner.model.param.UserGradeParam;
 import com.ydtech.modules.partner.service.PartnerUserService;
+import com.ydtech.modules.partner.utils.TimedTaskUtils;
 import io.swagger.annotations.Api;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -160,4 +162,13 @@ public class PartnerUserController extends BaseController {
 
 
 
+    /**
+     * 已降级完成任务
+     * @return
+     */
+    @GetMapping("checkCommissionExpireTime")
+    public void checkCommissionExpireTime() {
+         SpringUtil.getBean(TimedTaskUtils.class).updateOrderDateNoon();
+    }
+
 }

+ 1 - 1
src/main/java/com/ydtech/modules/partner/dao/PartnerLiftingRecordMapper.java

@@ -23,7 +23,7 @@ public interface PartnerLiftingRecordMapper extends BaseMapper<PartnerLiftingRec
     @Select("SELECT r.id,r.`name`,r.mobile,r.user_id,r.dept_id,r.type,r.original_level,r.after_change,r.cycle,r.upgrade_strategy,r.audit_status,r.audit_time,r.audit_user,r.reject_reason,r.conditions,r.rules,r.create_time,r.upgrade_type,( SELECT `name` FROM sys_dept WHERE sys_dept.id = r.dept_id ) dept_name FROM partner_lifting_record r ${ew.customSqlSegment} ")
     Page<PartnerLiftingRecord> queryPage(Page page,@Param("ew") QueryWrapper<PartnerLiftingRecord> queryWrapper);
 
-    @Select("SELECT * FROM partner_lifting_record WHERE type = 1 AND audit_status = 0 AND DATE_ADD(create_time, INTERVAL #{expireDays} DAY) < NOW() ")
+    @Select("SELECT * FROM partner_lifting_record WHERE type = 1 AND audit_status = 0 AND DATE(DATE_ADD(create_time, INTERVAL '3' DAY)) <=  CURDATE() ")
     List<PartnerLiftingRecord> queryExpireDays(String expireDays);
 
     @Update("update partner_lifting_record set audit_status = #{status} where id = #{id}")

+ 11 - 2
src/main/java/com/ydtech/modules/partner/dao/PartnerUserMapper.java

@@ -1,12 +1,10 @@
 package com.ydtech.modules.partner.dao;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.partner.model.PartnerUser;
 import com.ydtech.modules.partner.model.param.AppHomeParams;
 import com.ydtech.modules.partner.model.param.CommissionValidityPeriod;
@@ -173,4 +171,15 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     void updateUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
     BigDecimal subordinateMembersInsurancePremiums(@Param("userId") String userId, @Param("grade")String grade,@Param("period") CommissionValidityPeriod period);
+
+    @Select("SELECT commission_rate FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
+    BigDecimal selectFixedRatio(@Param("userId") String userId, @Param("grade") String  grade);
+
+
+    @Select("SELECT * FROM partner_user WHERE (grade,user_id)  IN ( " +
+            " SELECT MIN(grade) grade , user_id FROM partner_user WHERE grade IN('2','3','4') AND identity_status = 0 and user_id='99140105M36001'  GROUP BY user_id " +
+            ") ORDER BY create_time DESC")
+    List<PartnerUser> queryDowngradedData();
+
+
 }

+ 1 - 1
src/main/java/com/ydtech/modules/partner/model/vo/TeamOverviewVo.java

@@ -15,7 +15,7 @@ public class TeamOverviewVo {
 
     private String parentStatus;
 
-    @ApiModelProperty(value = "升级状态 0-不支持升级;2-可升级;3-申请中")
+    @ApiModelProperty(value = "升级状态 0-不支持升级;1-可升级;2-申请中")
     private Integer upgradeStatus;
 
     private Object vo1;

+ 10 - 9
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerExpiredCommissionServiceImpl.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.partner.service.Impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
@@ -20,24 +21,24 @@ public class PartnerExpiredCommissionServiceImpl extends ServiceImpl<PartnerExpi
 
     @Override
     public HttpResult queryPage(Page page,PartnerExpiredCommission expiredCommission) {
-        LambdaQueryWrapper<PartnerExpiredCommission> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getName()),PartnerExpiredCommission::getName, expiredCommission.getName());
-
-        lambdaQueryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getMobile()),PartnerExpiredCommission::getMobile, expiredCommission.getMobile());
-        lambdaQueryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getUserId()),PartnerExpiredCommission::getUserId, expiredCommission.getUserId());
+        QueryWrapper<PartnerExpiredCommission> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("id,name,mobile,user_id,grade,grade_after,lock_commission,downgrade_time,expiration,(SELECT `name` FROM sys_dept WHERE sys_dept.id = dept_id) deptName");
+        queryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getName()),"name", expiredCommission.getName());
+        queryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getMobile()),"mobile", expiredCommission.getMobile());
+        queryWrapper.eq(StringUtils.isNotBlank(expiredCommission.getUserId()),"user_id", expiredCommission.getUserId());
         List<String> startTime = expiredCommission.getStartTime();
         if (CollectionUtil.isNotEmpty(startTime) && startTime.size() >= 2){
             String s = startTime.get(0);
             String e = startTime.get(1);
             if (StringUtils.isNotBlank(s) && StringUtils.isNotBlank(e)) {
-                lambdaQueryWrapper.between(PartnerExpiredCommission::getExpiration, s, e);
+                queryWrapper.between("expiration", s, e);
             } else if (StringUtils.isNotBlank(s)) {
-                lambdaQueryWrapper.ge(PartnerExpiredCommission::getExpiration, s);
+                queryWrapper.ge("expiration", s);
             } else if (StringUtils.isNotBlank(e)) {
-                lambdaQueryWrapper.le(PartnerExpiredCommission::getExpiration,e);
+                queryWrapper.le("expiration",e);
             }
         }
-        return HttpResult.ok(baseMapper.selectPage(page, lambdaQueryWrapper));
+        return HttpResult.ok(baseMapper.selectPage(page, queryWrapper));
     }
 
 }

+ 1 - 1
src/main/java/com/ydtech/modules/partner/service/Impl/PartnerLiftingRecordServiceImpl.java

@@ -55,7 +55,7 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
         queryWrapper.like(StringUtils.isNotBlank(recordParam.getUserId()), "r.userId", recordParam.getUserId());
         queryWrapper.eq(StringUtils.isNotBlank(recordParam.getType()), "r.type", recordParam.getType());
         if (1 == recordParam.getAuditStatus()){
-            queryWrapper.in(ObjectUtils.isNotEmpty(recordParam.getAuditStatus()), "r.audit_status", 1,3);
+            queryWrapper.in(ObjectUtils.isNotEmpty(recordParam.getAuditStatus()), "r.audit_status", 1,3,4);
         }else {
             queryWrapper.eq(ObjectUtils.isNotEmpty(recordParam.getAuditStatus()), "r.audit_status", recordParam.getAuditStatus());
         }

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

@@ -173,9 +173,11 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
 
     @Override
     public HttpResult submitLiftingRecord(UserGradeParam userGradeParam) {
-        userGradeParam.setGrade(String.valueOf(Integer.valueOf(userGradeParam.getGrade()) + 1));
+        if (!StringUtils.equals("4",userGradeParam.getGrade())){
+            userGradeParam.setGrade(String.valueOf(Integer.valueOf(userGradeParam.getGrade()) + 1));
+        }
         if (StringUtils.equals("1",userGradeParam.getGrade())){
-            return HttpResult.error("当前用户无法升级");
+            return HttpResult.error("当前用户无法解锁");
         }
         QueryWrapper<PartnerLiftingRecord> wrapper = new QueryWrapper<>();
         wrapper.eq("user_id",userGradeParam.getId());
@@ -188,8 +190,10 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
         lambdaQueryWrapper.eq(PartnerUser::getUserId,userGradeParam.getId());
         lambdaQueryWrapper.eq(PartnerUser::getGrade,userGradeParam.getGrade());
         PartnerUser partnerUser = baseMapper.selectOne(lambdaQueryWrapper);
+        if (Objects.isNull(partnerUser)){
+            return HttpResult.error("用户不存在");
+        }
         //   条件
-        //PartnerRuleEntity ruleEntity = ruleService.selectByGrade(userGradeParam.getGrade());
         PartnerLiftingRecord record = new PartnerLiftingRecord();
         record.setName(partnerUser.getName());
         record.setMobile(partnerUser.getMobile());
@@ -214,12 +218,8 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
                 break;
 
         }
-//        record.setCycle(getMessage(ruleEntity));
-//        record.setUpgradeStrategy(ruleService.verifyUpgradeConditionsMessage(userGradeParam.getId(),userGradeParam.getGrade()));
-
         record.setConditions(ConditionUtils.upgradeConditions(record.getOriginalLevel()));
         record.setRules(ConditionUtils.assessmentRules(record.getOriginalLevel()));
-
         return liftingRecordService.saveLiftingRecord(record);
     }
 

+ 9 - 7
src/main/java/com/ydtech/modules/partner/service/Impl/PurchaseRecordServiceImpl.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.partner.service.Impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
@@ -30,26 +31,27 @@ public class PurchaseRecordServiceImpl extends ServiceImpl<PurchaseRecordMapper,
 
     @Override
     public HttpResult queryPage(Page page, PartnerPurchaseRecord purchaseRecord) {
-        LambdaQueryWrapper<PartnerPurchaseRecord> queryWrapper = new LambdaQueryWrapper<>();
+        QueryWrapper<PartnerPurchaseRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("id,name,mobile,user_id,grade,grade_after,lock_commission,purchasing_time,apper_id,(SELECT `name` FROM sys_dept WHERE sys_dept.id = dept_id) deptName");
         if (StringUtils.isNotBlank(purchaseRecord.getName())){
-            queryWrapper.eq(PartnerPurchaseRecord::getName, purchaseRecord.getName());
+            queryWrapper.eq("name", purchaseRecord.getName());
         }
         if (StringUtils.isNotBlank(purchaseRecord.getMobile())){
-            queryWrapper.eq(PartnerPurchaseRecord::getMobile, purchaseRecord.getMobile());
+            queryWrapper.eq("mobile", purchaseRecord.getMobile());
         }
        if (StringUtils.isNotBlank(purchaseRecord.getUserId())){
-           queryWrapper.eq(PartnerPurchaseRecord::getUserId, purchaseRecord.getUserId());
+           queryWrapper.eq("user_id", purchaseRecord.getUserId());
        }
         List<String> startTime = purchaseRecord.getStartTime();
         if (CollectionUtil.isNotEmpty(startTime) && startTime.size() >= 2){
             String s = startTime.get(0);
             String e = startTime.get(1);
             if (StringUtils.isNotBlank(s) && StringUtils.isNotBlank(e)) {
-                queryWrapper.between(PartnerPurchaseRecord::getPurchasingTime, s, e);
+                queryWrapper.between("purchasing_time", s, e);
             } else if (StringUtils.isNotBlank(s)) {
-                queryWrapper.ge(PartnerPurchaseRecord::getPurchasingTime, s);
+                queryWrapper.ge("purchasing_time", s);
             } else if (StringUtils.isNotBlank(e)) {
-                queryWrapper.le(PartnerPurchaseRecord::getPurchasingTime, e);
+                queryWrapper.le("purchasing_time", e);
             }
         }
         return HttpResult.ok(baseMapper.selectPage(page, queryWrapper));

+ 31 - 24
src/main/java/com/ydtech/modules/partner/utils/CalculateCommissionUtils.java

@@ -14,7 +14,6 @@ import com.ydtech.modules.partner.model.vo.PartnerRulesRatio;
 import com.ydtech.modules.partner.service.PartnerCommissionService;
 import com.ydtech.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,16 +33,13 @@ public class CalculateCommissionUtils {
     private static PartnerCommissionService commissionService;
     private static PartnerUserMapper partnerUserMapper;
     private static PartnerPremiumDetailsMapper partnerPremiumDetailsMapper;
-    private static StringRedisTemplate redisTemplate;
 
     @Autowired
     public void setCommissionService(PartnerCommissionService commissionService,
                                      PartnerUserMapper partnerUserMapper,
-                                     StringRedisTemplate redisTemplate,
                                      PartnerPremiumDetailsMapper partnerPremiumDetailsMapper) {
         CalculateCommissionUtils.commissionService = commissionService;
         CalculateCommissionUtils.partnerUserMapper = partnerUserMapper;
-        CalculateCommissionUtils.redisTemplate = redisTemplate;
         CalculateCommissionUtils.partnerPremiumDetailsMapper = partnerPremiumDetailsMapper;
     }
 
@@ -143,28 +139,39 @@ public class CalculateCommissionUtils {
         if (StringUtils.equals("4", grade) || StringUtils.equals("3", grade)){
             hh = ladderCommission(grade, rulesVo.getPartner().getRulesRatioList(), userId, rulesVo.getPartner(),"gzs",userId3, userId4);
         }
-        String commissionRatio = redisTemplate.opsForValue().get("identity:commission:rate");
-        if (!StringUtils.equals("0", commissionRatio) && StringUtils.isNotEmpty(commissionRatio)){
-            return fixedCommissionRatio(gl,hh,new BigDecimal(commissionRatio),rulesVo, grade);
-        }
-        log.info("用户id:{}++{}级用户++gl:{}++hh:{}", userId, grade,gl, hh);
-        return calculateProportion(grade,rulesVo,gl,hh);
-    }
-
-    public static BigDecimal fixedCommissionRatio(BigDecimal gl,BigDecimal hh,BigDecimal commissionRatio,CommissionRulesVo rulesVo,String grade){
-        if (StringUtils.equals("3", grade)){
-            BigDecimal subtract;
-            if (!isZero(gl)){
-                subtract = gl;
-            }else {
-                subtract = new BigDecimal(rulesVo.getAdministrator().getSharedRatio()).subtract(new BigDecimal(rulesVo.getAdministrator().getDefaultRatio()));
+        if (StringUtils.equals("4", grade)){
+            BigDecimal bigDecimal = partnerUserMapper.selectFixedRatio(userId4, grade);
+            if (null != bigDecimal){
+                return bigDecimal;
+            }
+        }else if (StringUtils.equals("3", grade)){
+            BigDecimal gzs = partnerUserMapper.selectFixedRatio(userId4, String.valueOf(Integer.valueOf(grade) + 1));
+            BigDecimal hhr = partnerUserMapper.selectFixedRatio(userId3, grade);
+            if (null != gzs && null != hhr){
+                BigDecimal a1 = new BigDecimal(rulesVo.getPartner().getSharedRatio()).subtract(gzs);
+                return a1.add(hhr);
+            }else if (null == gzs && null != hhr){
+                if (isZero(hh)){
+                    return hhr.add(new BigDecimal(rulesVo.getPartner().getDefaultRatio()));
+                }else {
+                    return hhr.add(new  BigDecimal(rulesVo.getPartner().getSharedRatio()).subtract(hh));
+                }
+            }if (null != gzs && null == hhr){
+                BigDecimal a2;
+                if (null == gl){
+                    a2 = new BigDecimal(rulesVo.getAdministrator().getSharedRatio()).subtract(new BigDecimal(rulesVo.getAdministrator().getDefaultRatio()));
+                }else {
+                    a2 = gl;
+                }
+                return new BigDecimal(rulesVo.getPartner().getSharedRatio()).subtract(gzs).add(a2);
+            }
+        }else if (StringUtils.equals("2", grade)){
+            BigDecimal hhr = partnerUserMapper.selectFixedRatio(userId3, String.valueOf(Integer.valueOf(grade) + 1));
+            if (null != hhr){
+                return new BigDecimal(rulesVo.getAdministrator().getSharedRatio()).subtract(hhr);
             }
-            return new BigDecimal(rulesVo.getPartner().getSharedRatio()).subtract(commissionRatio).add(subtract);
-        }
-        if (StringUtils.equals("2", grade)){
-            return new BigDecimal(rulesVo.getAdministrator().getSharedRatio()).subtract(commissionRatio);
         }
-        return BigDecimal.ZERO;
+        return calculateProportion(grade,rulesVo,gl,hh);
     }
 
     public static BigDecimal calculateProportion(String grade, CommissionRulesVo rulesVo,BigDecimal gl,BigDecimal hh) {

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

@@ -188,6 +188,7 @@ public class ExpiredCommissionUtils {
         liftingRecord.setType("1");
         liftingRecord.setOriginalLevel(String.valueOf(partnerUser.getGrade()));
         liftingRecord.setAfterChange(String.valueOf(user.getGrade()));
+        liftingRecord.setCreateTime(new Date());
         return liftingRecord;
     }
 

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

@@ -79,14 +79,11 @@ public class PartnerDateUtils {
 
 
     public static boolean isSameDay(Date date) {
-        if (date == null) {
-            throw new IllegalArgumentException("Date cannot be null");
-        }
-
-        LocalDate inputDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
         LocalDate currentDate = LocalDate.now();
-
-        return inputDate.equals(currentDate);
+        LocalDate compareLocalDate = date.toInstant()
+                .atZone(ZoneId.systemDefault())
+                .toLocalDate();
+        return !compareLocalDate.isBefore(currentDate);
     }
 
 

+ 37 - 25
src/main/java/com/ydtech/modules/partner/utils/TimedTaskUtils.java

@@ -17,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -57,7 +56,7 @@ public class TimedTaskUtils {
      */
     @Scheduled(cron = "0 0 0 * * *")
     //@Scheduled(cron = "*/10 * * * * ?")
-    private void updateOrderDateNoon() {
+    public void updateOrderDateNoon() {
         log.info("记录佣金过期定时任务开始执行:{}", expireDays);
         List<PartnerLiftingRecord> list = liftingRecordService.queryExpireDays(expireDays);
         for (PartnerLiftingRecord record : list) {
@@ -98,27 +97,18 @@ public class TimedTaskUtils {
     /**
      * TODO: 更新降级考核时间
      */
-    @Scheduled(cron = "0 0 0 * * *")
+    @Scheduled(cron = "0 0 2 * * *")
     //@Scheduled(cron = "*/30 * * * * ?")
     public void checkCommissionExpireTime() {
         // TODO等级规则
         List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("identity_status", 0);
-        queryWrapper.in("grade", 2,3,4);
-        queryWrapper.orderByDesc("create_time");
-        queryWrapper.last("limit 10");
-        queryWrapper.eq("user_id","99140105M36010");
-        List<PartnerUser> partnerUsers = partnerUserMapper.selectList(queryWrapper);
+        List<PartnerUser> partnerUsers = partnerUserMapper.queryDowngradedData();
         for (PartnerUser partnerUser : partnerUsers) {
             PartnerRuleEntity rule = getRule(String.valueOf(partnerUser.getGrade()), partnerRuleEntities);
+            rule.setKhDays(2);
             Integer khDays = rule.getKhDays();
-            Date upgradeStartTime = partnerUserMapper.selectUpgradeStartTime(partnerUser.getUserId(), partnerUser.getGrade());
-            if (upgradeStartTime == null) {
-                partnerUserMapper.updateUpgradeStartTime(partnerUser.getUserId(), partnerUser.getGrade());
-            }
-            upgradeStartTime = partnerUserMapper.selectUpgradeStartTime(partnerUser.getUserId(), partnerUser.getGrade());
+            Date upgradeStartTime = getUpgradeStartTime(partnerUser);
             if (null == upgradeStartTime){
                 continue;
             }
@@ -126,26 +116,48 @@ public class TimedTaskUtils {
             //  生成结束时间
             Date upgradeEndTime = PartnerDateUtils.addDays(upgradeStartTime, khDays);
             System.out.println("结束时间:" + formatter.format(upgradeEndTime));
-            //   判断当前时间是否大于考核周期时间
             if (PartnerDateUtils.isSameDay(upgradeEndTime)){
-                List<PartnerAttribute> strategyArray = rule.getStrategyArray();
-                String appraise = rule.getAppraise();
                 // TODO考核条件  不满足时需锁定
                 ExpiredCommissionUtils commissionUtils = SpringUtil.getBean(ExpiredCommissionUtils.class);
                 boolean checked = commissionUtils.checkUpgradeConditions(partnerUser);
-                if (checked){
-                    // TODO 满足
-                }else {
+                if (!checked){
                     //TODO  不满足
                     commissionUtils.generateLockRecords(partnerUser);
                 }
                 //TODO    更新考核周期
-                partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), PartnerDateUtils.addDaysToday(new Date(), 0),partnerUser.getGrade());
-            }else {
-                //TODO    更新考核周期
-                updateUpgradeCycleTime(partnerUser,rule, upgradeStartTime);
+                partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), PartnerDateUtils.addDaysToday(upgradeEndTime, 1),partnerUser.getGrade());
+            }
+        }
+        update(partnerRuleEntities);
+    }
+
+
+    public void update(List<PartnerRuleEntity> partnerRuleEntities){
+        QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("identity_status", 0);
+        queryWrapper.in("grade", 2,3,4);
+        queryWrapper.orderByDesc("create_time");
+        queryWrapper.eq("user_id", "99140105M36001");
+        List<PartnerUser> partnerUsers = partnerUserMapper.selectList(queryWrapper);
+
+        for (PartnerUser filteredUser : partnerUsers) {
+            PartnerRuleEntity rule = getRule(String.valueOf(filteredUser.getGrade()), partnerRuleEntities);
+            Date upgradeStartTime = getUpgradeStartTime(filteredUser);
+            if (null == upgradeStartTime){
+                continue;
             }
+            //TODO    更新考核周期
+            updateUpgradeCycleTime(filteredUser,rule, upgradeStartTime);
+        }
+
+    }
+
+    private Date getUpgradeStartTime(PartnerUser filteredUser){
+        Date upgradeStartTime = partnerUserMapper.selectUpgradeStartTime(filteredUser.getUserId(), filteredUser.getGrade());
+        if (upgradeStartTime == null) {
+            partnerUserMapper.updateUpgradeStartTime(filteredUser.getUserId(), filteredUser.getGrade());
         }
+        return partnerUserMapper.selectUpgradeStartTime(filteredUser.getUserId(), filteredUser.getGrade());
     }
 
     public  void updateUpgradeCycleTime(PartnerUser partnerUser,PartnerRuleEntity rule,Date upgradeTime) {