From 09466ad4a790f6a6ddd7005b2922e2dfa900e1cf Mon Sep 17 00:00:00 2001 From: jhd <1684074631@qq.com> Date: Sat, 4 Jul 2026 10:02:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(file):=20=E5=9C=A8=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=95=8C=E9=9D=A2=E6=B7=BB=E5=8A=A0=E8=AF=84?= =?UTF-8?q?=E8=AE=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现文件评论的前端展示界面,包括评论列表、输入框和交互功能 - 添加文件评论的API接口,支持查询和新增评论操作 - 设计并实现后端服务层、控制器、数据访问层等相关组件 - 集成评论功能到现有的文件预览页面,支持展开/收起评论区 - 实现评论数据的实时加载和提交功能,优化用户体验 --- .../system/SysFileCommentController.java | 50 ++++++ .../com/klp/system/domain/SysFileComment.java | 40 +++++ .../system/domain/bo/SysFileCommentBo.java | 42 +++++ .../system/domain/vo/SysFileCommentVo.java | 40 +++++ .../system/mapper/SysFileCommentMapper.java | 15 ++ .../service/ISysFileCommentService.java | 25 +++ .../impl/SysFileCommentServiceImpl.java | 50 ++++++ .../mapper/system/SysFileCommentMapper.xml | 16 ++ klp-ui/src/api/system/fileComment.js | 18 +++ klp-ui/src/views/system/file/all.vue | 147 ++++++++++++++++++ 10 files changed, 443 insertions(+) create mode 100644 klp-admin/src/main/java/com/klp/web/controller/system/SysFileCommentController.java create mode 100644 klp-system/src/main/java/com/klp/system/domain/SysFileComment.java create mode 100644 klp-system/src/main/java/com/klp/system/domain/bo/SysFileCommentBo.java create mode 100644 klp-system/src/main/java/com/klp/system/domain/vo/SysFileCommentVo.java create mode 100644 klp-system/src/main/java/com/klp/system/mapper/SysFileCommentMapper.java create mode 100644 klp-system/src/main/java/com/klp/system/service/ISysFileCommentService.java create mode 100644 klp-system/src/main/java/com/klp/system/service/impl/SysFileCommentServiceImpl.java create mode 100644 klp-system/src/main/resources/mapper/system/SysFileCommentMapper.xml create mode 100644 klp-ui/src/api/system/fileComment.js diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysFileCommentController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysFileCommentController.java new file mode 100644 index 000000000..af5316ac4 --- /dev/null +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysFileCommentController.java @@ -0,0 +1,50 @@ +package com.klp.web.controller.system; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.enums.BusinessType; +import com.klp.system.domain.vo.SysFileCommentVo; +import com.klp.system.domain.bo.SysFileCommentBo; +import com.klp.system.service.ISysFileCommentService; + +/** + * 文件评论 + * + * @author klp + * @date 2026-07-04 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/file/comment") +public class SysFileCommentController extends BaseController { + + private final ISysFileCommentService iSysFileCommentService; + + /** + * 查询文件评论列表 + */ + @GetMapping("/list/{fileId}") + public R> list(@NotNull(message = "文件ID不能为空") @PathVariable Long fileId) { + return R.ok(iSysFileCommentService.queryListByFileId(fileId)); + } + + /** + * 新增文件评论 + */ + @Log(title = "文件评论", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysFileCommentBo bo) { + return toAjax(iSysFileCommentService.insertByBo(bo)); + } +} diff --git a/klp-system/src/main/java/com/klp/system/domain/SysFileComment.java b/klp-system/src/main/java/com/klp/system/domain/SysFileComment.java new file mode 100644 index 000000000..e24ca2a2a --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/domain/SysFileComment.java @@ -0,0 +1,40 @@ +package com.klp.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 文件评论对象 sys_file_comment + * + * @author klp + * @date 2026-07-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_file_comment") +public class SysFileComment extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "comment_id") + private Long commentId; + /** + * 关联文件ID + */ + private Long fileId; + /** + * 评论内容 + */ + private String content; + /** + * 所属部门 + */ + private String dept; + +} diff --git a/klp-system/src/main/java/com/klp/system/domain/bo/SysFileCommentBo.java b/klp-system/src/main/java/com/klp/system/domain/bo/SysFileCommentBo.java new file mode 100644 index 000000000..ee26751cb --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/domain/bo/SysFileCommentBo.java @@ -0,0 +1,42 @@ +package com.klp.system.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 文件评论业务对象 sys_file_comment + * + * @author klp + * @date 2026-07-04 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysFileCommentBo extends BaseEntity { + + /** + * 主键ID + */ + private Long commentId; + + /** + * 关联文件ID + */ + @NotNull(message = "文件ID不能为空") + private Long fileId; + + /** + * 评论内容 + */ + @NotBlank(message = "评论内容不能为空") + private String content; + + /** + * 所属部门 + */ + private String dept; + +} diff --git a/klp-system/src/main/java/com/klp/system/domain/vo/SysFileCommentVo.java b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileCommentVo.java new file mode 100644 index 000000000..aedf32de0 --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileCommentVo.java @@ -0,0 +1,40 @@ +package com.klp.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; + + +/** + * 文件评论视图对象 sys_file_comment + * + * @author klp + * @date 2026-07-04 + */ +@Data +@ExcelIgnoreUnannotated +public class SysFileCommentVo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private Long commentId; + + /** + * 关联文件ID + */ + private Long fileId; + + /** + * 评论内容 + */ + private String content; + + /** + * 所属部门 + */ + private String dept; + +} diff --git a/klp-system/src/main/java/com/klp/system/mapper/SysFileCommentMapper.java b/klp-system/src/main/java/com/klp/system/mapper/SysFileCommentMapper.java new file mode 100644 index 000000000..81e1e5552 --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/mapper/SysFileCommentMapper.java @@ -0,0 +1,15 @@ +package com.klp.system.mapper; + +import com.klp.system.domain.SysFileComment; +import com.klp.system.domain.vo.SysFileCommentVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 文件评论Mapper接口 + * + * @author klp + * @date 2026-07-04 + */ +public interface SysFileCommentMapper extends BaseMapperPlus { + +} diff --git a/klp-system/src/main/java/com/klp/system/service/ISysFileCommentService.java b/klp-system/src/main/java/com/klp/system/service/ISysFileCommentService.java new file mode 100644 index 000000000..5a14b997d --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/service/ISysFileCommentService.java @@ -0,0 +1,25 @@ +package com.klp.system.service; + +import com.klp.system.domain.vo.SysFileCommentVo; +import com.klp.system.domain.bo.SysFileCommentBo; + +import java.util.List; + +/** + * 文件评论Service接口 + * + * @author klp + * @date 2026-07-04 + */ +public interface ISysFileCommentService { + + /** + * 查询文件评论列表 + */ + List queryListByFileId(Long fileId); + + /** + * 新增文件评论 + */ + Boolean insertByBo(SysFileCommentBo bo); +} diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysFileCommentServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysFileCommentServiceImpl.java new file mode 100644 index 000000000..0eece3c44 --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysFileCommentServiceImpl.java @@ -0,0 +1,50 @@ +package com.klp.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.helper.LoginHelper; +import com.klp.system.domain.bo.SysFileCommentBo; +import com.klp.system.domain.vo.SysFileCommentVo; +import com.klp.system.domain.SysFileComment; +import com.klp.system.mapper.SysFileCommentMapper; +import com.klp.system.service.ISysFileCommentService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 文件评论Service业务层处理 + * + * @author klp + * @date 2026-07-04 + */ +@RequiredArgsConstructor +@Service +public class SysFileCommentServiceImpl implements ISysFileCommentService { + + private final SysFileCommentMapper baseMapper; + + /** + * 查询文件评论列表(按时间升序) + */ + @Override + public List queryListByFileId(Long fileId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SysFileComment::getFileId, fileId); + lqw.orderByAsc(SysFileComment::getCreateTime); + return baseMapper.selectVoList(lqw); + } + + /** + * 新增文件评论 + */ + @Override + public Boolean insertByBo(SysFileCommentBo bo) { + SysFileComment add = BeanUtil.toBean(bo, SysFileComment.class); + // 自动填充部门和评论人 + add.setDept(LoginHelper.getLoginUser().getDeptName()); + return baseMapper.insert(add) > 0; + } +} diff --git a/klp-system/src/main/resources/mapper/system/SysFileCommentMapper.xml b/klp-system/src/main/resources/mapper/system/SysFileCommentMapper.xml new file mode 100644 index 000000000..bdd9284ba --- /dev/null +++ b/klp-system/src/main/resources/mapper/system/SysFileCommentMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/klp-ui/src/api/system/fileComment.js b/klp-ui/src/api/system/fileComment.js new file mode 100644 index 000000000..bc33663be --- /dev/null +++ b/klp-ui/src/api/system/fileComment.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询文件评论列表 +export function listFileComment(fileId) { + return request({ + url: '/system/file/comment/list/' + fileId, + method: 'get' + }) +} + +// 新增文件评论 +export function addFileComment(data) { + return request({ + url: '/system/file/comment', + method: 'post', + data: data + }) +} diff --git a/klp-ui/src/views/system/file/all.vue b/klp-ui/src/views/system/file/all.vue index 6e66e7ed7..ffa39af76 100644 --- a/klp-ui/src/views/system/file/all.vue +++ b/klp-ui/src/views/system/file/all.vue @@ -192,6 +192,36 @@ {{ selectedFile.createBy }} {{ parseTime(selectedFile.createTime) }} +
+
+ 评论 ({{ comments.length }}) + {{ commentExpanded ? '收起' : '展开' }} +
+
+
加载中...
+
暂无评论
+
+
+
+ {{ item.dept }} + {{ item.createBy }} + {{ parseTime(item.createTime) }} +
+
{{ item.content }}
+
+
+
+ + 发送 +
+
+
@@ -298,6 +328,7 @@