瀏覽代碼

看课拆分app和小程序来源

wangxy 1 周之前
父節點
當前提交
3f5a4e49c5
共有 17 個文件被更改,包括 94 次插入49 次删除
  1. 6 5
      fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java
  2. 2 1
      fs-service/src/main/java/com/fs/course/domain/FsCourseWatchLog.java
  3. 5 0
      fs-service/src/main/java/com/fs/course/param/CourseAnalysisParam.java
  4. 2 0
      fs-service/src/main/java/com/fs/course/param/FsCourseWatchLogListParam.java
  5. 5 0
      fs-service/src/main/java/com/fs/course/param/FsCourseWatchLogStatisticsListParam.java
  6. 5 0
      fs-service/src/main/java/com/fs/course/param/PeriodCountParam.java
  7. 1 0
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodDaysServiceImpl.java
  8. 11 7
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  9. 4 4
      fs-service/src/main/java/com/fs/fastGpt/service/impl/AiHookServiceImpl.java
  10. 4 4
      fs-service/src/main/java/com/fs/fastGpt/service/impl/AiNewServiceImpl.java
  11. 4 4
      fs-service/src/main/java/com/fs/fastGpt/service/impl/AiServiceImpl.java
  12. 3 3
      fs-service/src/main/java/com/fs/qw/service/AsyncQwAiChatSopService.java
  13. 1 1
      fs-service/src/main/java/com/fs/qw/service/IQwContactWayService.java
  14. 3 2
      fs-service/src/main/java/com/fs/qw/service/impl/QwContactWayServiceImpl.java
  15. 4 3
      fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java
  16. 8 7
      fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java
  17. 26 8
      fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

+ 6 - 5
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -1017,14 +1017,14 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                                 GroupUserExternalVo vo = userMap.get(groupChat.getOwner());
                                 if (vo != null && vo.getId() != null) {
                                     sopLogs.setFsUserId(vo.getFsUserId());
-                                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, vo.getId().toString(), logVo);
+                                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, vo.getId().toString(), logVo,2);
                                 }
                             });
                         } catch (Exception e) {
                             log.error("群聊创建看课记录失败!", e);
                         }
                     } else {
-                        addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo);
+                        addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo,2);
                     }
 
                     String sortLink = createLinkByMiniApp(setting, logVo, sendTime, courseId, videoId,
@@ -1061,7 +1061,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                     break;
                 //app
                 case "9":
-                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo);
+                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo,1);
 
                     QwCreateLinkByAppVO linkByApp = createLinkByApp(setting, logVo, sendTime, courseId, videoId,
                             qwUserId, companyUserId, companyId, externalId,sopLogs.getCorpId(),qwUserName);
@@ -1072,7 +1072,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                     break;
                 //自定义小程序
                 case "10":
-                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo);
+                    addWatchLogIfNeeded(sopLogs, videoId, courseId, sendTime, qwUserId, companyUserId, companyId, externalId,logVo,2);
 
                     Optional<Company> matchedCompany = companies.stream()
                             .filter(company -> String.valueOf(company.getCompanyId()).equals(companyId))
@@ -1452,7 +1452,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
     private void addWatchLogIfNeeded(QwSopLogs sopLogs, Long videoId, Long courseId,
                                      Date sendTime, String qwUserId, String companyUserId,
-                                     String companyId, String externalId,SopUserLogsVo logsVo) {
+                                     String companyId, String externalId,SopUserLogsVo logsVo,Integer watchType) {
         FsCourseWatchLog watchLog = new FsCourseWatchLog();
         watchLog.setVideoId(videoId != null ? videoId.longValue() : null);
         watchLog.setQwExternalContactId(externalId != null ? Long.valueOf(externalId) : null);
@@ -1467,6 +1467,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         watchLog.setUpdateTime(new Date());
         watchLog.setLogType(3);
         watchLog.setUserId(sopLogs.getFsUserId());
+        watchLog.setWatchType(watchType);
         watchLog.setCampPeriodTime(convertStringToDate(logsVo.getStartTime(),"yyyy-MM-dd"));
         enqueueWatchLog(watchLog);
     }

+ 2 - 1
fs-service/src/main/java/com/fs/course/domain/FsCourseWatchLog.java

@@ -91,6 +91,7 @@ public class FsCourseWatchLog extends BaseEntity
     /** im发送消息详情id */
     private Long imMsgSendDetailId;
 
-//    private Integer typeFlag; //0 小程序 1 app
+    //看课方式:1 app  2 小程序
+    private Integer watchType;
 
 }

+ 5 - 0
fs-service/src/main/java/com/fs/course/param/CourseAnalysisParam.java

@@ -42,5 +42,10 @@ public class CourseAnalysisParam implements Serializable {
      */
     private  List<Long> companyUserIds;
 
+    /**
+     * 类型标识 1 app  2 小程序'
+     */
+    private  Integer typeFlag;
+
 }
 

+ 2 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseWatchLogListParam.java

@@ -105,4 +105,6 @@ public class FsCourseWatchLogListParam implements Serializable {
     private Long deptId;
     private List<Long> deptIds;
     private String ids;
+
+    private Integer watchType;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseWatchLogStatisticsListParam.java

@@ -96,6 +96,11 @@ public class FsCourseWatchLogStatisticsListParam extends BaseEntity {
 
     private  List<Long> deptIds;
 
+    /**
+     * 看课方式:1 app  2 小程序
+     */
+    private  Integer watchType;
+
 
 
 }

+ 5 - 0
fs-service/src/main/java/com/fs/course/param/PeriodCountParam.java

@@ -38,5 +38,10 @@ public class PeriodCountParam implements Serializable {
      */
     private  List<Long> companyUserIds;
 
+    /**
+     * 类型标识 1 app  2 小程序'
+     */
+    private  Integer typeFlag;
+
 }
 

+ 1 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodDaysServiceImpl.java

@@ -270,6 +270,7 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
         courseAnalysisParam.setVideoIdList(param.getVideoIdList());
         courseAnalysisParam.setCompanyId(param.getCompanyId());
         courseAnalysisParam.setCompanyUserIds(param.getCompanyUserIds());
+        courseAnalysisParam.setTypeFlag(param.getTypeFlag());
         //查询营期维度的看课人数和完课人数
         FsPeriodCountVO fsPeriodCountVO = fsUserMapper.selectFsPeriodCountVO(courseAnalysisParam);
         List<FsCourseAnalysisCountVO> courseCountList = fsUserMapper.courseAnalysisWatchLog(courseAnalysisParam);

+ 11 - 7
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -782,9 +782,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
         log.setQwUserId(Long.valueOf(param.getQwUserId()));
         log.setCreateTime(new Date());
         log.setLogType(3);
-//        if (param.getTypeFlag() != null) {
-//            log.setTypeFlag(param.getTypeFlag());
-//        }
+        log.setWatchType(2);
         logger.info("【群聊生成看课记录】:{}", param);
         courseWatchLogMapper.insertFsCourseWatchLog(log);
     }
@@ -1012,6 +1010,9 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
 
             // 处理 UUID 为空的情况
             if (StringUtils.isNotEmpty(trafficLog.getUuId())) {
+                if(param.getTypeFlag()!=null){
+                    trafficLog.setTypeFlag(param.getTypeFlag());
+                }
                 // 插入或更新
                 fsCourseTrafficLogMapper.insertOrUpdateTrafficLog(trafficLog);
                 asyncDeductTraffic(company, trafficLog);
@@ -2467,7 +2468,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
         }
 
         //看课记录
-        addWatchLogIfNeeded(param.getVideoId(), param.getCourseId(), param.getFsUserId(), qwUser, param.getExternalUserId());
+        addWatchLogIfNeeded(param.getVideoId(), param.getCourseId(), param.getFsUserId(), qwUser, param.getExternalUserId(),2);
 
         //生成小程序链接
         String linkByMiniApp = createLinkByMiniApp(new Date(), param.getCourseId(), param.getVideoId(), qwUser, param.getExternalUserId(), 2, null, 0);
@@ -2510,7 +2511,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
             domainName = config.getRealLinkDomainName();
         }
 
-        addWatchLogIfNeeded(param.getVideoId(), param.getCourseId(), param.getFsUserId(), qwUser, param.getExternalUserId());
+        addWatchLogIfNeeded(param.getVideoId(), param.getCourseId(), param.getFsUserId(), qwUser, param.getExternalUserId(),2);
 
         String linkByCartLink = createLinkByMiniApp(new Date(), param.getCourseId(), param.getVideoId(), qwUser, param.getExternalUserId(), 1, domainName, 0);
 
@@ -2529,7 +2530,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
 
     //插入观看记录
     private void addWatchLogIfNeeded(Long videoId, Long courseId,
-                                     Long fsUserId, QwUser qwUser, Long externalId) {
+                                     Long fsUserId, QwUser qwUser, Long externalId, Integer watchType) {
 
         try {
 
@@ -2545,7 +2546,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
             watchLog.setCreateTime(new Date());
             watchLog.setUpdateTime(new Date());
             watchLog.setLogType(3);
-
+            watchLog.setWatchType(watchType);
             if (fsUserId == null) {
                 fsUserId = 0L;
             }
@@ -3111,6 +3112,9 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService {
             Company company = companyMapper.selectCompanyById(param.getCompanyId());
             // 处理 UUID 为空的情况
             if (StringUtils.isNotEmpty(trafficLog.getUuId())) {
+                if(param.getTypeFlag()!=null){
+                    trafficLog.setTypeFlag(param.getTypeFlag());
+                }
                 // 插入或更新
                 fsCourseTrafficLogMapper.insertOrUpdateTrafficLog(trafficLog);
                 asyncDeductTraffic(company, trafficLog);

+ 4 - 4
fs-service/src/main/java/com/fs/fastGpt/service/impl/AiHookServiceImpl.java

@@ -1355,7 +1355,7 @@ public class AiHookServiceImpl implements AiHookService {
                         String.valueOf(user.getId()),
                         String.valueOf(user.getCompanyUserId()),
                         String.valueOf(user.getCompanyId()),
-                        String.valueOf(session.getQwExtId()));
+                        String.valueOf(session.getQwExtId()),2);
                 if (linkUrl != null && linkUrl.get("url") != null) {
                     String s = (String)linkUrl.get("url");
                     // sendWebSocketMsg(s,msgVo,user,session);
@@ -1386,7 +1386,7 @@ public class AiHookServiceImpl implements AiHookService {
                                 String.valueOf(user.getId()),
                                 String.valueOf(user.getCompanyUserId()),
                                 String.valueOf(user.getCompanyId()),
-                                String.valueOf(session.getQwExtId()));
+                                String.valueOf(session.getQwExtId()),2);
                         if (linkUrl != null && linkUrl.get("url") != null) {
                             String s = (String)linkUrl.get("url");
                             // sendWebSocketMsg(s,msgVo,user,session);
@@ -1896,7 +1896,7 @@ public class AiHookServiceImpl implements AiHookService {
                         String.valueOf(user.getId()),
                         String.valueOf(user.getCompanyUserId()),
                         String.valueOf(user.getCompanyId()),
-                        String.valueOf(session.getQwExtId()));
+                        String.valueOf(session.getQwExtId()),2);
                 if (linkUrl != null && linkUrl.get("url") != null) {
                     String s = (String)linkUrl.get("url");
                     sendWebTaskSocketMsg(s,sendId,user);
@@ -1927,7 +1927,7 @@ public class AiHookServiceImpl implements AiHookService {
                             String.valueOf(user.getId()),
                             String.valueOf(user.getCompanyUserId()),
                             String.valueOf(user.getCompanyId()),
-                            String.valueOf(session.getQwExtId()));
+                            String.valueOf(session.getQwExtId()),2);
                     if (linkUrl != null && linkUrl.get("url") != null) {
                         String s = (String)linkUrl.get("url");
                         sendWebTaskSocketMsg(s,sendId,user);

+ 4 - 4
fs-service/src/main/java/com/fs/fastGpt/service/impl/AiNewServiceImpl.java

@@ -552,7 +552,7 @@ public class AiNewServiceImpl implements AiNewService {
                         String.valueOf(user.getId()),
                         String.valueOf(user.getCompanyUserId()),
                         String.valueOf(user.getCompanyId()),
-                        String.valueOf(session.getQwExtId()));
+                        String.valueOf(session.getQwExtId()),2);
                 if (linkUrl != null && linkUrl.get("url") != null) {
                     String s = (String)linkUrl.get("url");
                     sendWebSocketMsg(s,msgVo,user,session);
@@ -583,7 +583,7 @@ public class AiNewServiceImpl implements AiNewService {
                                 String.valueOf(user.getId()),
                                 String.valueOf(user.getCompanyUserId()),
                                 String.valueOf(user.getCompanyId()),
-                                String.valueOf(session.getQwExtId()));
+                                String.valueOf(session.getQwExtId()),2);
                         if (linkUrl != null && linkUrl.get("url") != null) {
                             String s = (String)linkUrl.get("url");
                             sendWebSocketMsg(s,msgVo,user,session);
@@ -1070,7 +1070,7 @@ public class AiNewServiceImpl implements AiNewService {
                         String.valueOf(user.getId()),
                         String.valueOf(user.getCompanyUserId()),
                         String.valueOf(user.getCompanyId()),
-                        String.valueOf(session.getQwExtId()));
+                        String.valueOf(session.getQwExtId()),2);
                 if (linkUrl != null && linkUrl.get("url") != null) {
                     String s = (String)linkUrl.get("url");
                     sendWebTaskSocketMsg(s,sendId,user);
@@ -1101,7 +1101,7 @@ public class AiNewServiceImpl implements AiNewService {
                             String.valueOf(user.getId()),
                             String.valueOf(user.getCompanyUserId()),
                             String.valueOf(user.getCompanyId()),
-                            String.valueOf(session.getQwExtId()));
+                            String.valueOf(session.getQwExtId()),2);
                     if (linkUrl != null && linkUrl.get("url") != null) {
                         String s = (String)linkUrl.get("url");
                         sendWebTaskSocketMsg(s,sendId,user);

+ 4 - 4
fs-service/src/main/java/com/fs/fastGpt/service/impl/AiServiceImpl.java

@@ -530,7 +530,7 @@ public class AiServiceImpl implements AiService {
                         String.valueOf(user.getId()),
                         String.valueOf(user.getCompanyUserId()),
                         String.valueOf(user.getCompanyId()),
-                        String.valueOf(session.getQwExtId()));
+                        String.valueOf(session.getQwExtId()),2);
                 if (linkUrl != null && linkUrl.get("url") != null) {
                     String s = (String)linkUrl.get("url");
                     sendWebSocketMsg(s,msgVo,user,session);
@@ -561,7 +561,7 @@ public class AiServiceImpl implements AiService {
                                 String.valueOf(user.getId()),
                                 String.valueOf(user.getCompanyUserId()),
                                 String.valueOf(user.getCompanyId()),
-                                String.valueOf(session.getQwExtId()));
+                                String.valueOf(session.getQwExtId()),2);
                         if (linkUrl != null && linkUrl.get("url") != null) {
                             String s = (String)linkUrl.get("url");
                             sendWebSocketMsg(s,msgVo,user,session);
@@ -1048,7 +1048,7 @@ public class AiServiceImpl implements AiService {
                         String.valueOf(user.getId()),
                         String.valueOf(user.getCompanyUserId()),
                         String.valueOf(user.getCompanyId()),
-                        String.valueOf(session.getQwExtId()));
+                        String.valueOf(session.getQwExtId()),2);
                 if (linkUrl != null && linkUrl.get("url") != null) {
                     String s = (String)linkUrl.get("url");
                     sendWebTaskSocketMsg(s,sendId,user);
@@ -1079,7 +1079,7 @@ public class AiServiceImpl implements AiService {
                             String.valueOf(user.getId()),
                             String.valueOf(user.getCompanyUserId()),
                             String.valueOf(user.getCompanyId()),
-                            String.valueOf(session.getQwExtId()));
+                            String.valueOf(session.getQwExtId()),2);
                     if (linkUrl != null && linkUrl.get("url") != null) {
                         String s = (String)linkUrl.get("url");
                         sendWebTaskSocketMsg(s,sendId,user);

+ 3 - 3
fs-service/src/main/java/com/fs/qw/service/AsyncQwAiChatSopService.java

@@ -187,7 +187,7 @@ public class AsyncQwAiChatSopService {
                         //小程序单独
                         case "4":
                             addWatchLogIfNeededByNewChat(item.getId(), content.getVideoId(), content.getCourseId(), fsUserId,qwUser.getId(), qwUser.getCompanyUserId(), qwUser.getCompanyId(),
-                                    externalId, sendTime, expirySendTime);
+                                    externalId, sendTime, expirySendTime,2);
 
                             String linkByMiniApp = createLinkByMiniAppByNewChat(setting.getExpiresDays(), qwUser.getCorpId(), expirySendTime, content.getCourseId(), content.getVideoId(),
                                     qwUser.getId(), String.valueOf(qwUser.getCompanyUserId()),String.valueOf(qwUser.getCompanyId()), externalId, config);
@@ -255,7 +255,7 @@ public class AsyncQwAiChatSopService {
     //插入观看记录
     private Long addWatchLogIfNeededByNewChat(String sopId, Integer videoId, Integer courseId,
                                      Long fsUserId, Long qwUserId, Long companyUserId,
-                                     Long companyId, Long externalId, String startTime, Date createTime) {
+                                     Long companyId, Long externalId, String startTime, Date createTime,Integer watchType) {
 
         try {
             FsCourseWatchLog watchLog = new FsCourseWatchLog();
@@ -273,7 +273,7 @@ public class AsyncQwAiChatSopService {
             watchLog.setLogType(3);
             watchLog.setUserId(fsUserId);
             watchLog.setCampPeriodTime(sopUserLogsInfoService.convertStringToDate(startTime, "yyyy-MM-dd HH:mm:ss"));
-
+            watchLog.setWatchType(watchType);
             //存看课记录
             fsCourseWatchLogMapper.insertOrUpdateFsCourseWatchLog(watchLog);
             return watchLog.getLogId();

+ 1 - 1
fs-service/src/main/java/com/fs/qw/service/IQwContactWayService.java

@@ -82,5 +82,5 @@ public interface IQwContactWayService
 
     void addWatchLogIfNeeded(Integer videoId, Integer courseId,
                                      String qwUserId, String companyUserId,
-                                     String companyId, String externalId);
+                                     String companyId, String externalId,Integer watchType);
 }

+ 3 - 2
fs-service/src/main/java/com/fs/qw/service/impl/QwContactWayServiceImpl.java

@@ -490,7 +490,7 @@ public class QwContactWayServiceImpl implements IQwContactWayService
                                         String.valueOf(qwUser.getId()),
                                         String.valueOf(qwUser.getCompanyUserId()),
                                         String.valueOf(qwUser.getCompanyId()),
-                                        String.valueOf(qwExternalId));
+                                        String.valueOf(qwExternalId),2);
                 }  catch (Exception e) {
                     log.error("欢迎语生成短链失败:", e);
                 }
@@ -503,7 +503,7 @@ public class QwContactWayServiceImpl implements IQwContactWayService
     //添加watchLog记录
     public   void addWatchLogIfNeeded(Integer videoId, Integer courseId,
                                      String qwUserId, String companyUserId,
-                                     String companyId, String externalId) {
+                                     String companyId, String externalId,Integer watchType) {
         FsCourseWatchLog watchLog = new FsCourseWatchLog();
         watchLog.setVideoId(videoId != null ? videoId.longValue() : null);
         watchLog.setQwExternalContactId(externalId != null ? Long.valueOf(externalId) : null);
@@ -517,6 +517,7 @@ public class QwContactWayServiceImpl implements IQwContactWayService
         watchLog.setUpdateTime(new Date());
         watchLog.setLogType(3);
         watchLog.setUserId(0L);
+        watchLog.setWatchType(watchType);
         watchLogMapper.insertOrUpdateFsCourseWatchLog(watchLog);
     }
 

+ 4 - 3
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -3817,7 +3817,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                             String.valueOf(qwUser.getId()),
                             String.valueOf(qwUser.getCompanyUserId()),
                             String.valueOf(qwUser.getCompanyId()),
-                            String.valueOf(qwExternalId));
+                            String.valueOf(qwExternalId),2);
 
                 }  catch (Exception e) {
                     logger.error("欢迎语生成短链失败:", e);
@@ -3869,7 +3869,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                                         String.valueOf(qwUser.getId()),
                                         String.valueOf(qwUser.getCompanyUserId()),
                                         String.valueOf(qwUser.getCompanyId()),
-                                        String.valueOf(qwExternalId));
+                                        String.valueOf(qwExternalId),2);
                             }else {
                                 logger.error("查到课程相关信息:"+corpId+":"+att.getMiniprogram().getCourseId());
                             }
@@ -3891,7 +3891,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     //添加watchLog记录
     private void addWatchLogIfNeeded(Integer videoId, Integer courseId,
                                      String qwUserId, String companyUserId,
-                                     String companyId, String externalId) {
+                                     String companyId, String externalId,Integer watchType) {
         FsCourseWatchLog watchLog = new FsCourseWatchLog();
         watchLog.setVideoId(videoId != null ? videoId.longValue() : null);
         watchLog.setQwExternalContactId(externalId != null ? Long.valueOf(externalId) : null);
@@ -3905,6 +3905,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         watchLog.setUpdateTime(new Date());
         watchLog.setLogType(3);
         watchLog.setUserId(0L);
+        watchLog.setWatchType(watchType);
         watchLogMapper.insertOrUpdateFsCourseWatchLog(watchLog);
     }
 

+ 8 - 7
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -517,7 +517,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                         Map<String, GroupUserExternalVo> userMap = PubFun.listToMapByGroupObject(e.getUserList(), GroupUserExternalVo::getUserId);
                         GroupUserExternalVo vo = userMap.get(groupChat.getOwner());
                         if (vo != null && vo.getId() != null) {
-                            addWatchLogIfNeeded(param.getSopId(), param.getVideoId(), param.getCourseId(), vo.getFsUserId(), qwUser.getId().toString(), qwUser.getCompanyUserId().toString(), qwUser.getCompanyId().toString(), vo.getId(), param.getStartTime(), createTime);
+                            addWatchLogIfNeeded(param.getSopId(), param.getVideoId(), param.getCourseId(), vo.getFsUserId(), qwUser.getId().toString(), qwUser.getCompanyUserId().toString(), qwUser.getCompanyId().toString(), vo.getId(), param.getStartTime(), createTime,2);
                         }
                     });
                 });
@@ -924,7 +924,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             break;
                         //小程序单独
                         case "4":
-                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime );
+                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime,2 );
 
                             String linkByMiniApp = createLinkByMiniApp(st, param.getCorpId(), createTime, param.getCourseId(), param.getVideoId(),
                                     Long.valueOf(qwUserId), companyUserId, companyId, item.getExternalId(), config, null);
@@ -967,7 +967,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             break;
                         //app
                         case "9":
-                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime );
+                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime ,1);
 
                             QwCreateLinkByAppVO linkByApp = createLinkByApp(st, param.getCorpId(), createTime, param.getCourseId(), param.getVideoId(),
                                     Long.valueOf(qwUserId), companyUserId, companyId, item.getExternalId(), config,qwUser.getQwUserName(),contact.getFsUserId());
@@ -977,7 +977,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             break;
                         //自定义小程序
                         case "10":
-                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime );
+                            addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),item.getStartTime(),createTime ,2);
                             if (company!=null){
 
                                 String customMiniAppId = company.getCustomMiniAppId();
@@ -1377,7 +1377,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                 case "4":
 
                     addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), String.valueOf(qwUser.getId()), companyUserId, companyId,
-                            item.getExternalId(),item.getStartTime(),dataTime );
+                            item.getExternalId(),item.getStartTime(),dataTime,2 );
 
                     String linkByMiniApp = createLinkByMiniApp(st, param.getCorpId(), dataTime, param.getCourseId(), param.getVideoId(),
                             qwUser.getId(), companyUserId, companyId, item.getExternalId(), config, null);
@@ -1423,7 +1423,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                 case "10":
 
                     addWatchLogIfNeeded(item.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), String.valueOf(qwUser.getId()), companyUserId, companyId,
-                            item.getExternalId(),item.getStartTime(),dataTime );
+                            item.getExternalId(),item.getStartTime(),dataTime,2 );
 
                     Optional<Company> matchedCompany = companies.stream()
                             .filter(company -> String.valueOf(company.getCompanyId()).equals(companyId))
@@ -1500,7 +1500,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
     //插入观看记录
     private void addWatchLogIfNeeded(String sopId, Integer videoId, Integer courseId,
                                      Long fsUserId, String qwUserId, String companyUserId,
-                                     String companyId, Long externalId, String startTime,Date createTime) {
+                                     String companyId, Long externalId, String startTime,Date createTime,Integer watchType) {
 
         try {
             FsCourseWatchLog watchLog = new FsCourseWatchLog();
@@ -1517,6 +1517,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
             watchLog.setUpdateTime(createTime);
             watchLog.setLogType(3);
             watchLog.setUserId(fsUserId);
+            watchLog.setWatchType(watchType);
             watchLog.setCampPeriodTime(convertStringToDate(startTime,"yyyy-MM-dd"));
 
             //存看课记录

+ 26 - 8
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -26,10 +26,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="lastHeartbeatTime"    column="last_heartbeat_time"    />
         <result property="project"    column="project"    />
         <result property="periodId"    column="period_id"    />
+        <result property="watchType"    column="watch_type"    />
     </resultMap>
 
     <sql id="selectFsCourseWatchLogVo">
-        select log_id, user_id,finish_time,send_finish_msg,sop_id,video_id,reward_type, log_type, create_time, update_time, qw_external_contact_id, duration, qw_user_id, company_user_id, company_id, course_id,camp_period_time,project,period_id  from fs_course_watch_log
+        select log_id, user_id,finish_time,send_finish_msg,sop_id,video_id,reward_type, log_type, create_time, update_time, qw_external_contact_id, duration, qw_user_id, company_user_id, company_id, course_id,camp_period_time,project,period_id,watch_type  from fs_course_watch_log
     </sql>
 
     <select id="selectFsCourseWatchLogList" parameterType="FsCourseWatchLog" resultMap="FsCourseWatchLogResult">
@@ -47,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sendType != null "> and send_type = #{sendType}</if>
             <if test="campPeriodTime != null "> and camp_period_time = #{campPeriodTime}</if>
             <if test="project != null "> and project = #{project}</if>
+            <if test="watchType != null "> and watch_type = #{watchType}</if>
         </where>
     </select>
 
@@ -94,6 +96,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test ='maps.courseId !=null'>
                 and l.course_id = #{maps.courseId}
             </if>
+            <if test ='maps.watchType !=null'>
+                and l.watch_type = #{maps.watchType}
+            </if>
             <if test ='maps.videoId !=null'>
                 and l.video_id = #{maps.videoId}
             </if>
@@ -229,6 +234,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     #{sopId}
                 </foreach>
             </if>
+            <if test="maps.watchType != null "> and l.watch_type = #{maps.watchType}</if>
         </where>
         order by l.log_id desc
     </select>
@@ -254,7 +260,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="campPeriodTime != null">camp_period_time,</if>
             <if test="periodId != null">period_id,</if>
             <if test="project != null">project,</if>
-            <if test="typeFlag != null">type_flag,</if>
+            <if test="watchType != null">watch_type,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null">#{userId},</if>
@@ -276,7 +282,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="campPeriodTime != null">#{campPeriodTime},</if>
             <if test="periodId != null">#{periodId},</if>
             <if test="project != null">#{project},</if>
-            <if test="typeFlag != null">#{typeFlag},</if>
+            <if test="watchType != null">#{watchType},</if>
         </trim>
     </insert>
 
@@ -301,7 +307,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sendFinishMsg != null">send_finish_msg,</if>
             <if test="campPeriodTime != null">camp_period_time,</if>
             <if test="project != null">project,</if>
-            <if test="typeFlag != null">type_flag,</if>
+            <if test="watchType != null">watch_type,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null">#{userId},</if>
@@ -322,7 +328,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sendFinishMsg != null">#{sendFinishMsg},</if>
             <if test="campPeriodTime != null">#{campPeriodTime},</if>
             <if test="project != null">#{project},</if>
-            <if test="typeFlag != null">#{typeFlag},</if>
+            <if test="watchType != null">#{watchType},</if>
         </trim>
         on duplicate key update
         <trim suffixOverrides=",">
@@ -352,7 +358,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         project,
         period_id,
         im_msg_send_detail_id,
-        type_flag
+        watch_type
         )
         VALUES
         <foreach collection="watchLogs" item="log" separator=",">
@@ -375,7 +381,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{log.project},
             #{log.periodId},
             #{log.imMsgSendDetailId},
-            #{log.typeFlag}
+            #{log.watchType}
             )
         </foreach>
         ON DUPLICATE KEY UPDATE
@@ -407,7 +413,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="lastHeartbeatTime != null">last_heartbeat_time = #{lastHeartbeatTime},</if>
             <if test="periodId != null">period_id = #{periodId},</if>
             <if test="project != null">project = #{project},</if>
-            <if test="typeFlag != null">type_flag = #{typeFlag},</if>
+            <if test="watchType != null">watch_type = #{watchType},</if>
         </trim>
         where log_id = #{logId}
     </update>
@@ -1461,6 +1467,10 @@ FROM
             <if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
                 AND create_time &gt;= #{startDate} AND create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
             </if>
+            <!-- 看课方式筛选 -->
+            <if test="watchType != null and watchType != ''">
+                AND watch_type = #{watchType}
+            </if>
             <choose>
                 <!-- 公司维度筛选 -->
                 <when test="dimension == 'company'">
@@ -1517,6 +1527,10 @@ FROM
             <if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
                 AND w.create_time &gt;= #{startDate} AND w.create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
             </if>
+            <!-- 看课方式筛选 -->
+            <if test="watchType != null and watchType != ''">
+                AND w.watch_type = #{watchType}
+            </if>
             <choose>
                 <!-- 公司维度筛选 -->
                 <when test="dimension == 'company'">
@@ -1575,6 +1589,10 @@ FROM
             <if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
                 AND w.create_time &gt;= #{startDate} AND w.create_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
             </if>
+            <!-- 看课方式筛选 -->
+            <if test="watchType != null and watchType != ''">
+                AND w.watch_type = #{watchType}
+            </if>
             <choose>
                 <!-- 公司维度筛选 -->
                 <when test="dimension == 'company'">