Browse Source

上传代码改查代码提交

pans 7 months ago
parent
commit
883ff6c932

+ 2 - 8
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseNotesController.java

@@ -12,7 +12,6 @@
  */
 package vip.xiaonuo.disk.controller;
 
-import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -27,6 +26,7 @@ import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.disk.domain.CourseNotes;
+import vip.xiaonuo.disk.domain.CourseNotesVo;
 import vip.xiaonuo.disk.param.CourseNotesAddParam;
 import vip.xiaonuo.disk.param.CourseNotesEditParam;
 import vip.xiaonuo.disk.param.CourseNotesIdParam;
@@ -60,9 +60,8 @@ public class CourseNotesController {
      */
     @ApiOperationSupport(order = 1)
     @ApiOperation("获取课程笔记表分页")
-    @SaCheckPermission("/disk/courseNotes/page")
     @GetMapping("/disk/courseNotes/page")
-    public CommonResult<Page<CourseNotes>> page(CourseNotesPageParam courseNotesPageParam) {
+    public CommonResult<Page<CourseNotesVo>> page(CourseNotesPageParam courseNotesPageParam) {
         return CommonResult.data(courseNotesService.page(courseNotesPageParam));
     }
 
@@ -75,7 +74,6 @@ public class CourseNotesController {
     @ApiOperationSupport(order = 2)
     @ApiOperation("添加课程笔记表")
     @CommonLog("添加课程笔记表")
-    @SaCheckPermission("/disk/courseNotes/add")
     @PostMapping("/disk/courseNotes/add")
     public CommonResult<String> add(@RequestBody @Valid CourseNotesAddParam courseNotesAddParam) {
         courseNotesService.add(courseNotesAddParam);
@@ -91,7 +89,6 @@ public class CourseNotesController {
     @ApiOperationSupport(order = 3)
     @ApiOperation("编辑课程笔记表")
     @CommonLog("编辑课程笔记表")
-    @SaCheckPermission("/disk/courseNotes/edit")
     @PostMapping("/disk/courseNotes/edit")
     public CommonResult<String> edit(@RequestBody @Valid CourseNotesEditParam courseNotesEditParam) {
         courseNotesService.edit(courseNotesEditParam);
@@ -107,7 +104,6 @@ public class CourseNotesController {
     @ApiOperationSupport(order = 4)
     @ApiOperation("删除课程笔记表")
     @CommonLog("删除课程笔记表")
-    @SaCheckPermission("/disk/courseNotes/delete")
     @PostMapping("/disk/courseNotes/delete")
     public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
                                                    CommonValidList<CourseNotesIdParam> courseNotesIdParamList) {
@@ -123,7 +119,6 @@ public class CourseNotesController {
      */
     @ApiOperationSupport(order = 5)
     @ApiOperation("获取课程笔记表详情")
-    @SaCheckPermission("/disk/courseNotes/detail")
     @GetMapping("/disk/courseNotes/detail")
     public CommonResult<CourseNotes> detail(@Valid CourseNotesIdParam courseNotesIdParam) {
         return CommonResult.data(courseNotesService.detail(courseNotesIdParam));
@@ -137,7 +132,6 @@ public class CourseNotesController {
      */
     @ApiOperationSupport(order = 5)
     @ApiOperation("获取课程笔记表详情")
-    @SaCheckPermission("/disk/courseNotes/getByChapterId")
     @GetMapping("/disk/courseNotes/getByChapterId")
     public CommonResult<CourseNotes> getByChapterId(@Valid CourseNotesAddParam courseNotesAddParam) {
         return CommonResult.data(courseNotesService.getByChapterId(courseNotesAddParam));

+ 4 - 4
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CourseNotes.java

@@ -16,7 +16,7 @@ import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
-import java.math.BigDecimal;
+
 import java.util.Date;
 
 /**
@@ -43,9 +43,6 @@ public class CourseNotes {
     @ApiModelProperty(value = "章节主键ID", position = 3)
     private String chapterId;
 
-    /** 笔记本ID */
-    @ApiModelProperty(value = "笔记本ID", position = 4)
-    private String notebookId;
 
     /** 笔记内容 */
     @ApiModelProperty(value = "笔记内容", position = 5)
@@ -76,4 +73,7 @@ public class CourseNotes {
     @ApiModelProperty(value = "修改用户", position = 10)
     @TableField(fill = FieldFill.UPDATE)
     private String updateUser;
+
+    @ApiModelProperty(value = "课程id", position = 10)
+    private String courseId;
 }

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

@@ -0,0 +1,75 @@
+package vip.xiaonuo.disk.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Getter
+@Setter
+public class CourseNotesVo {
+
+    /** 主键ID */
+    @TableId
+    @ApiModelProperty(value = "主键ID", position = 1)
+    private String noteId;
+
+    /** 用户ID */
+    @ApiModelProperty(value = "用户ID", position = 2)
+    private String userId;
+
+    @ApiModelProperty(value = "用户名", position = 2)
+    private String userName;
+
+    /** 章节主键ID */
+    @ApiModelProperty(value = "章节主键ID", position = 3)
+    private String chapterId;
+
+    @ApiModelProperty(value = "章节名称", position = 3)
+    private String chapterName;
+
+
+    /** 笔记内容 */
+    @ApiModelProperty(value = "笔记内容", position = 5)
+    private String noteContent;
+
+    /** 删除状态 */
+    @ApiModelProperty(value = "删除状态", position = 6)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 7)
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /** 创建用户 */
+    @ApiModelProperty(value = "创建用户", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 9)
+    @TableField(fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /** 修改用户 */
+    @ApiModelProperty(value = "修改用户", position = 10)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "课程id", position = 10)
+    private String courseId;
+
+    private String hourString;
+
+}

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

@@ -13,7 +13,11 @@
 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.CourseNotes;
+import vip.xiaonuo.disk.domain.CourseNotesVo;
+import vip.xiaonuo.disk.param.CourseNotesPageParam;
 
 /**
  * 课程笔记表Mapper接口
@@ -22,4 +26,5 @@ import vip.xiaonuo.disk.domain.CourseNotes;
  * @date  2025/07/01 18:56
  **/
 public interface CourseNotesMapper extends BaseMapper<CourseNotes> {
+    Page<CourseNotesVo> page(@Param("page") Page<Object> objectPage, @Param("courseNotesPageParam") CourseNotesPageParam courseNotesPageParam);
 }

+ 28 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseNotesMapper.xml

@@ -1,5 +1,32 @@
 <?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.CourseNotesMapper">
-
+  <select id="page" resultType="vip.xiaonuo.disk.domain.CourseNotesVo">
+      SELECT
+          a.NOTE_ID noteId,
+          a.USER_ID userId,
+          a.CHAPTER_ID chapterId,
+          a.NOTE_CONTENT noteContent,
+          a.DELETE_FLAG deleteFlag,
+          a.CREATE_TIME createTime,
+          a.CREATE_USER createUser,
+          a.UPDATE_TIME updateTime,
+          a.UPDATE_USER updateUser,
+          a.COURSE_ID courseId,
+          b.name userName,
+          c.NAME chapterName
+      FROM
+          COURSE_NOTES a
+      LEFT JOIN SYS_USER b ON a.USER_ID = b.id
+      LEFT JOIN COURSE_CHAPTER c ON a.CHAPTER_ID = c.id
+     <where>
+         <if test="courseNotesPageParam.courseId != null and courseNotesPageParam.courseId != ''">
+           a.COURSE_ID = #{courseNotesPageParam.courseId}
+         </if>
+         <if test="courseNotesPageParam.chapterId != null and courseNotesPageParam.chapterId != ''">
+            and a.CHAPTER_ID = #{courseNotesPageParam.chapterId}
+         </if>
+     </where>
+    order by a.UPDATE_TIME desc
+  </select>
 </mapper>

+ 5 - 13
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/CourseNotesAddParam.java

@@ -16,11 +16,6 @@ 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;
-
 /**
  * 课程笔记表添加参数
  *
@@ -31,20 +26,17 @@ import java.util.Date;
 @Setter
 public class CourseNotesAddParam {
 
-    /** 用户ID */
-    @ApiModelProperty(value = "用户ID", position = 2)
-    private String userId;
-
     /** 章节主键ID */
     @ApiModelProperty(value = "章节主键ID", position = 3)
     private String chapterId;
 
-    /** 笔记本ID */
-    @ApiModelProperty(value = "笔记本ID", position = 4)
-    private String notebookId;
-
     /** 笔记内容 */
     @ApiModelProperty(value = "笔记内容", position = 5)
     private String noteContent;
 
+    /** 课程主键id */
+    @ApiModelProperty(value = "课程主键id", position = 3)
+    private String courseId;
+
+
 }

+ 4 - 12
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/CourseNotesEditParam.java

@@ -17,9 +17,6 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
-import java.util.Date;
 
 /**
  * 课程笔记表编辑参数
@@ -36,20 +33,15 @@ public class CourseNotesEditParam {
     @NotBlank(message = "noteId不能为空")
     private String noteId;
 
-    /** 用户ID */
-    @ApiModelProperty(value = "用户ID", position = 2)
-    private String userId;
-
-    /** 章节主键ID */
     @ApiModelProperty(value = "章节主键ID", position = 3)
     private String chapterId;
 
-    /** 笔记本ID */
-    @ApiModelProperty(value = "笔记本ID", position = 4)
-    private String notebookId;
-
     /** 笔记内容 */
     @ApiModelProperty(value = "笔记内容", position = 5)
     private String noteContent;
 
+    /** 课程主键id */
+    @ApiModelProperty(value = "课程主键id", position = 3)
+    private String courseId;
+
 }

+ 6 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/CourseNotesPageParam.java

@@ -15,8 +15,6 @@ package vip.xiaonuo.disk.param;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
-import java.math.BigDecimal;
-import java.util.Date;
 
 /**
  * 课程笔记表查询参数
@@ -48,4 +46,10 @@ public class CourseNotesPageParam {
     @ApiModelProperty(value = "关键词")
     private String searchKey;
 
+    /** 章节主键ID */
+    @ApiModelProperty(value = "章节主键ID", position = 3)
+    private String chapterId;
+
+    @ApiModelProperty(value = "课程id", position = 3)
+    private String courseId;
 }

+ 2 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseNotesService.java

@@ -14,8 +14,8 @@ package vip.xiaonuo.disk.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.CourseNotes;
+import vip.xiaonuo.disk.domain.CourseNotesVo;
 import vip.xiaonuo.disk.param.CourseNotesAddParam;
 import vip.xiaonuo.disk.param.CourseNotesEditParam;
 import vip.xiaonuo.disk.param.CourseNotesIdParam;
@@ -37,7 +37,7 @@ public interface CourseNotesService extends IService<CourseNotes> {
      * @author 金吉龙
      * @date  2025/07/01 18:56
      */
-    Page<CourseNotes> page(CourseNotesPageParam courseNotesPageParam);
+    Page<CourseNotesVo> page(CourseNotesPageParam courseNotesPageParam);
 
     /**
      * 添加课程笔记表

+ 45 - 39
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseNotesServiceImpl.java

@@ -16,21 +16,17 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.util.IdUtil;
 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.auth.core.util.StpLoginUserUtil;
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
-import vip.xiaonuo.disk.domain.CourseInfo;
-import vip.xiaonuo.disk.domain.CourseNotebooks;
 import vip.xiaonuo.disk.domain.CourseNotes;
+import vip.xiaonuo.disk.domain.CourseNotesVo;
 import vip.xiaonuo.disk.mapper.CourseInfoMapper;
-import vip.xiaonuo.disk.mapper.CourseNotebooksMapper;
 import vip.xiaonuo.disk.mapper.CourseNotesMapper;
 import vip.xiaonuo.disk.param.CourseNotesAddParam;
 import vip.xiaonuo.disk.param.CourseNotesEditParam;
@@ -39,6 +35,12 @@ import vip.xiaonuo.disk.param.CourseNotesPageParam;
 import vip.xiaonuo.disk.service.CourseNotesService;
 
 import javax.annotation.Resource;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -57,51 +59,53 @@ public class CourseNotesServiceImpl extends ServiceImpl<CourseNotesMapper, Cours
     @Resource
     private CourseNotesMapper courseNotesMapper;
 
-    @Resource
-    private CourseNotebooksMapper courseNotebooksMapper;
 
 
     @Override
-    public Page<CourseNotes> page(CourseNotesPageParam courseNotesPageParam) {
-        QueryWrapper<CourseNotes> queryWrapper = new QueryWrapper<>();
-        if(ObjectUtil.isAllNotEmpty(courseNotesPageParam.getSortField(), courseNotesPageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(courseNotesPageParam.getSortOrder());
-            queryWrapper.orderBy(true, courseNotesPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(courseNotesPageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(CourseNotes::getNoteId);
-        }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    public Page<CourseNotesVo> page(CourseNotesPageParam courseNotesPageParam) {
+        Page<CourseNotesVo> page=  courseNotesMapper.page(CommonPageRequest.defaultPage(),courseNotesPageParam);
+        page.getRecords().stream().forEach(item -> {
+            LocalDateTime currentTime = LocalDateTime.now();
+            LocalDate today = currentTime.toLocalDate();
+            LocalDateTime passTime = item.getUpdateTime().toInstant()
+                    .atZone(ZoneId.systemDefault())
+                    .toLocalDateTime();
+            LocalDate pastDate = passTime.toLocalDate();
+
+            if (passTime.toLocalDate().isEqual(today)) {
+                Duration duration=Duration.between(passTime, currentTime);
+                if (duration.toMinutes() < 60) {
+                    item.setHourString(duration.toMinutes() + "分钟前");
+                }else{
+                    item.setHourString(duration.toHours() + "小时前");
+                }
+            }else{
+                // 判断是否是昨天或两天前
+                if (pastDate.isEqual(today.minus(1, ChronoUnit.DAYS))) {
+                    item.setHourString("昨天");
+                } else if (pastDate.isEqual(today.minus(2, ChronoUnit.DAYS))) {
+                    item.setHourString("两天前");
+                } else if (pastDate.isEqual(today.minus(3, ChronoUnit.DAYS))) {
+                    item.setHourString("三天前");
+                } else {
+                    item.setHourString("更早");
+                }
+            }
+        });
+        return page;
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(CourseNotesAddParam courseNotesAddParam) {
         CourseNotes courseNotes = BeanUtil.toBean(courseNotesAddParam, CourseNotes.class);
-        // 校验当前课程是否有笔记本
-        // 1.根据章节查询课程
-        CourseInfo courseInfo = courseInfoMapper.selectById(courseNotesAddParam.getChapterId());
-        if(ObjectUtil.isEmpty(courseInfo)) {
-            throw new CommonException("课程不存在,id值为:{}", courseNotesAddParam.getChapterId());
-        }
-        // 2.判断当前课程是否有笔记本
-        QueryWrapper<CourseNotebooks> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CourseNotebooks::getCourseId, courseInfo.getCourseId());
-        queryWrapper.lambda().eq(CourseNotebooks::getUserId, StpLoginUserUtil.getLoginUser().getId());
-        CourseNotebooks courseNotebooks = courseNotebooksMapper.selectOne(queryWrapper);
-        // 如果没有笔记本,则创建笔记本
-        if (courseNotebooks == null) {
-            CourseNotebooks newCourseNotebooks = new CourseNotebooks();
-            courseNotebooks.setUserId(StpLoginUserUtil.getLoginUser().getId()); // 用户id
-            String notebookId = IdUtil.fastSimpleUUID();
-            courseNotebooks.setNotebookId(notebookId); // 主键id
-            courseNotebooks.setCourseId(courseInfo.getCourseId()); // 课程id
-            courseNotebooksMapper.insert(newCourseNotebooks);
-            courseNotebooks.setNotebookId(notebookId);
-        }
         // 3.保存笔记信息
         courseNotes.setUserId(StpLoginUserUtil.getLoginUser().getId()); // 用户id
-        courseNotes.setNotebookId(courseNotebooks.getNotebookId()); // 笔记本id
+        courseNotes.setCreateTime(new Date());
+        courseNotes.setCreateUser(StpLoginUserUtil.getLoginUser().getId());
+        courseNotes.setUpdateTime(new Date());
+        courseNotes.setUpdateUser(StpLoginUserUtil.getLoginUser().getId());
+        courseNotes.setNoteId(IdUtil.getSnowflakeNextIdStr());
         this.save(courseNotes);
     }
 
@@ -110,6 +114,8 @@ public class CourseNotesServiceImpl extends ServiceImpl<CourseNotesMapper, Cours
     public void edit(CourseNotesEditParam courseNotesEditParam) {
         CourseNotes courseNotes = this.queryEntity(courseNotesEditParam.getNoteId());
         BeanUtil.copyProperties(courseNotesEditParam, courseNotes);
+        courseNotes.setUpdateTime(new Date());
+        courseNotes.setUpdateUser(StpLoginUserUtil.getLoginUser().getId());
         this.updateById(courseNotes);
     }