Quellcode durchsuchen

1.应在线教育会议沟通,按实际业务修改以下功能
课程管理,章节管理,课时管理,完善详情,列表等接口,给新增修改按实际业务调整
2.将所有带院系相关功能,将院系改成用系统组织,并且重新测试

honorfire vor 7 Monaten
Ursprung
Commit
f0cd664ad1
28 geänderte Dateien mit 791 neuen und 24 gelöschten Zeilen
  1. 79 7
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseChapterController.java
  2. 3 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseClassHourController.java
  3. 1 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseInfoController.java
  4. 19 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/ClassHour.java
  5. 75 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseClasshourFileRelate.java
  6. 34 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseClasshourFileRelateEnum.java
  7. 1 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseInfo/CourseInfoAddParam.java
  8. 46 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelateAddParam.java
  9. 51 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelateEditParam.java
  10. 35 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelateIdParam.java
  11. 51 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelatePageParam.java
  12. 6 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ChapterMapper.java
  13. 6 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ClassHourMapper.java
  14. 25 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseClasshourFileRelateMapper.java
  15. 12 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ChapterMapper.xml
  16. 65 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ClassHourMapper.xml
  17. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseClasshourFileRelateMapper.xml
  18. 3 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseInfoMapper.xml
  19. 9 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourAddParam.java
  20. 7 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourEditParam.java
  21. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ChapterService.java
  22. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ClassHourService.java
  23. 106 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseClasshourFileRelateService.java
  24. 7 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ChapterServiceImpl.java
  25. 9 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ClassHourServiceImpl.java
  26. 125 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseClasshourFileRelateServiceImpl.java
  27. 0 1
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java
  28. 1 1
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/mapping/SysUserMapper.xml

+ 79 - 7
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseChapterController.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.disk.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -29,19 +30,20 @@ import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.disk.domain.Chapter;
 import vip.xiaonuo.disk.domain.CourseInfo;
+import vip.xiaonuo.disk.domain.ResourceRecordUserRelate;
 import vip.xiaonuo.disk.param.ChapterAddParam;
 import vip.xiaonuo.disk.param.ChapterEditParam;
 import vip.xiaonuo.disk.param.ChapterIdParam;
 import vip.xiaonuo.disk.param.ChapterPageParam;
 import vip.xiaonuo.disk.service.ChapterService;
+import vip.xiaonuo.disk.service.ClassHourService;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 课程章节表控制器
@@ -57,24 +59,94 @@ public class CourseChapterController {
 
     @Resource
     private ChapterService chapterService;
+    @Resource
+    private ClassHourService classHourService;
 
     /**
-     * 获取课程章节表分页
+     * 课程章节表-分页列表
      *
      * @author pans
      * @date  2025/07/02 15:34
      */
     @ApiOperationSupport(order = 1)
-    @ApiOperation("获取课程章节表分页")
+    @ApiOperation("课程章节表-分页列表")
     @SaCheckPermission("/disk/chapter/page")
     @GetMapping("/disk/chapter/page")
     public CommonResult<Page<Map<String,Object>>> page(ChapterPageParam chapterPageParam, HttpServletRequest req) {
         Map param =new HashMap();
         param.put("courseId", req.getParameter("courseId"));
         param.put("name", req.getParameter("name"));
+        //查回章节信息
+        Page<Map<String,Object>> chapterPage=chapterService.queryList(param);
+        List<Map<String,Object>> chapterList=chapterPage.getRecords();
+        //挂上所有章节的课时信息
+        //先取出所有章节id
+        List<String> chapterIdList=  chapterList.stream().map(map -> (String) map.get("id")).collect(Collectors.toList());
+        param.clear();
+        param.put("chapterIdList", chapterIdList);
+        List<Map<String,Object>> classHourList =classHourService.queryAllList(param);
+
+        // 2. 按chapterId分组课程
+        Map<String, List<Map<String, Object>>> classHourByChapter = classHourList.stream()
+                .filter(Objects::nonNull)
+                .filter(classHour -> classHour.get("chapterId") != null)
+                .collect(Collectors.groupingBy(
+                        classHour -> classHour.get("chapterId").toString()
+                ));
+
+        // 3. 为每个章节添加对应的课程列表
+        chapterList.stream()
+                .filter(Objects::nonNull)
+                .filter(chapter -> chapter.get("id") != null)
+                .forEach(chapter -> {
+                    String chapterId = chapter.get("id").toString();
+                    chapter.put("classHours",
+                            classHourByChapter.getOrDefault(chapterId, Collections.emptyList()));
+                });
+
+        return CommonResult.data(chapterPage);
+    }
+
+    /**
+     * 课程章节表-全量列表
+     *
+     * @author pans
+     * @date  2025/07/02 15:34
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("课程章节表-全量列表")
+    @SaCheckPermission("/disk/chapter/allList")
+    @GetMapping("/disk/chapter/allList")
+    public CommonResult<List<Map<String,Object>>> allList(ChapterPageParam chapterPageParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        param.put("courseId", req.getParameter("courseId"));
+        param.put("name", req.getParameter("name"));
+        List<Map<String,Object>> chapterList=chapterService.queryAllList(param);
+        //挂上所有章节的课时信息
+        //先取出所有章节id
+        List<String> chapterIdList=  chapterList.stream().map(map -> (String) map.get("id")).collect(Collectors.toList());
+        param.clear();
+        param.put("chapterIdList", chapterIdList);
+        List<Map<String,Object>> classHourList =classHourService.queryAllList(param);
+
+        // 2. 按chapterId分组课程
+        Map<String, List<Map<String, Object>>> classHourByChapter = classHourList.stream()
+                .filter(Objects::nonNull)
+                .filter(classHour -> classHour.get("chapterId") != null)
+                .collect(Collectors.groupingBy(
+                        classHour -> classHour.get("chapterId").toString()
+                ));
 
-        Page<Map<String,Object>> list=chapterService.queryList(param);
-        return CommonResult.data(list);
+        // 3. 为每个章节添加对应的课程列表
+        chapterList.stream()
+                .filter(Objects::nonNull)
+                .filter(chapter -> chapter.get("id") != null)
+                .forEach(chapter -> {
+                    String chapterId = chapter.get("id").toString();
+                    chapter.put("classHours",
+                            classHourByChapter.getOrDefault(chapterId, Collections.emptyList()));
+                });
+        return CommonResult.data(chapterList);
     }
 
     /**

+ 3 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseClassHourController.java

@@ -33,6 +33,7 @@ import vip.xiaonuo.disk.param.ClassHourEditParam;
 import vip.xiaonuo.disk.param.ClassHourIdParam;
 import vip.xiaonuo.disk.param.ClassHourPageParam;
 import vip.xiaonuo.disk.service.ClassHourService;
+import vip.xiaonuo.disk.service.CourseClasshourFileRelateService;
 import vip.xiaonuo.disk.vo.classhour.ClassHourVo;
 
 import javax.annotation.Resource;
@@ -53,6 +54,8 @@ public class CourseClassHourController {
 
     @Resource
     private ClassHourService classHourService;
+    @Resource
+    private CourseClasshourFileRelateService courseClasshourFileRelateService;
 
     /**
      * 获取课时表分页
@@ -80,7 +83,6 @@ public class CourseClassHourController {
     public CommonResult<String> add(@RequestBody @Valid ClassHourAddParam classHourAddParam) {
         ClassHour classHour = BeanUtil.toBean(classHourAddParam, ClassHour.class);
         classHourService.addOne(classHour);
-        //同时存入该课时的关联文件
 
         return CommonResult.ok();
     }
@@ -99,7 +101,6 @@ public class CourseClassHourController {
         ClassHour classHour = classHourService.queryEntity(classHourEditParam.getId());
         BeanUtil.copyProperties(classHourEditParam, classHour);
         classHourService.editOne(classHour);
-        //同时存入该课时的关联文件
 
         return CommonResult.ok();
     }

+ 1 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseInfoController.java

@@ -122,6 +122,7 @@ public class CourseInfoController {
         //设置初始关联课程(2025.6.27废弃)
 //        courseInfo.setHaveresource("0");
         courseInfo.setPublishTime(new Date());
+        courseInfo.setPutawayStatus("0");
         courseInfoService.addOne(courseInfo);
 //        //2.要查回关联的多条课程资源审核记录,然后进行绑定2025.6.26(废弃2025.6.27,课程和资源解耦,不在强绑定)
 //        String courseAuditIdsStr=courseInfoAddParam.getCourseAuditIds();

+ 19 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/ClassHour.java

@@ -47,14 +47,30 @@ public class ClassHour {
     @ApiModelProperty(value = "班级id", position = 4)
     private Long classId;
 
-    /** 课程id */
-    @ApiModelProperty(value = "课程id", position = 5)
-    private String courseId;
+    /** 章节id */
+    @ApiModelProperty(value = "章节id", position = 4)
+    private Long chapterId;
+
+    /** 课时名称 */
+    @ApiModelProperty(value = "课时名称", position = 6)
+    private String name;
 
     /** 备注 */
     @ApiModelProperty(value = "备注", position = 6)
     private String remark;
 
+    /** 视频资源 */
+    @ApiModelProperty(value = "视频资源", position = 4)
+    private Long videoResource;
+
+    /** 讲义资源 */
+    @ApiModelProperty(value = "讲义资源", position = 4)
+    private Long teachmaterialsFile;
+
+    /** 字幕资源 */
+    @ApiModelProperty(value = "字幕资源", position = 4)
+    private Long subtitleFile;
+
     /** DELETE_FLAG */
     @ApiModelProperty(value = "DELETE_FLAG", position = 7)
     @TableLogic

+ 75 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseClasshourFileRelate.java

@@ -0,0 +1,75 @@
+/*
+ * 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.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+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 {
+
+    /** ID */
+    @TableId
+    @ApiModelProperty(value = "ID", position = 1)
+    private String id;
+
+    /** 课程课时id */
+    @ApiModelProperty(value = "课程课时id", position = 2)
+    private String courseClasshourId;
+
+    /** 资源管理记录表ID */
+    @ApiModelProperty(value = "资源管理记录表ID", position = 3)
+    private String resourceRecordId;
+
+    /** 功能类型 */
+    @ApiModelProperty(value = "功能类型", position = 4)
+    private String funcType;
+
+    /** 删除标记(NOT_DELETE-未删除) */
+    @ApiModelProperty(value = "删除标记(NOT_DELETE-未删除)", position = 5)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 记录创建时间 */
+    @ApiModelProperty(value = "记录创建时间", position = 6)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 记录创建人 */
+    @ApiModelProperty(value = "记录创建人", position = 7)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 记录更新时间 */
+    @ApiModelProperty(value = "记录更新时间", position = 8)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 记录更新人 */
+    @ApiModelProperty(value = "记录更新人", position = 9)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+}

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

@@ -0,0 +1,34 @@
+/*
+ * 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.domain;
+
+import lombok.Getter;
+
+/**
+ * 课程课时-文件关联表枚举
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+@Getter
+public enum CourseClasshourFileRelateEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    CourseClasshourFileRelateEnum(String value) {
+        this.value = value;
+    }
+}

+ 1 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseInfo/CourseInfoAddParam.java

@@ -53,7 +53,7 @@ public class CourseInfoAddParam {
 
     /** 所属院系ID */
     @ApiModelProperty(value = "所属院系ID", position = 7)
-    @NotBlank(message = "courseId不能为空")
+    @NotBlank(message = "院系ID不能为空")
     private String collegeId;
 
     /** 附件id */
@@ -90,7 +90,6 @@ public class CourseInfoAddParam {
 
     /** 课程审核记录id */
     @ApiModelProperty(value = "课程审核记录id", position = 2)
-    @NotBlank(message = "课程审核记录id不能为空")
     private String courseAuditIds;
 
     /** 课程信息 */

+ 46 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelateAddParam.java

@@ -0,0 +1,46 @@
+/*
+ * 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.dto.courseclasshourfilerelate;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 课程课时-文件关联表添加参数
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+@Getter
+@Setter
+public class CourseClasshourFileRelateAddParam {
+
+    /** 课程课时id */
+    @ApiModelProperty(value = "课程课时id", position = 2)
+    private String courseClasshourId;
+
+    /** 资源管理记录表ID */
+    @ApiModelProperty(value = "资源管理记录表ID", position = 3)
+    private String resourceRecordId;
+
+    /** 功能类型 */
+    @ApiModelProperty(value = "功能类型", position = 4)
+    private String funcType;
+
+}

+ 51 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelateEditParam.java

@@ -0,0 +1,51 @@
+/*
+ * 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.dto.courseclasshourfilerelate;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 课程课时-文件关联表编辑参数
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+@Getter
+@Setter
+public class CourseClasshourFileRelateEditParam {
+
+    /** 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 = 3)
+    private String resourceRecordId;
+
+    /** 功能类型 */
+    @ApiModelProperty(value = "功能类型", position = 4)
+    private String funcType;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelateIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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.dto.courseclasshourfilerelate;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 课程课时-文件关联表Id参数
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+@Getter
+@Setter
+public class CourseClasshourFileRelateIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/courseclasshourfilerelate/CourseClasshourFileRelatePageParam.java

@@ -0,0 +1,51 @@
+/*
+ * 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.dto.courseclasshourfilerelate;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 课程课时-文件关联表查询参数
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+@Getter
+@Setter
+public class CourseClasshourFileRelatePageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+}

+ 6 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ChapterMapper.java

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.disk.domain.Chapter;
 
+import java.util.List;
 import java.util.Map;
 
 
@@ -33,6 +34,11 @@ public interface ChapterMapper extends BaseMapper<Chapter> {
      */
     Page<Map<String,Object>> queryList(@Param("param") Map param, @Param("page") Page<Object> page);
 
+    /**
+     * 课程章节-全量列表
+     */
+    List<Map<String,Object>> queryAllList(Map param);
+
     /**
      * 课程章节-详情
      */

+ 6 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ClassHourMapper.java

@@ -20,6 +20,7 @@ import vip.xiaonuo.disk.param.ClassHourPageParam;
 import vip.xiaonuo.disk.vo.classhour.ClassHourVo;
 
 import javax.validation.constraints.NotNull;
+import java.util.List;
 import java.util.Map;
 
 
@@ -41,6 +42,11 @@ public interface ClassHourMapper extends BaseMapper<ClassHour> {
      */
     Page<Map<String,Object>> queryList(@Param("param") Map param, @Param("page") Page<Object> page);
 
+    /**
+     *  课程课时-全量列表
+     */
+    List<Map<String,Object>> queryAllList(Map param);
+
     /**
      * 课程章节-详情
      */

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

@@ -0,0 +1,25 @@
+/*
+ * 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.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.disk.domain.CourseClasshourFileRelate;
+
+/**
+ * 课程课时-文件关联表Mapper接口
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+public interface CourseClasshourFileRelateMapper extends BaseMapper<CourseClasshourFileRelate> {
+}

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

@@ -26,6 +26,18 @@
             and cc.id=#{id}
         </if>
     </select>
+    <select id="queryAllList" resultType="java.util.Map">
+        SELECT
+        IFNULL(cc.id,'') AS id,
+        IFNULL(cc.pid,'') AS pid,
+        IFNULL(cc.name,'') AS name,
+        IFNULL(cc.course_id,'') AS courseId
+        FROM COURSE_CHAPTER cc
+        WHERE cc.DELETE_FLAG ='NOT_DELETE'
+        <if test="courseId !=null and courseId != ''">
+            and cc.course_id=#{courseId}
+        </if>
+    </select>
 
 
 </mapper>

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

@@ -51,4 +51,69 @@
         LEFT JOIN COURSE_INFO c ON a."course_id" =c.course_id
         where a."id"=#{id}
     </select>
+
+    <select id="queryInfo" resultType="java.util.Map">
+        SELECT
+            cc.id AS id,
+            IFNULL (cc.chapter_id,'') AS chapterId,
+            IFNULL (cc.remark,'') AS remark,
+            IFNULL (cc.VIDEO_RESOURCE,'') AS videoResource,
+            IFNULL (cc.TEACHMATERRIALS_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
+        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.TEACHMATERRIALS_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'
+    </select>
+    <select id="queryList" resultType="java.util.Map">
+        SELECT
+            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.TEACHMATERRIALS_FILE,'') AS teachmaterialsFile,
+            IFNULL (cc.SUBTITLE_FILE,'') AS subtitleFile
+        FROM  COURSE_CLASSHOUR cc
+        where cc.DELETE_FLAG ='NOT_DELETE'
+        <if test="param.chapterId !=null and param.chapterId != ''">
+            and cc.chapter_id=#{param.chapterId}
+        </if>
+        <if test="param.chapterIdList !=null and param.chapterIdList.size()>0">
+            and cc.chapter_id in
+            <foreach collection=" param.chapterIdList" close=")" index="index" item="item" open="(" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="queryAllList" resultType="java.util.Map">
+        SELECT
+            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.TEACHMATERRIALS_FILE,'') AS teachmaterialsFile,
+            IFNULL (cc.SUBTITLE_FILE,'') AS subtitleFile
+        FROM  COURSE_CLASSHOUR cc
+        where cc.DELETE_FLAG ='NOT_DELETE'
+        <if test="chapterId !=null and chapterId != ''">
+            and cc.chapter_id=#{chapterId}
+        </if>
+        <if test="chapterIdList !=null and chapterIdList.size()>0">
+            and cc.chapter_id in
+            <foreach collection=" chapterIdList" close=")" index="index" item="item" open="(" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 </mapper>

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

@@ -0,0 +1,5 @@
+<?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>

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

@@ -85,10 +85,13 @@
         IFNULL(ci.PUTAWAY_STATUS,'') as putawayStatus,
         IFNULL(( SELECT dd1.DICT_LABEL FROM (SELECT d1.DICT_LABEL,d1.DICT_VALUE  FROM  DEV_DICT d1 WHERE PARENT_ID = (SELECT d2.ID  FROM  DEV_DICT d2 WHERE d2.DICT_VALUE='COURSE_PUTAWAY_STATUS') )dd1 WHERE dd1.DICT_VALUE = TRIM(ci.PUTAWAY_STATUS) ),'') AS putawayStatusName,
         IFNULL(ci.PUBLISH_TIME,'') as publishTime,
+        IFNULL(ci.COVER_IMAGE_ID,'') as coverImageId,
+        IFNULL(CAST(df.DOWNLOAD_PATH AS VARCHAR),'') AS coverImagePath,
         IFNULL(ci.TIME_LIMIT_TYPE,'') as timeLimitType,
         IFNULL(ci.START_TIME,'') as startTime,
         IFNULL(ci.END_TIME,'') as endTime
         FROM COURSE_INFO ci
+        LEFT JOIN DEV_FILE df ON ci.COVER_IMAGE_ID =df.ID AND df.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_ORG co ON ci.COLLEGE_ID=co.ID AND co.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_ORG co2 ON ci.COLLEGE_TWO_ID=co2.id AND co2.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_ORG co3 ON ci.COLLEGE_THREE_ID=co3.id AND co3.DELETE_FLAG ='NOT_DELETE'

+ 9 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourAddParam.java

@@ -39,9 +39,15 @@ public class ClassHourAddParam {
     @ApiModelProperty(value = "结束时间", position = 3)
     private Date endTime;
 
-    /** 班级id */
-    @ApiModelProperty(value = "班级id", position = 4)
-    private Long classId;
+    /** 课时名称 */
+    @ApiModelProperty(value = "课时名称", position = 6)
+    @NotBlank(message = "课时名称不能为空")
+    private String name;
+
+    /** 章节id */
+    @ApiModelProperty(value = "章节id", position = 4)
+    @NotBlank(message = "章节id不能为空")
+    private Long chapterId;
 
     /** 课程id */
     @ApiModelProperty(value = "课程id", position = 5)

+ 7 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/ClassHourEditParam.java

@@ -44,9 +44,13 @@ public class ClassHourEditParam {
     @ApiModelProperty(value = "结束时间", position = 3)
     private Date endTime;
 
-    /** 班级id */
-    @ApiModelProperty(value = "班级id", position = 4)
-    private Long classId;
+    /** 课时名称 */
+    @ApiModelProperty(value = "课时名称", position = 6)
+    private String name;
+
+    /** 章节id */
+    @ApiModelProperty(value = "章节id", position = 4)
+    private Long chapterId;
 
     /** 课程id */
     @ApiModelProperty(value = "课程id", position = 5)

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ChapterService.java

@@ -103,6 +103,11 @@ public interface ChapterService extends IService<Chapter> {
      */
     Page<Map<String,Object>> queryList(Map param);
 
+    /**
+     *  课程章节-全量列表
+     */
+    List<Map<String,Object>> queryAllList(Map param);
+
     /**
      *  课程章节-详情
      */

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ClassHourService.java

@@ -102,6 +102,11 @@ public interface ClassHourService extends IService<ClassHour> {
      */
     Page<Map<String,Object>> queryList(Map param);
 
+    /**
+     *  课程课时-全量列表
+     */
+    List<Map<String,Object>> queryAllList(Map param);
+
     /**
      *  课程课时-详情
      */

+ 106 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseClasshourFileRelateService.java

@@ -0,0 +1,106 @@
+/*
+ * 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;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.disk.domain.CourseAuditRecord;
+import vip.xiaonuo.disk.domain.CourseClasshourFileRelate;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelateAddParam;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelateEditParam;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelateIdParam;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelatePageParam;
+
+import java.util.List;
+
+/**
+ * 课程课时-文件关联表Service接口
+ *
+ * @author honorfire
+ * @date  2025/07/10 13:16
+ **/
+public interface CourseClasshourFileRelateService extends IService<CourseClasshourFileRelate> {
+
+    /**
+     * 获取课程课时-文件关联表分页
+     *
+     * @author honorfire
+     * @date  2025/07/10 13:16
+     */
+    Page<CourseClasshourFileRelate> page(CourseClasshourFileRelatePageParam courseClasshourFileRelatePageParam);
+
+    /**
+     * 添加课程课时-文件关联表
+     *
+     * @author honorfire
+     * @date  2025/07/10 13:16
+     */
+    void add(CourseClasshourFileRelateAddParam courseClasshourFileRelateAddParam);
+
+    /**
+     * 课程课时文件关联-添加
+     *
+     * @author honorfire
+     * @date  2025/06/20 14:58
+     */
+    CourseClasshourFileRelate addOne(CourseClasshourFileRelate courseClasshourFileRelate);
+
+    /**
+     * 课程课时文件关联-批量添加
+     *
+     * @author honorfire
+     * @date  2025/06/20 14:58
+     */
+    void addBatch(List<CourseClasshourFileRelate> courseClasshourFileRelateList);
+
+    /**
+     * 编辑课程课时-文件关联表
+     *
+     * @author honorfire
+     * @date  2025/07/10 13:16
+     */
+    void edit(CourseClasshourFileRelateEditParam courseClasshourFileRelateEditParam);
+
+    /**
+     * 课程课时文件关联-编辑
+     *
+     * @author honorfire
+     * @date  2025/06/20 14:58
+     */
+    CourseClasshourFileRelate editOne(CourseClasshourFileRelate courseClasshourFileRelate);
+
+    /**
+     * 删除课程课时-文件关联表
+     *
+     * @author honorfire
+     * @date  2025/07/10 13:16
+     */
+    void delete(List<CourseClasshourFileRelateIdParam> courseClasshourFileRelateIdParamList);
+
+    /**
+     * 获取课程课时-文件关联表详情
+     *
+     * @author honorfire
+     * @date  2025/07/10 13:16
+     */
+    CourseClasshourFileRelate detail(CourseClasshourFileRelateIdParam courseClasshourFileRelateIdParam);
+
+    /**
+     * 获取课程课时-文件关联表详情
+     *
+     * @author honorfire
+     * @date  2025/07/10 13:16
+     **/
+    CourseClasshourFileRelate queryEntity(String id);
+
+}

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

@@ -117,6 +117,13 @@ public class ChapterServiceImpl extends ServiceImpl<ChapterMapper, Chapter> impl
         return chapterMapper.queryList(param,CommonPageRequest.defaultPage());
     }
 
+
+    @Override
+    public List<Map<String,Object>> queryAllList(Map param)
+    {
+        return chapterMapper.queryAllList(param);
+    }
+
     @Override
     public Map<String,Object> queryInfo(Map param)
     {

+ 9 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ClassHourServiceImpl.java

@@ -34,6 +34,8 @@ import vip.xiaonuo.disk.param.ClassHourIdParam;
 import vip.xiaonuo.disk.param.ClassHourPageParam;
 import vip.xiaonuo.disk.service.ClassHourService;
 import vip.xiaonuo.disk.vo.classhour.ClassHourVo;
+
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 
@@ -45,8 +47,8 @@ import java.util.Map;
  **/
 @Service
 public class ClassHourServiceImpl extends ServiceImpl<ClassHourMapper, ClassHour> implements ClassHourService {
-    @Autowired
-    private   ClassHourMapper classHourMapper;
+    @Resource
+    private ClassHourMapper classHourMapper;
     @Override
     public Page<ClassHourVo> page(ClassHourPageParam classHourPageParam) {
         Page<ClassHourVo> page=classHourMapper.page(CommonPageRequest.defaultPage(),classHourPageParam);
@@ -109,6 +111,11 @@ public class ClassHourServiceImpl extends ServiceImpl<ClassHourMapper, ClassHour
         return classHourMapper.queryList(param,CommonPageRequest.defaultPage());
     }
 
+    @Override
+    public List<Map<String,Object>> queryAllList(Map param) {
+        return classHourMapper.queryAllList(param);
+    }
+
     @Override
     public Map<String,Object> queryInfo(Map param)
     {

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

@@ -0,0 +1,125 @@
+/*
+ * 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.CourseAuditRecord;
+import vip.xiaonuo.disk.domain.CourseClasshourFileRelate;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelateAddParam;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelateEditParam;
+import vip.xiaonuo.disk.dto.courseclasshourfilerelate.CourseClasshourFileRelateIdParam;
+import vip.xiaonuo.disk.dto.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;
+    }
+
+}

+ 0 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java

@@ -367,7 +367,6 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         List<Map<String, Object>> resultList = new ArrayList<>();
         //查询该父级院系id的子级院系
         List<Map<String, Object>> collegeList = sysOrgMapper.getOrgUserChildList(param);
-        String collegeParentId = param.get("collegeParentId").toString();
         //查询该父级id的子级人员
         List<Map<String, Object>> userList = sysUserMapper.getOrgUserChildList(param);
         resultList.addAll(collegeList);

+ 1 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/mapping/SysUserMapper.xml

@@ -31,7 +31,7 @@
         FROM SYS_USER t1
         WHERE t1.DELETE_FLAG = 'NOT_DELETE'
         <if test="collegeParentId !=null and collegeParentId != ''">
-            AND t1.COLLEGE_THREE_ID =#{collegeParentId}
+            AND t1.ORG_ID =#{collegeParentId}
         </if>
     </select>
     <select id="getOtherInfo" resultType="java.util.Map">