diff --git a/im-center-server/src/main/java/cn/axzo/im/account/CreateAccountOnNodeUserListener.java b/im-center-server/src/main/java/cn/axzo/im/account/CreateAccountOnNodeUserListener.java index 5dcb92a..5ffa388 100644 --- a/im-center-server/src/main/java/cn/axzo/im/account/CreateAccountOnNodeUserListener.java +++ b/im-center-server/src/main/java/cn/axzo/im/account/CreateAccountOnNodeUserListener.java @@ -1,29 +1,26 @@ package cn.axzo.im.account; -import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; import cn.axzo.im.center.api.vo.req.AccountAbsentQuery; import cn.axzo.im.center.api.vo.resp.UserAccountResp; import cn.axzo.im.center.common.enums.AppTypeEnum; -import cn.axzo.im.gateway.ProfilesApiGateway; +import cn.axzo.im.gateway.OrgJobGateway; +import cn.axzo.im.gateway.OrganizationalNodeUserApiGateway; import cn.axzo.im.job.PersonIdAndOu; import cn.axzo.im.service.AccountService; import cn.axzo.im.utils.ImProperties; -import cn.axzo.maokai.api.client.OrganizationalJobApi; -import cn.axzo.maokai.api.client.OrganizationalNodeUserApi; -import cn.axzo.maokai.api.vo.response.OrganizationalJobResp; import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; +import cn.axzo.orggateway.api.job.resp.OrgJobResp; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import cn.axzo.tyr.client.model.enums.IdentityType; import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -37,10 +34,9 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi private final EventConsumer eventConsumer; private final AccountService accountService; - private final OrganizationalNodeUserApi organizationalNodeUserApi; - private final OrganizationalJobApi organizationalJobApi; + private final OrganizationalNodeUserApiGateway organizationalNodeUserApiGateway; + private final OrgJobGateway orgJobGateway; private final ImProperties props; - private final ProfilesApiGateway profilesApiGateway; @Override public void onEvent(Event event, EventConsumer.Context context) { @@ -61,7 +57,7 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi log.info("消息体里没有node user id, 跳过生成. event={}", JSON.toJSONString(event)); return; } - OrganizationalNodeUserVO nodeUser = organizationalNodeUserApi.getNodeUser(eventNodeUser.getId()).getData(); + OrganizationalNodeUserDTO nodeUser = organizationalNodeUserApiGateway.getById(eventNodeUser.getId()); if (nodeUser == null) { log.info("没有通过node user id查询到node user记录, 跳过生成"); return; @@ -85,7 +81,7 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi pou.getPersonId(), pou.getOuId(), JSON.toJSONString(resp)); } - private boolean shouldGenImAccount(OrganizationalNodeUserVO nodeUser) { + private boolean shouldGenImAccount(OrganizationalNodeUserDTO nodeUser) { if (shouldGenByIdentityType(nodeUser)) { return true; } @@ -94,13 +90,11 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi log.info("无效的job id, 跳过生成账号. node user={}", JSON.toJSONString(nodeUser)); return false; } - List jobs = organizationalJobApi - .getByIds(Collections.singletonList(jobId)).getData(); - if (CollectionUtils.isEmpty(jobs)) { + OrgJobResp job = orgJobGateway.getById(jobId); + if (job == null) { log.info("没有通过job id查询到job记录, 跳过生成账号. node user={}", JSON.toJSONString(nodeUser)); return false; } - OrganizationalJobResp job = jobs.get(0); boolean shouldGen = props.getGenImAccountJobCodes().contains(job.getCode()); if (shouldGen) { log.info("通过身份判断需要生成管理端账号. node user={}, job={}", @@ -109,7 +103,7 @@ public class CreateAccountOnNodeUserListener implements EventHandler, Initializi return shouldGen; } - boolean shouldGenByIdentityType(OrganizationalNodeUserVO nodeUser) { + boolean shouldGenByIdentityType(OrganizationalNodeUserDTO nodeUser) { return Objects.equals(nodeUser.getIdentityType(), IdentityType.PRACTITIONER.getCode()) || Objects.equals(nodeUser.getIdentityType(), IdentityType.WORKER_LEADER.getCode()); } diff --git a/im-center-server/src/main/java/cn/axzo/im/dependency/UnitGateway.java b/im-center-server/src/main/java/cn/axzo/im/dependency/UnitGateway.java new file mode 100644 index 0000000..6e62cc0 --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/dependency/UnitGateway.java @@ -0,0 +1,45 @@ +package cn.axzo.im.dependency; + +import cn.axzo.foundation.page.PageResp; +import cn.axzo.im.utils.BizAssertions; +import cn.axzo.orggateway.api.unit.OrgGatewayUnitApi; +import cn.axzo.orggateway.api.unit.req.OrgUnitPageQueryReq; +import cn.axzo.orggateway.api.unit.resp.OrgUnitResp; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.toMap; + +/** + * @author yanglin + */ +@Component +@RequiredArgsConstructor +public class UnitGateway { + + private final OrgGatewayUnitApi orgGatewayUnitApi; + + public Map getByOuIdsMapped(Collection ouIds) { + return getByOuIds(ouIds).stream().collect(toMap(OrgUnitResp::getId, identity(), (f, s) -> f)); + } + + public List getByOuIds(Collection ouIds) { + if (CollectionUtils.isEmpty(ouIds)) + return Collections.emptyList(); + PageResp page = BizAssertions.assertResponse(orgGatewayUnitApi.page(OrgUnitPageQueryReq.builder() + .pageSize(Integer.MAX_VALUE) + .unitIds(Lists.newArrayList(Sets.newHashSet(ouIds))) + .build())); + return page.getData() == null ? Collections.emptyList() : page.getData(); + } + +} \ No newline at end of file diff --git a/im-center-server/src/main/java/cn/axzo/im/gateway/OrgJobApiGateway.java b/im-center-server/src/main/java/cn/axzo/im/gateway/OrgJobApiGateway.java deleted file mode 100644 index 68fddcf..0000000 --- a/im-center-server/src/main/java/cn/axzo/im/gateway/OrgJobApiGateway.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.axzo.im.gateway; - -import cn.axzo.im.utils.BizAssertions; -import cn.axzo.maokai.api.client.OrgJobApi; -import cn.axzo.maokai.api.vo.request.OrgJobListReq; -import cn.axzo.maokai.api.vo.response.OrgJobRes; -import cn.axzo.pokonyan.util.RpcUtil; -import com.google.common.collect.Lists; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Objects; - -@Service("orgJobApiGateway") -@Slf4j -@RequiredArgsConstructor -public class OrgJobApiGateway { - - private final OrgJobApi orgJobApi; - - public OrgJobRes fetchJobCodeByJobId(Long jobId) { - if (Objects.isNull(jobId)) { - return OrgJobRes.builder().build(); - } - OrgJobListReq req = new OrgJobListReq(); - req.setJobIdList(Lists.newArrayList(jobId)); - List orgJobRes = RpcUtil.rpcApiResultProcessor(() -> orgJobApi.list(req), "fetchJobCodeByJobId", jobId); - BizAssertions.assertNotEmpty(orgJobRes, "根据jobId:{}获取Job为空", jobId); - return orgJobRes.get(0); - } - - public List fetchJobCodesByJobIds(List jobIds) { - if (CollectionUtils.isEmpty(jobIds)) { - return Lists.newArrayList(); - } - OrgJobListReq req = new OrgJobListReq(); - req.setJobIdList(jobIds); - return RpcUtil.rpcApiResultProcessor(() -> orgJobApi.list(req), "fetchJobCodesByJobIds", jobIds); - } -} diff --git a/im-center-server/src/main/java/cn/axzo/im/gateway/OrgJobGateway.java b/im-center-server/src/main/java/cn/axzo/im/gateway/OrgJobGateway.java new file mode 100644 index 0000000..e207635 --- /dev/null +++ b/im-center-server/src/main/java/cn/axzo/im/gateway/OrgJobGateway.java @@ -0,0 +1,38 @@ +package cn.axzo.im.gateway; + +import cn.axzo.orggateway.api.job.OrgJobApi; +import cn.axzo.orggateway.api.job.req.PageOrgJobReq; +import cn.axzo.orggateway.api.job.resp.OrgJobResp; +import com.google.common.collect.Sets; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +@Service("orgJobApiGateway") +@Slf4j +@RequiredArgsConstructor +public class OrgJobGateway { + + private final OrgJobApi orgJobApi; + + public OrgJobResp getById(Long jobId) { + List jobs = getByIds(Collections.singletonList(jobId)); + return jobs.isEmpty() ? null : jobs.get(0); + } + + public List getByIds(Collection jobIds) { + if (CollectionUtils.isEmpty(jobIds)) + return Collections.emptyList(); + List jobs = orgJobApi.page(PageOrgJobReq.builder() + .pageSize(jobIds.size()) + .jobIds(Sets.newHashSet(jobIds)) + .build()).getData().getData(); + return jobs == null ? Collections.emptyList() : jobs; + } + +} diff --git a/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeApiGateway.java b/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeApiGateway.java deleted file mode 100644 index 01d8ca9..0000000 --- a/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeApiGateway.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.axzo.im.gateway; - -import cn.axzo.maokai.api.client.OrganizationalNodeApi; -import cn.axzo.maokai.api.vo.request.OrganizationalNodeBatchQueryVO; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeVO; -import cn.axzo.pokonyan.util.RpcUtil; -import com.alibaba.fastjson.JSON; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service("organizationalNodeApiGateway") -@Slf4j -@RequiredArgsConstructor -public class OrganizationalNodeApiGateway { - - private final OrganizationalNodeApi organizationalNodeApi; - - public List fetchNodesByNodeIds(List nodeIdList) { - OrganizationalNodeBatchQueryVO organizationalNodeBatchQueryVO = new OrganizationalNodeBatchQueryVO(); - organizationalNodeBatchQueryVO.setNodeIds(nodeIdList); - organizationalNodeBatchQueryVO.setContainsDeleted(false); - List nodeVOList = organizationalNodeApi.listNode(organizationalNodeBatchQueryVO).getData(); - return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeApi.listNode(organizationalNodeBatchQueryVO), "fetchNodesByNodeIds", JSON.toJSONString(nodeVOList)); - } - -} diff --git a/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeUserApiGateway.java b/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeUserApiGateway.java index a84bb5b..aca53a9 100644 --- a/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeUserApiGateway.java +++ b/im-center-server/src/main/java/cn/axzo/im/gateway/OrganizationalNodeUserApiGateway.java @@ -1,13 +1,14 @@ package cn.axzo.im.gateway; -import cn.axzo.maokai.api.client.OrganizationalNodeUserApi; -import cn.axzo.maokai.api.vo.request.OrgNodeUserDetailByIdReq; -import cn.axzo.maokai.api.vo.request.OrganizationalNodeUserSearchReq; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; -import cn.axzo.pokonyan.util.RpcUtil; -import com.alibaba.fastjson.JSON; +import cn.axzo.foundation.page.PageResp; +import cn.axzo.foundation.result.ApiResult; +import cn.axzo.im.utils.BizAssertions; +import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi; +import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -18,44 +19,62 @@ import java.util.Set; @RequiredArgsConstructor public class OrganizationalNodeUserApiGateway { - private final OrganizationalNodeUserApi organizationalNodeUserApi; + private final OrgNodeUserApi orgNodeUserApi; - public List searchNodeUser(Long nodeId, Long workspaceId, Set jobCodes, Long personId, Boolean needJobCode) { - OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq(); - searchReq.setOrganizationNodeId(nodeId); + public List searchNodeUser(Long nodeId, Long workspaceId, Set jobCodes, Long personId, Boolean needJobCode) { + ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq(); + searchReq.setOrganizationalNodeId(nodeId); searchReq.setWorkspaceId(workspaceId); - searchReq.setJobCodes(jobCodes); + searchReq.setOrganizationalJobCodes(jobCodes); searchReq.setPersonId(personId); - searchReq.setNeedJobCode(needJobCode); - return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "searchNodeUser", JSON.toJSONString(searchReq)); + searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder() + .job(needJobCode) + .build()); + ApiResult> response = orgNodeUserApi.list(searchReq); + return BizAssertions.assertResponse(response).getData(); } - public List fetchNodeUsersByWorkspaceNodeIdJobCodes(Long workspaceId, Long nodeId,Set jobCodes) { - OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq(); + public List fetchNodeUsersByWorkspaceNodeIdJobCodes(Long workspaceId, Long nodeId, Set jobCodes) { + ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq(); searchReq.setWorkspaceId(workspaceId); - searchReq.setOrganizationNodeId(nodeId); - searchReq.setJobCodes(jobCodes);//班组长/带班长 - return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "fetchNodeUsersByWorkspaceOuIdJobCodes", JSON.toJSONString(searchReq)); + searchReq.setOrganizationalNodeId(nodeId); + searchReq.setOrganizationalJobCodes(jobCodes); + searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder() + .job(true) + .build()); + return BizAssertions.assertResponse(orgNodeUserApi.list(searchReq)).getData(); } - public List fetchNodeUsersByWorkspaceIdJobCodes(Long workspaceId, Set jobCodes) { - OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq(); + public List fetchNodeUsersByWorkspaceIdJobCodes(Long workspaceId, Set jobCodes) { + ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq(); searchReq.setWorkspaceId(workspaceId); - searchReq.setJobCodes(jobCodes); - return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "fetchNodeUsersByWorkspaceIdJobCodes", JSON.toJSONString(searchReq)); + searchReq.setOrganizationalJobCodes(jobCodes); + searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder() + .job(true) + .build()); + return BizAssertions.assertResponse(orgNodeUserApi.list(searchReq)).getData(); } - public List fetchNodeUsersByWorkspaceOuIdJobCodes(Long workspaceId, Long ouId, Set jobCodes) { - OrganizationalNodeUserSearchReq searchReq = new OrganizationalNodeUserSearchReq(); + public List fetchNodeUsersByWorkspaceOuIdJobCodes(Long workspaceId, Long ouId, Set jobCodes) { + ListOrgNodeUserReq searchReq = new ListOrgNodeUserReq(); searchReq.setWorkspaceId(workspaceId); searchReq.setOrganizationalUnitId(ouId); - searchReq.setJobCodes(jobCodes); - return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.list(searchReq), "fetchNodeUsersByWorkspaceOuIdJobCodes", JSON.toJSONString(searchReq)); + searchReq.setOrganizationalJobCodes(jobCodes); + searchReq.setNeeds(ListOrgNodeUserReq.Needs.builder() + .job(true) + .build()); + return BizAssertions.assertResponse(orgNodeUserApi.list(searchReq)).getData(); } - public OrganizationalNodeUserVO getById(Long id) { - OrgNodeUserDetailByIdReq req = OrgNodeUserDetailByIdReq.builder().id(id).build(); - return RpcUtil.rpcApiResultProcessor(() -> organizationalNodeUserApi.detailById(req), "detailById", req); + public OrganizationalNodeUserDTO getById(Long id) { + List records = BizAssertions.assertResponse( + orgNodeUserApi.list(ListOrgNodeUserReq.builder() + .id(id) + .needs(ListOrgNodeUserReq.Needs.builder() + .job(true) + .build()) + .build())).getData(); + return CollectionUtils.isEmpty(records) ? null : records.get(0); } } diff --git a/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupEventHandler.java b/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupEventHandler.java index 57051e4..dcb5b32 100644 --- a/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupEventHandler.java +++ b/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/ChatGroupEventHandler.java @@ -11,7 +11,7 @@ import cn.axzo.im.event.inner.EventTypeEnum; import cn.axzo.im.event.payload.ChatGroupCreatePayload; import cn.axzo.im.gateway.ProfilesApiGateway; import cn.axzo.im.service.ChatGroupService; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import cn.hutool.core.lang.Pair; import com.alibaba.excel.util.StringUtils; import com.alibaba.fastjson.JSON; @@ -87,15 +87,15 @@ public class ChatGroupEventHandler implements EventHandler, InitializingBean { */ public Set chatGroupOfMembers(ChatGroupCreateReq req) { //Pair,key:管理人员集合;value:工人集合 - Pair, List> adminWorkerPair = chatGroupService.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.chatGroupService.buildJobCodesByCrowType(req.getCrowType()), req.getCreator()); - List adminSet = adminWorkerPair.getKey(); - List workerSet = adminWorkerPair.getValue(); + Pair, List> adminWorkerPair = chatGroupService.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.chatGroupService.buildJobCodesByCrowType(req.getCrowType()), req.getCreator()); + List adminSet = adminWorkerPair.getKey(); + List workerSet = adminWorkerPair.getValue(); Map personProfileMap = this.buildPersonProfileMap(adminWorkerPair); Set userAccountRespList = Sets.newHashSet(); - for (OrganizationalNodeUserVO item : adminSet) { + for (OrganizationalNodeUserDTO item : adminSet) { PersonProfileDto personProfileDto = personProfileMap.get(item.getPersonId()); if (Objects.isNull(personProfileDto) || Objects.isNull(personProfileDto.getId())) { log.info("admin-personProfileDto is null"); @@ -107,7 +107,7 @@ public class ChatGroupEventHandler implements EventHandler, InitializingBean { } } - for (OrganizationalNodeUserVO worker : workerSet) { + for (OrganizationalNodeUserDTO worker : workerSet) { PersonProfileDto personProfileDto = personProfileMap.get(worker.getPersonId()); if (Objects.isNull(personProfileDto) || Objects.isNull(personProfileDto.getId())) { log.info("worker-personProfileDto is null"); @@ -125,14 +125,14 @@ public class ChatGroupEventHandler implements EventHandler, InitializingBean { * 构建personProfile的Map * key:id,value:personProfile */ - private Map buildPersonProfileMap(Pair, List> adminWorkerPair) { + private Map buildPersonProfileMap(Pair, List> adminWorkerPair) { - List adminSet = CollectionUtils.isNotEmpty(adminWorkerPair.getKey()) ? adminWorkerPair.getKey() : Lists.newArrayList(); - List workerSet = CollectionUtils.isNotEmpty(adminWorkerPair.getValue()) ? adminWorkerPair.getValue() : Lists.newArrayList(); + List adminSet = CollectionUtils.isNotEmpty(adminWorkerPair.getKey()) ? adminWorkerPair.getKey() : Lists.newArrayList(); + List workerSet = CollectionUtils.isNotEmpty(adminWorkerPair.getValue()) ? adminWorkerPair.getValue() : Lists.newArrayList(); List adminWorkerList = Lists.newArrayList(); - adminWorkerList.addAll(Lists.newArrayList(adminSet.stream().map(OrganizationalNodeUserVO::getPersonId).collect(Collectors.toList()))); - adminWorkerList.addAll(Lists.newArrayList(workerSet.stream().map(OrganizationalNodeUserVO::getPersonId).collect(Collectors.toList()))); + adminWorkerList.addAll(Lists.newArrayList(adminSet.stream().map(OrganizationalNodeUserDTO::getPersonId).collect(Collectors.toList()))); + adminWorkerList.addAll(Lists.newArrayList(workerSet.stream().map(OrganizationalNodeUserDTO::getPersonId).collect(Collectors.toList()))); List personProfileDtoList = profilesApiGateway.getPersonProfilesByIds(adminWorkerList); return personProfileDtoList.stream().collect(Collectors.toMap(PersonProfileDto::getId, Function.identity(), (x, y) -> x)); diff --git a/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/OrganizationalNodeUserChangeEventHandler.java b/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/OrganizationalNodeUserChangeEventHandler.java index 95ee8f2..5239788 100644 --- a/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/OrganizationalNodeUserChangeEventHandler.java +++ b/im-center-server/src/main/java/cn/axzo/im/handler/chatgroup/OrganizationalNodeUserChangeEventHandler.java @@ -16,13 +16,13 @@ import cn.axzo.im.event.inner.EventTypeEnum; import cn.axzo.im.event.payload.OrganizationalNodeUser; import cn.axzo.im.event.payload.OrganizationalNodeUserPayload; import cn.axzo.im.event.payload.OrganizationalNodeUserUpsertedPayload; -import cn.axzo.im.gateway.OrgJobApiGateway; +import cn.axzo.im.gateway.OrgJobGateway; import cn.axzo.im.gateway.OrganizationalNodeUserApiGateway; import cn.axzo.im.service.ChatGroupService; import cn.axzo.im.utils.BizAssertions; import cn.axzo.im.utils.JobCodeUtils; -import cn.axzo.maokai.api.vo.response.OrgJobRes; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; +import cn.axzo.orggateway.api.job.resp.OrgJobResp; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import com.alibaba.excel.util.StringUtils; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; @@ -64,7 +64,7 @@ public class OrganizationalNodeUserChangeEventHandler implements EventHandler, I private NimChannelService nimChannelService; @Autowired - private OrgJobApiGateway orgJobApiGateway; + private OrgJobGateway orgJobGateway; @Autowired private JobCodeProperties jobCodeProperties; @@ -150,7 +150,7 @@ public class OrganizationalNodeUserChangeEventHandler implements EventHandler, I */ private OrgNodeUserPayLoad buildPayload(Long nodeUserId) { - OrganizationalNodeUserVO newNodeUserVO = organizationalNodeUserApiGateway.getById(nodeUserId); + OrganizationalNodeUserDTO newNodeUserVO = organizationalNodeUserApiGateway.getById(nodeUserId); return OrgNodeUserPayLoad.builder() .workspaceId(newNodeUserVO.getWorkspaceId()) .ouId(newNodeUserVO.getOrganizationalUnitId()) @@ -228,7 +228,7 @@ public class OrganizationalNodeUserChangeEventHandler implements EventHandler, I * 获取岗位code */ private String fetchJobCodeByJobId(Long jobId) { - OrgJobRes orgJobRes = orgJobApiGateway.fetchJobCodeByJobId(jobId); + OrgJobResp orgJobRes = orgJobGateway.getById(jobId); if (Objects.nonNull(orgJobRes) && StringUtils.isNotBlank(orgJobRes.getCode())) { return orgJobRes.getCode(); } diff --git a/im-center-server/src/main/java/cn/axzo/im/job/CreateAccountJob.java b/im-center-server/src/main/java/cn/axzo/im/job/CreateAccountJob.java index 677bf94..21a299f 100644 --- a/im-center-server/src/main/java/cn/axzo/im/job/CreateAccountJob.java +++ b/im-center-server/src/main/java/cn/axzo/im/job/CreateAccountJob.java @@ -1,19 +1,18 @@ package cn.axzo.im.job; -import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.im.center.api.vo.req.AccountAbsentQuery; import cn.axzo.im.center.api.vo.resp.UserAccountResp; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.channel.IMChannelProvider; import cn.axzo.im.dao.repository.AccountRegisterDao; import cn.axzo.im.entity.AccountRegister; +import cn.axzo.im.gateway.OrgJobGateway; import cn.axzo.im.service.AccountService; import cn.axzo.im.utils.ImProperties; -import cn.axzo.maokai.api.client.OrganizationalJobApi; -import cn.axzo.maokai.api.client.OrganizationalNodeUserApi; -import cn.axzo.maokai.api.vo.request.OrganizationalNodeUserPageReq; -import cn.axzo.maokai.api.vo.response.OrganizationalJobResp; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; +import cn.axzo.orggateway.api.job.resp.OrgJobResp; +import cn.axzo.orggateway.api.nodeuser.OrgNodeUserApi; +import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import cn.axzo.tyr.client.model.enums.IdentityType; import com.alibaba.fastjson.JSON; import com.google.common.cache.Cache; @@ -51,8 +50,8 @@ import static java.util.stream.Collectors.toSet; @RequiredArgsConstructor public class CreateAccountJob extends IJobHandler { - private final OrganizationalNodeUserApi organizationalNodeUserApi; - private final OrganizationalJobApi organizationalJobApi; + private final OrgJobGateway orgJobGateway; + private final OrgNodeUserApi orgNodeUserApi; private final AccountService accountService; private final IMChannelProvider imChannelProvider; private final AccountRegisterDao accountRegisterDao; @@ -98,13 +97,12 @@ public class CreateAccountJob extends IJobHandler { log.info("执行被中断..."); return; } - OrganizationalNodeUserPageReq request = new OrganizationalNodeUserPageReq(); + ListOrgNodeUserReq request = new ListOrgNodeUserReq(); request.setPageSize(pageSize); request.setPage(page); log.info("开始查询 node user 表, page={}", page); - ApiPageResult resp = organizationalNodeUserApi.page(request); + List nodeUsers = orgNodeUserApi.list(request).getData().getData(); page++; - List nodeUsers = resp.getData().getList(); if (CollectionUtils.isNotEmpty(nodeUsers)) { tryGenImAccount(param, nodeUsers); } @@ -113,10 +111,10 @@ public class CreateAccountJob extends IJobHandler { } } - private void tryGenImAccount(Param param, List nodeUsers) { + private void tryGenImAccount(Param param, List nodeUsers) { // 过滤本次job已经处理过的 - ArrayList noAccessed = new ArrayList<>(); - for (OrganizationalNodeUserVO nodeUser : nodeUsers) { + ArrayList noAccessed = new ArrayList<>(); + for (OrganizationalNodeUserDTO nodeUser : nodeUsers) { PersonIdAndOu pou = new PersonIdAndOu(nodeUser.getPersonId(), nodeUser.getOrganizationalUnitId()); if (param.accessed.getIfPresent(pou) == null) noAccessed.add(nodeUser); @@ -125,7 +123,7 @@ public class CreateAccountJob extends IJobHandler { return; // 过滤已经存在的im账号 - Function imAccountBuilder = nodeUser -> + Function imAccountBuilder = nodeUser -> accountService.buildUserIdWrapper(String.valueOf(nodeUser.getPersonId()), AppTypeEnum.CMP.getCode(), nodeUser.getOrganizationalUnitId()); List allImAccounts = noAccessed.stream().map(imAccountBuilder).distinct().collect(toList()); @@ -139,8 +137,8 @@ public class CreateAccountJob extends IJobHandler { .map(AccountRegister::getImAccount) .collect(toSet()); } - ArrayList toCreateImAccounts = new ArrayList<>(); - for (OrganizationalNodeUserVO nodeUser : noAccessed) { + ArrayList toCreateImAccounts = new ArrayList<>(); + for (OrganizationalNodeUserDTO nodeUser : noAccessed) { String imAccount = imAccountBuilder.apply(nodeUser); if (!existsImAccounts.contains(imAccount)) toCreateImAccounts.add(nodeUser); @@ -150,12 +148,12 @@ public class CreateAccountJob extends IJobHandler { } // 避免url过长 - for (List batchNodeUsers : Lists.partition(toCreateImAccounts, param.queryJobMaxSize)) { + for (List batchNodeUsers : Lists.partition(toCreateImAccounts, param.queryJobMaxSize)) { List jobIds = param.determineNeedToQueryJobIds(batchNodeUsers); if (!jobIds.isEmpty()) { - param.addJobs(organizationalJobApi.getByIds(jobIds).getData()); + param.addJobs(orgJobGateway.getByIds(jobIds)); } - for (OrganizationalNodeUserVO nodeUser : batchNodeUsers) { + for (OrganizationalNodeUserDTO nodeUser : batchNodeUsers) { if (Thread.currentThread().isInterrupted()) { log.info("执行被中断..."); return; @@ -198,7 +196,7 @@ public class CreateAccountJob extends IJobHandler { // !! helpers for running final AtomicInteger genCount = new AtomicInteger(0); - final Map jobId2Job = new HashMap<>(); + final Map jobId2Job = new HashMap<>(); final Cache accessed = CacheBuilder.newBuilder() .maximumSize(10000) .build(); @@ -211,17 +209,17 @@ public class CreateAccountJob extends IJobHandler { return rateLimiter; } - void addJobs(List jobs) { + void addJobs(List jobs) { if (jobs == null) return; - for (OrganizationalJobResp job : jobs) { + for (OrgJobResp job : jobs) { jobId2Job.put(job.getId(), job); } } - List determineNeedToQueryJobIds(List nodeUsers) { + List determineNeedToQueryJobIds(List nodeUsers) { return nodeUsers.stream() .filter(nodeUser -> !shouldGenByIdentityType(nodeUser)) - .map(OrganizationalNodeUserVO::getOrganizationalJobId) + .map(OrganizationalNodeUserDTO::getOrganizationalJobId) .filter(Objects::nonNull) .filter(jobId -> !jobId2Job.containsKey(jobId)) .filter(jobId -> jobId > 0) @@ -229,16 +227,16 @@ public class CreateAccountJob extends IJobHandler { .collect(toList()); } - boolean shouldGenByIdentityType(OrganizationalNodeUserVO nodeUser) { + boolean shouldGenByIdentityType(OrganizationalNodeUserDTO nodeUser) { return Objects.equals(nodeUser.getIdentityType(), IdentityType.PRACTITIONER.getCode()) || Objects.equals(nodeUser.getIdentityType(), IdentityType.WORKER_LEADER.getCode()); } - boolean shouldGenImAccount(ImProperties props, OrganizationalNodeUserVO nodeUser) { + boolean shouldGenImAccount(ImProperties props, OrganizationalNodeUserDTO nodeUser) { if (shouldGenByIdentityType(nodeUser)) { return true; } - OrganizationalJobResp job = jobId2Job.get(nodeUser.getOrganizationalJobId()); + OrgJobResp job = jobId2Job.get(nodeUser.getOrganizationalJobId()); return job != null && props.getGenImAccountJobCodes().contains(job.getCode()); } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/AccountRegisterService.java b/im-center-server/src/main/java/cn/axzo/im/service/AccountRegisterService.java index c36d01a..fa6f4a2 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/AccountRegisterService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/AccountRegisterService.java @@ -2,7 +2,7 @@ package cn.axzo.im.service; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.im.entity.AccountRegister; -import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; +import cn.axzo.orggateway.api.unit.resp.OrgUnitResp; import cn.axzo.pokonyan.dao.page.IPageParam; import cn.axzo.pokonyan.dao.wrapper.CriteriaField; import cn.axzo.pokonyan.dao.wrapper.Operator; @@ -104,11 +104,11 @@ public interface AccountRegisterService extends IService { private PersonProfileDto personProfile; - private OrganizationalUnitVO organizationalUnit; + private OrgUnitResp organizationalUnit; public static AccountRegisterDTO from(AccountRegister accountRegister, Map personProfiles, - Map organizationals) { + Map organizationals) { AccountRegisterDTO accountRegisterDTO = AccountRegisterDTO.builder().build(); BeanUtils.copyProperties(accountRegister, accountRegisterDTO); diff --git a/im-center-server/src/main/java/cn/axzo/im/service/ChatGroupService.java b/im-center-server/src/main/java/cn/axzo/im/service/ChatGroupService.java index 2a3e681..3fe0a08 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/ChatGroupService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/ChatGroupService.java @@ -17,7 +17,7 @@ import cn.axzo.im.center.api.vo.resp.ChatGroupQueryResp; import cn.axzo.im.center.api.vo.resp.HistoryMsgQueryResp; import cn.axzo.im.center.common.enums.ChatGroupUserDataSourceEnum; import cn.axzo.im.entity.ChatGroup; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import cn.hutool.core.lang.Pair; import com.baomidou.mybatisplus.extension.service.IService; @@ -39,7 +39,7 @@ public interface ChatGroupService extends IService { /** * 获取IM账号 */ - Pair, List> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set jobCodes, Long personId); + Pair, List> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set jobCodes, Long personId); /** * 根据项目Id/单位Id/节点Id,获取班组内成员 diff --git a/im-center-server/src/main/java/cn/axzo/im/service/MessageHistoryService.java b/im-center-server/src/main/java/cn/axzo/im/service/MessageHistoryService.java index 7e14bcc..fa00fb7 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/MessageHistoryService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/MessageHistoryService.java @@ -1,10 +1,9 @@ package cn.axzo.im.service; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; -import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.im.center.api.vo.req.UpdateTemplateSendPriorityRequest; import cn.axzo.im.entity.MessageHistory; -import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; +import cn.axzo.orggateway.api.unit.resp.OrgUnitResp; import cn.axzo.pokonyan.dao.page.IPageParam; import cn.axzo.pokonyan.dao.wrapper.CriteriaField; import cn.axzo.pokonyan.dao.wrapper.Operator; @@ -15,8 +14,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import org.springframework.beans.BeanUtils; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -94,11 +91,11 @@ public interface MessageHistoryService extends IService { class MessageHistoryDTO extends MessageHistory { private PersonProfileDto receivePersonProfile; - private OrganizationalUnitVO receiveOrganizationalUnit; + private OrgUnitResp receiveOrganizationalUnit; public static MessageHistoryDTO from(MessageHistory messageHistory, Map personProfiles, - Map organizationals) { + Map organizationals) { MessageHistoryDTO messageHistoryDTO = MessageHistoryDTO.builder().build(); BeanUtils.copyProperties(messageHistory, messageHistoryDTO); diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/AccountRegisterServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/AccountRegisterServiceImpl.java index eff3e39..9df3f7f 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/AccountRegisterServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/AccountRegisterServiceImpl.java @@ -5,11 +5,10 @@ import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.im.center.common.enums.AccountTypeEnum; import cn.axzo.im.channel.IMChannelProvider; import cn.axzo.im.dao.mapper.AccountRegisterMapper; +import cn.axzo.im.dependency.UnitGateway; 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.orggateway.api.unit.resp.OrgUnitResp; import cn.axzo.pokonyan.dao.converter.PageConverter; import cn.axzo.pokonyan.dao.mysql.QueryWrapperHelper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -38,9 +37,9 @@ public class AccountRegisterServiceImpl extends ServiceImpl page(PageAccountRegisterParam param) { @@ -53,7 +52,7 @@ public class AccountRegisterServiceImpl extends ServiceImpl personProfiles = listUserPersonProfile(param, page.getRecords()); - Map organizationals = listOrganizational(param, page.getRecords()); + Map organizationals = listOrganizational(param, page.getRecords()); return PageConverter.convert(page, (record) -> AccountRegisterDTO.from(record, personProfiles, @@ -94,8 +93,8 @@ public class AccountRegisterServiceImpl extends ServiceImpl e.getId().toString(), Function.identity())); } - private Map listOrganizational(PageAccountRegisterParam param, - List accountRegisters) { + private Map listOrganizational(PageAccountRegisterParam param, + List accountRegisters) { if (CollectionUtils.isEmpty(accountRegisters) || BooleanUtils.isNotTrue(param.isNeedOuInfo())) { return Collections.emptyMap(); } @@ -109,10 +108,6 @@ public class AccountRegisterServiceImpl extends ServiceImpl f)); + return unitGateway.getByOuIdsMapped(ouIds); } } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatGroupServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatGroupServiceImpl.java index d58dfa8..b2f553d 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatGroupServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/ChatGroupServiceImpl.java @@ -60,7 +60,7 @@ import cn.axzo.im.service.OperateLogService; import cn.axzo.im.utils.BizAssertions; import cn.axzo.im.utils.DateFormatUtil; import cn.axzo.im.utils.JobCodeUtils; -import cn.axzo.maokai.api.vo.response.OrganizationalNodeUserVO; +import cn.axzo.orggateway.api.nodeuser.resp.OrganizationalNodeUserDTO; import cn.axzo.tyr.client.common.enums.RoleTypeEnum; import cn.axzo.tyr.client.model.roleuser.dto.SaasRoleUserV2DTO; import cn.hutool.core.bean.BeanUtil; @@ -216,11 +216,11 @@ public class ChatGroupServiceImpl extends ServiceImpl, List> adminWorkerPair = this.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.buildJobCodesByCrowType(req.getCrowType()), req.getCreator()); - List adminSet = adminWorkerPair.getKey(); - List workerSet = adminWorkerPair.getValue(); + Pair, List> adminWorkerPair = this.fetchUsersByWorkspaceOuId(req.getCrowType(), req.getWorkspaceId(), req.getOuId(), this.buildJobCodesByCrowType(req.getCrowType()), req.getCreator()); + List adminSet = adminWorkerPair.getKey(); + List workerSet = adminWorkerPair.getValue(); - Integer chatGroupAdminMemberCount = CollectionUtils.isEmpty(adminSet) ? 0 : adminSet.stream().map(OrganizationalNodeUserVO::getPersonId).collect(Collectors.toSet()).contains(ownerId) ? adminSet.size() : adminSet.size() + 1; + Integer chatGroupAdminMemberCount = CollectionUtils.isEmpty(adminSet) ? 0 : adminSet.stream().map(OrganizationalNodeUserDTO::getPersonId).collect(Collectors.toSet()).contains(ownerId) ? adminSet.size() : adminSet.size() + 1; Integer chatGroupWorkerMemberCount = CollectionUtils.isNotEmpty(workerSet) ? workerSet.size() : 0; if ((chatGroupAdminMemberCount + chatGroupWorkerMemberCount) < 2) { @@ -333,7 +333,7 @@ public class ChatGroupServiceImpl extends ServiceImpl, List> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set jobCodes,Long personId) { + public Pair, List> fetchUsersByWorkspaceOuId(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Set jobCodes,Long personId) { switch (crowType) { case WORKSPACE: - List userListWhenWorkspace = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceIdJobCodes(workspaceId, jobCodes); + List userListWhenWorkspace = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceIdJobCodes(workspaceId, jobCodes); BizAssertions.assertNotEmpty(userListWhenWorkspace, "人群类型是项目时,成员列表为空,项目Id:{},单位Id:{}", workspaceId, ouId); return Pair.of(userListWhenWorkspace, Lists.newArrayList()); case OU: - List userListWhenOuId = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceOuIdJobCodes(workspaceId,ouId,jobCodes); + List userListWhenOuId = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceOuIdJobCodes(workspaceId,ouId,jobCodes); BizAssertions.assertNotEmpty(userListWhenOuId, "人群类型是单位时,成员列表为空,项目Id:{},单位Id:{}", workspaceId, ouId); return Pair.of(userListWhenOuId, Lists.newArrayList()); case TEAM: //获取personId,在workspaceId下项目班组对象,(角色列表:班组长/带班长/小组长/工人) - OrganizationalNodeUserVO projectTeamUser = this.fetchProjectTeamLeaderWorkspacePersonId(workspaceId, personId); + OrganizationalNodeUserDTO projectTeamUser = this.fetchProjectTeamLeaderWorkspacePersonId(workspaceId, personId); //班组长/带班长 - List teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projTeamLeader", "projectTeamManager"), true); - List workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projWorker","projectTeamGPLeader"), false); + List teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projTeamLeader", "projectTeamManager"), true); + List workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,projectTeamUser.getOrganizationalNodeId(), Sets.newHashSet("projWorker","projectTeamGPLeader"), false); return Pair.of(teamerList,workerList); default: throw new ServiceException("人群不存在"); @@ -387,19 +387,19 @@ public class ChatGroupServiceImpl extends ServiceImpl teamOfMembers(Long workspaceId, Long ouId, Long nodeId) { //班组长/带班长 - List teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projTeamLeader", "projectTeamManager"), true); - List workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projWorker","projectTeamGPLeader"), false); + List teamerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projTeamLeader", "projectTeamManager"), true); + List workerList = this.fetchUsersByWorkspaceIdJobCodes(workspaceId, ouId,nodeId, Sets.newHashSet("projWorker","projectTeamGPLeader"), false); Set userAccountRespList = Sets.newHashSet(); if (CollectionUtils.isNotEmpty(teamerList)) { - for (OrganizationalNodeUserVO item : teamerList) { + for (OrganizationalNodeUserDTO item : teamerList) { userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CMP.getCode(), item.getPersonId(), item.getOrganizationalUnitId())); } } if (CollectionUtils.isNotEmpty(workerList)) { - for (OrganizationalNodeUserVO worker : workerList) { + for (OrganizationalNodeUserDTO worker : workerList) { userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CM.getCode(), worker.getPersonId(), worker.getOrganizationalUnitId())); } } @@ -412,15 +412,15 @@ public class ChatGroupServiceImpl extends ServiceImpl projectTeamUserList = this.organizationalNodeUserApiGateway.searchNodeUser( null, workspaceId, Sets.newHashSet(JobCodeUtils.PROJECT_TEAM_LEADER_JOB_CODE), personId, false); + private OrganizationalNodeUserDTO fetchProjectTeamLeaderWorkspacePersonId(Long workspaceId, Long personId) { + List projectTeamUserList = this.organizationalNodeUserApiGateway.searchNodeUser( null, workspaceId, Sets.newHashSet(JobCodeUtils.PROJECT_TEAM_LEADER_JOB_CODE), personId, false); BizAssertions.assertNotEmpty(projectTeamUserList, "人员Id:{}在项目Id:{},不是班组长", personId, workspaceId); return projectTeamUserList.get(0); } - private List fetchUsersByWorkspaceIdJobCodes(Long workspaceId, Long ouId, Long nodeId,Set jobCodes, boolean isAdmin) { - List userListWhenTeamer = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceNodeIdJobCodes(workspaceId, nodeId, jobCodes); + private List fetchUsersByWorkspaceIdJobCodes(Long workspaceId, Long ouId, Long nodeId,Set jobCodes, boolean isAdmin) { + List userListWhenTeamer = organizationalNodeUserApiGateway.fetchNodeUsersByWorkspaceNodeIdJobCodes(workspaceId, nodeId, jobCodes); if (isAdmin) { BizAssertions.assertNotEmpty(userListWhenTeamer, "人群是班组时,{}为空,workspaceId:{},ouId:{}", isAdmin ? "班组长/带班长" : "工人", workspaceId, ouId); } @@ -478,9 +478,9 @@ public class ChatGroupServiceImpl extends ServiceImpl jobResult = Sets.newHashSet(); - List nodeUserVOList = organizationalNodeUserApiGateway.searchNodeUser(null, workspaceId, null, personId, true); + List nodeUserVOList = organizationalNodeUserApiGateway.searchNodeUser(null, workspaceId, null, personId, true); if (CollectionUtils.isNotEmpty(nodeUserVOList)) { - for(OrganizationalNodeUserVO nodeUserVO : nodeUserVOList) { + for(OrganizationalNodeUserDTO nodeUserVO : nodeUserVOList) { if (JobCodeUtils.isProjectManaGpWorkerLeader(nodeUserVO.getOrganizationalJobCode())) { continue; } @@ -733,20 +733,20 @@ public class ChatGroupServiceImpl extends ServiceImpl chatGroupOfMembers(ChatGroupCreateReq.CrowTypeEnum crowType, Long workspaceId, Long ouId, Long creator) { //Pair,key:管理人员集合;value:工人集合 - Pair, List> adminWorkerPair = this.fetchUsersByWorkspaceOuId(crowType, workspaceId, ouId, this.buildJobCodesByCrowType(crowType), creator); - List adminSet = adminWorkerPair.getKey(); - List workerSet = adminWorkerPair.getValue(); + Pair, List> adminWorkerPair = this.fetchUsersByWorkspaceOuId(crowType, workspaceId, ouId, this.buildJobCodesByCrowType(crowType), creator); + List adminSet = adminWorkerPair.getKey(); + List workerSet = adminWorkerPair.getValue(); Set userAccountRespList = Sets.newHashSet(); if (CollectionUtils.isNotEmpty(adminSet)) { - for (OrganizationalNodeUserVO item : adminSet) { + for (OrganizationalNodeUserDTO item : adminSet) { userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CMP.getCode(), item.getPersonId(), item.getOrganizationalUnitId())); } } if (CollectionUtils.isNotEmpty(workerSet)) { - for (OrganizationalNodeUserVO worker : workerSet) { + for (OrganizationalNodeUserDTO worker : workerSet) { userAccountRespList.add(this.registerAccountIfAbsent(AppTypeEnum.CM.getCode(), worker.getPersonId(), worker.getOrganizationalUnitId())); } } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageHistoryServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageHistoryServiceImpl.java index 8c4c735..30a6f29 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageHistoryServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageHistoryServiceImpl.java @@ -10,6 +10,7 @@ import cn.axzo.im.channel.netease.dto.MessageBatchDispatchRequest; import cn.axzo.im.channel.netease.dto.MessageBatchDispatchResponse; import cn.axzo.im.config.MqProducer; import cn.axzo.im.dao.mapper.MessageHistoryMapper; +import cn.axzo.im.dependency.UnitGateway; import cn.axzo.im.entity.HistoryRecordExt; import cn.axzo.im.entity.MessageHistory; import cn.axzo.im.enums.MessageHistoryStatus; @@ -17,9 +18,7 @@ import cn.axzo.im.event.payload.MessageHistoryCreatedPayload; import cn.axzo.im.event.payload.MessageHistoryUpdatedPayload; import cn.axzo.im.service.AccountService; import cn.axzo.im.service.MessageHistoryService; -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.orggateway.api.unit.resp.OrgUnitResp; import cn.axzo.pokonyan.client.RateLimiter; import cn.axzo.pokonyan.client.RateLimiterClient; import cn.axzo.pokonyan.dao.converter.PageConverter; @@ -59,7 +58,7 @@ public class MessageHistoryServiceImpl extends ServiceImpl personProfiles = listReceiveUserPersonProfile(param, page.getRecords()); - Map organizationals = listReceiveOrganizational(param, page.getRecords()); + Map organizationals = listReceiveOrganizational(param, page.getRecords()); return PageConverter.convert(page, (record) -> MessageHistoryDTO.from(record, personProfiles, @@ -318,8 +317,8 @@ public class MessageHistoryServiceImpl extends ServiceImpl e.getId().toString(), Function.identity())); } - private Map listReceiveOrganizational(PageMessageHistoryParam param, - List messageHistories) { + private Map listReceiveOrganizational(PageMessageHistoryParam param, + List messageHistories) { if (CollectionUtils.isEmpty(messageHistories) || BooleanUtils.isNotTrue(param.isNeedReceiveOuInfo())) { return Collections.emptyMap(); } @@ -333,14 +332,7 @@ public class MessageHistoryServiceImpl extends ServiceImpl f)); + return unitGateway.getByOuIdsMapped(ouIds); } diff --git a/im-center-server/src/main/java/cn/axzo/im/utils/BizAssertions.java b/im-center-server/src/main/java/cn/axzo/im/utils/BizAssertions.java index a5a87c9..069de1f 100644 --- a/im-center-server/src/main/java/cn/axzo/im/utils/BizAssertions.java +++ b/im-center-server/src/main/java/cn/axzo/im/utils/BizAssertions.java @@ -139,4 +139,22 @@ public class BizAssertions { return response.getData(); } + + public static T assertResponse(cn.axzo.foundation.result.ApiResult response) { + return assertResponse(response, "error resp={}", JSON.toJSONString(response)); + } + + public static T assertResponse(cn.axzo.foundation.result.ApiResult response, String message, Object... args) { + if (!response.isSuccess()) { + String finalMsg = MessageFormatter.arrayFormat(message, args).getMessage(); + if (StringUtils.isNotBlank(response.getMsg())) { + finalMsg += ": " + response.getMsg(); + } + ServiceException e = new ServiceException(finalMsg); + log.warn("remote call response with error. response={}", JSON.toJSONString(response), e); + throw e; + } + return response.getData(); + } + } \ No newline at end of file