Răsfoiți Sursa

评论增删改查

pans 8 luni în urmă
părinte
comite
a657280529
12 a modificat fișierele cu 774 adăugiri și 0 ștergeri
  1. 135 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/UserCommentController.java
  2. 83 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/UserComment.java
  3. 34 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/enums/UserCommentEnum.java
  4. 36 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/UserCommentMapper.java
  5. 36 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/UserCommentMapper.xml
  6. 51 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentAddParam.java
  7. 57 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentEditParam.java
  8. 35 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentIdParam.java
  9. 49 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentPageParam.java
  10. 70 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/UserCommentService.java
  11. 110 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/UserCommentServiceImpl.java
  12. 78 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/comment/UserCommentVo.java

+ 135 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/UserCommentController.java

@@ -0,0 +1,135 @@
+/*
+ * 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 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.param.UserCommentAddParam;
+import vip.xiaonuo.disk.param.UserCommentEditParam;
+import vip.xiaonuo.disk.param.UserCommentIdParam;
+import vip.xiaonuo.disk.param.UserCommentPageParam;
+import vip.xiaonuo.disk.service.UserCommentService;
+import vip.xiaonuo.disk.vo.comment.UserCommentVo;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * user_comment控制器
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ */
+@Api(tags = "user_comment控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class UserCommentController {
+
+    @Resource
+    private UserCommentService userCommentService;
+
+    /**
+     * 获取user_comment分页
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取user_comment分页")
+    @GetMapping("/disk/comment/page")
+    public CommonResult<Page<UserCommentVo>> page(UserCommentPageParam userCommentPageParam) {
+        return CommonResult.data(userCommentService.page(userCommentPageParam));
+    }
+
+    /**
+     * 添加user_comment
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    @ApiOperationSupport(order = 2)
+    @ApiOperation("添加user_comment")
+    @CommonLog("添加user_comment")
+    @PostMapping("/disk/comment/add")
+    public CommonResult<String> add(@RequestBody @Valid UserCommentAddParam userCommentAddParam) {
+        userCommentService.add(userCommentAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑user_comment
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("编辑user_comment")
+    @CommonLog("编辑user_comment")
+    @PostMapping("/disk/comment/edit")
+    public CommonResult<String> edit(@RequestBody @Valid UserCommentEditParam userCommentEditParam) {
+        userCommentService.edit(userCommentEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除user_comment
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("删除user_comment")
+    @CommonLog("删除user_comment")
+    @PostMapping("/disk/comment/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   CommonValidList<UserCommentIdParam> userCommentIdParamList) {
+        userCommentService.delete(userCommentIdParamList);
+        return CommonResult.ok();
+    }
+
+
+
+    /**
+     * 点赞
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("点赞")
+    @CommonLog("点赞")
+    @GetMapping("/disk/comment/give")
+    public CommonResult<String> edit(@Valid @NotNull(message="评论id不能为空") Integer id) {
+        userCommentService.give(id);
+        return CommonResult.ok();
+    }
+
+
+
+
+
+}

+ 83 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/UserComment.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.util.Date;
+
+/**
+ * user_comment实体
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Getter
+@Setter
+@TableName("user_comment")
+public class UserComment {
+
+    /** 主键id */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id", position = 1)
+    private Integer id;
+
+    /** 父级id */
+    @ApiModelProperty(value = "父级id", position = 2)
+    private Integer pid;
+
+    /** 评论名称 */
+    @ApiModelProperty(value = "评论名称", position = 3)
+    private String commentName;
+
+    /** 用户id */
+    @ApiModelProperty(value = "用户id", position = 4)
+    private String userId;
+
+    /** 评论时间 */
+    @ApiModelProperty(value = "评论时间", position = 5)
+    private Date commentTime;
+
+    /** 删除1, 未删除 0 */
+    @ApiModelProperty(value = "删除1, 未删除 0", position = 6)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 点赞量 */
+    @ApiModelProperty(value = "点赞量", position = 7)
+    private Integer giveNum;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 9)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 10)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 修改人 */
+    @ApiModelProperty(value = "修改人", position = 11)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/enums/UserCommentEnum.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.enums;
+
+import lombok.Getter;
+
+/**
+ * user_comment枚举
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Getter
+public enum UserCommentEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    UserCommentEnum(String value) {
+        this.value = value;
+    }
+}

+ 36 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/UserCommentMapper.java

@@ -0,0 +1,36 @@
+/*
+ * 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.UserComment;
+import vip.xiaonuo.disk.vo.comment.UserCommentVo;
+
+import java.util.List;
+
+
+/**
+ * user_commentMapper接口
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+public interface UserCommentMapper extends BaseMapper<UserComment> {
+    //查询父级的评论
+    Page<UserCommentVo> selectCommentPid(@Param("page") Page<Object> objectPage,@Param("resourceId") String resourceId);
+
+
+    List<UserCommentVo> selectCommentNoPid(@Param("resourceId") String resourceId);
+}

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

@@ -0,0 +1,36 @@
+<?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.UserCommentMapper">
+    <select id="selectCommentPid" resultType="vip.xiaonuo.disk.vo.comment.UserCommentVo">
+        SELECT
+            a.id,
+            a.pid,
+            a.comment_name commentName,
+            a.user_id userId,
+            a.comment_time,
+            a.give_num giveNum,
+            b.name  userName
+        FROM
+            user_comment a LEFT JOIN  sys_user b ON a. user_id=b.id
+        WHERE
+            resource_id=#{resourceId}
+          and	pid IS NULL
+    </select>
+
+
+    <select id="selectCommentNoPid" resultType="vip.xiaonuo.disk.vo.comment.UserCommentVo">
+        SELECT
+            a.id,
+            a.pid,
+            a.comment_name commentName,
+            a.user_id userId,
+            a.comment_time,
+            a.give_num giveNum,
+            b.name  userName
+        FROM
+            user_comment a LEFT JOIN  sys_user b ON a. user_id=b.id
+        WHERE
+            resource_id=#{resourceId}
+          and	pid IS NOT NULL
+    </select>
+</mapper>

+ 51 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentAddParam.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;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * user_comment添加参数
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Getter
+@Setter
+public class UserCommentAddParam {
+
+    /** 父级id */
+    @ApiModelProperty(value = "父级id", position = 2)
+    private Integer pid;
+
+    /** 评论名称 */
+    @ApiModelProperty(value = "评论名称", position = 3)
+    private String commentName;
+
+    /** 用户id */
+    @ApiModelProperty(value = "用户id", position = 4)
+    private String userId;
+
+    /** 评论时间 */
+    @ApiModelProperty(value = "评论时间", position = 5)
+    private Date commentTime;
+
+    /** 点赞量 */
+    @ApiModelProperty(value = "点赞量", position = 7)
+    private Integer giveNum;
+
+}

+ 57 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentEditParam.java

@@ -0,0 +1,57 @@
+/*
+ * 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;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * user_comment编辑参数
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Getter
+@Setter
+public class UserCommentEditParam {
+
+    /** 主键id */
+    @ApiModelProperty(value = "主键id", required = true, position = 1)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    /** 父级id */
+    @ApiModelProperty(value = "父级id", position = 2)
+    private Integer pid;
+
+    /** 评论名称 */
+    @ApiModelProperty(value = "评论名称", position = 3)
+    private String commentName;
+
+    /** 用户id */
+    @ApiModelProperty(value = "用户id", position = 4)
+    private String userId;
+
+    /** 评论时间 */
+    @ApiModelProperty(value = "评论时间", position = 5)
+    private Date commentTime;
+
+    /** 点赞量 */
+    @ApiModelProperty(value = "点赞量", position = 7)
+    private Integer giveNum;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentIdParam.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;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * user_commentId参数
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Getter
+@Setter
+public class UserCommentIdParam {
+
+    /** 主键id */
+    @ApiModelProperty(value = "主键id", required = true)
+    @NotNull(message = "id不能为空")
+    private Integer id;
+}

+ 49 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/param/UserCommentPageParam.java

@@ -0,0 +1,49 @@
+/*
+ * 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;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * user_comment查询参数
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Getter
+@Setter
+public class UserCommentPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 资源id */
+    @ApiModelProperty(value = "资源id")
+    private String resourceId;
+
+}

+ 70 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/UserCommentService.java

@@ -0,0 +1,70 @@
+/*
+ * 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.UserComment;
+import vip.xiaonuo.disk.param.UserCommentAddParam;
+import vip.xiaonuo.disk.param.UserCommentEditParam;
+import vip.xiaonuo.disk.param.UserCommentIdParam;
+import vip.xiaonuo.disk.param.UserCommentPageParam;
+import vip.xiaonuo.disk.vo.comment.UserCommentVo;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * user_commentService接口
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+public interface UserCommentService extends IService<UserComment> {
+
+    /**
+     * 获取user_comment分页
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    Page<UserCommentVo> page(UserCommentPageParam userCommentPageParam);
+
+    /**
+     * 添加user_comment
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    void add(UserCommentAddParam userCommentAddParam);
+
+    /**
+     * 编辑user_comment
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    void edit(UserCommentEditParam userCommentEditParam);
+
+    /**
+     * 删除user_comment
+     *
+     * @author pans
+     * @date  2025/06/27 11:07
+     */
+    void delete(List<UserCommentIdParam> userCommentIdParamList);
+
+
+    void give(@Valid @NotNull(message="评论id不能为空") Integer id);
+}

+ 110 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/UserCommentServiceImpl.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.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.disk.domain.UserComment;
+import vip.xiaonuo.disk.mapper.UserCommentMapper;
+import vip.xiaonuo.disk.param.UserCommentAddParam;
+import vip.xiaonuo.disk.param.UserCommentEditParam;
+import vip.xiaonuo.disk.param.UserCommentIdParam;
+import vip.xiaonuo.disk.param.UserCommentPageParam;
+import vip.xiaonuo.disk.service.UserCommentService;
+import vip.xiaonuo.disk.vo.comment.UserCommentVo;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * user_commentService接口实现类
+ *
+ * @author pans
+ * @date  2025/06/27 11:07
+ **/
+@Service
+public class UserCommentServiceImpl extends ServiceImpl<UserCommentMapper, UserComment> implements UserCommentService {
+
+    @Autowired
+    private  UserCommentMapper  userCommentMapper;
+
+    @Override
+    public Page<UserCommentVo> page(UserCommentPageParam userCommentPageParam) {
+        Page<UserCommentVo> page=userCommentMapper.selectCommentPid(CommonPageRequest.defaultPage(),userCommentPageParam.getResourceId());
+        List<UserCommentVo> list=userCommentMapper.selectCommentNoPid(userCommentPageParam.getResourceId());
+        page.getRecords().stream().forEach(item -> {
+            List<UserCommentVo> child= list.stream().filter(itemchild-> itemchild.getPid().equals(item.getId())).collect(Collectors.toList());
+            item.setChild(child);
+            item.setChildSize(child.size());
+        });
+        return page;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(UserCommentAddParam userCommentAddParam) {
+        UserComment userComment = BeanUtil.toBean(userCommentAddParam, UserComment.class);
+        userComment.setUserId(StpLoginUserUtil.getLoginUser().getId());
+        userComment.setCommentTime(new Date());
+        this.save(userComment);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(UserCommentEditParam userCommentEditParam) {
+        UserComment userComment = this.queryEntity(userCommentEditParam.getId());
+        BeanUtil.copyProperties(userCommentEditParam, userComment);
+        userComment.setUserId(StpLoginUserUtil.getLoginUser().getId());
+        userComment.setCommentTime(new Date());
+        this.updateById(userComment);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<UserCommentIdParam> userCommentIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(userCommentIdParamList, UserCommentIdParam::getId));
+    }
+
+    @Override
+    public void give(Integer id) {
+        UserComment userComment=queryEntity(id);
+        if(ObjectUtil.isEmpty(userComment.getGiveNum())) {
+            userComment.setGiveNum(1);
+        }else{
+            userComment.setGiveNum(userComment.getGiveNum()+1);
+        }
+        this.updateById(userComment);
+    }
+
+
+    public UserComment queryEntity(Integer id) {
+        UserComment userComment = this.getById(id);
+        if(ObjectUtil.isEmpty(userComment)) {
+            throw new CommonException("userComment不存在,id值为:{}", id);
+        }
+        return userComment;
+    }
+
+
+}

+ 78 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/comment/UserCommentVo.java

@@ -0,0 +1,78 @@
+package vip.xiaonuo.disk.vo.comment;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+@Getter
+@Setter
+public class UserCommentVo {
+    /** 主键id */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id", position = 1)
+    private Integer id;
+
+    /** 父级id */
+    @ApiModelProperty(value = "父级id", position = 2)
+    private Integer pid;
+
+    /** 评论名称 */
+    @ApiModelProperty(value = "评论名称", position = 3)
+    private String commentName;
+
+    /** 用户id */
+    @ApiModelProperty(value = "用户id", position = 4)
+    private String userId;
+
+    /** 用户名称 */
+    @ApiModelProperty(value = "用户名称", position = 4)
+    private String userName;
+
+
+    /** 评论时间 */
+    @ApiModelProperty(value = "评论时间", position = 5)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date commentTime;
+
+    /** 删除1, 未删除 0 */
+    @ApiModelProperty(value = "删除1, 未删除 0", position = 6)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 点赞量 */
+    @ApiModelProperty(value = "点赞量", position = 7)
+    private Integer giveNum;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 8)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建人 */
+    @ApiModelProperty(value = "创建人", position = 9)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 10)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 修改人 */
+    @ApiModelProperty(value = "修改人", position = 11)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+
+
+    private Integer childSize;
+
+    /** 孩子评论 */
+    private List<UserCommentVo> child;
+
+}