Prechádzať zdrojové kódy

转接原来是记录当前外部联系人id下的看课记录,现在转接之后是查询当前的外部联系人id下的看课记录和转接之前的外部联系人id的看课记录的总和

xw 2 dní pred
rodič
commit
debccd6d2c

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

@@ -205,7 +205,7 @@ public class QwExternalContactRatingMoreSevenDaysServiceImpl implements QwExtern
 
             // 查询最近 notStudyDays(3天) 的看课记录
             List<QwRatingVO> ratingVOS = fsCourseWatchLogMapper
-                    .selectFsCourseWatchLogByExtIdRatingMoreStudyDays(externalId, config.getNotStudyDays());
+                    .selectFsCourseWatchLogByExtIdRatingWithTransfer(externalId, config.getNotStudyDays());
 
             // 如果连续3天没有看课记录,标记为E级
             if (ratingVOS == null || ratingVOS.isEmpty()) {

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

@@ -212,8 +212,9 @@ public class QwExternalContactRatingServiceImpl implements QwExternalContactRati
                 return null;
             }
 
+            // 查询ABCD评级看课记录
             List<QwRatingVO> ratingVOS = fsCourseWatchLogMapper
-                    .selectFsCourseWatchLogByExtIdRating(externalId, config.getLevelDay());
+                    .selectFsCourseWatchLogByExtIdRatingWithTransfer(externalId, config.getLevelDay());
 
             if (ratingVOS == null || ratingVOS.isEmpty()) {
                 log.info("没有记录不评级,externalId: {}", externalId);

+ 34 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -182,6 +182,40 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
             "\tAND wl.create_time < CURDATE()")
     List<QwRatingVO> selectFsCourseWatchLogByExtIdRatingMoreStudyDays(@Param("externalId") Long externalId, @Param("dayNum") Integer dayNum);
 
+    /**
+     * 查询看课记录(支持在职转接场景)
+     * 同时查询当前外部联系人ID和最近一次转接前的外部联系人ID的看课记录
+     */
+    @Select("SELECT\n" +
+            "\twl.duration AS watchDuration,\n" +
+            "\tcv.duration AS allDuration,\n" +
+            "\twl.finish_time,\n" +
+            "\twl.create_time," +
+            "\tec.`level` \n" +
+            "FROM\n" +
+            "\tfs_course_watch_log wl\n" +
+            "\tLEFT JOIN qw_external_contact ec ON wl.qw_external_contact_id = ec.id\n" +
+            "\tLEFT JOIN fs_user_course_video cv ON wl.video_id = cv.video_id \n" +
+            "WHERE\n" +
+            "\twl.send_type = 2 \n" +
+            "\tAND (\n" +
+            "\t\twl.qw_external_contact_id = #{externalId}\n" +
+            "\t\tOR wl.qw_external_contact_id = (\n" +
+            "\t\t\tSELECT t.external_contact_id \n" +
+            "\t\t\tFROM qw_external_contact_transfer_log t \n" +
+            "\t\t\tINNER JOIN qw_external_contact ec2 ON t.external_contact_id = ec2.id\n" +
+            "\t\t\tWHERE ec2.external_user_id = (\n" +
+            "\t\t\t\tSELECT external_user_id FROM qw_external_contact WHERE id = #{externalId}\n" +
+            "\t\t\t)\n" +
+            "\t\t\tAND t.status = 1\n" +
+            "\t\t\tORDER BY t.create_time DESC\n" +
+            "\t\t\tLIMIT 1\n" +
+            "\t\t)\n" +
+            "\t)\n" +
+            "\tAND wl.create_time >= DATE_SUB(CURDATE(), INTERVAL #{dayNum} DAY ) \n" +
+            "\tAND wl.create_time < CURDATE()")
+    List<QwRatingVO> selectFsCourseWatchLogByExtIdRatingWithTransfer(@Param("externalId") Long externalId, @Param("dayNum") Integer dayNum);
+
     @Select("SELECT\n" +
             "\tCOALESCE(SUM(wl.duration), 0) AS watchDuration\n" +
             "FROM\n" +

+ 2 - 1
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsServiceImpl.java

@@ -963,8 +963,9 @@ public class SopUserLogsServiceImpl implements ISopUserLogsService {
                         Long externalId = logsInfo.getExternalId();
                         if (externalId != null) {
 
+                            // 查询看课记录
                             List<QwRatingVO> ratingVOS = fsCourseWatchLogMapper
-                                    .selectFsCourseWatchLogByExtIdRating(externalId, config.getLevelDay());
+                                    .selectFsCourseWatchLogByExtIdRatingWithTransfer(externalId, config.getLevelDay());
 
                             if (ratingVOS.isEmpty()) {
                                 log.error("没有看课记录不评级。则不评级:" + externalId);