From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/CommentController.java |  154 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 154 insertions(+), 0 deletions(-)

diff --git a/jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/CommentController.java b/jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/CommentController.java
new file mode 100644
index 0000000..acb8ff5
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/CommentController.java
@@ -0,0 +1,154 @@
+package jnpf.flowable.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import jnpf.base.ActionResult;
+import jnpf.base.UserInfo;
+import jnpf.base.controller.SuperController;
+import jnpf.base.vo.PageListVO;
+import jnpf.base.vo.PaginationVO;
+import jnpf.constant.MsgCode;
+import jnpf.exception.WorkFlowException;
+import jnpf.flowable.entity.CommentEntity;
+import jnpf.flowable.entity.TaskEntity;
+import jnpf.flowable.entity.TemplateNodeEntity;
+import jnpf.flowable.enums.NodeEnum;
+import jnpf.flowable.model.comment.CommentCrForm;
+import jnpf.flowable.model.comment.CommentListVO;
+import jnpf.flowable.model.comment.CommentPagination;
+import jnpf.flowable.model.templatenode.nodejson.NodeModel;
+import jnpf.flowable.service.CommentService;
+import jnpf.flowable.service.TaskService;
+import jnpf.flowable.service.TemplateNodeService;
+import jnpf.flowable.util.ServiceUtil;
+import jnpf.permission.entity.UserEntity;
+import jnpf.util.JsonUtil;
+import jnpf.util.StringUtil;
+import jnpf.util.UploaderUtil;
+import jnpf.util.UserProvider;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.StringJoiner;
+import java.util.stream.Collectors;
+
+/**
+ * 娴佺▼璇勮
+ *
+ * @author JNPF寮�鍙戝钩鍙扮粍
+ * @version V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙�
+ */
+@Tag(name = "娴佺▼璇勮", description = "Comment")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/comment")
+public class CommentController extends SuperController<CommentService, CommentEntity> {
+
+    private final ServiceUtil serviceUtil;
+    private final CommentService commentService;
+    private final TaskService taskService;
+    private final TemplateNodeService templateNodeService;
+
+    /**
+     * 鑾峰彇娴佺▼璇勮鍒楄〃
+     *
+     * @param pagination 鍒嗛〉妯″瀷
+     * @return
+     */
+    @Operation(summary = "鑾峰彇娴佺▼璇勮鍒楄〃")
+    @GetMapping
+    public ActionResult<PageListVO<CommentListVO>> list(CommentPagination pagination) {
+        List<CommentEntity> list = commentService.getlist(pagination);
+        List<String> replyId = list.stream().map(CommentEntity::getReplyId).filter(StringUtil::isNotEmpty).collect(Collectors.toList());
+        List<CommentEntity> replyList = commentService.getlist(replyId);
+        List<CommentListVO> listVO = JsonUtil.getJsonToList(list, CommentListVO.class);
+        List<String> userId = list.stream().map(CommentEntity::getCreatorUserId).collect(Collectors.toList());
+        userId.addAll(replyList.stream().map(CommentEntity::getCreatorUserId).collect(Collectors.toList()));
+        UserInfo userInfo = UserProvider.getUser();
+        List<UserEntity> userName = serviceUtil.getUserName(userId);
+        for (CommentListVO commentModel : listVO) {
+            UserEntity userEntity = userName.stream().filter(t -> t.getId().equals(commentModel.getCreatorUserId())).findFirst().orElse(null);
+            if (commentModel.getCreatorUserId().equals(userInfo.getUserId()) && !"1".equals(String.valueOf(commentModel.getDeleteShow()))) {
+                commentModel.setIsDel(1); //1-鍒犻櫎鎸夐挳鏄剧ず
+            } else if ("1".equals(String.valueOf(commentModel.getDeleteShow()))) {
+                commentModel.setIsDel(2); //1-鍒犻櫎鎸夐挳鏄剧ず
+                commentModel.setText("璇ヨ瘎璁哄凡琚垹闄�");
+            } else {
+                commentModel.setIsDel(0);
+            }
+            commentModel.setCreatorUser(userEntity != null ? userEntity.getRealName() + "/" + userEntity.getAccount() : "");
+            commentModel.setCreatorUserHeadIcon(userEntity != null ? UploaderUtil.uploaderImg(userEntity.getHeadIcon()) : commentModel.getCreatorUserHeadIcon());
+            List<CommentEntity> collect = replyList.stream().filter(t -> t.getId().equals(commentModel.getReplyId())).collect(Collectors.toList());
+            StringJoiner name = new StringJoiner(",");
+            StringJoiner text = new StringJoiner(",");
+            for (CommentEntity replyEntity : collect) {
+                if (null != replyEntity) {
+                    UserEntity user = userName.stream().filter(t -> t.getId().equals(replyEntity.getCreatorUserId())).findFirst().orElse(null);
+                    if (user != null) {
+                        name.add(user.getRealName() + "/" + user.getAccount());
+                    }
+                    String resText = ("1".equals(String.valueOf(replyEntity.getDeleteShow())) || "1".equals(String.valueOf(replyEntity.getDeleteMark()))) ? "璇ヨ瘎璁哄凡琚垹闄�" : replyEntity.getText();
+                    text.add(resText);
+                }
+            }
+            commentModel.setReplyText(text.toString());
+            commentModel.setReplyUser(name.toString());
+            CommentEntity entity = list.stream().filter(e -> ObjectUtil.equals(e.getId(), commentModel.getId())).findFirst().orElse(null);
+            if (null != entity) {
+                commentModel.setFile(entity.getFiles());
+            }
+        }
+        PaginationVO vo = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
+        return ActionResult.page(listVO, vo);
+    }
+
+    /**
+     * 鏂板缓娴佺▼璇勮
+     *
+     * @param commentForm 娴佺▼璇勮妯″瀷
+     * @return
+     */
+    @Operation(summary = "鏂板缓娴佺▼璇勮")
+    @PostMapping
+    @Parameter(name = "commentForm", description = "娴佺▼璇勮妯″瀷", required = true)
+    public ActionResult<Object> create(@RequestBody @Valid CommentCrForm commentForm) throws WorkFlowException {
+        CommentEntity entity = JsonUtil.getJsonToBean(commentForm, CommentEntity.class);
+        entity.setFiles(commentForm.getFile());
+        commentService.create(entity);
+        return ActionResult.success(MsgCode.SU002.get());
+    }
+
+    /**
+     * 鍒犻櫎娴佺▼璇勮
+     *
+     * @param id 涓婚敭
+     * @return
+     */
+    @Operation(summary = "鍒犻櫎娴佺▼璇勮")
+    @DeleteMapping("/{id}")
+    @Parameter(name = "id", description = "涓婚敭", required = true)
+    public ActionResult<Object> delete(@PathVariable("id") String id) {
+        CommentEntity entity = commentService.getInfo(id);
+        if (entity.getCreatorUserId().equals(UserProvider.getUser().getUserId())) {
+            boolean delComment = false;
+            TaskEntity task = taskService.getInfoSubmit(entity.getTaskId(), TaskEntity::getId, TaskEntity::getFlowId);
+            if (task != null) {
+                TemplateNodeEntity nodeEntity = templateNodeService.getList(task.getFlowId()).stream().filter(e -> StringUtils.equals(NodeEnum.GLOBAL.getType(), e.getNodeType())).findFirst().orElse(null);
+                if (nodeEntity != null) {
+                    NodeModel nodeModel = JsonUtil.getJsonToBean(nodeEntity.getNodeJson(), NodeModel.class);
+                    delComment = nodeModel.getHasCommentDeletedTips();
+                }
+            }
+            commentService.delete(entity, delComment);
+            return ActionResult.success(MsgCode.SU003.get());
+        }
+        return ActionResult.success(MsgCode.FA003.get());
+    }
+
+}

--
Gitblit v1.8.0