diff --git a/orgmanax-infra/pom.xml b/orgmanax-infra/pom.xml index a8e93b6..cacf0b9 100644 --- a/orgmanax-infra/pom.xml +++ b/orgmanax-infra/pom.xml @@ -102,6 +102,12 @@ hutool-all + + cn.axzo.orgmanax + orgmanax-common + ${project.version} + + cn.axzo.apollo diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/core/RpcWrapper.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/core/RpcWrapper.java new file mode 100644 index 0000000..1f5d7ea --- /dev/null +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/core/RpcWrapper.java @@ -0,0 +1,31 @@ +package cn.axzo.orgmanax.infra.client.core; + +import cn.axzo.foundation.exception.BusinessException; +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.orgmanax.common.config.BizResultCode; +import cn.hutool.core.convert.Convert; +import cn.hutool.http.HttpStatus; + +import java.util.Objects; +import java.util.function.Supplier; + +public class RpcWrapper { + + /** + * Api result 返回 + * @param supplier + * @return + * @param + */ + public static T wrapApiResult(Supplier> supplier) { + ApiResult result = supplier.get(); + if (result == null) { + throw new BusinessException(BizResultCode.RPC_ERROR); + } + if (!Objects.equals(result.getCode(), HttpStatus.HTTP_OK)) { + throw new BusinessException(Convert.toStr(result.getCode()), result.getMsg(), null); + } + return result.getData(); + } + +} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/workspace/WorkspaceGateway.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/workspace/WorkspaceGateway.java index 791960b..281dc59 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/workspace/WorkspaceGateway.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/client/workspace/WorkspaceGateway.java @@ -1,23 +1,46 @@ package cn.axzo.orgmanax.infra.client.workspace; +import cn.axzo.apollo.workspace.api.v2.workspace.feign.WorkspaceV2Api; +import cn.axzo.apollo.workspace.api.v2.workspace.req.WorkspaceDetailReq; +import cn.axzo.apollo.workspace.api.v2.workspace.req.WorkspaceUpsertReq; +import cn.axzo.apollo.workspace.api.v2.workspace.resp.WorkspaceDetailResp; +import cn.axzo.apollo.workspace.api.v2.workspace.resp.WorkspaceUpsertResp; +import cn.axzo.orgmanax.infra.client.core.RpcWrapper; import cn.axzo.orgmanax.infra.client.workspace.dto.Workspace; import com.google.common.collect.ImmutableList; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.List; /** - * TODO liuyang */ +@RequiredArgsConstructor @Component @Slf4j public class WorkspaceGateway { + private final WorkspaceV2Api workspaceV2Api; + + /** + * 更新和新增 + * @param request + * @return + */ + public WorkspaceUpsertResp upsert(WorkspaceUpsertReq request) { + return RpcWrapper.wrapApiResult(() -> workspaceV2Api.upsert(request)); + } + + /** + * 获取详情 + * @param request + * @return + */ + public WorkspaceDetailResp getDetail(WorkspaceDetailReq request) { + return RpcWrapper.wrapApiResult(() -> workspaceV2Api.detail(request)); + } + public Workspace getWorkspace(Long id) { return listWorkspaces(ListWorkspaceReq.builder().id(id).build()).stream().findFirst().orElse(null); } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java index 133b421..740c7ef 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/cooperateship/service/impl/CooperateShipServiceImpl.java @@ -1,5 +1,7 @@ package cn.axzo.orgmanax.server.cooperateship.service.impl; +import cn.axzo.apollo.workspace.api.v2.workspace.req.WorkspaceDetailReq; +import cn.axzo.apollo.workspace.api.v2.workspace.resp.WorkspaceDetailResp; import cn.axzo.foundation.event.support.Event; import cn.axzo.foundation.event.support.producer.EventProducer; import cn.axzo.foundation.exception.Axssert; @@ -60,7 +62,7 @@ public class CooperateShipServiceImpl implements CooperateShipService { .orElseThrow(() -> BizResultCode.ENTITY_NOT_FOUND.toException("部门不存在{}", req.getOrganizationalNodeId())); Axssert.check(node.isTopNode(), BizResultCode.INVALID_PARAM, "只有顶级节点才能添加协同关系"); // workspace check - Workspace workspace = workspaceGateway.getWorkspace(req.getWorkspaceId()); + WorkspaceDetailResp workspace = workspaceGateway.getDetail(WorkspaceDetailReq.builder().id(req.getWorkspaceId()).build()); Axssert.checkNonNull(workspace, "工作台不存在{}", req.getWorkspaceId()); CooperateShipQueryRepository.CooperateShipResp parentShip = null; if (!ALLOWED_TOP_COOPERATE_TYPES.contains(req.getCooperateType())) { @@ -78,7 +80,7 @@ public class CooperateShipServiceImpl implements CooperateShipService { SaasCooperateShip cooperateShip = SaasCooperateShip.builder() .parentId(req.getParentId()) .workspaceId(workspace.getId()) - .workspaceType(workspace.getType()) + .workspaceType(workspace.getWorkspaceType()) .workspaceName(workspace.getName()) .status(CooperateShipStatusEnum.PRESENT.getCode()) .joinAt(new Date()) 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 3aa2fec..a27d71d 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 @@ -1,9 +1,13 @@ package cn.axzo.orgmanax.server.unit.service.impl; +import java.math.BigDecimal; +import java.util.Date; +import cn.axzo.apollo.workspace.api.v2.workspace.req.WorkspaceUpsertReq; import cn.axzo.foundation.page.PageResp; import cn.axzo.orgmanax.api.node.req.ProcessNodeReq; import cn.axzo.orgmanax.api.unit.req.ListUnitReq; import cn.axzo.orgmanax.api.unit.resp.OrgUnitDTO; +import cn.axzo.orgmanax.infra.client.workspace.WorkspaceGateway; import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNode; import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalUnit; import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository; @@ -33,6 +37,7 @@ public class UnitServiceImpl implements UnitService { private final NodeService nodeService; private final UnitQueryRepository unitQueryRepository; private final TransactionTemplate transactionTemplate; + private final WorkspaceGateway workspaceGateway; @Override public CreateUnitResp create(CreateUnitReq req) { @@ -57,6 +62,38 @@ public class UnitServiceImpl implements UnitService { if (BooleanUtil.isTrue(req.getCreateWorkspace())){ // TODO: 创建租户 @liuyang + WorkspaceUpsertReq workspaceUpsertReq = new WorkspaceUpsertReq(); + workspaceUpsertReq.setParentId(0L); + workspaceUpsertReq.setType(1); + workspaceUpsertReq.setName(req.getName()); + // todo 从哪里取 + workspaceUpsertReq.setTenantId(0L); + workspaceUpsertReq.setOrganizationUnitId(unit.getId()); + // todo 从哪里取 + workspaceUpsertReq.setFences(""); + workspaceUpsertReq.setContactName(req.getLegalName()); + workspaceUpsertReq.setContactPhone(req.getLegalPhone()); + // todo 从哪里取 + workspaceUpsertReq.setTag(""); + workspaceUpsertReq.setProvinceCode(req.getProvinceCode()); + workspaceUpsertReq.setCityCode(req.getCityCode()); + workspaceUpsertReq.setStreetName(""); + workspaceUpsertReq.setStreetCode(""); + workspaceUpsertReq.setAreaCode(req.getAreaCode()); + workspaceUpsertReq.setProvinceName(req.getProvinceName()); + workspaceUpsertReq.setCityName(req.getCityName()); + workspaceUpsertReq.setAreaName(req.getAreaName()); + workspaceUpsertReq.setWorkSpaceIneffectiveDate(new Date()); + // todo 从哪里取 + workspaceUpsertReq.setWorkspaceColor(""); + workspaceUpsertReq.setLogo(req.getLogoUrl()); + workspaceUpsertReq.setTrial(false); + workspaceUpsertReq.setCooperateType(0); + workspaceUpsertReq.setAddress(req.getAddress()); + // todo 是否赋值 + workspaceUpsertReq.setLongitude(new BigDecimal("0")); + workspaceUpsertReq.setLatitude(new BigDecimal("0")); + workspaceGateway.upsert(workspaceUpsertReq); } // 创建部门