diff --git a/im-center-server/src/main/java/cn/axzo/im/entity/MessageTask.java b/im-center-server/src/main/java/cn/axzo/im/entity/MessageTask.java index 910fa53..c61d264 100644 --- a/im-center-server/src/main/java/cn/axzo/im/entity/MessageTask.java +++ b/im-center-server/src/main/java/cn/axzo/im/entity/MessageTask.java @@ -4,6 +4,8 @@ import cn.axzo.im.center.api.vo.req.SendMessageParam; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.im.center.common.enums.BizTypeEnum; import cn.axzo.im.config.BaseListTypeHandler; +import cn.axzo.maokai.api.client.OrganizationalTeamOuRelationApi; +import cn.axzo.maokai.api.vo.response.OrganizationalTeamOuRelationResp; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -24,6 +26,7 @@ import org.springframework.cglib.beans.BeanMap; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Optional; import static cn.axzo.im.config.BizResultCode.MESSAGE_TASK_STATUS_ERROR; @@ -185,7 +188,7 @@ public class MessageTask { private Long workspaceId; - public String buildKey() { + public String buildKey(Map ouIdMap) { if (StringUtils.isNotBlank(this.getImAccount())) { return this.getImAccount(); } @@ -195,7 +198,7 @@ public class MessageTask { return this.getPersonId() + "_" + this.getAppType().getCode(); } - return this.getPersonId() + "_" + this.getAppType().getCode() + "_" + this.getOuId(); + return this.getPersonId() + "_" + this.getAppType().getCode() + "_" + ouIdMap.getOrDefault(this.getOuId(), this.getOuId()); } } diff --git a/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageTaskServiceImpl.java b/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageTaskServiceImpl.java index 884938d..5d44e5e 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageTaskServiceImpl.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/impl/MessageTaskServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.im.service.impl; +import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.im.center.api.vo.req.SendMessageParam; import cn.axzo.im.center.common.enums.AccountTypeEnum; import cn.axzo.im.center.common.enums.AppTypeEnum; @@ -13,6 +14,9 @@ import cn.axzo.im.entity.MessageTask; import cn.axzo.im.service.AccountRegisterService; import cn.axzo.im.service.MessageHistoryService; import cn.axzo.im.service.MessageTaskService; +import cn.axzo.maokai.api.client.OrganizationalTeamOuRelationApi; +import cn.axzo.maokai.api.vo.request.OrganizationalTeamOuRelationReq; +import cn.axzo.maokai.api.vo.response.OrganizationalTeamOuRelationResp; import cn.axzo.pokonyan.dao.converter.PageConverter; import cn.axzo.pokonyan.dao.mysql.QueryWrapperHelper; import cn.axzo.pokonyan.exception.Aassert; @@ -54,6 +58,8 @@ public class MessageTaskServiceImpl extends ServiceImpl existPersons = listExistPerson(receivePersons, messageTask); Set existImAccounts = listExistImAccount(receivePersons, messageTask); + Map ouIdMap = resolveOuId(receivePersons.stream() + .map(MessageTask.ReceivePerson::getOuId) + .filter(Objects::nonNull) + .collect(Collectors.toSet())); + List absentReceivePersons = receivePersons.stream() .filter(e -> { - String key = e.buildKey(); + String key = e.buildKey(ouIdMap); return !existPersons.contains(key) && !existImAccounts.contains(key); }) .collect(Collectors.toList()); @@ -170,12 +181,16 @@ public class MessageTaskServiceImpl extends ServiceImpl imAccounts = listImAccount(absentReceivePersons); List messageHistories = absentReceivePersons.stream() - .map(receivePerson -> resolveMessageHistory(messageTask, receivePerson, imAccounts, accountRegisters)) + .map(receivePerson -> resolveMessageHistory(messageTask, receivePerson, imAccounts, accountRegisters, ouIdMap)) .collect(Collectors.toList()); messageHistoryService.createBatch(messageHistories); } - private MessageHistory resolveMessageHistory(MessageTask messageTask, MessageTask.ReceivePerson receivePerson, Map imAccounts, Map accountRegisters) { + private MessageHistory resolveMessageHistory(MessageTask messageTask, + MessageTask.ReceivePerson receivePerson, + Map imAccounts, + Map accountRegisters, + Map ouIdMap) { MessageHistory messageHistory = new MessageHistory(); messageHistory.setBizId(Optional.ofNullable(messageTask.getBizId()).orElseGet(() -> messageTask.getId().toString())); messageHistory.setImMessageTaskId(messageTask.getId()); @@ -198,9 +213,9 @@ public class MessageTaskServiceImpl extends ServiceImpl resolveOuId(Set ouIds) { + if (CollectionUtils.isEmpty(ouIds)) { + return Collections.emptyMap(); + } + + OrganizationalTeamOuRelationReq organizationalTeamOuRelationReq = new OrganizationalTeamOuRelationReq(); + organizationalTeamOuRelationReq.setTeamOuIds(ouIds); + List ouRelationResps = organizationalTeamOuRelationApi.relationListByParam(organizationalTeamOuRelationReq).getData(); + + return ouRelationResps.stream() + .collect(Collectors.toMap(OrganizationalTeamOuRelationResp::getTeamOuId, OrganizationalTeamOuRelationResp::getOuId, (f, s) -> f)); + } }