REQ-3345: 即刻生成聊天消息的history
This commit is contained in:
parent
0b15bcd3a2
commit
8be8cc4dae
@ -39,7 +39,6 @@ import cn.axzo.im.service.MessageTaskService;
|
||||
import cn.axzo.im.service.RobotMsgTemplateService;
|
||||
import cn.axzo.im.updatable.UpdatableMessageManager;
|
||||
import cn.axzo.im.updatable.UpdatableMessageQueryService;
|
||||
import cn.axzo.im.updatable.UpdateSupport;
|
||||
import cn.axzo.im.utils.BizAssertions;
|
||||
import cn.axzo.pokonyan.exception.Aassert;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@ -56,6 +55,7 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@ -99,9 +99,9 @@ public class MessageController implements MessageApi {
|
||||
@Autowired
|
||||
private UpdatableMessageManager updatableMessageManager;
|
||||
@Autowired
|
||||
private UpdateSupport updateSupport;
|
||||
@Autowired
|
||||
private UpdatableMessageQueryService updatableMessageQueryService;
|
||||
@Autowired
|
||||
private TransactionTemplate transactionTemplate;
|
||||
|
||||
|
||||
@Override
|
||||
@ -247,6 +247,7 @@ public class MessageController implements MessageApi {
|
||||
MessageTask.BizData bizData = MessageTask.BizData.builder()
|
||||
.messageBody(JSON.toJSONString(request.getMessageBody()))
|
||||
.isSenderRobot(false)
|
||||
.isChatMessage(true)
|
||||
.senderPersonId(request.determineSenderPersonId())
|
||||
.nimMessageType(request.getMessageType())
|
||||
.build();
|
||||
@ -262,7 +263,8 @@ public class MessageController implements MessageApi {
|
||||
.build());
|
||||
}
|
||||
}
|
||||
MessageTask messageTask = messageTaskService.create(MessageTask.builder()
|
||||
MessageTask messageTask = transactionTemplate.execute(unused -> {
|
||||
MessageTask task = messageTaskService.create(MessageTask.builder()
|
||||
.bizId(request.getBizId())
|
||||
.sendImAccount(sendImAccount)
|
||||
.receivePersons(receivePersons)
|
||||
@ -273,6 +275,11 @@ public class MessageController implements MessageApi {
|
||||
.sendPriority(SendPriority.CHAT_MESSAGE.getPriority())
|
||||
.apiChannel(ApiChannel.COMMON_MESSAGE)
|
||||
.build());
|
||||
task = messageTaskService.getById(task.getId());
|
||||
messageTaskService.createMessageHistory(task);
|
||||
return task;
|
||||
});
|
||||
//noinspection DataFlowIssue
|
||||
return ApiResult.ok(messageTask.getId());
|
||||
}
|
||||
|
||||
|
||||
@ -170,6 +170,8 @@ public class MessageTask {
|
||||
|
||||
private NimMessageType nimMessageType;
|
||||
|
||||
private boolean isChatMessage;
|
||||
|
||||
public boolean determineIsSenderRobot() {
|
||||
return isSenderRobot != null && isSenderRobot;
|
||||
}
|
||||
|
||||
@ -59,6 +59,9 @@ public class CreateMessageHistoryJob extends IJobHandler {
|
||||
Page<MessageTask> page = messageTaskService.page(req);
|
||||
if (CollectionUtils.isNotEmpty(page.getRecords())) {
|
||||
page.getRecords().forEach(messageTask -> {
|
||||
MessageTask.BizData bizData = messageTask.getBizData();
|
||||
if (bizData != null && bizData.isChatMessage())
|
||||
return;
|
||||
count.set(count.get() + 1);
|
||||
try {
|
||||
messageTaskService.createMessageHistory(messageTask);
|
||||
|
||||
@ -45,6 +45,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user