ソースを参照

1.课程课时相关功能大改,改成所有相关关联信息用关联表动态处理,修改对应增改查
2.修改完善信息关联表相关

honorfire 7 ヶ月 前
コミット
e3f647ba63
15 ファイル変更318 行追加217 行削除
  1. 1 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseClasshourFileRelateEnum.java
  2. 15 9
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseRelate.java
  3. 11 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseRelateMapper.java
  4. 5 33
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ClassHourMapper.xml
  5. 0 5
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseClasshourFileRelateMapper.xml
  6. 49 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseRelateMapper.xml
  7. 8 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourAddParam.java
  8. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourEditParam.java
  9. 12 8
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelateAddParam.java
  10. 12 8
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelateEditParam.java
  11. 2 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelateIdParam.java
  12. 2 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelatePageParam.java
  13. 36 22
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseRelateService.java
  14. 0 124
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseClasshourFileRelateServiceImpl.java
  15. 160 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseRelateServiceImpl.java

+ 1 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseClasshourFileRelateEnum.java

@@ -15,7 +15,7 @@ package vip.xiaonuo.disk.domain;
 import lombok.Getter;
 
 /**
- * 课程课时-文件关联表枚举
+ * 课程-相关关联表枚举
  *
  * @author honorfire
  * @date  2025/07/10 13:16

+ 15 - 9
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseClasshourFileRelate.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseRelate.java

@@ -20,33 +20,37 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 /**
- * 课程课时-文件关联表实体
+ * 课程-相关关联表实体
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
 @Getter
 @Setter
-@TableName("COURSE_CLASSHOUR_FILE_RELATE")
-public class CourseClasshourFileRelate {
+@TableName("COURSE_RELATE")
+public class CourseRelate {
 
     /** ID */
     @TableId
     @ApiModelProperty(value = "ID", position = 1)
     private String id;
 
-    /** 课程课时id */
-    @ApiModelProperty(value = "课程课时id", position = 2)
-    private String courseClasshourId;
+    /** 主表id */
+    @ApiModelProperty(value = "主表id", position = 2)
+    private String mainId;
 
-    /** 资源管理记录表ID */
-    @ApiModelProperty(value = "资源管理记录表ID", position = 3)
-    private String resourceRecordId;
+    /** 业务id */
+    @ApiModelProperty(value = "业务id", position = 3)
+    private String relateId;
 
     /** 功能类型 */
     @ApiModelProperty(value = "功能类型", position = 4)
     private String funcType;
 
+    /** 章节课时类型 */
+    @ApiModelProperty(value = "章节课时类型", position = 4)
+    private String chapterhourType;
+
     /** 删除标记(NOT_DELETE-未删除) */
     @ApiModelProperty(value = "删除标记(NOT_DELETE-未删除)", position = 5)
     @TableLogic
@@ -72,4 +76,6 @@ public class CourseClasshourFileRelate {
     @ApiModelProperty(value = "记录更新人", position = 9)
     @TableField(fill = FieldFill.UPDATE)
     private String updateUser;
+
+
 }

+ 11 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseClasshourFileRelateMapper.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseRelateMapper.java

@@ -13,13 +13,21 @@
 package vip.xiaonuo.disk.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import vip.xiaonuo.disk.domain.CourseClasshourFileRelate;
+import vip.xiaonuo.disk.domain.CourseRelate;
+
+import java.util.List;
+import java.util.Map;
 
 /**
- * 课程课时-文件关联表Mapper接口
+ * 课程-相关关联表Mapper接口
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
-public interface CourseClasshourFileRelateMapper extends BaseMapper<CourseClasshourFileRelate> {
+public interface CourseRelateMapper extends BaseMapper<CourseRelate> {
+
+    /**
+     * 获取课程-相关关联表-map列表
+     */
+    List<Map<String,Object>> queryMapList(Map param);
 }

+ 5 - 33
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ClassHourMapper.xml

@@ -57,22 +57,8 @@
             cc.ID AS id,
             IFNULL (cc.NAME,'') AS name,
             IFNULL (cc.CHAPTER_ID ,'') AS chapterId,
-            IFNULL (cc.REMARK ,'') AS remark,
-            IFNULL (cc.VIDEO_RESOURCE,'') AS videoResource,
-            IFNULL (cc.TEACHMATERIALS_FILE,'') AS teachmaterialsFile,
-            IFNULL (cc.SUBTITLE_FILE,'') AS subtitleFile,
-            IFNULL (ru.FILE_NAME,'') AS videoResourceName,
-            IFNULL (rf.FILE_URL,'') AS videoResourceUrl,
-            IFNULL (df.NAME ,'')AS teachmaterialsFileName,
-            IFNULL (CAST(df.DOWNLOAD_PATH AS VARCHAR),'') AS teachmaterialsFileUrl,
-            IFNULL (df2.NAME ,'')AS subtitleFileName,
-            IFNULL (CAST(df2.DOWNLOAD_PATH AS VARCHAR),'') AS subtitleFileUrl
+            IFNULL (cc.REMARK ,'') AS remark
         FROM  COURSE_CLASSHOUR cc
-        LEFT JOIN RESOURCE_RECORD rr ON rr.ID =cc.VIDEO_RESOURCE AND cc.DELETE_FLAG ='NOT_DELETE'
-        LEFT JOIN RESOURCE_USERFILE ru ON ru.USER_FILE_ID = rr.USERFILE_ID AND ru.DELETE_FLAG ='NOT_DELETE'
-        LEFT JOIN RESOURCE_FILE rf ON ru.FILE_ID= rf.FILE_ID
-        LEFT JOIN DEV_FILE df ON cc.TEACHMATERIALS_FILE =df.ID AND df.DELETE_FLAG ='NOT_DELETE'
-        LEFT JOIN DEV_FILE df2 ON cc.SUBTITLE_FILE =df2.ID AND df2.DELETE_FLAG ='NOT_DELETE'
         where 1=1
         <if test="id !=null  and id != ''">
             and cc.ID =#{id}
@@ -83,10 +69,7 @@
             cc.ID AS id,
             IFNULL (cc.NAME,'') AS name,
             IFNULL (cc.CHAPTER_ID ,'') AS chapterId,
-            IFNULL (cc.REMARK ,'') AS remark,
-            IFNULL (cc.VIDEO_RESOURCE,'') AS videoResource,
-            IFNULL (cc.TEACHMATERIALS_FILE,'') AS teachmaterialsFile,
-            IFNULL (cc.SUBTITLE_FILE,'') AS subtitleFile
+            IFNULL (cc.REMARK ,'') AS remark
         FROM  COURSE_CLASSHOUR cc
         where cc.DELETE_FLAG ='NOT_DELETE'
         <if test="param.chapterId !=null and param.chapterId != ''">
@@ -109,22 +92,11 @@
             IFNULL (cc.NAME,'') AS name,
             IFNULL (cc.CHAPTER_ID ,'') AS chapterId,
             IFNULL (cc.REMARK ,'') AS remark,
-            IFNULL (rr.CREATE_TIME,'') AS createTime,
-            IFNULL (su.NAME,'') AS createUserName,
-            IFNULL (cc.VIDEO_RESOURCE,'') AS videoResource,
-            IFNULL (cc.TEACHMATERIALS_FILE,'') AS teachmaterialsFile,
-            IFNULL (cc.SUBTITLE_FILE,'') AS subtitleFile
+            IFNULL (cc.CREATE_TIME,'') AS createTime,
+            IFNULL (su.NAME,'') AS createUserName
         FROM  COURSE_CLASSHOUR cc
-        LEFT JOIN RESOURCE_RECORD rr ON rr.ID =cc.VIDEO_RESOURCE AND cc.DELETE_FLAG ='NOT_DELETE'
-        LEFT JOIN RESOURCE_USERFILE ru ON ru.USER_FILE_ID = rr.USERFILE_ID AND ru.DELETE_FLAG ='NOT_DELETE'
-        LEFT JOIN RESOURCE_FILE rf ON ru.FILE_ID= rf.FILE_ID
-        LEFT JOIN SYS_USER su ON rr.CREATE_USER =su.ID AND su.DELETE_FLAG ='NOT_DELETE'
+        LEFT JOIN SYS_USER su ON cc.CREATE_USER =su.ID AND su.DELETE_FLAG ='NOT_DELETE'
         where cc.DELETE_FLAG ='NOT_DELETE'
-        <if test="verifyPass !=null and verifyPass != ''">
-            <if test=" verifyPass == 1">
-                AND rr.VERIFY_STATUS ='2'
-            </if>
-        </if>
         <if test="chapterId !=null and chapterId != ''">
             and cc.chapter_id=#{chapterId}
         </if>

+ 0 - 5
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseClasshourFileRelateMapper.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="vip.xiaonuo.disk.mapper.CourseClasshourFileRelateMapper">
-
-</mapper>

+ 49 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseRelateMapper.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.disk.mapper.CourseRelateMapper">
+
+    <select id="queryMapList" resultType="java.util.Map" >
+        SELECT
+            TRIM(cr.FUNC_TYPE) AS funcType,
+            cr.CHAPTERHOUR_TYPE AS chapterHourType,
+        <if test="funcType !=null  and funcType != ''">
+            <if test="funcType == 1">
+                IFNULL (ru.FILE_NAME,'') AS name,
+                IFNULL (rf.FILE_URL,'') AS url,
+            </if>
+            <if test="funcType == 2 ||funcType == 3 ">
+                IFNULL (df.NAME,'') AS name,
+                IFNULL (CAST(df.DOWNLOAD_PATH AS VARCHAR),'') AS url,
+            </if>
+            <if test="funcType == 4 ||funcType == 5 ">
+                tep."name" AS name,
+            </if>
+        </if>
+            cr.MAIN_ID AS mainId,
+            cr.RELATE_ID AS relateId
+        FROM COURSE_RELATE cr
+        <if test="funcType !=null  and funcType != ''">
+            <if test="funcType == 1">
+                LEFT JOIN RESOURCE_RECORD rr ON rr.ID =cr.RELATE_ID AND rr.DELETE_FLAG ='NOT_DELETE'
+                LEFT JOIN RESOURCE_USERFILE ru ON ru.USER_FILE_ID = rr.USERFILE_ID AND ru.DELETE_FLAG ='NOT_DELETE'
+                LEFT JOIN RESOURCE_FILE rf ON ru.FILE_ID= rf.FILE_ID
+            </if>
+            <if test="funcType == 2 ||funcType == 3 ">
+                LEFT JOIN DEV_FILE df ON cr.RELATE_ID =df.ID AND df.DELETE_FLAG ='NOT_DELETE'
+            </if>
+            <if test="funcType == 4 ||funcType == 5 ">
+                LEFT JOIN "t_exam_paper" tep ON cr.RELATE_ID = tep.id AND tep."deleted" =0
+            </if>
+        </if>
+        WHERE cr.DELETE_FLAG ='NOT_DELETE'
+        <if test="mainId !=null and mainId != ''">
+            AND cr.MAIN_ID=#{mainId}
+        </if>
+        <if test="chapterhourType !=null and chapterhourType != ''">
+            AND cr.CHAPTERHOUR_TYPE=#{chapterhourType}
+        </if>
+        <if test="funcType !=null and funcType != ''">
+            AND cr.FUNC_TYPE= #{funcType}
+        </if>
+    </select>
+</mapper>

+ 8 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourAddParam.java

@@ -15,11 +15,13 @@ package vip.xiaonuo.disk.param;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.disk.domain.CourseRelate;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 课时表添加参数
@@ -69,4 +71,10 @@ public class ClassHourAddParam {
     @ApiModelProperty(value = "字幕资源", position = 6)
     private String subtitleFile;
 
+    /** 关联信息 */
+    @ApiModelProperty(value = "关联信息", position = 6)
+    private List<CourseRelate> courseRelates;
+
+
+
 }

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourEditParam.java

@@ -15,11 +15,13 @@ package vip.xiaonuo.disk.param;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.disk.domain.CourseRelate;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 课时表编辑参数
@@ -72,4 +74,7 @@ public class ClassHourEditParam {
     @ApiModelProperty(value = "字幕资源", position = 6)
     private String subtitleFile;
 
+    /** 关联信息 */
+    @ApiModelProperty(value = "关联信息", position = 6)
+    private List<CourseRelate> courseRelates;
 }

+ 12 - 8
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseClasshourFileRelateAddParam.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelateAddParam.java

@@ -17,25 +17,29 @@ import lombok.Getter;
 import lombok.Setter;
 
 /**
- * 课程课时-文件关联表添加参数
+ * 课程-相关关联表添加参数
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
 @Getter
 @Setter
-public class CourseClasshourFileRelateAddParam {
+public class CourseRelateAddParam {
 
-    /** 课程课时id */
-    @ApiModelProperty(value = "课程课时id", position = 2)
-    private String courseClasshourId;
+    /** 主表id */
+    @ApiModelProperty(value = "主表id", position = 2)
+    private String mainId;
 
-    /** 资源管理记录表ID */
-    @ApiModelProperty(value = "资源管理记录表ID", position = 3)
-    private String resourceRecordId;
+    /** 业务id */
+    @ApiModelProperty(value = "业务id", position = 3)
+    private String relateId;
 
     /** 功能类型 */
     @ApiModelProperty(value = "功能类型", position = 4)
     private String funcType;
 
+    /** 章节课时类型 */
+    @ApiModelProperty(value = "章节课时类型", position = 4)
+    private String chapterhourType;
+
 }

+ 12 - 8
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseClasshourFileRelateEditParam.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelateEditParam.java

@@ -12,6 +12,7 @@
  */
 package vip.xiaonuo.disk.param.courseclasshourfilerelate;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -19,30 +20,33 @@ import lombok.Setter;
 import javax.validation.constraints.NotBlank;
 
 /**
- * 课程课时-文件关联表编辑参数
+ * 课程-相关关联表编辑参数
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
 @Getter
 @Setter
-public class CourseClasshourFileRelateEditParam {
+public class CourseRelateEditParam {
 
     /** ID */
     @ApiModelProperty(value = "ID", required = true, position = 1)
     @NotBlank(message = "id不能为空")
     private String id;
 
-    /** 课程课时id */
-    @ApiModelProperty(value = "课程课时id", position = 2)
-    private String courseClasshourId;
+    /** 主表id */
+    @ApiModelProperty(value = "主表id", position = 2)
+    private String mainId;
 
-    /** 资源管理记录表ID */
-    @ApiModelProperty(value = "资源管理记录表ID", position = 3)
-    private String resourceRecordId;
+    /** 业务id */
+    @ApiModelProperty(value = "业务id", position = 3)
+    private String relateId;
 
     /** 功能类型 */
     @ApiModelProperty(value = "功能类型", position = 4)
     private String funcType;
 
+    /** 章节课时类型 */
+    @ApiModelProperty(value = "章节课时类型", position = 4)
+    private String chapterhourType;
 }

+ 2 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseClasshourFileRelateIdParam.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelateIdParam.java

@@ -19,14 +19,14 @@ import lombok.Setter;
 import javax.validation.constraints.NotBlank;
 
 /**
- * 课程课时-文件关联表Id参数
+ * 课程-相关关联表Id参数
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
 @Getter
 @Setter
-public class CourseClasshourFileRelateIdParam {
+public class CourseRelateIdParam {
 
     /** ID */
     @ApiModelProperty(value = "ID", required = true)

+ 2 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseClasshourFileRelatePageParam.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseclasshourfilerelate/CourseRelatePageParam.java

@@ -17,14 +17,14 @@ import lombok.Getter;
 import lombok.Setter;
 
 /**
- * 课程课时-文件关联表查询参数
+ * 课程-相关关联表查询参数
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
 @Getter
 @Setter
-public class CourseClasshourFileRelatePageParam {
+public class CourseRelatePageParam {
 
     /** 当前页 */
     @ApiModelProperty(value = "当前页码")

+ 36 - 22
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseClasshourFileRelateService.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseRelateService.java

@@ -14,37 +14,49 @@ package vip.xiaonuo.disk.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import vip.xiaonuo.disk.domain.CourseClasshourFileRelate;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelateAddParam;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelateEditParam;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelateIdParam;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelatePageParam;
+import vip.xiaonuo.disk.domain.CourseRelate;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelateAddParam;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelateEditParam;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelateIdParam;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelatePageParam;
 
 import java.util.List;
+import java.util.Map;
 
 /**
- * 课程课时-文件关联表Service接口
+ * 课程-相关关联表Service接口
  *
  * @author honorfire
  * @date  2025/07/10 13:16
  **/
-public interface CourseClasshourFileRelateService extends IService<CourseClasshourFileRelate> {
+public interface CourseRelateService extends IService<CourseRelate> {
 
     /**
-     * 获取课程课时-文件关联表分页
+     * 获取课程-相关关联表分页
      *
      * @author honorfire
      * @date  2025/07/10 13:16
      */
-    Page<CourseClasshourFileRelate> page(CourseClasshourFileRelatePageParam courseClasshourFileRelatePageParam);
+    Page<CourseRelate> page(CourseRelatePageParam courseRelatePageParam);
 
     /**
-     * 添加课程课时-文件关联表
+     * 获取课程-相关关联表-封装列表
+     */
+    List<CourseRelate> wrapperList(Map param);
+
+    /**
+     * 获取课程-相关关联表-map列表
+     */
+    List<Map<String,Object>> queryMapList(Map param);
+
+
+    /**
+     * 添加课程-相关关联表
      *
      * @author honorfire
      * @date  2025/07/10 13:16
      */
-    void add(CourseClasshourFileRelateAddParam courseClasshourFileRelateAddParam);
+    void add(CourseRelateAddParam courseRelateAddParam);
 
     /**
      * 课程课时文件关联-添加
@@ -52,7 +64,7 @@ public interface CourseClasshourFileRelateService extends IService<CourseClassho
      * @author honorfire
      * @date  2025/06/20 14:58
      */
-    CourseClasshourFileRelate addOne(CourseClasshourFileRelate courseClasshourFileRelate);
+    CourseRelate addOne(CourseRelate courseRelate);
 
     /**
      * 课程课时文件关联-批量添加
@@ -60,15 +72,15 @@ public interface CourseClasshourFileRelateService extends IService<CourseClassho
      * @author honorfire
      * @date  2025/06/20 14:58
      */
-    void addBatch(List<CourseClasshourFileRelate> courseClasshourFileRelateList);
+    void addBatch(List<CourseRelate> courseRelateList);
 
     /**
-     * 编辑课程课时-文件关联表
+     * 编辑课程-相关关联表
      *
      * @author honorfire
      * @date  2025/07/10 13:16
      */
-    void edit(CourseClasshourFileRelateEditParam courseClasshourFileRelateEditParam);
+    void edit(CourseRelateEditParam courseRelateEditParam);
 
     /**
      * 课程课时文件关联-编辑
@@ -76,30 +88,32 @@ public interface CourseClasshourFileRelateService extends IService<CourseClassho
      * @author honorfire
      * @date  2025/06/20 14:58
      */
-    CourseClasshourFileRelate editOne(CourseClasshourFileRelate courseClasshourFileRelate);
+    CourseRelate editOne(CourseRelate courseRelate);
 
     /**
-     * 删除课程课时-文件关联表
+     * 删除课程-相关关联表
      *
      * @author honorfire
      * @date  2025/07/10 13:16
      */
-    void delete(List<CourseClasshourFileRelateIdParam> courseClasshourFileRelateIdParamList);
+    void delete(List<CourseRelateIdParam> courseRelateIdParamList);
+
+    void deleteByIds(List<String> deleteIdList);
 
     /**
-     * 获取课程课时-文件关联表详情
+     * 获取课程-相关关联表详情
      *
      * @author honorfire
      * @date  2025/07/10 13:16
      */
-    CourseClasshourFileRelate detail(CourseClasshourFileRelateIdParam courseClasshourFileRelateIdParam);
+    CourseRelate detail(CourseRelateIdParam courseRelateIdParam);
 
     /**
-     * 获取课程课时-文件关联表详情
+     * 获取课程-相关关联表详情
      *
      * @author honorfire
      * @date  2025/07/10 13:16
      **/
-    CourseClasshourFileRelate queryEntity(String id);
+    CourseRelate queryEntity(String id);
 
 }

+ 0 - 124
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseClasshourFileRelateServiceImpl.java

@@ -1,124 +0,0 @@
-/*
- * Copyright [2022] [https://www.xiaonuo.vip]
- *
- * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
- *
- * 1.请不要删除和修改根目录下的LICENSE文件。
- * 2.请不要删除和修改Snowy源码头部的版权声明。
- * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
- * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
- * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
- * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
- */
-package vip.xiaonuo.disk.service.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollStreamUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
-import vip.xiaonuo.common.exception.CommonException;
-import vip.xiaonuo.common.page.CommonPageRequest;
-import vip.xiaonuo.disk.domain.CourseClasshourFileRelate;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelateAddParam;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelateEditParam;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelateIdParam;
-import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseClasshourFileRelatePageParam;
-import vip.xiaonuo.disk.mapper.CourseClasshourFileRelateMapper;
-import vip.xiaonuo.disk.service.CourseClasshourFileRelateService;
-
-import java.util.List;
-
-/**
- * 课程课时-文件关联表Service接口实现类
- *
- * @author honorfire
- * @date  2025/07/10 13:16
- **/
-@Service
-public class CourseClasshourFileRelateServiceImpl extends ServiceImpl<CourseClasshourFileRelateMapper, CourseClasshourFileRelate> implements CourseClasshourFileRelateService {
-
-
-    @Override
-    public Page<CourseClasshourFileRelate> page(CourseClasshourFileRelatePageParam courseClasshourFileRelatePageParam) {
-        QueryWrapper<CourseClasshourFileRelate> queryWrapper = new QueryWrapper<>();
-        if(ObjectUtil.isAllNotEmpty(courseClasshourFileRelatePageParam.getSortField(), courseClasshourFileRelatePageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(courseClasshourFileRelatePageParam.getSortOrder());
-            queryWrapper.orderBy(true, courseClasshourFileRelatePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(courseClasshourFileRelatePageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(CourseClasshourFileRelate::getId);
-        }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void add(CourseClasshourFileRelateAddParam courseClasshourFileRelateAddParam) {
-        CourseClasshourFileRelate courseClasshourFileRelate = BeanUtil.toBean(courseClasshourFileRelateAddParam, CourseClasshourFileRelate.class);
-        this.save(courseClasshourFileRelate);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public CourseClasshourFileRelate addOne(CourseClasshourFileRelate courseClasshourFileRelate) {
-        this.save(courseClasshourFileRelate);
-        return courseClasshourFileRelate;
-    }
-
-    /**
-     * 课程课时文件关联-批量添加
-     *
-     * @author honorfire
-     * @date  2025/06/18 14:16
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void addBatch(List<CourseClasshourFileRelate> courseClasshourFileRelateList)
-    {
-        this.saveBatch(courseClasshourFileRelateList);
-    }
-
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void edit(CourseClasshourFileRelateEditParam courseClasshourFileRelateEditParam) {
-        CourseClasshourFileRelate courseClasshourFileRelate = this.queryEntity(courseClasshourFileRelateEditParam.getId());
-        BeanUtil.copyProperties(courseClasshourFileRelateEditParam, courseClasshourFileRelate);
-        this.updateById(courseClasshourFileRelate);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public CourseClasshourFileRelate editOne(CourseClasshourFileRelate courseClasshourFileRelate) {
-        this.updateById(courseClasshourFileRelate);
-        return courseClasshourFileRelate;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void delete(List<CourseClasshourFileRelateIdParam> courseClasshourFileRelateIdParamList) {
-        // 执行删除
-        this.removeByIds(CollStreamUtil.toList(courseClasshourFileRelateIdParamList, CourseClasshourFileRelateIdParam::getId));
-    }
-
-    @Override
-    public CourseClasshourFileRelate detail(CourseClasshourFileRelateIdParam courseClasshourFileRelateIdParam) {
-        return this.queryEntity(courseClasshourFileRelateIdParam.getId());
-    }
-
-    @Override
-    public CourseClasshourFileRelate queryEntity(String id) {
-        CourseClasshourFileRelate courseClasshourFileRelate = this.getById(id);
-        if(ObjectUtil.isEmpty(courseClasshourFileRelate)) {
-            throw new CommonException("课程课时-文件关联表不存在,id值为:{}", id);
-        }
-        return courseClasshourFileRelate;
-    }
-
-}

+ 160 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseRelateServiceImpl.java

@@ -0,0 +1,160 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.disk.domain.CourseRelate;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelateAddParam;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelateEditParam;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelateIdParam;
+import vip.xiaonuo.disk.param.courseclasshourfilerelate.CourseRelatePageParam;
+import vip.xiaonuo.disk.mapper.CourseRelateMapper;
+import vip.xiaonuo.disk.service.CourseRelateService;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 课程-相关关联表Service接口实现类
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+@Service
+public class CourseRelateServiceImpl extends ServiceImpl<CourseRelateMapper, CourseRelate> implements CourseRelateService {
+
+    @Resource
+    private CourseRelateMapper courseRelateMapper;
+
+    @Override
+    public Page<CourseRelate> page(CourseRelatePageParam courseRelatePageParam) {
+        QueryWrapper<CourseRelate> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isAllNotEmpty(courseRelatePageParam.getSortField(), courseRelatePageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(courseRelatePageParam.getSortOrder());
+            queryWrapper.orderBy(true, courseRelatePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(courseRelatePageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(CourseRelate::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Override
+    public List<CourseRelate> wrapperList(Map param){
+        QueryWrapper<CourseRelate> queryWrapper = new QueryWrapper<>();
+        if(StringUtils.isNotEmpty(param.get("mainId").toString()))
+        {
+            queryWrapper.lambda().eq(CourseRelate::getMainId, param.get("mainId"));
+        }
+        if(StringUtils.isNotEmpty(param.get("chapterhourType").toString()))
+        {
+            queryWrapper.lambda().eq(CourseRelate::getChapterhourType, param.get("chapterhourType"));
+        }
+
+        return this.list(queryWrapper);
+    }
+
+    /**
+     * 获取课程-相关关联表-map列表
+     */
+    @Override
+    public List<Map<String,Object>> queryMapList(Map param)
+    {
+        return courseRelateMapper.queryMapList(param);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(CourseRelateAddParam courseRelateAddParam) {
+        CourseRelate courseRelate = BeanUtil.toBean(courseRelateAddParam, CourseRelate.class);
+        this.save(courseRelate);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CourseRelate addOne(CourseRelate courseRelate) {
+        this.save(courseRelate);
+        return courseRelate;
+    }
+
+    /**
+     * 课程课时文件关联-批量添加
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void addBatch(List<CourseRelate> courseRelateList)
+    {
+        this.saveBatch(courseRelateList);
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(CourseRelateEditParam courseRelateEditParam) {
+        CourseRelate courseRelate = this.queryEntity(courseRelateEditParam.getId());
+        BeanUtil.copyProperties(courseRelateEditParam, courseRelate);
+        this.updateById(courseRelate);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CourseRelate editOne(CourseRelate courseRelate) {
+        this.updateById(courseRelate);
+        return courseRelate;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<CourseRelateIdParam> courseRelateIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(courseRelateIdParamList, CourseRelateIdParam::getId));
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void deleteByIds(List<String> deleteIdList)
+    {
+        this.removeByIds(deleteIdList);
+    }
+
+    @Override
+    public CourseRelate detail(CourseRelateIdParam courseRelateIdParam) {
+        return this.queryEntity(courseRelateIdParam.getId());
+    }
+
+    @Override
+    public CourseRelate queryEntity(String id) {
+        CourseRelate courseRelate = this.getById(id);
+        if(ObjectUtil.isEmpty(courseRelate)) {
+            throw new CommonException("课程-相关关联表不存在,id值为:{}", id);
+        }
+        return courseRelate;
+    }
+
+}