feat:feature-REQ/2129 修改ouId的清洗逻辑,

This commit is contained in:
lilong 2024-04-07 13:53:42 +08:00
parent 57d8a5ae23
commit 593aeb6899

View File

@ -1,15 +1,19 @@
package cn.axzo.im.job;
import cn.axzo.basics.common.constant.enums.OrganizationalUnitTypeEnum;
import cn.axzo.im.center.common.enums.AccountTypeEnum;
import cn.axzo.im.center.common.enums.AppTypeEnum;
import cn.axzo.im.entity.AccountRegister;
import cn.axzo.im.service.AccountRegisterService;
import cn.axzo.maokai.api.client.OrganizationalUnitApi;
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
import cn.axzo.tyr.client.feign.TyrSaasRoleUserApi;
import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserDTO;
import cn.axzo.tyr.client.model.roleuser.req.RoleUserParam;
import cn.hutool.core.lang.Pair;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
@ -46,6 +50,8 @@ public class UpdateImAccountOuIdJob extends IJobHandler {
private AccountRegisterService accountRegisterService;
@Autowired
private TyrSaasRoleUserApi tyrSaasRoleUserApi;
@Autowired
private OrganizationalUnitApi organizationalUnitApi;
private static final Integer DEFAULT_PAGE_SIZE = 500;
@ -123,13 +129,25 @@ public class UpdateImAccountOuIdJob extends IJobHandler {
return Collections.EMPTY_MAP;
}
return accountIds.stream()
.map(e -> {
Optional<SaasRoleUserDTO> user = tyrSaasRoleUserApi.roleUserList(RoleUserParam.builder().personId(e).build()).getData().stream().findFirst();
return Pair.of(e.toString(), user.map(SaasRoleUserDTO::getOuId).orElse(null));
})
.filter(e -> e.getValue() != null)
.collect(Collectors.toMap(Pair::getKey, Pair::getValue));
List<SaasRoleUserDTO> saasRoleUsers = accountIds.stream()
.flatMap(e -> tyrSaasRoleUserApi.roleUserList(RoleUserParam.builder().personId(e).build()).getData().stream())
.collect(Collectors.toList());
List<Long> ouIds = Lists.transform(saasRoleUsers, SaasRoleUserDTO::getOuId);
if (CollectionUtils.isEmpty(ouIds)) {
return Collections.EMPTY_MAP;
}
Set<Long> effectOuIds = organizationalUnitApi.list(OrganizationalUnitQuery.builder().unitIds(ouIds).build()).getData()
.stream()
.filter(e -> !Objects.equals(e.getType(), OrganizationalUnitTypeEnum.PROJECT_OUT_TEAM.getValue()))
.map(OrganizationalUnitVO::getId)
.collect(Collectors.toSet());
return saasRoleUsers.stream()
.filter(e -> effectOuIds.contains(e.getOuId()))
.collect(Collectors.toMap(e -> e.getNaturalPersonId().toString(), SaasRoleUserDTO::getOuId, (f, s) -> f));
}
@Data