diff --git a/im-center-server/src/main/java/cn/axzo/im/job/UpdateImAccountOuIdJob.java b/im-center-server/src/main/java/cn/axzo/im/job/UpdateImAccountOuIdJob.java index ea0ab74..dfc0256 100644 --- a/im-center-server/src/main/java/cn/axzo/im/job/UpdateImAccountOuIdJob.java +++ b/im-center-server/src/main/java/cn/axzo/im/job/UpdateImAccountOuIdJob.java @@ -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 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 saasRoleUsers = accountIds.stream() + .flatMap(e -> tyrSaasRoleUserApi.roleUserList(RoleUserParam.builder().personId(e).build()).getData().stream()) + .collect(Collectors.toList()); + + List ouIds = Lists.transform(saasRoleUsers, SaasRoleUserDTO::getOuId); + + if (CollectionUtils.isEmpty(ouIds)) { + return Collections.EMPTY_MAP; + } + + Set 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