瀏覽代碼

代理人3.0app开发

xuqiang 11 月之前
父節點
當前提交
70167cb6c3

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

@@ -46,11 +46,12 @@ 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);
 
-    //   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} ")
+    //
+    @Select("SELECT SUM(extract_fee) AS commission FROM partner_premium_details WHERE app_status = 1 AND user_id = #{userId} AND source = #{grade} AND DATE(create_time) >= DATE(#{createTime}) ")
     BigDecimal commissionAfterUserLocking(@Param("userId") String userId,@Param("grade") Integer grade,@Param("createTime") Date createTime);
 
-    //   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);
+    @Select("UPDATE partner_premium_details SET app_status = #{status} WHERE source = #{originalLevel} AND user_id = #{userId} AND DATE(create_time) >= #{identityTime} ")
+    void updateAppStatus(@Param("originalLevel") String originalLevel,@Param("userId") String userId, @Param("status")int status, @Param("identityTime")Date identityTime);
+
+
 }

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

@@ -164,7 +164,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     Date selectUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
     @Update("UPDATE partner_user SET upgrade_cycle_start_time = ( " +
-            " SELECT DATE(approve_time) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
+            " SELECT DATE_ADD(DATE(approve_time), INTERVAL 1 DAY) FROM sys_user_track WHERE `status` = 1 AND user_id = #{userId} LIMIT 1 " +
             " ) WHERE  user_id = #{userId} and grade = #{grade} ")
     void updateUpgradeStartTime(@Param("userId") String userId,@Param("grade") Integer grade);
 
@@ -174,7 +174,7 @@ public interface PartnerUserMapper extends BaseMapper<PartnerUser> {
     BigDecimal selectFixedRatio(@Param("userId") String userId, @Param("grade") String  grade);
 
 
-    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user u ON u.id = p.user_id WHERE u.`status` = 1 and p.user_id='99140426001'" +
+    @Select("SELECT p.* FROM partner_user p LEFT JOIN sys_user u ON u.id = p.user_id WHERE u.`status` = 1  " +
             "AND( p.grade, p.user_id) IN ( SELECT MIN( grade ) grade, user_id FROM partner_user WHERE grade IN ( '2', '3', '4' ) AND identity_status = 0 GROUP BY user_id )" +
             " ORDER BY p.create_time DESC")
     List<PartnerUser> queryDowngradedData();
@@ -201,7 +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 expired_time IS NOT NULL  AND identity_status = 1 AND DATE(DATE_ADD(expired_time, INTERVAL #{expireDays} DAY)) =  CURDATE()  ")
+    @Select(" SELECT user_id,grade,name,mobile,user_id,dept_id,dept_name,identity_time FROM partner_user WHERE identity_status = 1 AND DATE(DATE_ADD(identity_time, INTERVAL #{expireDays} DAY)) <=  CURDATE()  ")
     List<PartnerUser> queryExpiredRecords(Integer expireDays);
 
     @Update(" UPDATE partner_user SET expired_time = #{expiredTime} WHERE  user_id = #{userId} and grade = #{grade}  ")

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

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

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

@@ -171,7 +171,7 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
     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.getUpgradeCycleStartTime(),partnerUser.getExpiredTime());
+        premiumDetailsMapper.updateAppStatus(String.valueOf(partnerUser.getGrade()), liftingRecord.getUserId(), 0,partnerUser.getIdentityTime());
     }
 
 
@@ -246,7 +246,7 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
             PartnerUser partnerUser = partnerUserMapper.selectOne(new LambdaQueryWrapper<PartnerUser>().eq(PartnerUser::getUserId, liftingRecord.getUserId()).eq(PartnerUser::getGrade, liftingRecord.getOriginalLevel()));
 
             //更新单据状态
-            premiumDetailsMapper.updateAppStatus(liftingRecord.getOriginalLevel(), record.getUserId(),0,partnerUser.getUpgradeCycleStartTime(),partnerUser.getExpiredTime());
+            premiumDetailsMapper.updateAppStatus(liftingRecord.getOriginalLevel(), record.getUserId(),0,partnerUser.getIdentityTime());
         }
         return HttpResult.ok("解锁成功");
     }
@@ -343,9 +343,7 @@ 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);
+            selectOne.setIdentityTime(null);
             partnerUserMapper.updateById(selectOne);
             // 锁定上级佣金比例
             PartnerUser one = partnerUserMapper.selectOne(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, record.getUserId())
@@ -380,7 +378,7 @@ public class PartnerLiftingRecordServiceImpl extends ServiceImpl<PartnerLiftingR
         if (null == user || Objects.isNull(user.getIdentityTime())){
             return null;
         }
-        BigDecimal commission = detailsMapper.commissionAfterUserLocking(userId,user.getGrade(),PartnerDateUtils.addDays(user.getExpiredTime(), expireDays));
+        BigDecimal commission = detailsMapper.commissionAfterUserLocking(userId,user.getGrade(),user.getIdentityTime());
         return commission;
     }
 

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

@@ -1,8 +1,10 @@
 package com.ydtech.modules.partner.utils;
 
+
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.Date;
 
@@ -98,4 +100,25 @@ public class PartnerDateUtils {
     }
 
 
+    /**
+     * 描述: 生成到期时间
+     * @param startTime
+     * @param khDays
+     * @return
+     */
+    public static Date generateEndTime(Date startTime,Integer khDays) {
+        LocalDateTime localDateTime = startTime.toInstant()
+                .atZone(ZoneId.systemDefault())
+                .toLocalDateTime();
+        LocalDateTime resultDateTime = localDateTime.plusDays(khDays).minusSeconds(1);
+        return Date.from(resultDateTime.atZone(ZoneId.systemDefault()).toInstant());
+    }
+
+    public static String timeExample(Integer khDays) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate minus = LocalDate.now().minus(khDays, ChronoUnit.DAYS);
+        return formatter.format( minus);
+    }
+
+
 }

+ 35 - 48
src/main/java/com/ydtech/modules/partner/utils/TimedTaskUtils.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.partner.utils;
 
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -20,6 +21,7 @@ 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.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -67,49 +69,35 @@ public class TimedTaskUtils {
         log.info("记录佣金过期定时任务开始执行:{}", expireDays);
         List<PartnerUser> partnerUserList = partnerUserMapper.queryExpiredRecords(expireDays);
         for (PartnerUser partnerUser : partnerUserList) {
-            PartnerPartnerAccount account = accountMapper.selectOne(new LambdaQueryWrapper<>(PartnerPartnerAccount.class)
-                    .eq(PartnerPartnerAccount::getUserId, partnerUser.getUserId()).eq(PartnerPartnerAccount::getGrade, partnerUser.getGrade()));
-            if (null == account) {
-                continue;
-            }
-            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);
+            String date = PartnerDateUtils.timeExample(expireDays);
+            LambdaQueryWrapper<PartnerPremiumDetails> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.eq(PartnerPremiumDetails::getUserId, partnerUser.getUserId())
+                    .eq(PartnerPremiumDetails::getSource, partnerUser.getGrade())
+                    .eq(PartnerPremiumDetails::getAppStatus, 1)
+                    .between(PartnerPremiumDetails::getCreateTime,date+" 00:00:00",date+" 23:59:59");
+            List<PartnerPremiumDetails> partnerPremiumDetails = premiumDetailsMapper.selectList(lambdaQueryWrapper);
+            if (CollectionUtil.isNotEmpty(partnerPremiumDetails)){
+                BigDecimal lockCommission = partnerPremiumDetails.stream().map(PartnerPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                PartnerExpiredCommission commission = getExpiredUserCommission(partnerUser,lockCommission);
+                expiredCommissionMapper.insert(commission);
+                if (null != lockCommission){
+                    PartnerPartnerAccount account = accountMapper.selectOne(new LambdaQueryWrapper<>(PartnerPartnerAccount.class)
+                            .eq(PartnerPartnerAccount::getUserId, partnerUser.getUserId()).eq(PartnerPartnerAccount::getGrade, partnerUser.getGrade()));
+                    if (null == account) {
+                        continue;
+                    }
+                    if (null != lockCommission){
+                        account.setExpiredAmount(account.getExpiredAmount().add(lockCommission));
+                        accountMapper.updateById(account);
+                    }
+                    //更新单据状态
+                    for (PartnerPremiumDetails detail : partnerPremiumDetails) {
+                        detail.setAppStatus(2);
+                        premiumDetailsMapper.updateById(detail);
+                    }
+                }
             }
-            //liftingRecordService.updateAuditStatusById(record);
-            //更新单据状态
-            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();
     }
 
 
@@ -123,7 +111,7 @@ public class TimedTaskUtils {
         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.setDowngradeTime(record.getIdentityTime());
         commission.setExpiration(new Date());
         commission.setCreateTime(new Date());
         return commission;
@@ -149,6 +137,7 @@ public class TimedTaskUtils {
     /**
      * TODO: 更新降级考核时间
      */
+    @Scheduled(cron = "0 0 0 * * *")
     public void checkCommissionExpireTime() {
         // TODO等级规则
         List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();
@@ -163,7 +152,7 @@ public class TimedTaskUtils {
             }
             System.out.println("开始时间:" + formatter.format(upgradeStartTime));
             //  生成结束时间
-            Date upgradeEndTime = PartnerDateUtils.addDays(upgradeStartTime, khDays);
+            Date upgradeEndTime = PartnerDateUtils.generateEndTime(upgradeStartTime, khDays);
             System.out.println("结束时间:" + formatter.format(upgradeEndTime));
             if (PartnerDateUtils.isSameDay(upgradeEndTime)){
                 // TODO考核条件  不满足时需锁定
@@ -172,14 +161,11 @@ public class TimedTaskUtils {
                 if (!checked){
                     //TODO  不满足
                     commissionUtils.generateLockRecords(partnerUser);
-                }else {
-                    // TODO 满足
-                    partnerUser.setExpiredTime(PartnerDateUtils.addDaysToday(upgradeEndTime,khDays + 1));
-                    partnerUserMapper.updateById(partnerUser);
                 }
                 //TODO    更新考核周期
-                partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), PartnerDateUtils.addDaysToday(upgradeEndTime, 1),partnerUser.getGrade());
+                partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), PartnerDateUtils.addDaysToday(upgradeEndTime,1),partnerUser.getGrade());
             }
+
         }
         List<String> idList = partnerUsers.stream()
                 .map(PartnerUser::getId)
@@ -190,6 +176,7 @@ public class TimedTaskUtils {
 
     public void update(List<PartnerRuleEntity> partnerRuleEntities,List<String> idList){
         QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("identity_status", 0);
         queryWrapper.in("grade", 2,3,4);
         queryWrapper.orderByDesc("create_time");
         queryWrapper.notIn("id", idList);