From d41cae21b2c88b5d41590ef247a85c1f365321b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=95=8F?= Date: Mon, 16 Dec 2024 17:51:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3282):=20profileGateway=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=E5=AF=B9=E6=8E=A5profile=E7=9A=84=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后续需要对接通用接口。目前只是为了方便测试,对接了用到的参数。 --- .../client/profile/PersonProfileGateway.java | 75 +++++++++++++++++++ .../dto/model}/IdentityPair.java | 2 +- .../client/pudge/PersonProfileGateway.java | 67 ----------------- .../client/pudge/dto/IdentityProfile.java | 20 ----- .../infra/client/pudge/dto/PersonProfile.java | 20 ----- .../client/pudge/enums/IdentityType.java | 32 -------- .../repository/OrgUserQueryRepository.java | 4 +- .../impl/OrgUserQueryRepositoryImpl.java | 8 +- .../impl/NodeUserFoundationServiceImpl.java | 18 ++--- .../unit/service/dto/CreateUnitReq.java | 2 + .../unit/service/impl/UnitServiceImpl.java | 5 ++ 11 files changed, 98 insertions(+), 155 deletions(-) create mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/PersonProfileGateway.java rename orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/{pudge/dto => profile/dto/model}/IdentityPair.java (83%) delete mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/PersonProfileGateway.java delete mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityProfile.java delete mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/PersonProfile.java delete mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/enums/IdentityType.java diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/PersonProfileGateway.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/PersonProfileGateway.java new file mode 100644 index 0000000..1ffd2f6 --- /dev/null +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/PersonProfileGateway.java @@ -0,0 +1,75 @@ +package cn.axzo.orgmanax.infra.client.profile; + +import cn.axzo.orgmanax.infra.client.profile.dto.ProfileIdentityProfilePostReq; +import cn.axzo.orgmanax.infra.client.profile.dto.ProfileIdentityResp; +import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp; +import cn.axzo.orgmanax.infra.client.profile.dto.model.IdentityPair; +import com.google.common.collect.ImmutableList; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Collection; +import java.util.List; + +/** + * //TODO liuyang + * 封装对person的请求 + */ +@Component +@Slf4j +@RequiredArgsConstructor +public class PersonProfileGateway { + + private final ProfileUserProfileClient profileUserProfileClient; + + public ProfilePersonResp getPersonProfile(Long personId) { + return listPersonProfiles(ListPersonProfileReq.builder().id(personId).build()) + .stream().findFirst().orElse(null); + } + + public List listPersonProfiles(ListPersonProfileReq req) { + // TODO 需要对接新的profile收口查询接口 + return profileUserProfileClient.getPersonProfiles(ImmutableList.of(req.getId())); + } + + public ProfileIdentityResp getIdentityProfile(Long personId, Integer identityType) { + return listIdentityProfiles(ListIdentityProfileReq.builder() + .personId(personId) + .identityType(identityType) + .build()).stream().findFirst().orElse(null); + } + + public List listIdentityProfiles(ListIdentityProfileReq req) { + // TODO 需要对接新的profile收口查询接口 + ProfileIdentityProfilePostReq r = new ProfileIdentityProfilePostReq(); + r.setIdentityIds(ImmutableList.of(req.getIdentityId())); + r.setIdentityType(req.getIdentityType()); + return profileUserProfileClient.postProfileByIdentityIdsAndIdentityTypeExcludeIsDelete(r); + } + + @NoArgsConstructor + @AllArgsConstructor + @Data + @SuperBuilder + public static class ListPersonProfileReq { + private Long id; + private Collection ids; + } + + @NoArgsConstructor + @AllArgsConstructor + @Data + @SuperBuilder + public static class ListIdentityProfileReq { + private Long personId; + private Long identityId; + private Integer identityType; + private Collection identityPairs; + } + +} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityPair.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/dto/model/IdentityPair.java similarity index 83% rename from orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityPair.java rename to orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/dto/model/IdentityPair.java index 35ec101..39347b5 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityPair.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/profile/dto/model/IdentityPair.java @@ -1,4 +1,4 @@ -package cn.axzo.orgmanax.infra.client.pudge.dto; +package cn.axzo.orgmanax.infra.client.profile.dto.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/PersonProfileGateway.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/PersonProfileGateway.java deleted file mode 100644 index c595023..0000000 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/PersonProfileGateway.java +++ /dev/null @@ -1,67 +0,0 @@ -package cn.axzo.orgmanax.infra.client.pudge; - -import cn.axzo.orgmanax.infra.client.pudge.dto.IdentityPair; -import cn.axzo.orgmanax.infra.client.pudge.dto.IdentityProfile; -import cn.axzo.orgmanax.infra.client.pudge.dto.PersonProfile; -import com.google.common.collect.ImmutableList; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Set; - -/** - * //TODO liuyang - * 封装对person的请求 - */ -@Component -@Slf4j -public class PersonProfileGateway { - - public PersonProfile getPersonProfile(Long personId) { - return listPersonProfiles(ListPersonProfileReq.builder().id(personId).build()) - .stream().findFirst().orElse(null); - } - - public List listPersonProfiles(ListPersonProfileReq req) { - // TODO - return ImmutableList.of(); - } - - public IdentityProfile getIdentityProfile(Long personId, Integer identityType) { - return listIdentityProfiles(ListIdentityProfileReq.builder() - .personId(personId) - .identityType(identityType) - .build()).stream().findFirst().orElse(null); - } - - public List listIdentityProfiles(ListIdentityProfileReq req) { - // TODO - return ImmutableList.of(); - } - - @NoArgsConstructor - @AllArgsConstructor - @Data - @SuperBuilder - public static class ListPersonProfileReq { - private Long id; - private Set ids; - } - - @NoArgsConstructor - @AllArgsConstructor - @Data - @SuperBuilder - public static class ListIdentityProfileReq { - private Long personId; - private Long identityId; - private Integer identityType; - private Set identityPairs; - } - -} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityProfile.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityProfile.java deleted file mode 100644 index 989d6f6..0000000 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/IdentityProfile.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.axzo.orgmanax.infra.client.pudge.dto; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * XXX:尽量复用 client 对这个类的定义。 - */ - -@NoArgsConstructor -@AllArgsConstructor -@Data -@SuperBuilder -public class IdentityProfile { - private Long personId; - private Long identityId; - private Long identityType; -} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/PersonProfile.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/PersonProfile.java deleted file mode 100644 index c3460e3..0000000 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/dto/PersonProfile.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.axzo.orgmanax.infra.client.pudge.dto; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * XXX:尽量复用 client 对这个类的定义。 - */ -@NoArgsConstructor -@AllArgsConstructor -@Data -@SuperBuilder -public class PersonProfile { - private Long id; - private String phone; - private String realName; - private String idNumber; -} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/enums/IdentityType.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/enums/IdentityType.java deleted file mode 100644 index 77464d4..0000000 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/pudge/enums/IdentityType.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.axzo.orgmanax.infra.client.pudge.enums; - - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@AllArgsConstructor(access = AccessLevel.PRIVATE) -@Getter -public enum IdentityType { - NOT_SUPPORT(0, "NOT_SUPPORT", "无效类型"), - WORKER(1, "WORKER", "工人"), - WORKER_LEADER(2, "WORKER_LEADER", "班组长"), - PRACTITIONER(3, "PRACTITIONER", "从业人员"), - REGULATOR(4, "REGULATOR", "监管人员"), - OPERATOR(5, "OPERATOR", "运营人员"); - - private final Integer code; - private final String message; - private final String desc; - - public static IdentityType getIdentityType(Integer code) { - IdentityType[] values = values(); - for (IdentityType item : values) { - if (item.getCode().equals(code)) { - return item; - } - } - return null; - } -} - diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/OrgUserQueryRepository.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/OrgUserQueryRepository.java index 10df6c5..92bebac 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/OrgUserQueryRepository.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/OrgUserQueryRepository.java @@ -2,7 +2,7 @@ package cn.axzo.orgmanax.infra.dao.orguser.repository; import cn.axzo.foundation.page.PageResp; import cn.axzo.orgmanax.api.orguser.req.ListOrgUserReq; -import cn.axzo.orgmanax.infra.client.pudge.dto.PersonProfile; +import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp; import cn.axzo.orgmanax.infra.dao.orguser.entity.OrgUser; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; @@ -61,7 +61,7 @@ public interface OrgUserQueryRepository { * * @see ListOrgUserReq#getNeedPersonProfile() */ - private PersonProfile personProfile; + private ProfilePersonResp personProfile; } } diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java index 7980958..13fdd07 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/orguser/repository/impl/OrgUserQueryRepositoryImpl.java @@ -4,8 +4,8 @@ import cn.axzo.foundation.dao.support.converter.PageConverter; import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper; import cn.axzo.foundation.page.PageResp; import cn.axzo.orgmanax.api.orguser.req.ListOrgUserReq; -import cn.axzo.orgmanax.infra.client.pudge.PersonProfileGateway; -import cn.axzo.orgmanax.infra.client.pudge.dto.PersonProfile; +import cn.axzo.orgmanax.infra.client.profile.PersonProfileGateway; +import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp; import cn.axzo.orgmanax.infra.dao.orguser.dao.OrgUserDao; import cn.axzo.orgmanax.infra.dao.orguser.entity.OrgUser; import cn.axzo.orgmanax.infra.dao.orguser.repository.OrgUserQueryRepository; @@ -57,9 +57,9 @@ public class OrgUserQueryRepositoryImpl implements OrgUserQueryRepository { return; } Set personIds = records.stream().map(OrgUser::getPersonId).collect(Collectors.toSet()); - Map personsById = profileGateway.listPersonProfiles(PersonProfileGateway.ListPersonProfileReq.builder() + Map personsById = profileGateway.listPersonProfiles(PersonProfileGateway.ListPersonProfileReq.builder() .ids(personIds) - .build()).stream().collect(Collectors.toMap(PersonProfile::getId, Function.identity())); + .build()).stream().collect(Collectors.toMap(ProfilePersonResp::getId, Function.identity())); records.forEach(r -> r.setPersonProfile(personsById.get(r.getPersonId()))); } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java index 9bbad3a..1d346f9 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/nodeuser/foundation/impl/NodeUserFoundationServiceImpl.java @@ -4,9 +4,9 @@ import cn.axzo.foundation.event.support.Event; import cn.axzo.foundation.event.support.producer.EventProducer; import cn.axzo.foundation.exception.Axssert; import cn.axzo.orgmanax.common.config.BizResultCode; -import cn.axzo.orgmanax.infra.client.pudge.PersonProfileGateway; -import cn.axzo.orgmanax.infra.client.pudge.dto.IdentityProfile; -import cn.axzo.orgmanax.infra.client.pudge.dto.PersonProfile; +import cn.axzo.orgmanax.infra.client.profile.PersonProfileGateway; +import cn.axzo.orgmanax.infra.client.profile.dto.ProfileIdentityResp; +import cn.axzo.orgmanax.infra.client.profile.dto.ProfilePersonResp; import cn.axzo.orgmanax.infra.dao.cooperateship.repository.CooperateShipQueryRepository; import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode; import cn.axzo.orgmanax.infra.dao.node.repository.NodeQueryRepository; @@ -57,17 +57,17 @@ public class NodeUserFoundationServiceImpl implements NodeUserFoundationService .orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门不存在{}", param.getNodeId())); // 人是否存在 - PersonProfile personProfile = profileGateway.getPersonProfile(param.getPersonId()); + ProfilePersonResp personProfile = profileGateway.getPersonProfile(param.getPersonId()); Axssert.checkNonNull(personProfile, "用户不存在"); // 人员身份是否存在 - IdentityProfile identityProfile = profileGateway.getIdentityProfile(param.getPersonId(), param.getIdentityType()); + ProfileIdentityResp identityProfile = profileGateway.getIdentityProfile(param.getPersonId(), param.getIdentityType()); Axssert.checkNonNull(personProfile, "用户身份不存在"); // 转换为领域对象 // 持久化 -> mapstruct? OrganizationalNodeUser nodeUser = param.toEntity(); // assemble person info - nodeUser.setIdentityId(identityProfile.getIdentityId()); + nodeUser.setIdentityId(identityProfile.getId()); nodeUser.setPhone(personProfile.getPhone()); nodeUser.setRealName(personProfile.getRealName()); nodeUser.setIdNumber(personProfile.getIdNumber()); @@ -110,16 +110,16 @@ public class NodeUserFoundationServiceImpl implements NodeUserFoundationService NodeUserUpsertRepository.UpdateReq updateReq = BeanUtil.toBean(req, NodeUserUpsertRepository.UpdateReq.class); // 刷新用户基本资料 if (BooleanUtil.isTrue(req.getRefreshPersonProfile())) { - PersonProfile personProfile = profileGateway.getPersonProfile(dbNodeUser.getPersonId()); + ProfilePersonResp personProfile = profileGateway.getPersonProfile(dbNodeUser.getPersonId()); Axssert.checkNonNull(personProfile, "用户不存在"); // 人员身份是否存在 - IdentityProfile identityProfile = profileGateway.getIdentityProfile(dbNodeUser.getPersonId(), dbNodeUser.getIdentityType()); + ProfileIdentityResp identityProfile = profileGateway.getIdentityProfile(dbNodeUser.getPersonId(), dbNodeUser.getIdentityType()); Axssert.checkNonNull(personProfile, "用户身份不存在"); // 转换为领域对象 // 持久化 -> mapstruct? // assemble person info - updateReq.setIdentityId(identityProfile.getIdentityId()); + updateReq.setIdentityId(identityProfile.getId()); updateReq.setPhone(personProfile.getPhone()); updateReq.setRealName(personProfile.getRealName()); updateReq.setIdNumber(personProfile.getIdNumber()); diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/dto/CreateUnitReq.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/dto/CreateUnitReq.java index 437a961..a70557b 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/dto/CreateUnitReq.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/dto/CreateUnitReq.java @@ -191,4 +191,6 @@ public class CreateUnitReq { */ private Long operatorId; + private Boolean createWorkspace; + } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/UnitServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/UnitServiceImpl.java index 993653c..3aa2fec 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/UnitServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/UnitServiceImpl.java @@ -17,6 +17,7 @@ import cn.axzo.orgmanax.server.unit.service.dto.CreateUnitResp; import cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitReq; import cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitResp; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.BooleanUtil; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -54,6 +55,10 @@ public class UnitServiceImpl implements UnitService { nodeCreate.setExtra(null); nodeCreate.setProfile(null); + if (BooleanUtil.isTrue(req.getCreateWorkspace())){ + // TODO: 创建租户 @liuyang + } + // 创建部门 nodeService.process(ProcessNodeReq .builder()