feat:[REQ-3282] 引入workspace v2 sdk

This commit is contained in:
liuyang 2024-12-16 19:56:43 +08:00
parent 3d4ce5f422
commit 748c52386a
5 changed files with 106 additions and 7 deletions

View File

@ -102,6 +102,12 @@
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>cn.axzo.orgmanax</groupId>
<artifactId>orgmanax-common</artifactId>
<version>${project.version}</version>
</dependency>
<!-- 二方SDK -->
<dependency>
<groupId>cn.axzo.apollo</groupId>

View File

@ -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 <T>
*/
public static <T> T wrapApiResult(Supplier<ApiResult<T>> supplier) {
ApiResult<T> 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();
}
}

View File

@ -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);
}

View File

@ -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())

View File

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