Explorar el Código

学期管理功能功能接口

honorfire hace 7 meses
padre
commit
49f62f710b

+ 221 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/SemesterController.java

@@ -0,0 +1,221 @@
+/*
+ * 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.apache.commons.lang3.StringUtils;
+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.Semester;
+import vip.xiaonuo.disk.dto.semester.SemesterAddParam;
+import vip.xiaonuo.disk.dto.semester.SemesterEditParam;
+import vip.xiaonuo.disk.dto.semester.SemesterIdParam;
+import vip.xiaonuo.disk.dto.semester.SemesterPageParam;
+import vip.xiaonuo.disk.service.SemesterService;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 学期表控制器
+ *
+ * @author honorfire
+ * @date  2025/07/11 14:42
+ */
+@Api(tags = "学期表控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class SemesterController {
+
+    @Resource
+    private SemesterService semesterService;
+
+    /**
+     * 学期表-分页列表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("学期表-分页列表")
+    @SaCheckPermission("/disk/semester/page")
+    @GetMapping("/disk/semester/page")
+    public CommonResult<Page<Map<String,Object>>> page(SemesterPageParam semesterPageParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        param.put("name", req.getParameter("name"));
+        param.put("multiyear", req.getParameter("multiyear"));
+        param.put("quater", req.getParameter("quater"));
+
+        Page<Map<String,Object>> list=semesterService.queryList(param);
+        return CommonResult.data(list);
+    }
+
+    /**
+     * 学期表-下拉列表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("学期表-下拉列表")
+    @SaCheckPermission("/disk/semester/downList")
+    @GetMapping("/disk/semester/downList")
+    public CommonResult<List<Map<String,Object>>> downList(SemesterPageParam semesterPageParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        //是查年份下拉还是季度下拉,默认是0年度
+        String type="0";
+        if(StringUtils.isNotEmpty(req.getParameter("type")))type=req.getParameter("type");
+        param.put("type",type );
+
+        List<Map<String,Object>> list=semesterService.downList(param);
+        return CommonResult.data(list);
+    }
+
+    /**
+     * 添加学期表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加学期表")
+    @CommonLog("添加学期表")
+    @SaCheckPermission("/disk/semester/add")
+    @PostMapping("/disk/semester/add")
+    public CommonResult<String> add(@RequestBody @Valid SemesterAddParam semesterAddParam) {
+        Semester semester = BeanUtil.toBean(semesterAddParam, Semester.class);
+
+        try {
+            if (semester.getStartTime() != null) {
+                SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(sdt.parse(semester.getStartTime()));
+                int year = calendar.get(Calendar.YEAR);
+                // 从startTime字段中提取年份并存入multiyear字段
+                semester.setMultiyear(String.valueOf(year));
+                // 从startTime字段中提取月份判断并存入quarter字段
+                int month = calendar.get(Calendar.MONTH) + 1; // 月份是0-11,需要+1
+                String quarter;
+                if (month >= 1 && month <= 3) {
+                    quarter = "1";
+                } else if (month >= 4 && month <= 6) {
+                    quarter = "2";
+                } else if (month >= 7 && month <= 9) {
+                    quarter = "3";
+                } else {
+                    quarter = "4";
+                }
+                semester.setQuater(quarter);
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        semesterService.addOne(semester);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑学期表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑学期表")
+    @CommonLog("编辑学期表")
+    @SaCheckPermission("/disk/semester/edit")
+    @PostMapping("/disk/semester/edit")
+    public CommonResult<String> edit(@RequestBody @Valid SemesterEditParam semesterEditParam) {
+        Semester semester = BeanUtil.toBean(semesterEditParam, Semester.class);
+        try {
+            if (semester.getStartTime() != null) {
+                SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(sdt.parse(semester.getStartTime()));
+                int year = calendar.get(Calendar.YEAR);
+                // 从startTime字段中提取年份并存入multiyear字段
+                semester.setMultiyear(String.valueOf(year));
+                // 从startTime字段中提取月份判断并存入quarter字段
+                int month = calendar.get(Calendar.MONTH) + 1; // 月份是0-11,需要+1
+                String quarter;
+                if (month >= 1 && month <= 3) {
+                    quarter = "1";
+                } else if (month >= 4 && month <= 6) {
+                    quarter = "2";
+                } else if (month >= 7 && month <= 9) {
+                    quarter = "3";
+                } else {
+                    quarter = "4";
+                }
+                semester.setQuater(quarter);
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        semesterService.editOne(semester);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除学期表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除学期表")
+    @CommonLog("删除学期表")
+    @SaCheckPermission("/disk/semester/delete")
+    @PostMapping("/disk/semester/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<SemesterIdParam> semesterIdParamList) {
+        semesterService.delete(semesterIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取学期表详情
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取学期表详情")
+    @SaCheckPermission("/disk/semester/detail")
+    @GetMapping("/disk/semester/detail")
+    public CommonResult<Map<String,Object>> detail(@Valid SemesterIdParam semesterIdParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        param.put("id", req.getParameter("id"));
+        Map<String,Object> result=semesterService.queryInfo(param);
+        return CommonResult.data(result);
+    }
+
+}

+ 83 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/Semester.java

@@ -0,0 +1,83 @@
+/*
+ * 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/11 14:42
+ **/
+@Getter
+@Setter
+@TableName("SEMESTER")
+public class Semester {
+
+    /** ID */
+    @TableId
+    @ApiModelProperty(value = "ID", position = 1)
+    private String id;
+
+    /** 年度 */
+    @ApiModelProperty(value = "年度", position = 2)
+    private String multiyear;
+
+    /** 季度 */
+    @ApiModelProperty(value = "季度", position = 3)
+    private String quater;
+
+    /** 起始时间起 */
+    @ApiModelProperty(value = "起始时间起", position = 4)
+    private String startTime;
+
+    /** 起始时间止 */
+    @ApiModelProperty(value = "起始时间止", position = 5)
+    private String endTime;
+
+    /** DELETE_FLAG */
+    @ApiModelProperty(value = "DELETE_FLAG", position = 6)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** CREATE_TIME */
+    @ApiModelProperty(value = "CREATE_TIME", position = 7)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** CREATE_USER */
+    @ApiModelProperty(value = "CREATE_USER", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** UPDATE_TIME */
+    @ApiModelProperty(value = "UPDATE_TIME", position = 9)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** UPDATE_USER */
+    @ApiModelProperty(value = "UPDATE_USER", position = 10)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+
+    /** 学期名称 */
+    @ApiModelProperty(value = "学期名称", position = 11)
+    private String name;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/SemesterEnum.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/11 14:42
+ **/
+@Getter
+public enum SemesterEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    SemesterEnum(String value) {
+        this.value = value;
+    }
+}

+ 54 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/semester/SemesterAddParam.java

@@ -0,0 +1,54 @@
+/*
+ * 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.semester;
+
+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/11 14:42
+ **/
+@Getter
+@Setter
+public class SemesterAddParam {
+
+    /** 年度 */
+    @ApiModelProperty(value = "年度", position = 2)
+    private String multiyear;
+
+    /** 季度 */
+    @ApiModelProperty(value = "季度", position = 3)
+    private String quater;
+
+    /** 起始时间起 */
+    @ApiModelProperty(value = "起始时间起", position = 4)
+    private String startTime;
+
+    /** 起始时间止 */
+    @ApiModelProperty(value = "起始时间止", position = 5)
+    private String endTime;
+
+    /** 学期名称 */
+    @ApiModelProperty(value = "学期名称", position = 11)
+    private String name;
+
+}

+ 59 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/semester/SemesterEditParam.java

@@ -0,0 +1,59 @@
+/*
+ * 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.semester;
+
+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/11 14:42
+ **/
+@Getter
+@Setter
+public class SemesterEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 年度 */
+    @ApiModelProperty(value = "年度", position = 2)
+    private String multiyear;
+
+    /** 季度 */
+    @ApiModelProperty(value = "季度", position = 3)
+    private String quater;
+
+    /** 起始时间起 */
+    @ApiModelProperty(value = "起始时间起", position = 4)
+    private String startTime;
+
+    /** 起始时间止 */
+    @ApiModelProperty(value = "起始时间止", position = 5)
+    private String endTime;
+
+    /** 学期名称 */
+    @ApiModelProperty(value = "学期名称", position = 11)
+    private String name;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/semester/SemesterIdParam.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.semester;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 学期表Id参数
+ *
+ * @author honorfire
+ * @date  2025/07/11 14:42
+ **/
+@Getter
+@Setter
+public class SemesterIdParam {
+
+    /** 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/semester/SemesterPageParam.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.semester;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 学期表查询参数
+ *
+ * @author honorfire
+ * @date  2025/07/11 14:42
+ **/
+@Getter
+@Setter
+public class SemesterPageParam {
+
+    /** 当前页 */
+    @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;
+
+}

+ 50 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/SemesterMapper.java

@@ -0,0 +1,50 @@
+/*
+ * 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.Semester;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 学期表Mapper接口
+ *
+ * @author honorfire
+ * @date  2025/07/11 14:42
+ **/
+public interface SemesterMapper extends BaseMapper<Semester> {
+
+    /**
+     * 课程章节-分页列表
+     */
+    Page<Map<String,Object>> queryList(@Param("param") Map param, @Param("page") Page<Object> page);
+
+    /**
+     * 课程章节-全量列表
+     */
+    List<Map<String,Object>> queryAllList(Map param);
+
+    /**
+     * 学期表-下拉列表
+     */
+    List<Map<String,Object>> downList(Map param);
+
+    /**
+     * 课程章节-详情
+     */
+    Map<String,Object> queryInfo(Map param);
+}

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

@@ -0,0 +1,67 @@
+<?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.SemesterMapper">
+
+    <select id="queryList" resultType="java.util.Map">
+        SELECT
+            se.ID AS id,
+            IFNULL (se.NAME,'') AS name,
+            IFNULL (se.MULTIYEAR ,'') AS mulityear,
+            IFNULL (se.QUATER  ,'') AS quater,
+            IFNULL (se.START_TIME ,'') AS starTime
+        FROM SEMESTER se
+        WHERE se.DELETE_FLAG ='NOT_DELETE'
+        <if test="param.name !=null and param.name != ''">
+            and se.NAME like CONCAT('%', #{param.name}, '%')
+        </if>
+        <if test="param.multiyear !=null and param.multiyear != ''">
+            and se.MULTIYEAR =#{param.multiyear}
+        </if>
+        <if test="param.quater !=null and param.quater != ''">
+            and se.QUATER =#{param.quater}
+        </if>
+    </select>
+    <select id="queryAllList" resultType="java.util.Map">
+        SELECT
+            se.ID AS id,
+            IFNULL (se.NAME,'') AS name,
+            IFNULL (se.MULTIYEAR ,'') AS mulityear,
+            IFNULL (se.QUATER  ,'') AS quater,
+            IFNULL (se.START_TIME ,'') AS starTime
+        FROM SEMESTER se
+        WHERE se.DELETE_FLAG ='NOT_DELETE'
+        <if test="name!=null and name != ''">
+            and se.NAME like CONCAT('%', #{name}, '%')
+        </if>
+    </select>
+    <select id="queryInfo" resultType="java.util.Map">
+        SELECT
+            se.ID AS id,
+            IFNULL (se.NAME,'') AS name,
+            IFNULL (se.MULTIYEAR ,'') AS mulityear,
+            IFNULL (se.QUATER  ,'') AS quater,
+            IFNULL (se.START_TIME ,'') AS starTime
+        FROM SEMESTER se
+        WHERE 1=1
+        <if test="id!=null and id != ''">
+            and se.ID =#{id}
+        </if>
+    </select>
+    <select id="downList" resultType="java.util.Map">
+        SELECT
+            <if test=" param.type == 0">
+                IFNULL (se.MULTIYEAR ,'') AS mulityear
+            </if>
+            <if test=" param.type == 1">
+                IFNULL (se.QUATER  ,'') AS quater
+            </if>
+        FROM SEMESTER se
+        WHERE se.DELETE_FLAG ='NOT_DELETE'
+        <if test=" param.type == 0">
+            group by se.MULTIYEAR
+        </if>
+        <if test=" param.type == 1">
+            group by se.QUATER
+        </if>
+    </select>
+</mapper>

+ 126 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/SemesterService.java

@@ -0,0 +1,126 @@
+/*
+ * 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.ResourceFileFormat;
+import vip.xiaonuo.disk.domain.Semester;
+import vip.xiaonuo.disk.dto.semester.SemesterAddParam;
+import vip.xiaonuo.disk.dto.semester.SemesterEditParam;
+import vip.xiaonuo.disk.dto.semester.SemesterIdParam;
+import vip.xiaonuo.disk.dto.semester.SemesterPageParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 学期表Service接口
+ *
+ * @author honorfire
+ * @date  2025/07/11 14:42
+ **/
+public interface SemesterService extends IService<Semester> {
+
+    /**
+     * 获取学期表分页
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    Page<Semester> page(SemesterPageParam semesterPageParam);
+
+    /**
+     *  学期表-分页列表
+     */
+    Page<Map<String,Object>> queryList(Map param);
+
+    /**
+     * 学期表-全量列表
+     *
+     * @author pans
+     * @date  2025/06/28 12:01
+     */
+    List<Map<String,Object>> queryAllList(Map param);
+
+    /**
+     * 学期表-下拉列表
+     *
+     * @author pans
+     * @date  2025/06/28 12:01
+     */
+    List<Map<String,Object>> downList(Map param);
+
+    /**
+     * 添加学期表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    void add(SemesterAddParam semesterAddParam);
+
+    /**
+     * 学期表-添加
+     *
+     * @author honorfire
+     * @date  2025/06/20 14:58
+     */
+    Semester addOne(Semester semester);
+
+    /**
+     * 编辑学期表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    void edit(SemesterEditParam semesterEditParam);
+
+    /**
+     * 学期表-编辑
+     *
+     * @author honorfire
+     * @date  2025/06/20 14:58
+     */
+    Semester editOne(Semester semester);
+
+    /**
+     * 删除学期表
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    void delete(List<SemesterIdParam> semesterIdParamList);
+
+    /**
+     * 获取学期表详情
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     */
+    Semester detail(SemesterIdParam semesterIdParam);
+
+    /**
+     *  学期表-详情
+     */
+    Map<String,Object> queryInfo(Map param);
+
+    /**
+     * 获取学期表详情
+     *
+     * @author honorfire
+     * @date  2025/07/11 14:42
+     **/
+    Semester queryEntity(String id);
+
+}

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

@@ -0,0 +1,142 @@
+/*
+ * 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.Chapter;
+import vip.xiaonuo.disk.domain.Semester;
+import vip.xiaonuo.disk.dto.semester.SemesterAddParam;
+import vip.xiaonuo.disk.dto.semester.SemesterEditParam;
+import vip.xiaonuo.disk.dto.semester.SemesterIdParam;
+import vip.xiaonuo.disk.dto.semester.SemesterPageParam;
+import vip.xiaonuo.disk.mapper.SemesterMapper;
+import vip.xiaonuo.disk.service.SemesterService;
+
+import javax.annotation.Resource;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 学期表Service接口实现类
+ *
+ * @author honorfire
+ * @date  2025/07/11 14:42
+ **/
+@Service
+public class SemesterServiceImpl extends ServiceImpl<SemesterMapper, Semester> implements SemesterService {
+
+    @Resource
+    private SemesterMapper semesterMapper;
+
+    @Override
+    public Page<Semester> page(SemesterPageParam semesterPageParam) {
+        QueryWrapper<Semester> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isAllNotEmpty(semesterPageParam.getSortField(), semesterPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(semesterPageParam.getSortOrder());
+            queryWrapper.orderBy(true, semesterPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(semesterPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(Semester::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(SemesterAddParam semesterAddParam) {
+        Semester semester = BeanUtil.toBean(semesterAddParam, Semester.class);
+        this.save(semester);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Semester addOne(Semester semester) {
+        this.save(semester);
+        return semester;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(SemesterEditParam semesterEditParam) {
+        Semester semester = this.queryEntity(semesterEditParam.getId());
+        BeanUtil.copyProperties(semesterEditParam, semester);
+        this.updateById(semester);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Semester editOne(Semester semester) {
+        this.updateById(semester);
+        return semester;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<SemesterIdParam> semesterIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(semesterIdParamList, SemesterIdParam::getId));
+    }
+
+    @Override
+    public Semester detail(SemesterIdParam semesterIdParam) {
+        return this.queryEntity(semesterIdParam.getId());
+    }
+
+    @Override
+    public Semester queryEntity(String id) {
+        Semester semester = this.getById(id);
+        if(ObjectUtil.isEmpty(semester)) {
+            throw new CommonException("学期表不存在,id值为:{}", id);
+        }
+        return semester;
+    }
+
+    @Override
+    public Page<Map<String,Object>> queryList(Map param)
+    {
+        return semesterMapper.queryList(param,CommonPageRequest.defaultPage());
+    }
+
+
+    @Override
+    public List<Map<String,Object>> queryAllList(Map param)
+    {
+        return semesterMapper.queryAllList(param);
+    }
+
+    @Override
+    public List<Map<String,Object>> downList(Map param)
+    {
+        return semesterMapper.downList(param);
+    }
+
+    @Override
+    public Map<String,Object> queryInfo(Map param)
+    {
+        return semesterMapper.queryInfo(param);
+    }
+
+
+}