From 44174ecd40c58060ff6c64d2ad874b8afaf2ae7f Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 11 四月 2024 12:09:23 +0800
Subject: [PATCH] 修改市场总监降级bug

---
 meiya-rest/src/main/java/com/sinata/rest/modular/mall/job/UserV5UpDownWork.java |   59 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/meiya-rest/src/main/java/com/sinata/rest/modular/mall/job/UserV5UpDownWork.java b/meiya-rest/src/main/java/com/sinata/rest/modular/mall/job/UserV5UpDownWork.java
index 5e4f595..75ffffd 100644
--- a/meiya-rest/src/main/java/com/sinata/rest/modular/mall/job/UserV5UpDownWork.java
+++ b/meiya-rest/src/main/java/com/sinata/rest/modular/mall/job/UserV5UpDownWork.java
@@ -6,12 +6,15 @@
 import com.sinata.common.enums.EnumMemberGrade;
 import com.sinata.common.enums.EnumSystemSetKey;
 import com.sinata.common.enums.mall.EnumMallOrderState;
+import com.sinata.rest.core.support.DateTime;
 import com.sinata.rest.modular.mall.service.IMallOrderService;
 import com.sinata.rest.modular.member.model.MemUser;
 import com.sinata.rest.modular.member.service.IMemUserRelationService;
 import com.sinata.rest.modular.member.service.IMemUserService;
 import com.sinata.rest.modular.system.service.ISystemSetService;
 import io.swagger.annotations.Api;
+import java.util.Date;
+import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -21,6 +24,7 @@
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 定时任务-等级晋升维持
@@ -44,29 +48,42 @@
     private IMallOrderService mallOrderService;
 
     /**
-     * 每天执行1次
+     * 每月一号 0:30执行
      */
-    @Scheduled(cron = "0 3 0 */1 * *")
+    @Scheduled(cron = "0 30 0 1 * ?")
     public void run() {
-        // 市场总监列表
-        List<MemUser> v5UserList = memUserService.list(
-                Wrappers.<MemUser>query().lambda()
-                        .select(MemUser::getId, MemUser::getRealName, MemUser::getCreditScore, MemUser::getMemberGradeId, MemUser::getMemberGradeTime)
-                        .eq(MemUser::getIsDelete, EnumIsDelete.EXISTED.index) // 非注销
-                        .eq(MemUser::getIsLeaveOffice, 0) // 非离职
-                        .eq(MemUser::getMemberGradeId, EnumMemberGrade.G_5.index)
-        );
-
-        for (MemUser user : v5UserList) {
-            if (v5Case1(user.getId()) && v5Case2(user.getId())) {
-                log.info("【市场总监降级为黄金营销员】用户:{} / {}",
-                        user.getId(), user.getRealName()
-                );
-                // 降级为-黄金营销员
-                user.setMemberGradeId(EnumMemberGrade.G_3.index);
-                user.setMemberGradeTime(DateUtil.date());
-                user.setCreditScore(BigDecimal.valueOf(100));
-                user.updateById();
+        if (DateUtil.thisDayOfMonth() == 1) {
+            // 市场总监列表
+            List<MemUser> v5UserList = memUserService.list(
+                    Wrappers.<MemUser>query().lambda()
+                            .select(MemUser::getId, MemUser::getRealName, MemUser::getCreditScore, MemUser::getMemberGradeId, MemUser::getMemberGradeTime)
+                            .eq(MemUser::getIsDelete, EnumIsDelete.EXISTED.index) // 非注销
+                            .eq(MemUser::getIsLeaveOffice, 0) // 非离职
+                            .eq(MemUser::getMemberGradeId, EnumMemberGrade.G_5.index)
+            );
+            //品行分小于60直接降级为黄金营销员
+            List<MemUser> list = v5UserList.stream().filter(user ->
+                    user.getCreditScore().compareTo(BigDecimal.valueOf(60)) < 0).peek(item -> {
+                item.setMemberGradeId(EnumMemberGrade.G_3.index);
+                item.setMemberGradeTime(DateUtil.date());
+                item.setCreditScore(BigDecimal.valueOf(100));
+            }).collect(Collectors.toList());
+            memUserService.updateBatchById(list);
+            //剩下需要通过维持方案来判断的用户
+            List<MemUser> userList = v5UserList.stream().filter(user ->
+                            user.getCreditScore().compareTo(BigDecimal.valueOf(60)) >= 0)
+                    .collect(Collectors.toList());
+            for (MemUser user : userList) {
+                if (v5Case1(user.getId()) && v5Case2(user.getId())) {
+                    log.info("【市场总监降级为城市合伙人】用户:{} / {}",
+                            user.getId(), user.getRealName()
+                    );
+                    // 降级一级
+                    user.setMemberGradeId(EnumMemberGrade.G_4.index);
+                    user.setMemberGradeTime(DateUtil.date());
+                    user.setCreditScore(BigDecimal.valueOf(100));
+                    user.updateById();
+                }
             }
         }
     }

--
Gitblit v1.7.1