소스 검색

e级客户评级完善

xw 2 일 전
부모
커밋
62d9ad4394

+ 18 - 9
fs-qw-task/src/main/java/com/fs/app/taskService/impl/QwExternalContactRatingMoreSevenDaysServiceImpl.java

@@ -213,7 +213,7 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
                 QwExternalContact externalContact = new QwExternalContact();
                 externalContact.setId(externalId);
                 externalContact.setLevel(5);  // E级
-                externalContact.setLevelType(5);  // E级类型
+                externalContact.setLevelType(2);  // 降级(从ABCD任何等级变为E级都是降级)
                 externalContact.setIsDaysNotStudy(1);
                 return externalContact;
             }
@@ -227,20 +227,29 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
                 QwExternalContact externalContact = new QwExternalContact();
                 externalContact.setId(externalId);
                 externalContact.setLevel(5);  // E级
-                externalContact.setLevelType(5);  // E级类型
+                externalContact.setLevelType(2);  // E级类型
                 externalContact.setIsDaysNotStudy(1);
                 return externalContact;
             } else {
-                // 有看课记录且时长>0,不是E级,恢复为ABCD评级(保持原有level)
+                // 有看课记录且时长>0,不是E级,恢复为ABCD评级
                 log.info("最近{}天有看课记录,不是E级,externalId: {}", config.getNotStudyDays(), externalId);
                 QwExternalContact externalContact = new QwExternalContact();
                 externalContact.setId(externalId);
-                // 保持原有的ABCD评级,不修改
-                if (ratingVOS.get(0).getLevel() != null) {
-                    externalContact.setLevel(ratingVOS.get(0).getLevel());
-                }
-                if (ratingVOS.get(0).getLevelType() != null) {
-                    externalContact.setLevelType(ratingVOS.get(0).getLevelType());
+                // 检查当前等级是否为E级,如果是则需要重新计算
+                Integer currentLevel = ratingVOS.get(0).getLevel();
+                if (currentLevel != null && currentLevel == 5) {
+                    // 如果当前是E级,恢复为D级(默认),后续由ABCD评级任务重新计算
+                    externalContact.setLevel(4);
+                    externalContact.setLevelType(1);  // 从E级(5)恢复到D级(4)是升级
+                    log.info("客户从E级恢复,暂设为D级,externalId: {}", externalId);
+                } else {
+                    // 保持原有的ABCD评级,不修改
+                    if (currentLevel != null) {
+                        externalContact.setLevel(currentLevel);
+                    }
+                    if (ratingVOS.get(0).getLevelType() != null) {
+                        externalContact.setLevelType(ratingVOS.get(0).getLevelType());
+                    }
                 }
                 externalContact.setIsDaysNotStudy(0);  // 标记为非连续未看课
                 return externalContact;

+ 2 - 3
fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsInfoMapper.java

@@ -161,10 +161,9 @@ public interface SopUserLogsInfoMapper {
     @DataSource(DataSourceType.SOP)
     @Update("<script>" +
             "UPDATE sop_user_logs_info " +
-            "SET is_days_not_study = CASE " +
+            "SET is_days_not_study = CASE external_id " +
             "<foreach collection='contactList' item='item'> " +
-            "    WHEN external_id = #{item.id} THEN " +
-            "    CASE WHEN #{item.level} = 5 AND #{item.isDaysNotStudy}=1 THEN 1 ELSE 0 END " +
+            "    WHEN #{item.id} THEN #{item.isDaysNotStudy} " +
             "</foreach> " +
             "ELSE is_days_not_study " +
             "END " +