Ver código fonte

1.增加手动发课的内容复制

jzp 1 dia atrás
pai
commit
3ffc185222

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

@@ -131,4 +131,6 @@ public interface FsUserCoursePeriodDaysMapper extends BaseMapper<FsUserCoursePer
      * @Date 2025/11/18 11:04
      */
     List<Long> selectFsUserCoursePeriodDaysForLastById(FsUserCoursePeriodDays param);
+
+    List<FsUserCoursePeriodDays> selectFsUserCoursePeriodDaysByCourseId(@Param("courseId") Long courseId);
 }

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

@@ -122,4 +122,5 @@ public interface IFsUserCoursePeriodDaysService extends IService<FsUserCoursePer
 
     List<Long> selectFsUserCoursePeriodDaysByTime(String periodSTime,String periodETime);
 
+        List<FsUserCoursePeriodDays> selectFsUserCoursePeriodDaysByCourseId(Long courseId);
     }

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

@@ -479,6 +479,11 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
         return fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysByTime(periodSTime,periodETime);
     }
 
+    @Override
+    public List<FsUserCoursePeriodDays> selectFsUserCoursePeriodDaysByCourseId(Long courseId) {
+        return fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysByCourseId(courseId);
+    }
+
     private static FsCourseAnalysisCountVO getCourseAnalysisCountVO(FsUserCoursePeriodDays v, Map<Long, FsCourseAnalysisCountVO> courseMap, Map<Long, FsCourseAnalysisCountVO> redPacketMap, Map<Long, FsCourseAnalysisCountVO> answerMap) {
         FsCourseAnalysisCountVO countVO = new FsCourseAnalysisCountVO();
         FsCourseAnalysisCountVO courseVO = courseMap.getOrDefault(v.getVideoId(), countVO);

+ 36 - 15
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseServiceImpl.java

@@ -26,6 +26,7 @@ import com.fs.course.domain.*;
 import com.fs.course.mapper.*;
 import com.fs.course.param.*;
 import com.fs.course.param.newfs.FsUserCourseListParam;
+import com.fs.course.service.IFsUserCoursePeriodDaysService;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.course.vo.*;
 import com.fs.course.vo.newfs.FsUserCourseListVO;
@@ -128,6 +129,9 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
     @Autowired
     private IFsUserIntegralLogsService userIntegralLogsService;
 
+    @Autowired
+    private IFsUserCoursePeriodDaysService fsUserCoursePeriodDaysService;
+
     private static final String realLink = "/courseH5/pages/course/learning?course=";
     public static final String shortLink = "/courseH5/pages/course/learning?s=";
 
@@ -690,24 +694,41 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
     @Transactional(rollbackFor = Exception.class) // 显式声明事务
     public int copyFsUserCourse(Long courseId) {
         FsUserCourse fsUserCourse = fsUserCourseService.selectFsUserCourseByCourseId(courseId);
-        if(fsUserCourse != null){
-            fsUserCourse.setCourseId(null);
-            fsUserCourseService.insertFsUserCourse(fsUserCourse);
-            Long newCourseId = fsUserCourse.getCourseId();
+        try {
+            if(fsUserCourse != null){
+                fsUserCourse.setCourseId(null);
+                fsUserCourseService.insertFsUserCourse(fsUserCourse);
+                Long newCourseId = fsUserCourse.getCourseId();
 
-            if (newCourseId == null) {
-                throw new RuntimeException("课程插入失败,无法获取新课程ID");
-            }
+                if (newCourseId == null) {
+                    throw new RuntimeException("课程插入失败,无法获取新课程ID");
+                }
+
+                FsUserCourseVideo fsUserCourseVideo = new FsUserCourseVideo();
+                fsUserCourseVideo.setCourseId(courseId);
+                List<FsUserCourseVideo> list = fsUserCourseVideoService.selectFsUserCourseVideoListByCourseId(fsUserCourseVideo);
+                if(list != null && !list.isEmpty()){
+                    for (FsUserCourseVideo courseVideo : list) {
+                        courseVideo.setVideoId(null);
+                        courseVideo.setCourseId(newCourseId);
+                        fsUserCourseVideoService.insertFsUserCourseVideo(courseVideo);
+                    }
+                }
+
+                //增加手动发课部分的复制
+                List<FsUserCoursePeriodDays> fsUserCoursePeriodDays =  fsUserCoursePeriodDaysService.selectFsUserCoursePeriodDaysByCourseId(courseId);
+                if(fsUserCoursePeriodDays != null && !fsUserCoursePeriodDays.isEmpty()){
+                    for (FsUserCoursePeriodDays periodDays : fsUserCoursePeriodDays) {
+                        periodDays.setId(null);
+                        periodDays.setCourseId(newCourseId);
+                        fsUserCoursePeriodDaysService.insertFsUserCoursePeriodDays(periodDays);
+                    }
+                }
 
-            FsUserCourseVideo fsUserCourseVideo = new FsUserCourseVideo();
-            fsUserCourseVideo.setCourseId(courseId);
-            List<FsUserCourseVideo> list = fsUserCourseVideoService.selectFsUserCourseVideoListByCourseId(fsUserCourseVideo);
-            for (FsUserCourseVideo courseVideo : list) {
-                courseVideo.setVideoId(null);
-                courseVideo.setCourseId(newCourseId);
-                fsUserCourseVideoService.insertFsUserCourseVideo(courseVideo);
+                return 1;
             }
-            return 1;
+        } catch (RuntimeException e) {
+            throw new RuntimeException("复制失败,请联系开发人员");
         }
 
         return 0;

+ 5 - 0
fs-service/src/main/resources/mapper/course/FsUserCoursePeriodDaysMapper.xml

@@ -243,4 +243,9 @@
     <select id="selectFsUserCoursePeriodDaysForLastById" resultType="java.lang.Long">
        select id from fs_user_course_period_days where del_flag ='0' and period_id = #{periodId} and lesson &gt;= #{lesson} order by lesson
     </select>
+    <select id="selectFsUserCoursePeriodDaysByCourseId"
+            resultType="com.fs.course.domain.FsUserCoursePeriodDays">
+        <include refid="selectFsUserCoursePeriodDaysVo"/>
+                 where del_flag ='0' and course_id = #{courseId}
+    </select>
 </mapper>