REQ-3057-card: a lot of staff
This commit is contained in:
parent
3d87939570
commit
e25f075061
@ -1,6 +1,6 @@
|
||||
package cn.axzo.im.center.api.vo;
|
||||
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.im.center.common.enums.ImClientAppType;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@ -41,6 +41,6 @@ public class PersonAccountAttribute {
|
||||
* @See cn.axzo.im.center.common.enums.AppTypeEnum
|
||||
*/
|
||||
@NotNull(message = "appType不能为空")
|
||||
private AppTypeEnum appType;
|
||||
private ImClientAppType appType;
|
||||
|
||||
}
|
||||
|
||||
@ -21,6 +21,11 @@ import java.util.Set;
|
||||
@AllArgsConstructor
|
||||
public class SendTemplateMessageParam {
|
||||
|
||||
/**
|
||||
* 发送人
|
||||
*/
|
||||
private PersonAccountAttribute sender;
|
||||
|
||||
/**
|
||||
* 消息接收用户信息
|
||||
*/
|
||||
@ -66,7 +71,7 @@ public class SendTemplateMessageParam {
|
||||
|
||||
private TemplatedMsgType templatedMsgType = TemplatedMsgType.TEMPLATE;
|
||||
|
||||
private String updatableRefTemplateId;
|
||||
private String refTemplateId;
|
||||
|
||||
public boolean isUpdatable() {
|
||||
return templatedMsgType.isUpdatable();
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
package cn.axzo.im.center.common.enums;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public enum ImClientAppType {
|
||||
|
||||
/**
|
||||
* 工人端
|
||||
*/
|
||||
CM,
|
||||
/**
|
||||
* 企业管理端
|
||||
*/
|
||||
CMP;
|
||||
|
||||
public static ImClientAppType fromNimAppType(AppTypeEnum appType) {
|
||||
if (appType == null)
|
||||
return null;
|
||||
if (appType == AppTypeEnum.CM)
|
||||
return CM;
|
||||
if (appType == AppTypeEnum.CMP)
|
||||
return CMP;
|
||||
throw new UnsupportedOperationException("Should never happen!");
|
||||
}
|
||||
|
||||
public AppTypeEnum toNimAppType() {
|
||||
if (this == CM)
|
||||
return AppTypeEnum.CM;
|
||||
if (this == CMP)
|
||||
return AppTypeEnum.CMP;
|
||||
throw new UnsupportedOperationException("Should never happen!");
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,8 @@ import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.im.center.api.feign.MessageApi;
|
||||
import cn.axzo.im.center.api.feign.SendPriority;
|
||||
import cn.axzo.im.center.api.vo.ApiChannel;
|
||||
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
||||
import cn.axzo.im.center.api.vo.req.AccountAbsentQuery;
|
||||
import cn.axzo.im.center.api.vo.req.AccountQuery;
|
||||
import cn.axzo.im.center.api.vo.req.AsyncSendMessageParam;
|
||||
import cn.axzo.im.center.api.vo.req.CustomMessageInfo;
|
||||
@ -164,35 +166,47 @@ public class MessageController implements MessageApi {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ApiResult<MessageTaskResp> sendTemplateMessageAsync(SendTemplateMessageParam sendMessageParam) {
|
||||
String sendImAccount = check(sendMessageParam);
|
||||
public ApiResult<MessageTaskResp> sendTemplateMessageAsync(SendTemplateMessageParam request) {
|
||||
PersonAccountAttribute sender = request.getSender();
|
||||
String sendImAccount;
|
||||
if (sender != null) {
|
||||
AccountAbsentQuery accountQuery = new AccountAbsentQuery();
|
||||
accountQuery.setAppType(sender.getAppType().toNimAppType().getCode());
|
||||
accountQuery.setPersonId(sender.getPersonId());
|
||||
accountQuery.setOuId(sender.getOuId());
|
||||
List<UserAccountResp> accounts = accountService.registerAccountIfAbsent(accountQuery);
|
||||
sendImAccount = accounts.get(0).getImAccount();
|
||||
} else {
|
||||
sendImAccount = check(request);
|
||||
}
|
||||
|
||||
MessageTask.BizData bizData = MessageTask.BizData.builder()
|
||||
.msgTemplateContent(sendMessageParam.getMsgTemplateContent())
|
||||
.msgTemplateId(sendMessageParam.getMsgTemplateId())
|
||||
.templatedMsgType(sendMessageParam.getTemplatedMsgType())
|
||||
.msgTemplateContent(request.getMsgTemplateContent())
|
||||
.msgTemplateId(request.getMsgTemplateId())
|
||||
.templatedMsgType(request.getTemplatedMsgType())
|
||||
.isSenderRobot(request.getSender() == null)
|
||||
.build();
|
||||
Date now = new Date();
|
||||
List<MessageTask.ReceivePerson> receivePersons = JSONArray.parseArray(
|
||||
JSONObject.toJSONString(sendMessageParam.uniqueReceivePersons()), MessageTask.ReceivePerson.class);
|
||||
JSONObject.toJSONString(request.uniqueReceivePersons()), MessageTask.ReceivePerson.class);
|
||||
MessageTask messageTask = messageTaskService.create(MessageTask.builder()
|
||||
.bizId(sendMessageParam.getBizId())
|
||||
.bizId(request.getBizId())
|
||||
.sendImAccount(sendImAccount)
|
||||
.receivePersons(receivePersons)
|
||||
.status(MessageTaskStatus.PENDING)
|
||||
.title(sendMessageParam.getMsgHeader())
|
||||
.content(sendMessageParam.getMsgContent())
|
||||
.title(request.getMsgHeader())
|
||||
.content(request.getMsgContent())
|
||||
.bizData(bizData)
|
||||
.ext(sendMessageParam.getExt())
|
||||
.ext(request.getExt())
|
||||
.planStartTime(now)
|
||||
.createAt(now)
|
||||
.sendPriority(SendPriority.TEMPLATE_MESSAGE
|
||||
.determinePriority(sendMessageParam.getSendPriority()))
|
||||
.determinePriority(request.getSendPriority()))
|
||||
.apiChannel(ApiChannel.COMMON_MESSAGE)
|
||||
.build());
|
||||
List<UpdatableMessageSendResult> updatableMessageSendResults = Collections.emptyList();
|
||||
if (sendMessageParam.isUpdatable()) {
|
||||
updatableMessageSendResults = updatableMessageManager.createUpdatableMessage(messageTask, sendMessageParam, receivePersons);
|
||||
if (request.isUpdatable()) {
|
||||
updatableMessageSendResults = updatableMessageManager.createUpdatableMessage(messageTask, request, receivePersons);
|
||||
}
|
||||
MessageTaskResp messageTaskResp = toMessageTaskResp(messageTask);
|
||||
messageTaskResp.setUpdatableMessageSendResults(updatableMessageSendResults);
|
||||
|
||||
@ -7,6 +7,7 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class HistoryRecordExt {
|
||||
private Boolean isSenderRobot;
|
||||
private String sendApi;
|
||||
private String sendRespDesc;
|
||||
private String batchSendId;
|
||||
|
||||
@ -157,6 +157,8 @@ public class MessageTask {
|
||||
*/
|
||||
private List<AppTypeEnum> appTypes;
|
||||
|
||||
private Boolean isSenderRobot;
|
||||
|
||||
public TemplatedMsgType determineTemplatedMsgType() {
|
||||
return templatedMsgType == null ? TemplatedMsgType.TEMPLATE : templatedMsgType;
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ package cn.axzo.im.entity;
|
||||
|
||||
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
||||
import cn.axzo.im.center.api.vo.req.MessageUpdateInfo;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.im.center.common.enums.ImClientAppType;
|
||||
import cn.axzo.im.center.common.enums.TemplatedMsgType;
|
||||
import cn.axzo.im.enums.UpdatableMessageState;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -32,7 +32,7 @@ public class UpdatableMessage implements MessageUpdateInfo {
|
||||
private String toAccount;
|
||||
private String receiverPersonId;
|
||||
private Long receiverOuId;
|
||||
private AppTypeEnum appType;
|
||||
private ImClientAppType appType;
|
||||
private TemplatedMsgType msgType;
|
||||
private UpdatableMessageState state;
|
||||
private String bizMessageId;
|
||||
|
||||
@ -7,6 +7,7 @@ import cn.axzo.im.channel.IMChannelProvider;
|
||||
import cn.axzo.im.channel.netease.dto.MessageBody;
|
||||
import cn.axzo.im.dao.mapper.MessageTaskMapper;
|
||||
import cn.axzo.im.entity.AccountRegister;
|
||||
import cn.axzo.im.entity.HistoryRecordExt;
|
||||
import cn.axzo.im.entity.MessageHistory;
|
||||
import cn.axzo.im.entity.MessageTask;
|
||||
import cn.axzo.im.enums.MessageHistoryStatus;
|
||||
@ -240,9 +241,13 @@ public class MessageTaskServiceImpl extends ServiceImpl<MessageTaskMapper, Messa
|
||||
messageHistory.setToAccount("");
|
||||
messageHistory.setResult(AccountService.NO_IM_ACCOUNT_MESSAGE);
|
||||
messageHistory.setStatus(MessageHistoryStatus.FAILED);
|
||||
messageHistory.getRecordExt().setImAccountInfo(key);
|
||||
messageHistory.getOrCreateRecordExt().setImAccountInfo(key);
|
||||
}
|
||||
}
|
||||
MessageTask.BizData bizData = messageTask.getBizData();
|
||||
if (bizData != null) {
|
||||
messageHistory.getOrCreateRecordExt().setIsSenderRobot(bizData.getIsSenderRobot());
|
||||
}
|
||||
messageHistory.setMessageBody(resolveBody(receivePerson, messageTask, messageHistory.getAppType()));
|
||||
return messageHistory;
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.im.updatable;
|
||||
import cn.axzo.basics.common.constant.enums.CodeDefinition;
|
||||
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.im.center.common.enums.ImClientAppType;
|
||||
import cn.axzo.im.entity.MessageHistory;
|
||||
import cn.axzo.im.entity.UpdatableMessage;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -35,8 +36,9 @@ class InitHistories {
|
||||
PersonAccountAttribute person = new PersonAccountAttribute();
|
||||
person.setPersonId(history.getReceivePersonId());
|
||||
person.setOuId(history.getReceiveOuId());
|
||||
person.setAppType(CodeDefinition.findByCode(
|
||||
AppTypeEnum.class, history.getAppType()).orElse(null));
|
||||
AppTypeEnum appType = CodeDefinition.findByCode(
|
||||
AppTypeEnum.class, history.getAppType()).orElse(null);
|
||||
person.setAppType(ImClientAppType.fromNimAppType(appType));
|
||||
return new HistoryTaskAccount(history.getImMessageTaskId(), person);
|
||||
}, identity(), (oldValue, newValue) -> oldValue));
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import cn.axzo.im.center.api.vo.req.UpdateMessageRequest;
|
||||
import cn.axzo.im.center.api.vo.resp.MessageUpdateResponse;
|
||||
import cn.axzo.im.center.api.vo.resp.MessageUpdateResponse.NonUpdateMessageReason;
|
||||
import cn.axzo.im.center.api.vo.resp.UpdatableMessageSendResult;
|
||||
import cn.axzo.im.center.common.enums.ImClientAppType;
|
||||
import cn.axzo.im.channel.netease.dto.MessageBody;
|
||||
import cn.axzo.im.dao.repository.MessageHistoryDao;
|
||||
import cn.axzo.im.dao.repository.UpdatableMessageDao;
|
||||
@ -79,12 +80,12 @@ public class UpdatableMessageManager {
|
||||
collector.addMessage(message);
|
||||
message.setBatchNo(batchNo);
|
||||
message.setTemplateId(request.getMsgTemplateId());
|
||||
message.setRefTemplateId(request.getUpdatableRefTemplateId());
|
||||
message.setRefTemplateId(request.getRefTemplateId());
|
||||
message.setBizId(request.getBizId());
|
||||
message.setTaskId(task.getId());
|
||||
message.setReceiverPersonId(person.getPersonId());
|
||||
message.setReceiverOuId(person.getOuId());
|
||||
message.setAppType(person.getAppType());
|
||||
message.setAppType(ImClientAppType.fromNimAppType(person.getAppType()));
|
||||
message.setMsgType(request.getTemplatedMsgType());
|
||||
message.setState(UpdatableMessageState.TASK_CREATED);
|
||||
message.setBizMessageId(UUIDUtil.uuidString());
|
||||
|
||||
@ -69,7 +69,7 @@ public class UpdateSupport {
|
||||
history.setBizId(message.getBizId());
|
||||
history.setFromAccount(message.getFromAccount());
|
||||
history.setToAccount(message.getToAccount());
|
||||
history.setAppType(message.getAppType().getCode());
|
||||
history.setAppType(message.getAppType().toNimAppType().getCode());
|
||||
history.setChannel(imChannel.getProviderType());
|
||||
MessageCustomBody messageBody = new MessageCustomBody();
|
||||
messageBody.setToImAccount(message.getToAccount());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user