2 次代碼提交 624d63d81e ... dab38d6957

作者 SHA1 備註 提交日期
  xw dab38d6957 Merge remote-tracking branch 'origin/bjcz_his_scrm' into bjcz_his_scrm 1 周之前
  xw 79c780766e feat(course): 支持解析JSON格式的用户名称并优化课程状态计算 1 周之前

+ 16 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -156,6 +156,7 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
         List<FsUserCoursePeriodDays> list = fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysList(fsUserCoursePeriodDays);
 
         // 对每个课程日期进行时间增加
+        LocalDateTime now = LocalDateTime.now();
         for (FsUserCoursePeriodDays coursePeriodDays : list) {
             // 将课程的日期按照差值天数进行调整
             LocalDate adjustedDate = coursePeriodDays.getDayDate().plusDays(daysDifference);
@@ -166,6 +167,21 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
             coursePeriodDays.setStartDateTime(startDateTime);
             coursePeriodDays.setEndDateTime(endDateTime);
             coursePeriodDays.setLastJoinTime(lastJsonTime);
+            
+            // 根据调整后的时间重新计算课程状态(仅对非自由模式营期)
+            if (fsUserCoursePeriod.getFreeMode() == null || fsUserCoursePeriod.getFreeMode() != 1) {
+                if (now.isBefore(startDateTime)) {
+                    // 未开始
+                    coursePeriodDays.setStatus(0);
+                } else if (now.isAfter(endDateTime)) {
+                    // 已结束
+                    coursePeriodDays.setStatus(2);
+                } else {
+                    // 进行中
+                    coursePeriodDays.setStatus(1);
+                }
+            }
+            
             fsUserCoursePeriodDaysMapper.updateFsUserCoursePeriodDays(coursePeriodDays); // 更新数据库中的课程日期
         }
 

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

@@ -59,7 +59,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select l.log_id,l.project,l.period_id,l.user_id,uc.course_name,v.title as video_name,qec.avatar as external_user_avatar,
         l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,
         cu.nick_name as company_user_name ,l.send_type,l.create_time,l.update_time,l.last_heartbeat_time,
-        qu.qw_user_name,qec.name as external_user_name,c.company_id,u.avatar as fsAvatar,u.nick_name as fsNickName,qec.create_time as qec_create_time,
+        CASE 
+            WHEN qu.qw_user_name IS NOT NULL AND qu.qw_user_name LIKE '{%' THEN JSON_UNQUOTE(JSON_EXTRACT(qu.qw_user_name, '$.name'))
+            ELSE qu.qw_user_name 
+        END as qw_user_name,
+        qec.name as external_user_name,c.company_id,u.avatar as fsAvatar,u.nick_name as fsNickName,qec.create_time as qec_create_time,
         u.is_vip isVip, l.project, l.im_msg_send_detail_id,l.reward_type
          from fs_course_watch_log l
          left join fs_user_course_video v on v.video_id = l.video_id
@@ -162,7 +166,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
             <if test="maps.qwUserName != null  and maps.qwUserName != '' ">
-                and qu.qw_user_name = #{maps.qwUserName}
+                and (
+                    qu.qw_user_name = #{maps.qwUserName}
+                    OR (qu.qw_user_name LIKE '{%' AND JSON_UNQUOTE(JSON_EXTRACT(qu.qw_user_name, '$.name')) = #{maps.qwUserName})
+                )
             </if>
             <if test='maps.cuDeptIdList != null and !maps.cuDeptIdList.isEmpty() and  maps.userType != "00" '>
                 AND cu.dept_id IN
@@ -177,7 +184,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectFsCourseWatchLogListByParam" resultType="com.fs.course.vo.FsCourseWatchLogListVO">
         select l.log_id,l.user_id,uc.course_name,v.title as video_name,u.nick_name as fsNickName, u.avatar as fsAvatar,
         l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,
-        cu.nick_name as company_user_name ,l.send_type,l.create_time, qu.qw_user_name,qec.name as external_user_name
+        cu.nick_name as company_user_name ,l.send_type,l.create_time, 
+        CASE 
+            WHEN qu.qw_user_name IS NOT NULL AND qu.qw_user_name LIKE '{%' THEN JSON_UNQUOTE(JSON_EXTRACT(qu.qw_user_name, '$.name'))
+            ELSE qu.qw_user_name 
+        END as qw_user_name,
+        qec.name as external_user_name
         from fs_course_watch_log l
         left join fs_user_course_video v on v.video_id = l.video_id
         left join fs_user_course uc on uc.course_id = l.course_id