Forráskód Böngészése

app 看课列表优化 link_id 不存在时,优化处理

xgb 2 hete
szülő
commit
0aae4d3a7e

+ 2 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseLinkMapper.java

@@ -78,4 +78,6 @@ public interface FsCourseLinkMapper
 
     @Select("select link_id,real_link from fs_course_link where create_time > '2025-03-07 12:00:00' and create_time < '2025-03-07 17:00:00'")
     List<FsCourseLink> selectFsCourseLinkListUpdate();
+
+    FsCourseLink selectFsCourseLinkByVoideIdAndCompanyUserId(@Param("videoId") Long videoId,@Param("companyUserId") Long companyUserId);
 }

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

@@ -31,7 +31,7 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
      * @param logId 短链课程看课记录主键
      * @return 短链课程看课记录
      */
-    public FsCourseWatchLog selectFsCourseWatchLogByLogId(Long logId);
+    public FsCourseWatchLog selectFsCourseWatchLogByLogId(@Param("logId") Long logId);
 
     /**
      * 查询短链课程看课记录列表

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/IFsUserCourseService.java

@@ -141,7 +141,7 @@ public interface IFsUserCourseService {
 
     R getAppCourseList(FsUserCourseAppListParam param);
 
-    R getLinkData(Long linkId);
+    R getLinkData(Long logId);
 
     R batchCreateCourseRecord(BatchSendCourseDTO batchSendCourseDTO);
 

+ 24 - 2
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java

@@ -826,6 +826,9 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
         if(item==null){
             return R.error("查询无记录");
         }else {
+            // link_id 有可能空 返回log_id 后续处理
+            item.setLinkId(item.getLogId());
+
             String redisKey = "h5wxuser:watch:duration:" + item.getUserId() + ":" + item.getVideoId() + ":" + item.getCompanyUserId();
             String durationCurrent = redisCache.getCacheObject(redisKey);
             if(durationCurrent != null && !durationCurrent.isEmpty()){
@@ -848,6 +851,9 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
             return R.error("参数错误!");
         }
         list.forEach(item -> {
+            // link_id 有可能空 返回log_id 后续处理
+            item.setLinkId(item.getLogId());
+
             String redisKey = "h5wxuser:watch:duration:" + item.getUserId() + ":" + item.getVideoId() + ":" + item.getCompanyUserId();
             String durationCurrent = redisCache.getCacheObject(redisKey);
             if(durationCurrent != null && !durationCurrent.isEmpty()){
@@ -881,8 +887,24 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
     }
 
     @Override
-    public R getLinkData(Long linkId) {
-        FsCourseLink fsCourseLink = fsCourseLinkMapper.selectFsCourseLinkByLinkId(linkId);
+    public R getLinkData(Long logId) {
+        FsCourseWatchLog watchLog = fsCourseWatchLogMapper.selectFsCourseWatchLogByLogId(logId);
+        if(watchLog==null){
+            return R.error("看课记录不存在");
+        }
+
+        FsCourseLink fsCourseLink;
+        if(watchLog.getLinkId()!=null){
+
+             fsCourseLink = fsCourseLinkMapper.selectFsCourseLinkByLinkId(watchLog.getLinkId());
+        }else {
+            fsCourseLink=fsCourseLinkMapper.selectFsCourseLinkByVoideIdAndCompanyUserId(watchLog.getVideoId(), watchLog.getCompanyUserId());
+        }
+
+
+
+
+//        FsCourseLink fsCourseLink = fsCourseLinkMapper.selectFsCourseLinkByLinkId(linkId);
         if (fsCourseLink == null){
             return R.error("视频已过期!");
         }

+ 2 - 0
fs-service/src/main/java/com/fs/course/vo/FsUserCourseAppListVO.java

@@ -40,4 +40,6 @@ public class FsUserCourseAppListVO extends BaseEntity
 
     private Long companyUserId;
 
+    private Long logId;
+
 }

+ 4 - 0
fs-service/src/main/resources/mapper/course/FsCourseLinkMapper.xml

@@ -46,6 +46,10 @@
         <include refid="selectFsCourseLinkVo"/>
         where link_id = #{linkId}
     </select>
+    <select id="selectFsCourseLinkByVoideIdAndCompanyUserId" resultType="com.fs.course.domain.FsCourseLink">
+        <include refid="selectFsCourseLinkVo"/>
+        where  company_user_id = #{companyUserId} and video_id = #{videoId} order by create_time desc limit 1
+    </select>
 
     <insert id="insertFsCourseLink" parameterType="FsCourseLink" useGeneratedKeys="true" keyProperty="linkId">
         insert into fs_course_link

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

@@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <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,watch_type  from fs_course_watch_log
+               camp_period_time,project,period_id,watch_type,link_id  from fs_course_watch_log
     </sql>
 
     <select id="selectFsCourseWatchLogList" parameterType="FsCourseWatchLog" resultMap="FsCourseWatchLogResult">
@@ -1219,7 +1219,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="selectCourseByUserIdForStatusFinish" resultType="com.fs.course.vo.FsUserCourseAppListVO">
-        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId  from fs_course_watch_log l
+        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId,l.log_id logId   from fs_course_watch_log l
         left join fs_user_course c on l.course_id =c.course_id
         left join fs_user_course_video r on r.video_id=l.video_id
         WHERE l.user_id = #{userId} and l.log_type = 2
@@ -1228,7 +1228,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectCourseByUserIdForStatusNotFinish" resultType="com.fs.course.vo.FsUserCourseAppListVO">
-        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id  from fs_course_watch_log l
+        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId,l.log_id logId  from fs_course_watch_log l
         left join fs_user_course c on l.course_id =c.course_id
         left join fs_user_course_video r on r.video_id=l.video_id
         WHERE l.user_id = #{userId} and l.log_type != 2
@@ -1237,7 +1237,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="getAppCourseLearningOne" resultType="com.fs.course.vo.FsUserCourseAppListVO">
-        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId  from fs_course_watch_log l
+        select c.course_name courseName,c.img_url imgUrl,r.title videoName,l.link_id linkId,l.duration,l.video_id videoId,l.user_id userId,l.company_user_id companyUserId,l.log_id logId  from fs_course_watch_log l
         left join fs_user_course c on l.course_id =c.course_id
         left join fs_user_course_video r on r.video_id=l.video_id
         WHERE l.user_id = #{userId} and l.update_time is not null

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseController.java

@@ -373,7 +373,7 @@ public class CourseController extends  AppBaseController{
     }
 
     /**
-     * @Description: 获取链接数据
+     * @Description: 获取链接数据 这个地方的linkId 实际上传的是log_id link_id 看课记录有可能为空
      * @Param:
      * @Return:
      * @Author xgb