From 73ef6809ba86e87049aa20d822deefaaada6ebd4 Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Wed, 15 Apr 2026 16:00:25 +0800 Subject: [PATCH] =?UTF-8?q?add[project]:=20=E5=9B=A2=E9=98=9F=E6=88=90?= =?UTF-8?q?=E5=91=98=EF=BC=8C=E6=96=B0=E5=A2=9E=E3=80=81=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SimulationNodeController.java | 26 ++++++++ .../model/req/SpdmAddNodeMemberReq.java | 17 +++++ .../model/req/SpdmDeleteNodeMemberReq.java | 16 +++++ .../com/sdm/project/service/INodeService.java | 14 ++++ .../project/service/impl/NodeServiceImpl.java | 64 +++++++++++++++++++ 5 files changed, 137 insertions(+) create mode 100644 project/src/main/java/com/sdm/project/model/req/SpdmAddNodeMemberReq.java create mode 100644 project/src/main/java/com/sdm/project/model/req/SpdmDeleteNodeMemberReq.java diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java index 700191e1..8dbd8e21 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java @@ -466,5 +466,31 @@ public class SimulationNodeController implements ISimulationNodeFeignClient { return nodeService.togglePinProject(req.getNodeId(), req.getPinned()); } + /** + * 新增团队成员 + * + * @param req + * @return + */ + @SysLog("新增团队成员") + @PostMapping("/addNodeMember") + @Operation(summary = "新增团队成员", description = "新增团队成员") + public SdmResponse addNodeMember(@RequestBody SpdmAddNodeMemberReq req) { + return nodeService.addNodeMember(req); + } + + /** + * 删除团队成员 + * + * @param req + * @return + */ + @SysLog("删除团队成员") + @PostMapping("/deleteNodeMember") + @Operation(summary = "删除团队成员", description = "删除团队成员") + public SdmResponse deleteNodeMember(@RequestBody SpdmDeleteNodeMemberReq req) { + return nodeService.deleteNodeMember(req); + } + } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmAddNodeMemberReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmAddNodeMemberReq.java new file mode 100644 index 00000000..5314515c --- /dev/null +++ b/project/src/main/java/com/sdm/project/model/req/SpdmAddNodeMemberReq.java @@ -0,0 +1,17 @@ +package com.sdm.project.model.req; + +import com.sdm.project.model.bo.TaskNodeTag; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Data +public class SpdmAddNodeMemberReq { + + String projectId; + + List addNodeMemberIdList; + +} diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmDeleteNodeMemberReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmDeleteNodeMemberReq.java new file mode 100644 index 00000000..dad65306 --- /dev/null +++ b/project/src/main/java/com/sdm/project/model/req/SpdmDeleteNodeMemberReq.java @@ -0,0 +1,16 @@ +package com.sdm.project.model.req; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Data +public class SpdmDeleteNodeMemberReq { + + String projectId; + + List deleteNodeMemberIdList; + +} diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java index 4db9b797..e25ebc0a 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -117,4 +117,18 @@ public interface INodeService extends IService { SdmResponse exportProjectByScript(HttpServletResponse httpservletResponse, ProjectExportExcelFormat projectExportExcelFormat); + /** + * 新增团队成员 + * @param req + * @return + */ + SdmResponse addNodeMember(SpdmAddNodeMemberReq req); + + /** + * 删除团队成员 + * @param req + * @return + */ + SdmResponse deleteNodeMember(SpdmDeleteNodeMemberReq req); + } diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index 52f52c84..05a5a2d9 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -5223,4 +5223,68 @@ public class NodeServiceImpl extends ServiceImpl addNodeMemberIdList = req.getAddNodeMemberIdList(); + if (StringUtils.isBlank(projectId) || CollectionUtils.isEmpty(addNodeMemberIdList)) { + return SdmResponse.failed("参数不能为空"); + } + Long userId = ThreadLocalContext.getUserId(); + String currentDateTime = DateUtils.getCurrentDateTime(); + List nodeMemberList = new ArrayList<>(); + for (Long addNodeMemberId : addNodeMemberIdList) { + SimulationNodeMember simulationNodeMember = new SimulationNodeMember(); + simulationNodeMember.setNodeId(projectId); + simulationNodeMember.setUserId(addNodeMemberId); + simulationNodeMember.setCreator(userId); + simulationNodeMember.setCreateTime(currentDateTime); + simulationNodeMember.setType(NodeMemberTypeEnum.PARTICIPANT.getCode()); + nodeMemberList.add(simulationNodeMember); + } + simulationNodeMemberService.saveBatch(nodeMemberList); + // 批量设置权限 + List filePermissions = new ArrayList<>(); + BatchUpdatePermissionReq.FilePermissionItem memberItem = new BatchUpdatePermissionReq.FilePermissionItem(); + memberItem.setUuid(projectId); + Map memberPermissions = new HashMap<>(); + for (Long addNodeMemberId : addNodeMemberIdList) { + memberPermissions.put(addNodeMemberId, FilePermissionEnum. BASE.getValue()); + memberItem.setUserPermissions(memberPermissions); + filePermissions.add(memberItem); + } + // 批量更新权限 + BatchUpdatePermissionReq batchReq = new BatchUpdatePermissionReq(); + batchReq.setFilePermissions(filePermissions); + CompletableFuture.runAsync(() -> { + log.info("新增团队成员,批量更新权限,参数为:{}", batchReq); + SdmResponse response = dataFeignClient.batchUpdatePermission(batchReq); + log.info("新增团队成员,批量更新权限结果:{}", response); + if (!response.isSuccess()) { + log.error("新增团队成员,批量更新权限失败:{}", response.getMessage()); + } + }); + return SdmResponse.success(); + } + + @Override + public SdmResponse deleteNodeMember(SpdmDeleteNodeMemberReq req) { + String projectId = req.getProjectId(); + List deleteNodeMemberIdList = req.getDeleteNodeMemberIdList(); + if (StringUtils.isBlank(projectId) || CollectionUtils.isEmpty(deleteNodeMemberIdList)) { + return SdmResponse.failed("参数不能为空"); + } + simulationNodeMemberService.remove( + new LambdaQueryWrapper().eq(SimulationNodeMember::getNodeId, projectId) + .in(SimulationNodeMember::getUserId,deleteNodeMemberIdList) + .eq(SimulationNodeMember::getType,NodeMemberTypeEnum.PARTICIPANT.getCode())); + + for (Long deleteNodeMemberId : deleteNodeMemberIdList) { + deletePermission(deleteNodeMemberId, projectId); + } + return SdmResponse.success(); + } + } \ No newline at end of file