diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/common/BaseProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/common/BaseProcessor.java new file mode 100644 index 0000000..d1e44e1 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/common/BaseProcessor.java @@ -0,0 +1,10 @@ +package cn.axzo.orgmanax.server.nodeuser.common; + +/** + * 流程处理者 + * @param + * @param + */ +public abstract class BaseProcessor { + public abstract R process(R r, T t); +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/NodeUserController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/NodeUserController.java new file mode 100644 index 0000000..b914fcc --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/NodeUserController.java @@ -0,0 +1,40 @@ +package cn.axzo.orgmanax.server.nodeuser.controller; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq; +import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp; +import cn.axzo.orgmanax.server.node.convert.NodeApiConvert; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; +import cn.axzo.orgmanax.server.nodeuser.service.IOrgNodeUserAppService; +import cn.axzo.orgmanax.server.nodeuser.temp.INodeUserGateway; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * 节点用户相关接口 + */ +@RestController +@RequestMapping("node-user") +@RequiredArgsConstructor +public class NodeUserController { + + private final IOrgNodeUserAppService nodeUserAppService; + + /** + * 新增节点用户 + * @param request + * @return + */ + @PostMapping("add") + public ApiResult addOrgNodeUser(@RequestBody @Valid AddOrgNodeUserRequestDTO request) { + return ApiResult.ok(nodeUserAppService.addOrgNodeUser(request)); + } + + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/dto/AddOrgNodeUserRequestDTO.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/dto/AddOrgNodeUserRequestDTO.java new file mode 100644 index 0000000..8b7bc4f --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/dto/AddOrgNodeUserRequestDTO.java @@ -0,0 +1,26 @@ +package cn.axzo.orgmanax.server.nodeuser.controller.dto; + +import lombok.Data; + +@Data +public class AddOrgNodeUserRequestDTO { + + + /** + * 业务类型 TEAM班组业务 GROUP小组业务 + */ + private String bizCode; + + /** + * 所属节点 + */ + private Long nodeId; + + /** + * 用户ID + */ + private Long personId; + + + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/dto/AddOrgNodeUserResponseDTO.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/dto/AddOrgNodeUserResponseDTO.java new file mode 100644 index 0000000..453579a --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/controller/dto/AddOrgNodeUserResponseDTO.java @@ -0,0 +1,23 @@ +package cn.axzo.orgmanax.server.nodeuser.controller.dto; + +import lombok.Data; + +@Data +public class AddOrgNodeUserResponseDTO { + + /** + * 所属节点 + */ + private Long nodeId; + + /** + * 用户ID + */ + private Long personId; + + /** + * 节点用户ID + */ + private Long orgNodeUserId; + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/IOrgNodeUserAppService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/IOrgNodeUserAppService.java new file mode 100644 index 0000000..d56aa51 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/IOrgNodeUserAppService.java @@ -0,0 +1,14 @@ +package cn.axzo.orgmanax.server.nodeuser.service; + +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; + +public interface IOrgNodeUserAppService { + + /** + * 新增节点用户 + * @param request + */ + AddOrgNodeUserResponseDTO addOrgNodeUser(AddOrgNodeUserRequestDTO request); + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/OrgNodeUserAppServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/OrgNodeUserAppServiceImpl.java new file mode 100644 index 0000000..b54bf3e --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/OrgNodeUserAppServiceImpl.java @@ -0,0 +1,52 @@ +package cn.axzo.orgmanax.server.nodeuser.service; + +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; +import cn.axzo.orgmanax.server.nodeuser.common.BaseProcessor; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; +import cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser.AddNodeUserBaseCheckProcessor; +import cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser.AddNodeUserProcessor; +import cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser.SendNodeUserAddedMsgProcessor; +import cn.axzo.orgmanax.server.nodeuser.temp.INodeUserGateway; +import cn.axzo.orgmanax.server.nodeuser.temp.IOrgNodeGateway; +import cn.axzo.orgmanax.server.nodeuser.temp.OrgNodeUser; +import cn.hutool.core.lang.Assert; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 节点用户相关接口 + */ +@RequiredArgsConstructor +@Service +public class OrgNodeUserAppServiceImpl implements IOrgNodeUserAppService { + + private INodeUserGateway nodeUserGateway; + private IOrgNodeGateway orgNodeUserGateway; + + @Override + public AddOrgNodeUserResponseDTO addOrgNodeUser(AddOrgNodeUserRequestDTO request) { + + // 1. 获取上下文 + OrganizationalNode orgNode = orgNodeUserGateway.getById(request.getNodeId()); + Assert.isTrue(orgNode != null, "部门节点不存在"); + OrgNodeUser orgNodeUser = nodeUserGateway.getByNodeIdAndUserId(request.getNodeId(), request.getPersonId()); + Assert.isTrue(orgNodeUser != null, "重新加入"); + + // 2. 流程编排处理 + List> processors = Arrays.asList( + // 基础校验 + new AddNodeUserBaseCheckProcessor(), + // 添加部门 + new AddNodeUserProcessor(), + // 发送消息 + new SendNodeUserAddedMsgProcessor() + ); + AddOrgNodeUserResponseDTO result = new AddOrgNodeUserResponseDTO(); + processors.forEach(p -> p.process(result, request)); + return result; + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/AddNodeUserBaseCheckProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/AddNodeUserBaseCheckProcessor.java new file mode 100644 index 0000000..d8a6a0c --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/AddNodeUserBaseCheckProcessor.java @@ -0,0 +1,11 @@ +package cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser; + +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; + +public class AddNodeUserBaseCheckProcessor extends BaseAddNodeUserProcessor { + @Override + public AddOrgNodeUserResponseDTO process(AddOrgNodeUserResponseDTO addOrgNodeUserResponseDTO, AddOrgNodeUserRequestDTO addOrgNodeUserRequestDTO) { + return null; + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/AddNodeUserProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/AddNodeUserProcessor.java new file mode 100644 index 0000000..c06d6e4 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/AddNodeUserProcessor.java @@ -0,0 +1,13 @@ +package cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser; + +import cn.axzo.orgmanax.server.nodeuser.common.BaseProcessor; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; + +public class AddNodeUserProcessor extends BaseProcessor { + + @Override + public AddOrgNodeUserResponseDTO process(AddOrgNodeUserResponseDTO result, AddOrgNodeUserRequestDTO addOrgNodeUserRequestDTO) { + return result; + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/BaseAddNodeUserProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/BaseAddNodeUserProcessor.java new file mode 100644 index 0000000..7bf75e1 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/BaseAddNodeUserProcessor.java @@ -0,0 +1,8 @@ +package cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser; + +import cn.axzo.orgmanax.server.nodeuser.common.BaseProcessor; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; + +public abstract class BaseAddNodeUserProcessor extends BaseProcessor { +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/SendNodeUserAddedMsgProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/SendNodeUserAddedMsgProcessor.java new file mode 100644 index 0000000..5cfcf58 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/service/processor/addnodeuser/SendNodeUserAddedMsgProcessor.java @@ -0,0 +1,14 @@ +package cn.axzo.orgmanax.server.nodeuser.service.processor.addnodeuser; + +import cn.axzo.orgmanax.server.nodeuser.common.BaseProcessor; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserRequestDTO; +import cn.axzo.orgmanax.server.nodeuser.controller.dto.AddOrgNodeUserResponseDTO; + +public class SendNodeUserAddedMsgProcessor extends BaseProcessor { + + + @Override + public AddOrgNodeUserResponseDTO process(AddOrgNodeUserResponseDTO result, AddOrgNodeUserRequestDTO addOrgNodeUserRequestDTO) { + return result; + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/INodeUserGateway.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/INodeUserGateway.java new file mode 100644 index 0000000..fdc62dd --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/INodeUserGateway.java @@ -0,0 +1,5 @@ +package cn.axzo.orgmanax.server.nodeuser.temp; + +public interface INodeUserGateway { + OrgNodeUser getByNodeIdAndUserId(Long nodeId, Long personId); +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/IOrgNodeGateway.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/IOrgNodeGateway.java new file mode 100644 index 0000000..aa7fcbc --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/IOrgNodeGateway.java @@ -0,0 +1,8 @@ +package cn.axzo.orgmanax.server.nodeuser.temp; + +import cn.axzo.orgmanax.infra.dao.node.DO.OrganizationalNode; + +public interface IOrgNodeGateway { + + OrganizationalNode getById(Long nodeId); +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/OrgNode.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/OrgNode.java new file mode 100644 index 0000000..54e701c --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/OrgNode.java @@ -0,0 +1,4 @@ +package cn.axzo.orgmanax.server.nodeuser.temp; + +public class OrgNode { +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/OrgNodeUser.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/OrgNodeUser.java new file mode 100644 index 0000000..a07aa0b --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/temp/OrgNodeUser.java @@ -0,0 +1,7 @@ +package cn.axzo.orgmanax.server.nodeuser.temp; + +import lombok.Data; + +@Data +public class OrgNodeUser { +}