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.AppTypeEnum;
|
||||||
import cn.axzo.im.center.common.enums.BizTypeEnum;
|
import cn.axzo.im.center.common.enums.BizTypeEnum;
|
||||||
import cn.axzo.im.config.BaseListTypeHandler;
|
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.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
@ -24,6 +26,7 @@ import org.springframework.cglib.beans.BeanMap;
|
|||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static cn.axzo.im.config.BizResultCode.MESSAGE_TASK_STATUS_ERROR;
|
import static cn.axzo.im.config.BizResultCode.MESSAGE_TASK_STATUS_ERROR;
|
||||||
@ -185,7 +188,7 @@ public class MessageTask {
|
|||||||
|
|
||||||
private Long workspaceId;
|
private Long workspaceId;
|
||||||
|
|
||||||
public String buildKey() {
|
public String buildKey(Map<Long, Long> ouIdMap) {
|
||||||
if (StringUtils.isNotBlank(this.getImAccount())) {
|
if (StringUtils.isNotBlank(this.getImAccount())) {
|
||||||
return this.getImAccount();
|
return this.getImAccount();
|
||||||
}
|
}
|
||||||
@ -195,7 +198,7 @@ public class MessageTask {
|
|||||||
return this.getPersonId() + "_" + this.getAppType().getCode();
|
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;
|
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.api.vo.req.SendMessageParam;
|
||||||
import cn.axzo.im.center.common.enums.AccountTypeEnum;
|
import cn.axzo.im.center.common.enums.AccountTypeEnum;
|
||||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
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.AccountRegisterService;
|
||||||
import cn.axzo.im.service.MessageHistoryService;
|
import cn.axzo.im.service.MessageHistoryService;
|
||||||
import cn.axzo.im.service.MessageTaskService;
|
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.converter.PageConverter;
|
||||||
import cn.axzo.pokonyan.dao.mysql.QueryWrapperHelper;
|
import cn.axzo.pokonyan.dao.mysql.QueryWrapperHelper;
|
||||||
import cn.axzo.pokonyan.exception.Aassert;
|
import cn.axzo.pokonyan.exception.Aassert;
|
||||||
@ -54,6 +58,8 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
|||||||
private AccountRegisterService accountRegisterService;
|
private AccountRegisterService accountRegisterService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageHistoryService messageHistoryService;
|
private MessageHistoryService messageHistoryService;
|
||||||
|
@Autowired
|
||||||
|
private OrganizationalTeamOuRelationApi organizationalTeamOuRelationApi;
|
||||||
|
|
||||||
private static final Integer DEFAULT_PAGE_SIZE = 500;
|
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> existPersons = listExistPerson(receivePersons, messageTask);
|
||||||
Set<String> existImAccounts = listExistImAccount(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()
|
List<MessageTask.ReceivePerson> absentReceivePersons = receivePersons.stream()
|
||||||
.filter(e -> {
|
.filter(e -> {
|
||||||
String key = e.buildKey();
|
String key = e.buildKey(ouIdMap);
|
||||||
return !existPersons.contains(key) && !existImAccounts.contains(key);
|
return !existPersons.contains(key) && !existImAccounts.contains(key);
|
||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@ -170,12 +181,16 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
|||||||
Map<String, AccountRegisterService.AccountRegisterDTO> imAccounts = listImAccount(absentReceivePersons);
|
Map<String, AccountRegisterService.AccountRegisterDTO> imAccounts = listImAccount(absentReceivePersons);
|
||||||
|
|
||||||
List<MessageHistory> messageHistories = absentReceivePersons.stream()
|
List<MessageHistory> messageHistories = absentReceivePersons.stream()
|
||||||
.map(receivePerson -> resolveMessageHistory(messageTask, receivePerson, imAccounts, accountRegisters))
|
.map(receivePerson -> resolveMessageHistory(messageTask, receivePerson, imAccounts, accountRegisters, ouIdMap))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
messageHistoryService.createBatch(messageHistories);
|
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 messageHistory = new MessageHistory();
|
||||||
messageHistory.setBizId(Optional.ofNullable(messageTask.getBizId()).orElseGet(() -> messageTask.getId().toString()));
|
messageHistory.setBizId(Optional.ofNullable(messageTask.getBizId()).orElseGet(() -> messageTask.getId().toString()));
|
||||||
messageHistory.setImMessageTaskId(messageTask.getId());
|
messageHistory.setImMessageTaskId(messageTask.getId());
|
||||||
@ -198,9 +213,9 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
|||||||
messageHistory.setToAccount(receivePerson.getImAccount());
|
messageHistory.setToAccount(receivePerson.getImAccount());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String key = receivePerson.buildKey();
|
String key = receivePerson.buildKey(ouIdMap);
|
||||||
String imAccount = accountRegisters.get(key);
|
String imAccount = accountRegisters.get(key);
|
||||||
messageHistory.setReceiveOuId(receivePerson.getOuId());
|
messageHistory.setReceiveOuId(ouIdMap.getOrDefault(receivePerson.getOuId(), receivePerson.getOuId()));
|
||||||
messageHistory.setReceivePersonId(receivePerson.getPersonId());
|
messageHistory.setReceivePersonId(receivePerson.getPersonId());
|
||||||
messageHistory.setAppType(receivePerson.getAppType().getCode());
|
messageHistory.setAppType(receivePerson.getAppType().getCode());
|
||||||
messageHistory.setToAccount(imAccount);
|
messageHistory.setToAccount(imAccount);
|
||||||
@ -352,4 +367,23 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
|||||||
|
|
||||||
return JSONUtil.toJsonStr(messageBody);
|
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