Просмотр исходного кода

1.开课表相关功能
2.埋点表去掉一些参数

honorfire 7 месяцев назад
Родитель
Сommit
6c0c45c317
13 измененных файлов с 842 добавлено и 7 удалено
  1. 144 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseOpenController.java
  2. 103 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseOpen.java
  3. 34 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseOpenEnum.java
  4. 39 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseOpenMapper.java
  5. 45 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseOpenMapper.xml
  6. 74 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenAddParam.java
  7. 79 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenEditParam.java
  8. 35 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenIdParam.java
  9. 51 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenPageParam.java
  10. 0 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/coursestudentprogress/CourseStudentProgressAddParam.java
  11. 0 4
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/coursestudentprogress/CourseStudentProgressEditParam.java
  12. 110 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseOpenService.java
  13. 128 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseOpenServiceImpl.java

+ 144 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseOpenController.java

@@ -0,0 +1,144 @@
+/*
+ * 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.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.disk.domain.CourseInfo;
+import vip.xiaonuo.disk.domain.CourseOpen;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenAddParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenEditParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenIdParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenPageParam;
+import vip.xiaonuo.disk.service.CourseOpenService;
+
+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.Map;
+
+/**
+ * 课程开课表控制器
+ *
+ * @author honorfire
+ * @date  2025/08/01 17:48
+ */
+@Api(tags = "课程开课表控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class CourseOpenController {
+
+    @Resource
+    private CourseOpenService courseOpenService;
+
+    /**
+     * 获取课程开课表分页
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取课程开课表分页")
+    @SaCheckPermission("/disk/courseopen/page")
+    @GetMapping("/disk/courseopen/page")
+    public CommonResult<Page<Map<String,Object>>> page(CourseOpenPageParam courseOpenPageParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        Page<Map<String,Object>> list=courseOpenService.queryList(param);
+        return CommonResult.data(list);
+    }
+
+    /**
+     * 添加课程开课表
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加课程开课表")
+    @CommonLog("添加课程开课表")
+    @SaCheckPermission("/disk/courseopen/add")
+    @PostMapping("/disk/courseopen/add")
+    public CommonResult<String> add(@RequestBody @Valid CourseOpenAddParam courseOpenAddParam) {
+        CourseOpen courseOpen = BeanUtil.toBean(courseOpenAddParam, CourseOpen.class);
+        courseOpenService.addOne(courseOpen);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑课程开课表
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑课程开课表")
+    @CommonLog("编辑课程开课表")
+    @SaCheckPermission("/disk/courseopen/edit")
+    @PostMapping("/disk/courseopen/edit")
+    public CommonResult<String> edit(@RequestBody @Valid CourseOpenEditParam courseOpenEditParam) {
+        CourseOpen courseOpen = BeanUtil.toBean(courseOpenEditParam, CourseOpen.class);
+        courseOpenService.editOne(courseOpen);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除课程开课表
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除课程开课表")
+    @CommonLog("删除课程开课表")
+    @SaCheckPermission("/disk/courseopen/delete")
+    @PostMapping("/disk/courseopen/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<CourseOpenIdParam> courseOpenIdParamList) {
+        courseOpenService.delete(courseOpenIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取课程开课表详情
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取课程开课表详情")
+    @SaCheckPermission("/disk/courseopen/detail")
+    @GetMapping("/disk/courseopen/detail")
+    public CommonResult<Map<String,Object>> detail(@Valid CourseOpenIdParam courseOpenIdParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        param.put("id", req.getParameter("id"));
+        Map<String,Object> result=courseOpenService.queryInfo(param);
+        return CommonResult.data(result);
+    }
+
+}

+ 103 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseOpen.java

@@ -0,0 +1,103 @@
+/*
+ * 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/08/01 17:48
+ **/
+@Getter
+@Setter
+@TableName("COURSE_OPEN")
+public class CourseOpen {
+
+    /** ID */
+    @TableId
+    @ApiModelProperty(value = "ID", position = 1)
+    private String id;
+
+    /** 老师id */
+    @ApiModelProperty(value = "老师id", position = 2)
+    private String teacherId;
+
+    /** 班级id */
+    @ApiModelProperty(value = "班级id", position = 3)
+    private String gradesId;
+
+    /** 课程id */
+    @ApiModelProperty(value = "课程id", position = 4)
+    private String courseId;
+
+    /** 学期id */
+    @ApiModelProperty(value = "学期id", position = 5)
+    private String semesterId;
+
+    /** 教室信息 */
+    @ApiModelProperty(value = "教室信息", position = 6)
+    private String room;
+
+    /** 上课时间 */
+    @ApiModelProperty(value = "上课时间", position = 7)
+    private String scheduleTime;
+
+    /** 开始节次 */
+    @ApiModelProperty(value = "开始节次", position = 8)
+    private String strartPeriod;
+
+    /** 结束节次 */
+    @ApiModelProperty(value = "结束节次", position = 9)
+    private String endPeriod;
+
+    /** 单双周支持,1单,2双,3每周 */
+    @ApiModelProperty(value = "单双周支持,1单,2双,3每周", position = 10)
+    private String weekType;
+
+    /** 状态,0正常,1已取消,2临时 */
+    @ApiModelProperty(value = "状态,0正常,1已取消,2临时", position = 11)
+    private String status;
+
+    /** 删除标记(NOT_DELETE-未删除) */
+    @ApiModelProperty(value = "删除标记(NOT_DELETE-未删除)", position = 12)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 记录更新时间 */
+    @ApiModelProperty(value = "记录更新时间", position = 13)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 记录创建时间 */
+    @ApiModelProperty(value = "记录创建时间", position = 14)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 记录创建人 */
+    @ApiModelProperty(value = "记录创建人", position = 15)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 记录更新人 */
+    @ApiModelProperty(value = "记录更新人", position = 16)
+    @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/CourseOpenEnum.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/08/01 17:48
+ **/
+@Getter
+public enum CourseOpenEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    CourseOpenEnum(String value) {
+        this.value = value;
+    }
+}

+ 39 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseOpenMapper.java

@@ -0,0 +1,39 @@
+/*
+ * 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.disk.domain.CourseOpen;
+
+import java.util.Map;
+
+/**
+ * 课程开课表Mapper接口
+ *
+ * @author honorfire
+ * @date  2025/08/01 17:48
+ **/
+public interface CourseOpenMapper extends BaseMapper<CourseOpen> {
+
+    /**
+     * 课程开课-分页列表
+     */
+    Page<Map<String,Object>> queryList(@Param("param") Map param, @Param("page") Page<Object> page);
+
+    /**
+     * 课程开课-详情
+     */
+    Map<String,Object> queryInfo(Map param);
+}

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

@@ -0,0 +1,45 @@
+<?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.CourseOpenMapper">
+
+    <select id="queryList" resultType="java.util.Map">
+        SELECT
+            co.ID AS id,
+            IFNULL(co.TEACHER_ID ,'') AS teacherid,
+            IFNULL(co.GRADES_ID ,'') AS gradesId,
+            IFNULL(co.COURSE_ID ,'') AS courseId,
+            IFNULL(co.SEMESTER_ID ,'') AS semesterId,
+            IFNULL(co.ROOM ,'') AS room,
+            IFNULL(co.SCHEDULE_TIME ,'') AS scheduleTime,
+            IFNULL(co.START_PERIOD ,'') AS startPeriod,
+            IFNULL(co.END_PERIOD ,'') AS endPeriod,
+            IFNULL(co.WEEK_TYPE ,'') AS weekType,
+            IFNULL(co.STATUS ,'') AS status
+        FROM COURSE_OPEN co
+                 LEFT JOIN SYS_USER su ON co.TEACHER_ID =su.ID AND su.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID = co.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN grades gr ON co.GRADES_ID =gr.grades_id  AND gr.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN SEMESTER s ON s.ID =co.SEMESTER_ID AND s.DELETE_FLAG ='NOT_DELETE'
+        WHERE co.DELETE_FLAG ='NOT_DELETE'
+    </select>
+    <select id="queryInfo" resultType="java.util.Map">
+        SELECT
+            co.ID AS id,
+            IFNULL(co.TEACHER_ID ,'') AS teacherid,
+            IFNULL(co.GRADES_ID ,'') AS gradesId,
+            IFNULL(co.COURSE_ID ,'') AS courseId,
+            IFNULL(co.SEMESTER_ID ,'') AS semesterId,
+            IFNULL(co.ROOM ,'') AS room,
+            IFNULL(co.SCHEDULE_TIME ,'') AS scheduleTime,
+            IFNULL(co.START_PERIOD ,'') AS startPeriod,
+            IFNULL(co.END_PERIOD ,'') AS endPeriod,
+            IFNULL(co.WEEK_TYPE ,'') AS weekType,
+            IFNULL(co.STATUS ,'') AS status
+        FROM COURSE_OPEN co
+                 LEFT JOIN SYS_USER su ON co.TEACHER_ID =su.ID AND su.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID = co.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN grades gr ON co.GRADES_ID =gr.grades_id  AND gr.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN SEMESTER s ON s.ID =co.SEMESTER_ID AND s.DELETE_FLAG ='NOT_DELETE'
+        WHERE co.DELETE_FLAG ='NOT_DELETE'
+    </select>
+</mapper>

+ 74 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenAddParam.java

@@ -0,0 +1,74 @@
+/*
+ * 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.param.courseopen;
+
+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/08/01 17:48
+ **/
+@Getter
+@Setter
+public class CourseOpenAddParam {
+
+    /** 老师id */
+    @ApiModelProperty(value = "老师id", position = 2)
+    private String teacherId;
+
+    /** 班级id */
+    @ApiModelProperty(value = "班级id", position = 3)
+    private String gradesId;
+
+    /** 课程id */
+    @ApiModelProperty(value = "课程id", position = 4)
+    private String courseId;
+
+    /** 学期id */
+    @ApiModelProperty(value = "学期id", position = 5)
+    private String semesterId;
+
+    /** 教室信息 */
+    @ApiModelProperty(value = "教室信息", position = 6)
+    private String room;
+
+    /** 上课时间 */
+    @ApiModelProperty(value = "上课时间", position = 7)
+    private String scheduleTime;
+
+    /** 开始节次 */
+    @ApiModelProperty(value = "开始节次", position = 8)
+    private String strartPeriod;
+
+    /** 结束节次 */
+    @ApiModelProperty(value = "结束节次", position = 9)
+    private String endPeriod;
+
+    /** 单双周支持,1单,2双,3每周 */
+    @ApiModelProperty(value = "单双周支持,1单,2双,3每周", position = 10)
+    private String weekType;
+
+    /** 状态,0正常,1已取消,2临时 */
+    @ApiModelProperty(value = "状态,0正常,1已取消,2临时", position = 11)
+    private String status;
+
+}

+ 79 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenEditParam.java

@@ -0,0 +1,79 @@
+/*
+ * 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.param.courseopen;
+
+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/08/01 17:48
+ **/
+@Getter
+@Setter
+public class CourseOpenEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 老师id */
+    @ApiModelProperty(value = "老师id", position = 2)
+    private String teacherId;
+
+    /** 班级id */
+    @ApiModelProperty(value = "班级id", position = 3)
+    private String gradesId;
+
+    /** 课程id */
+    @ApiModelProperty(value = "课程id", position = 4)
+    private String courseId;
+
+    /** 学期id */
+    @ApiModelProperty(value = "学期id", position = 5)
+    private String semesterId;
+
+    /** 教室信息 */
+    @ApiModelProperty(value = "教室信息", position = 6)
+    private String room;
+
+    /** 上课时间 */
+    @ApiModelProperty(value = "上课时间", position = 7)
+    private String scheduleTime;
+
+    /** 开始节次 */
+    @ApiModelProperty(value = "开始节次", position = 8)
+    private String strartPeriod;
+
+    /** 结束节次 */
+    @ApiModelProperty(value = "结束节次", position = 9)
+    private String endPeriod;
+
+    /** 单双周支持,1单,2双,3每周 */
+    @ApiModelProperty(value = "单双周支持,1单,2双,3每周", position = 10)
+    private String weekType;
+
+    /** 状态,0正常,1已取消,2临时 */
+    @ApiModelProperty(value = "状态,0正常,1已取消,2临时", position = 11)
+    private String status;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/courseopen/CourseOpenIdParam.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.param.courseopen;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 课程开课表Id参数
+ *
+ * @author honorfire
+ * @date  2025/08/01 17:48
+ **/
+@Getter
+@Setter
+public class CourseOpenIdParam {
+
+    /** 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/param/courseopen/CourseOpenPageParam.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.param.courseopen;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 课程开课表查询参数
+ *
+ * @author honorfire
+ * @date  2025/08/01 17:48
+ **/
+@Getter
+@Setter
+public class CourseOpenPageParam {
+
+    /** 当前页 */
+    @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;
+
+}

+ 0 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/coursestudentprogress/CourseStudentProgressAddParam.java

@@ -45,9 +45,6 @@ public class CourseStudentProgressAddParam {
     @NotBlank(message = "当前学习进度不能为空")
     private String progress;
 
-    /** 批次记录(用来预留可能开始结束时间不能一起给我,需要存多次的情况) */
-    @ApiModelProperty(value = "批次记录", position = 10)
-    private String batch;
 
     /** 本次学习视频开始时间(应2025.7.30内部会议要求,将进度和记录存进同一个表) */
     @ApiModelProperty(value = "本次学习视频开始时间", position = 4)

+ 0 - 4
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/coursestudentprogress/CourseStudentProgressEditParam.java

@@ -48,10 +48,6 @@ public class CourseStudentProgressEditParam {
     @ApiModelProperty(value = "当前学习进度", position = 4)
     private String progress;
 
-    /** 批次记录(用来预留可能开始结束时间不能一起给我,需要存多次的情况) */
-    @ApiModelProperty(value = "批次记录", position = 10)
-    private String batch;
-
     /** 本次学习视频开始时间(应2025.7.30内部会议要求,将进度和记录存进同一个表) */
     @ApiModelProperty(value = "本次学习视频开始时间", position = 4)
     private String startTime;

+ 110 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseOpenService.java

@@ -0,0 +1,110 @@
+/*
+ * 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.CourseNotes;
+import vip.xiaonuo.disk.domain.CourseOpen;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenAddParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenEditParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenIdParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenPageParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 课程开课表Service接口
+ *
+ * @author honorfire
+ * @date  2025/08/01 17:48
+ **/
+public interface CourseOpenService extends IService<CourseOpen> {
+
+    /**
+     * 获取课程开课表分页
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    Page<CourseOpen> page(CourseOpenPageParam courseOpenPageParam);
+
+    /**
+     * 添加课程开课表
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    void add(CourseOpenAddParam courseOpenAddParam);
+
+
+    /**
+     * 课程开课-添加
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    CourseOpen addOne(CourseOpen courseOpen);
+
+    /**
+     * 编辑课程开课表
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    void edit(CourseOpenEditParam courseOpenEditParam);
+
+    /**
+     * 课程开课-编辑
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    CourseOpen editOne(CourseOpen courseOpen);
+
+    /**
+     * 删除课程开课表
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    void delete(List<CourseOpenIdParam> courseOpenIdParamList);
+
+    /**
+     * 获取课程开课表详情
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     */
+    CourseOpen detail(CourseOpenIdParam courseOpenIdParam);
+
+    /**
+     * 获取课程开课表详情
+     *
+     * @author honorfire
+     * @date  2025/08/01 17:48
+     **/
+    CourseOpen queryEntity(String id);
+
+    /**
+     *  课程开课-分页列表
+     */
+    Page<Map<String,Object>> queryList(Map param);
+
+    /**
+     *  课程开课-详情
+     */
+    Map<String,Object> queryInfo(Map param);
+
+}

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

@@ -0,0 +1,128 @@
+/*
+ * 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.modular.courseopen.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.CourseNotes;
+import vip.xiaonuo.disk.domain.CourseOpen;
+import vip.xiaonuo.disk.mapper.CourseOpenMapper;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenAddParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenEditParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenIdParam;
+import vip.xiaonuo.disk.param.courseopen.CourseOpenPageParam;
+import vip.xiaonuo.disk.service.CourseOpenService;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 课程开课表Service接口实现类
+ *
+ * @author honorfire
+ * @date  2025/08/01 17:48
+ **/
+@Service
+public class CourseOpenServiceImpl extends ServiceImpl<CourseOpenMapper, CourseOpen> implements CourseOpenService {
+
+    @Resource
+    private CourseOpenMapper courseOpenMapper;
+
+    @Override
+    public Page<CourseOpen> page(CourseOpenPageParam courseOpenPageParam) {
+        QueryWrapper<CourseOpen> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isAllNotEmpty(courseOpenPageParam.getSortField(), courseOpenPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(courseOpenPageParam.getSortOrder());
+            queryWrapper.orderBy(true, courseOpenPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(courseOpenPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(CourseOpen::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(CourseOpenAddParam courseOpenAddParam) {
+        CourseOpen courseOpen = BeanUtil.toBean(courseOpenAddParam, CourseOpen.class);
+        this.save(courseOpen);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CourseOpen addOne(CourseOpen courseOpen) {
+        this.save(courseOpen);
+        return courseOpen;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(CourseOpenEditParam courseOpenEditParam) {
+        CourseOpen courseOpen = this.queryEntity(courseOpenEditParam.getId());
+        BeanUtil.copyProperties(courseOpenEditParam, courseOpen);
+        this.updateById(courseOpen);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public CourseOpen editOne(CourseOpen courseOpen) {
+        this.updateById(courseOpen);
+        return courseOpen;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<CourseOpenIdParam> courseOpenIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(courseOpenIdParamList, CourseOpenIdParam::getId));
+    }
+
+    @Override
+    public CourseOpen detail(CourseOpenIdParam courseOpenIdParam) {
+        return this.queryEntity(courseOpenIdParam.getId());
+    }
+
+    @Override
+    public CourseOpen queryEntity(String id) {
+        CourseOpen courseOpen = this.getById(id);
+        if(ObjectUtil.isEmpty(courseOpen)) {
+            throw new CommonException("课程开课表不存在,id值为:{}", id);
+        }
+        return courseOpen;
+    }
+
+
+    @Override
+    public Page<Map<String,Object>> queryList(Map param)
+    {
+        return courseOpenMapper.queryList(param,CommonPageRequest.defaultPage());
+    }
+
+    @Override
+    public Map<String,Object> queryInfo(Map param)
+    {
+        return courseOpenMapper.queryInfo(param);
+    }
+
+}