feat(REQ-3488): 岗位恢复查询角色信息相关逻辑

This commit is contained in:
songyuanlun 2025-01-13 10:56:10 +08:00
parent 9025aa237c
commit a623410550
6 changed files with 59 additions and 84 deletions

View File

@ -45,7 +45,7 @@ Accept: application/json
###
# 查询
POST {{host}}/api/job/page
POST {{host}}/api/job/list
Content-Type: application/json
Accept: application/json

View File

@ -135,10 +135,9 @@ public class OrgJobDTO implements Serializable {
/**
* 角色信息
* todo 2024年12月30日 已和周敏确认暂不用该字段
* 二期才会用到此字段
*/
//private List<RoleDTO> saasRoles;
private List<RoleDTO> saasRoles;
public Set<Long> mergeAndDistinctRolesIds() {
Set<Long> roleIds = Sets.newHashSet();

View File

@ -115,10 +115,10 @@
<version>${revision}</version>
</dependency>
<!--<dependency>
<dependency>
<groupId>cn.axzo.tyr</groupId>
<artifactId>tyr-client</artifactId>
<version>${revision}</version>
</dependency>-->
</dependency>
</dependencies>
</project>

View File

@ -1,11 +1,15 @@
package cn.axzo.orgmanax.infra.client.tyr;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.client.RpcWrapper;
import cn.axzo.tyr.feign.api.RoleApi;
import cn.axzo.tyr.feign.req.PageRoleReq;
import cn.axzo.tyr.feign.resp.RoleResp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* todo 暂时注释tyr不上线
* @author syl
* @date 2024/12/23
*/
@ -14,9 +18,9 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor
public class RoleGateway {
// private final RoleApi roleApi;
//
// public PageResp<RoleResp> page(PageRoleReq req) {
// return RpcWrapper.wrapApiResult(() -> roleApi.page(req));
// }
private final RoleApi roleApi;
public PageResp<RoleResp> page(PageRoleReq req) {
return RpcWrapper.wrapApiResult(() -> roleApi.page(req));
}
}

View File

@ -1,30 +0,0 @@
package cn.axzo.orgmanax.infra.client.util;
import cn.axzo.foundation.exception.BusinessException;
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;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class RpcWrapper {
/**
* Api result 返回
* @param supplier
* @return
* @param <T>
*/
public static <T> T wrapApiResult(Supplier<cn.axzo.foundation.result.ApiResult<T>> supplier) {
cn.axzo.foundation.result.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

@ -11,6 +11,7 @@ import cn.axzo.orgmanax.dto.cooperateship.req.ListOrgCooperateShipReq;
import cn.axzo.orgmanax.dto.job.dto.OrgJobDTO;
import cn.axzo.orgmanax.dto.job.dto.OrgJobGroupDTO;
import cn.axzo.orgmanax.dto.job.dto.OrgJobGroupRelationDTO;
import cn.axzo.orgmanax.dto.job.dto.RoleDTO;
import cn.axzo.orgmanax.dto.job.enums.OrgJobGroupFlagEnum;
import cn.axzo.orgmanax.dto.job.enums.OrgJobTypeEnum;
import cn.axzo.orgmanax.dto.job.req.CreateOrgJobReq;
@ -27,6 +28,8 @@ import cn.axzo.orgmanax.server.orgjob.service.OrgJobService;
import cn.axzo.orgmanax.server.orgjob.service.dto.OrgJobGroupPageParam;
import cn.axzo.orgmanax.server.orgjob.service.dto.OrgJobGroupRelationPageParam;
import cn.axzo.orgmanax.server.orgjob.service.dto.OrgJobPageParam;
import cn.axzo.tyr.feign.req.PageRoleReq;
import cn.axzo.tyr.feign.resp.RoleResp;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
@ -105,8 +108,8 @@ public class OrgJobServiceImpl implements OrgJobService {
buildOrgGroup4OrgJob(orgJobs.getData());
}
if (BooleanUtils.isTrue(param.getNeedSaasRole())) {
// todo 设置角色信息
// buildSaasRole4OrgJob(orgJobs.getData());
// 设置角色信息
buildSaasRole4OrgJob(orgJobs.getData());
}
return orgJobs;
}
@ -177,48 +180,47 @@ public class OrgJobServiceImpl implements OrgJobService {
return flags;
}
// todo 暂时注释二期才使用
// private void buildSaasRole4OrgJob(List<OrgJobDTO> orgJobs) {
// Set<Long> roleIds = orgJobs.stream()
// .flatMap(e -> e.mergeAndDistinctRolesIds().stream())
// .collect(Collectors.toSet());
// Map<Long, RoleResp> saasRoleMap = listSaasRoles(roleIds);
// if (CollUtil.isEmpty(saasRoleMap)) {
// return;
// }
// orgJobs.forEach(e -> {
// Set<Long> mergedRoleIds = e.mergeAndDistinctRolesIds();
// if (CollUtil.isNotEmpty(mergedRoleIds)) {
// List<RoleResp> roles = mergedRoleIds.stream()
// .map(saasRoleMap::get)
// .filter(Objects::nonNull)
// .collect(Collectors.toList());
// e.setSaasRoles(BeanUtil.copyToList(roles, RoleDTO.class));
// }
// });
// }
private void buildSaasRole4OrgJob(List<OrgJobDTO> orgJobs) {
Set<Long> roleIds = orgJobs.stream()
.flatMap(e -> e.mergeAndDistinctRolesIds().stream())
.collect(Collectors.toSet());
Map<Long, RoleResp> saasRoleMap = listSaasRoles(roleIds);
if (CollUtil.isEmpty(saasRoleMap)) {
return;
}
orgJobs.forEach(e -> {
Set<Long> mergedRoleIds = e.mergeAndDistinctRolesIds();
if (CollUtil.isNotEmpty(mergedRoleIds)) {
List<RoleResp> roles = mergedRoleIds.stream()
.map(saasRoleMap::get)
.filter(Objects::nonNull)
.collect(Collectors.toList());
e.setSaasRoles(BeanUtil.copyToList(roles, RoleDTO.class));
}
});
}
// private Map<Long, RoleResp> listSaasRoles(Set<Long> roleIds) {
// if (CollUtil.isEmpty(roleIds)) {
// return Collections.emptyMap();
// }
// List<RoleResp> roles = new ArrayList<>();
// PageRoleReq param = PageRoleReq.builder().roleIds(roleIds).build();
//
// PageResp<RoleResp> rolePage;
// int pageNumber = 0;
// param.setPageSize(JOB_PAGE_SIZE);
// do {
// param.setPage(++pageNumber);
// rolePage = roleGateway.page(param);
// if (CollUtil.isNotEmpty(rolePage.getData())) {
// roles.addAll(rolePage.getData());
// }
// } while (rolePage.hasNext());
//
// return roles.stream()
// .collect(Collectors.toMap(RoleResp::getRoleId, Function.identity(), (oldVal, newVal) -> oldVal));
// }
private Map<Long, RoleResp> listSaasRoles(Set<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) {
return Collections.emptyMap();
}
List<RoleResp> roles = new ArrayList<>();
PageRoleReq param = PageRoleReq.builder().roleIds(roleIds).build();
PageResp<RoleResp> rolePage;
int pageNumber = 0;
param.setPageSize(JOB_PAGE_SIZE);
do {
param.setPage(++pageNumber);
rolePage = roleGateway.page(param);
if (CollUtil.isNotEmpty(rolePage.getData())) {
roles.addAll(rolePage.getData());
}
} while (rolePage.hasNext());
return roles.stream()
.collect(Collectors.toMap(RoleResp::getRoleId, Function.identity(), (oldVal, newVal) -> oldVal));
}
private void buildOrgGroup4OrgJob(List<OrgJobDTO> orgJobs) {
// 查询岗位与分组的关联关系