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);
}
// 创建部门