Explorar el Código

代理人3.0app开发

xuqiang hace 11 meses
padre
commit
8adbc397cf

+ 5 - 4
src/main/java/com/ydtech/modules/partner/dao/PartnerPremiumDetailsMapper.java

@@ -46,10 +46,11 @@ public interface PartnerPremiumDetailsMapper extends BaseMapper<PartnerPremiumDe
     @Select("SELECT user_id AS userId,SUM( sumpremium) AS premium,SUM(extract_fee) AS commission FROM partner_premium_details ${ew.customSqlSegment} ")
     List<Map<String,Object>> selectCombinedStatistics(@Param("ew")QueryWrapper<PartnerPremiumDetails> wrapper);
 
-
-    @Select("SELECT SUM(extract_fee) AS commission FROM partner_premium_details WHERE app_status = 1 AND user_id = #{userId} AND source = #{grade} AND create_time >= #{createTime}")
+    //   AND create_time >= #{createTime}
+    @Select("SELECT SUM(extract_fee) AS commission FROM partner_premium_details WHERE app_status = 1 AND user_id = #{userId} AND source = #{grade} ")
     BigDecimal commissionAfterUserLocking(@Param("userId") String userId,@Param("grade") Integer grade,@Param("createTime") Date createTime);
 
-    @Select("UPDATE partner_premium_details SET app_status = #{status} WHERE source = #{originalLevel} AND user_id = #{userId} AND create_time BETWEEN DATE_FORMAT(#{identityTime}, '%Y-%m-%d 00:00:00') AND TIMESTAMP(DATE(NOW()), '23:59:59') ")
-    void updateAppStatus(@Param("originalLevel") String originalLevel,@Param("userId") String userId, @Param("status")int status, @Param("identityTime")Date identityTime);
+    //   AND create_time BETWEEN DATE_FORMAT(#{identityTime}, '%Y-%m-%d 00:00:00') AND TIMESTAMP(DATE(NOW()), '23:59:59')
+    @Select("UPDATE partner_premium_details SET app_status = #{status} WHERE source = #{originalLevel} AND user_id = #{userId} AND create_time BETWEEN DATE_FORMAT(#{upgradeCycleStartTime}, '%Y-%m-%d 00:00:00') AND TIMESTAMP(DATE(#{identityTime}), '23:59:59') ")
+    void updateAppStatus(@Param("originalLevel") String originalLevel,@Param("userId") String userId, @Param("status")int status,@Param("upgradeCycleStartTime")Date upgradeCycleStartTime, @Param("identityTime")Date identityTime);
 }

+ 7 - 4
src/main/java/com/ydtech/modules/partner/dao/PartnerUserMapper.java

@@ -146,16 +146,16 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Select(" SELECT p.id,p.user_id,p.grade,p.name,p.create_time FROM partner_user p LEFT JOIN sys_user u ON u.id = p .user_id ${ew.customSqlSegment}")
     List<PartnerUser> selectAllListVo(@Param("ew") QueryWrapper<PartnerUser> queryWrapper);
 
-    @Update("UPDATE partner_user SET identity_status = #{identityStatus},upgrade_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'),upgrade_cycle_start_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00') WHERE user_id = #{userId} and grade = #{originalLevel} ")
-    void updateIdentityStatus(@Param("userId") String userId,@Param("originalLevel") String originalLevel,@Param("identityStatus")int identityStatus);
+    @Update("UPDATE partner_user SET identity_status = #{identityStatus},upgrade_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00'),expired_time = #{expiredTime},upgrade_cycle_start_time = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00') WHERE user_id = #{userId} and grade = #{originalLevel} ")
+    void updateIdentityStatus(@Param("userId") String userId,@Param("originalLevel") String originalLevel,@Param("identityStatus")int identityStatus,@Param("expiredTime") Date expiredTime);
 
     UserRuleVo queryUserRuleVo(@Param("userId") String userId, @Param("grade")Integer grade,@Param("period") CommissionValidityPeriod period);
 
     @Select("SELECT upgrade_cycle_start_time as startDate FROM partner_user WHERE user_id = #{userId} AND grade = #{grade}")
     CommissionValidityPeriod selectUpgradeCycleStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
-    @Update("UPDATE partner_user SET upgrade_cycle_start_time = #{newDate} WHERE  user_id = #{userId} and grade = #{grade} ")
-    void updateUpgradeCycleStartTime(@Param("userId") String userId, @Param("newDate")Date newDate,@Param("grade") Integer grade);
+    @Update("UPDATE partner_user SET upgrade_cycle_start_time = #{newDate},expired_time = #{expiredTime} WHERE  user_id = #{userId} and grade = #{grade} ")
+    void updateUpgradeCycleStartTime(@Param("userId") String userId, @Param("newDate")Date newDate,@Param("grade") Integer grade,@Param("expiredTime") Date expiredTime);
 
 
     BigDecimal selectOwnSumPremium(@Param("userId") String userId, @Param("period") CommissionValidityPeriod period);
@@ -201,4 +201,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     @Select("SELECT identity_time FROM partner_user WHERE user_id = #{userId} AND grade = #{originalLevel}")
     Date selectLockTime(@Param("userId") String userId, @Param("originalLevel")String originalLevel);
 
+    @Select(" SELECT * FROM partner_user WHERE user_id = '99140524002'  and expired_time IS NOT NULL  AND identity_status = 1 AND DATE(DATE_ADD(expired_time, INTERVAL #{expireDays} DAY)) =  CURDATE()  ")
+    List<PartnerUser> queryExpiredRecords(Integer expireDays);
+
 }

+ 7 - 0
src/main/java/com/ydtech/modules/partner/model/PartnerUser.java

@@ -119,4 +119,11 @@ public class PartnerUser{
     private Date updateTime;
 
 
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "expired_time")
+    private Date expiredTime;
+
 }

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

@@ -146,6 +146,7 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
         switch (auditStatus) {
             case 1:
                 message = "审批通过";
+                updateAppStatus(liftingRecord);
                 addUserLevel(liftingRecord,audit.getAuditCommission());
                 break;
             case 2:
@@ -160,16 +161,13 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
                 return HttpResult.error("审批状态不合法");
         }
         boolean success = baseMapper.updateById(liftingRecord) > 0;
-        if (success) {
-            updateAppStatus(liftingRecord);
-        }
         return success ? HttpResult.ok(message) : HttpResult.error("审批失败");
     }
 
     public void updateAppStatus(PartnerLiftingRecord liftingRecord){
         PartnerUser partnerUser = partnerUserMapper.selectOne(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, liftingRecord.getUserId())
                 .eq(PartnerUser::getGrade, liftingRecord.getAfterChange()));
-        premiumDetailsMapper.updateAppStatus(String.valueOf(partnerUser.getGrade()), liftingRecord.getUserId(), 0,partnerUser.getIdentityTime());
+        premiumDetailsMapper.updateAppStatus(String.valueOf(partnerUser.getGrade()), liftingRecord.getUserId(), 0,partnerUser.getUpgradeCycleStartTime(),partnerUser.getExpiredTime());
     }
 
 
@@ -237,10 +235,14 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
             record.setApperId(recordApper.getId());
             purchaseRecordService.save( record);
             //更新用户锁定状态
-            partnerUserMapper.updateIdentityStatus(liftingRecord.getUserId(),liftingRecord.getOriginalLevel(),0);
-            Date lockTime = partnerUserMapper.selectLockTime(liftingRecord.getUserId(),liftingRecord.getOriginalLevel());
+            PartnerRuleEntity ruleEntity = ruleService.selectByGrade(liftingRecord.getOriginalLevel());
+            Date expiredTime = PartnerDateUtils.addDaysToday(new Date(),ruleEntity.getKhDays());
+            partnerUserMapper.updateIdentityStatus(liftingRecord.getUserId(),liftingRecord.getOriginalLevel(),0,expiredTime);
+
+            PartnerUser partnerUser = partnerUserMapper.selectOne(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, liftingRecord.getUserId()).eq(PartnerUser::getGrade, liftingRecord.getOriginalLevel()));
+
             //更新单据状态
-            premiumDetailsMapper.updateAppStatus(liftingRecord.getOriginalLevel(), record.getUserId(),0,lockTime);
+            premiumDetailsMapper.updateAppStatus(liftingRecord.getOriginalLevel(), record.getUserId(),0,partnerUser.getUpgradeCycleStartTime(),partnerUser.getExpiredTime());
         }
         return HttpResult.ok("解锁成功");
     }
@@ -277,6 +279,7 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
         switch (auditStatus) {
             case 1:
                 message = "审批通过";
+                updateAppStatus(liftingRecord);
                 updateUserIdentityStatus(liftingRecord,audit.getAuditCommission());
                 break;
             case 2:
@@ -291,9 +294,6 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
                 return HttpResult.error("审批状态不合法");
         }
         boolean success = baseMapper.updateById(liftingRecord) > 0;
-        if (success) {
-            updateAppStatus(liftingRecord);
-        }
         return success ? HttpResult.ok(message) : HttpResult.error("审批失败");
     }
 
@@ -339,6 +339,9 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
             selectOne.setUpgradeCycleStartTime(date);
             selectOne.setAssessmentTime(date);
             selectOne.setUpgradeTime(date);
+            PartnerRuleEntity ruleEntity = ruleService.selectByGrade(liftingRecord.getOriginalLevel());
+            Date expiredTime = PartnerDateUtils.addDaysToday(date, ruleEntity.getKhDays());
+            selectOne.setExpiredTime(expiredTime);
             partnerUserMapper.updateById(selectOne);
             // 锁定上级佣金比例
             PartnerUser one = partnerUserMapper.selectOne(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, record.getUserId())

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

@@ -53,6 +53,15 @@ public class PartnerDateUtils {
         return localDate.isAfter(LocalDateTime.now());
     }
 
+    public static boolean before(Date date){
+        if (date.before( new Date())) {
+            System.out.println("目标时间在当前时间之前");
+            return true;
+        } else {
+            System.out.println("目标时间在当前时间之后或相同");
+            return false;
+        }
+    }
 
     /**
      * 目标日期在今天之前

+ 53 - 17
src/main/java/com/ydtech/modules/partner/utils/TimedTaskUtils.java

@@ -23,6 +23,7 @@ import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 
 /**
@@ -63,31 +64,68 @@ public class TimedTaskUtils {
     @Scheduled(cron = "0 0 0 * * *")
     public void updateOrderDateNoon() {
         log.info("记录佣金过期定时任务开始执行:{}", expireDays);
-        List<PartnerLiftingRecord> list = liftingRecordService.queryExpireDays(expireDays);
-        for (PartnerLiftingRecord record : list) {
-            //清空 当前用户抽成账户表
+        List<PartnerUser> partnerUserList = partnerUserMapper.queryExpiredRecords(expireDays);
+        for (PartnerUser partnerUser : partnerUserList) {
             PartnerPartnerAccount account = accountMapper.selectOne(new LambdaQueryWrapper<>(PartnerPartnerAccount.class)
-                    .eq(PartnerPartnerAccount::getUserId, record.getUserId()).eq(PartnerPartnerAccount::getGrade, record.getOriginalLevel()));
-            if (null ==  account){
+                    .eq(PartnerPartnerAccount::getUserId, partnerUser.getUserId()).eq(PartnerPartnerAccount::getGrade, partnerUser.getGrade()));
+            if (null == account) {
                 continue;
             }
-            BigDecimal lockCommission = liftingRecordService.queryLockCommission(record.getUserId(), record.getOriginalLevel());
-            PartnerExpiredCommission commission = getExpiredCommission(record,lockCommission);
+            BigDecimal lockCommission = liftingRecordService.queryLockCommission(partnerUser.getUserId(), String.valueOf(partnerUser.getGrade()));
+            PartnerExpiredCommission commission = getExpiredUserCommission(partnerUser,lockCommission);
             expiredCommissionMapper.insert(commission);
             if (null != lockCommission){
                 account.setExpiredAmount(account.getExpiredAmount().add(lockCommission));
                 accountMapper.updateById(account);
             }
-            liftingRecordService.updateAuditStatusById(record);
-            PartnerUser partnerUser = partnerUserMapper.selectOne(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, record.getUserId())
-                    .eq(PartnerUser::getGrade, record.getOriginalLevel()));
-//            partnerUser.setIdentityTime(PartnerDateUtils.addDaysToday(new Date(),0));
-//            partnerUserMapper.updateById(partnerUser);
+            //liftingRecordService.updateAuditStatusById(record);
             //更新单据状态
-            premiumDetailsMapper.updateAppStatus(record.getOriginalLevel(), record.getUserId(), 2,partnerUser.getIdentityTime());
+            premiumDetailsMapper.updateAppStatus(String.valueOf(partnerUser.getGrade()), partnerUser.getUserId(), 2,partnerUser.getUpgradeCycleStartTime(),partnerUser.getExpiredTime());
         }
 
+//        List<PartnerLiftingRecord> list = liftingRecordService.queryExpireDays(expireDays);
+//
+//        for (PartnerLiftingRecord record : list) {
+//            //清空 当前用户抽成账户表
+//            PartnerPartnerAccount account = accountMapper.selectOne(new LambdaQueryWrapper<>(PartnerPartnerAccount.class)
+//                    .eq(PartnerPartnerAccount::getUserId, record.getUserId()).eq(PartnerPartnerAccount::getGrade, record.getOriginalLevel()));
+//            if (null ==  account){
+//                continue;
+//            }
+//            BigDecimal lockCommission = liftingRecordService.queryLockCommission(record.getUserId(), record.getOriginalLevel());
+//            PartnerExpiredCommission commission = getExpiredCommission(record,lockCommission);
+//            expiredCommissionMapper.insert(commission);
+//            if (null != lockCommission){
+//                account.setExpiredAmount(account.getExpiredAmount().add(lockCommission));
+//                accountMapper.updateById(account);
+//            }
+//            liftingRecordService.updateAuditStatusById(record);
+//            PartnerUser partnerUser = partnerUserMapper.selectOne(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, record.getUserId())
+//                    .eq(PartnerUser::getGrade, record.getOriginalLevel()));
+////            partnerUser.setIdentityTime(PartnerDateUtils.addDaysToday(new Date(),0));
+//            partnerUser.setExpiredTime(PartnerDateUtils.addDaysToday(new Date(),0));
+//            partnerUserMapper.updateById(partnerUser);
+//            //更新单据状态
+//            premiumDetailsMapper.updateAppStatus(record.getOriginalLevel(), record.getUserId(), 2,partnerUser.getIdentityTime());
+//        }
+        checkCommissionExpireTime();
+    }
+
 
+    private static PartnerExpiredCommission getExpiredUserCommission(PartnerUser record, BigDecimal lockCommission) {
+        PartnerExpiredCommission commission = new PartnerExpiredCommission();
+        commission.setName(record.getName());
+        commission.setMobile(record.getMobile());
+        commission.setUserId(record.getUserId());
+        commission.setDeptId(record.getDeptId());
+        commission.setDeptName(record.getDeptName());
+        commission.setGrade(String.valueOf(record.getGrade()));
+        commission.setGradeAfter(String.valueOf(record.getGrade() + 1));
+        commission.setLockCommission(null == lockCommission ? new BigDecimal("0") : lockCommission);
+        commission.setDowngradeTime(record.getCreateTime());
+        commission.setExpiration(new Date());
+        commission.setCreateTime(new Date());
+        return commission;
     }
 
     private static PartnerExpiredCommission getExpiredCommission(PartnerLiftingRecord record, BigDecimal lockCommission) {
@@ -110,8 +148,6 @@ public class TimedTaskUtils {
     /**
      * TODO: 更新降级考核时间
      */
-    //@XxlJob("checkCommissionExpireTime")
-    @Scheduled(cron = "0 0 0 * * *")
     public void checkCommissionExpireTime() {
         // TODO等级规则
         List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();
@@ -137,7 +173,7 @@ public class TimedTaskUtils {
                     commissionUtils.generateLockRecords(partnerUser);
                 }
                 //TODO    更新考核周期
-                partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), PartnerDateUtils.addDaysToday(upgradeEndTime, 1),partnerUser.getGrade());
+                partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), PartnerDateUtils.addDaysToday(upgradeEndTime, 1),partnerUser.getGrade(),PartnerDateUtils.addDaysToday(upgradeEndTime,khDays));
             }
         }
         update(partnerRuleEntities);
@@ -180,7 +216,7 @@ public class TimedTaskUtils {
             today = true;
         }
         if (today){
-            partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), upgradeTime,partnerUser.getGrade());
+            partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), upgradeTime,partnerUser.getGrade(), PartnerDateUtils.addDaysToday(upgradeTime,khDays));
         }
     }