Quellcode durchsuchen

评级维度由客户改为sop营期

xw vor 1 Woche
Ursprung
Commit
73a5a7cefa

+ 6 - 3
fs-qw-task/src/main/java/com/fs/app/taskService/impl/QwExternalContactRatingMoreSevenDaysServiceImpl.java

@@ -210,7 +210,7 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
 
             // 如果连续3天没有看课记录,标记为E级
             if (ratingVOS == null || ratingVOS.isEmpty()) {
-                return buildELevelContactIfEligible(externalId, config,
+                return buildELevelContactIfEligible(logsInfo, config,
                         "连续{}天没有看课记录,标记为E级,externalId: {}");
             }
 
@@ -219,13 +219,14 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
 
             if (!hasWatchDuration) {
                 // 有记录但观看时长为0,也认为连续3天未看课,标记为E级
-                return buildELevelContactIfEligible(externalId, config,
+                return buildELevelContactIfEligible(logsInfo, config,
                         "连续{}天看课时长为0,标记为E级,externalId: {}");
             } else {
                 // 有看课记录且时长>0,不是E级,恢复为ABCD评级
                 log.info("最近{}天有看课记录,不是E级,externalId: {}", config.getNotStudyDays(), externalId);
                 QwExternalContact externalContact = new QwExternalContact();
                 externalContact.setId(externalId);
+                externalContact.setSopUserLogsInfoId(logsInfo.getId());
                 // 检查当前等级是否为E级,如果是则需要重新计算
                 Integer currentLevel = ratingVOS.get(0).getLevel();
                 if (currentLevel != null && currentLevel == 5) {
@@ -352,7 +353,8 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
         return daysSinceCreate > 3;
     }
 
-    private QwExternalContact buildELevelContactIfEligible(Long externalId, QwRatingConfig config, String logPattern) {
+    private QwExternalContact buildELevelContactIfEligible(SopUserLogsInfo logsInfo, QwRatingConfig config, String logPattern) {
+        Long externalId = logsInfo.getExternalId();
         if (!canRateTransferContactAsELevel(externalId)) {
             log.info("转接客户创建未满3天,跳过E级评定,externalId: {}", externalId);
             return null;
@@ -360,6 +362,7 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
         log.info(logPattern, config.getNotStudyDays(), externalId);
         QwExternalContact externalContact = new QwExternalContact();
         externalContact.setId(externalId);
+        externalContact.setSopUserLogsInfoId(logsInfo.getId());
         externalContact.setLevel(5);
         externalContact.setLevelType(2);
         externalContact.setIsDaysNotStudy(1);

+ 1 - 0
fs-qw-task/src/main/java/com/fs/app/taskService/impl/QwExternalContactRatingServiceImpl.java

@@ -229,6 +229,7 @@ public class QwExternalContactRatingServiceImpl implements QwExternalContactRati
 
             QwExternalContact externalContact = new QwExternalContact();
             externalContact.setId(externalId);
+            externalContact.setSopUserLogsInfoId(logsInfo.getId());
             externalContact.setLevel(scoreLevel);
             externalContact.setLastWatchTime(latestTime);
             externalContact.setLevelType(levelUpFall);

+ 2 - 1
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopUserLogsInfoByIsDaysNotStudyImpl.java

@@ -246,10 +246,11 @@ public class SopUserLogsInfoByIsDaysNotStudyImpl implements SopUserLogsInfoByIsD
             if (sumDuration!=null && sumDuration>0) {
                 QwExternalContact externalContact = new QwExternalContact();
                 externalContact.setId(externalId);
+                externalContact.setSopUserLogsInfoId(logsInfo.getId());
                 externalContact.setLevel(4);  // 从E级恢复到D级
                 externalContact.setLevelType(1);  // 升级
                 externalContact.setIsDaysNotStudy(0);  // 标记为非连续未看课
-                log.info("客户从E级恢复到D级,externalId: {}", externalId);
+                log.info("客户从E级恢复到D级,externalId: {}, logsInfoId: {}", externalId, logsInfo.getId());
                 return externalContact;
             }
 

+ 4 - 0
fs-service/src/main/java/com/fs/qw/domain/QwExternalContact.java

@@ -126,6 +126,10 @@ public class QwExternalContact extends BaseEntity
     @TableField(exist = false)
     private Integer isDaysNotStudy;
 
+    /** sop_user_logs_info 主键,营期客户记录按条更新评级/未看课标记 */
+    @TableField(exist = false)
+    private String sopUserLogsInfoId;
+
     private Integer levelType;
 
     @JsonFormat(pattern = "yyyy-MM-dd")

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

@@ -161,21 +161,21 @@ public interface SopUserLogsInfoMapper {
     @DataSource(DataSourceType.SOP)
     @Update("<script>" +
             "UPDATE sop_user_logs_info " +
-            "SET is_days_not_study = CASE external_id " +
+            "SET is_days_not_study = CASE id " +
             "<foreach collection='contactList' item='item'> " +
-            "    WHEN #{item.id} THEN #{item.isDaysNotStudy} " +
+            "    WHEN #{item.sopUserLogsInfoId} THEN #{item.isDaysNotStudy} " +
             "</foreach> " +
             "ELSE is_days_not_study " +
             "END, " +
-            "grade = CASE external_id " +
+            "grade = CASE id " +
             "<foreach collection='contactList' item='item'> " +
-            "    WHEN #{item.id} THEN #{item.level} " +
+            "    WHEN #{item.sopUserLogsInfoId} THEN #{item.level} " +
             "</foreach> " +
             "ELSE grade " +
             "END " +
-            "WHERE external_id IN " +
+            "WHERE id IN " +
             "<foreach collection='contactList' item='item' open='(' separator=',' close=')'> " +
-            "    #{item.id} " +
+            "    #{item.sopUserLogsInfoId} " +
             "</foreach>" +
             "</script>")
     void batchUpdateSopUserLogsInfoByMoreStudy(@Param("contactList") List<QwExternalContact> contactList);
@@ -185,9 +185,9 @@ public interface SopUserLogsInfoMapper {
             "UPDATE sop_user_logs_info " +
             "SET is_days_not_study = 0, " +
             "grade = 4 " +
-            "WHERE external_id IN " +
+            "WHERE id IN " +
             "<foreach collection='contactList' item='item' open='(' separator=',' close=')'>" +
-            "    #{item.id} " +
+            "    #{item.sopUserLogsInfoId} " +
             "</foreach>" +
             "</script>")
     void batchUpdateSopUserLogsInfoByIsDaysNotStudy(@Param("contactList") List<QwExternalContact> contactList);
@@ -195,15 +195,15 @@ public interface SopUserLogsInfoMapper {
     @DataSource(DataSourceType.SOP)
     @Update("<script>" +
             "UPDATE sop_user_logs_info " +
-            "SET grade = CASE external_id " +
+            "SET grade = CASE id " +
             "<foreach collection=\"contactList\" item=\"item\">" +
-            "    WHEN #{item.id} THEN #{item.level} " +
+            "    WHEN #{item.sopUserLogsInfoId} THEN #{item.level} " +
             "</foreach>" +
             "    ELSE grade " +
             "END " +
-            "WHERE external_id IN " +
+            "WHERE id IN " +
             "<foreach collection='contactList' item='item' open='(' separator=',' close=')'>" +
-            "    #{item.id} " +
+            "    #{item.sopUserLogsInfoId} " +
             "</foreach>" +
             "</script>")
     void batchUpdateSopUserLogsInfoByLevel(@Param("contactList") List<QwExternalContact> contactList);

+ 18 - 3
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -259,17 +259,32 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
     @Override
     public void batchUpdateSopUserLogsInfoByMoreStudy(List<QwExternalContact> contactList) {
-        sopUserLogsInfoMapper.batchUpdateSopUserLogsInfoByMoreStudy(contactList);
+        List<QwExternalContact> validList = contactList.stream()
+                .filter(c -> c.getSopUserLogsInfoId() != null)
+                .collect(Collectors.toList());
+        if (!validList.isEmpty()) {
+            sopUserLogsInfoMapper.batchUpdateSopUserLogsInfoByMoreStudy(validList);
+        }
     }
 
     @Override
     public void batchUpdateSopUserLogsInfoByIsDaysNotStudy(List<QwExternalContact> contactList) {
-        sopUserLogsInfoMapper.batchUpdateSopUserLogsInfoByIsDaysNotStudy(contactList);
+        List<QwExternalContact> validList = contactList.stream()
+                .filter(c -> c.getSopUserLogsInfoId() != null)
+                .collect(Collectors.toList());
+        if (!validList.isEmpty()) {
+            sopUserLogsInfoMapper.batchUpdateSopUserLogsInfoByIsDaysNotStudy(validList);
+        }
     }
 
     @Override
     public void batchUpdateSopUserLogsInfoByLevel(List<QwExternalContact> contactList) {
-        sopUserLogsInfoMapper.batchUpdateSopUserLogsInfoByLevel(contactList);
+        List<QwExternalContact> validList = contactList.stream()
+                .filter(c -> c.getSopUserLogsInfoId() != null)
+                .collect(Collectors.toList());
+        if (!validList.isEmpty()) {
+            sopUserLogsInfoMapper.batchUpdateSopUserLogsInfoByLevel(validList);
+        }
     }
 
     @Override