feat:feature-REQ/2129 修改发送cmp用户时,根据ouId解析正确的ouId,因为有班组需要转成企业ouId去发送
This commit is contained in:
parent
593aeb6899
commit
907e50f0c0
@ -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<Long, Long> 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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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<MessageTaskMapper, Messa
|
||||
private AccountRegisterService accountRegisterService;
|
||||
@Autowired
|
||||
private MessageHistoryService messageHistoryService;
|
||||
@Autowired
|
||||
private OrganizationalTeamOuRelationApi organizationalTeamOuRelationApi;
|
||||
|
||||
private static final Integer DEFAULT_PAGE_SIZE = 500;
|
||||
|
||||
@ -152,9 +158,14 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
||||
Set<String> existPersons = listExistPerson(receivePersons, messageTask);
|
||||
Set<String> existImAccounts = listExistImAccount(receivePersons, messageTask);
|
||||
|
||||
Map<Long, Long> ouIdMap = resolveOuId(receivePersons.stream()
|
||||
.map(MessageTask.ReceivePerson::getOuId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet()));
|
||||
|
||||
List<MessageTask.ReceivePerson> 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<MessageTaskMapper, Messa
|
||||
Map<String, AccountRegisterService.AccountRegisterDTO> imAccounts = listImAccount(absentReceivePersons);
|
||||
|
||||
List<MessageHistory> 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<String, AccountRegisterService.AccountRegisterDTO> imAccounts, Map<String, String> accountRegisters) {
|
||||
private MessageHistory resolveMessageHistory(MessageTask messageTask,
|
||||
MessageTask.ReceivePerson receivePerson,
|
||||
Map<String, AccountRegisterService.AccountRegisterDTO> imAccounts,
|
||||
Map<String, String> accountRegisters,
|
||||
Map<Long, Long> 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<MessageTaskMapper, Messa
|
||||
messageHistory.setToAccount(receivePerson.getImAccount());
|
||||
}
|
||||
} else {
|
||||
String key = receivePerson.buildKey();
|
||||
String key = receivePerson.buildKey(ouIdMap);
|
||||
String imAccount = accountRegisters.get(key);
|
||||
messageHistory.setReceiveOuId(receivePerson.getOuId());
|
||||
messageHistory.setReceiveOuId(ouIdMap.getOrDefault(receivePerson.getOuId(), receivePerson.getOuId()));
|
||||
messageHistory.setReceivePersonId(receivePerson.getPersonId());
|
||||
messageHistory.setAppType(receivePerson.getAppType().getCode());
|
||||
messageHistory.setToAccount(imAccount);
|
||||
@ -352,4 +367,23 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
||||
|
||||
return JSONUtil.toJsonStr(messageBody);
|
||||
}
|
||||
|
||||
/**
|
||||
* 需要根据接收方的ouId转成真正的ouId,因为平台班组的需要转企业团队的ouId
|
||||
* 特殊逻辑
|
||||
* @param ouIds
|
||||
* @return
|
||||
*/
|
||||
private Map<Long, Long> resolveOuId(Set<Long> ouIds) {
|
||||
if (CollectionUtils.isEmpty(ouIds)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
OrganizationalTeamOuRelationReq organizationalTeamOuRelationReq = new OrganizationalTeamOuRelationReq();
|
||||
organizationalTeamOuRelationReq.setTeamOuIds(ouIds);
|
||||
List<OrganizationalTeamOuRelationResp> ouRelationResps = organizationalTeamOuRelationApi.relationListByParam(organizationalTeamOuRelationReq).getData();
|
||||
|
||||
return ouRelationResps.stream()
|
||||
.collect(Collectors.toMap(OrganizationalTeamOuRelationResp::getTeamOuId, OrganizationalTeamOuRelationResp::getOuId, (f, s) -> f));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user