Commit 344d2d5e by Future

添加消息链

parent 4ec6121e
......@@ -29,7 +29,7 @@ spring:
redis:
database: 0
host: 127.0.0.1
password:
# password:
port: 6379
# database: 0
......
......@@ -164,6 +164,13 @@
<version>4.0.0</version>
</dependency>
<!-- 注解版分布式锁 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-redisson-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
<!-- <build>-->
<!-- <resources>-->
......
......@@ -185,7 +185,7 @@ public class NormalChatAction {
}
// 响应发送方消息id等信息
response(reqId, imMessageOnlineSend.getMsgId(), request.getSenderChannel());
response(reqId, imMessageOnlineSend, request.getSenderChannel());
}
private void sendMsgToMember(ImApplication imApplication, ImConversationMembers member, ImMessageOnlineSend imMessageOnlineSend, PushVO push, Boolean isPush) {
......@@ -235,6 +235,7 @@ public class NormalChatAction {
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(imMessage.getId());
imMessageOnlineSend.setPreMessageId(imMessage.getPreMessageId());
imMessageOnlineSend.setSender(imClientSender.getClientId());
Map<String, Object> content = JsonUtils.beanCopyDeep(data, Map.class);
//action的属性无需要返回
......@@ -255,16 +256,16 @@ public class NormalChatAction {
* 响应发送方消息id等信息
*
* @param reqId
* @param messageId
* @param imMessageOnlineSend
* @param channel
*/
private void response(String reqId, long messageId, Channel channel) {
private void response(String reqId, ImMessageOnlineSend imMessageOnlineSend, Channel channel) {
WsResponse<MsgVo> responseModel = new WsResponse<>();
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCmd(WsResponseCmdEnum.RES.getCmdCode());
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(new MsgVo(messageId));
responseModel.setData(new MsgVo(imMessageOnlineSend.getMsgId(), imMessageOnlineSend.getPreMessageId(), imMessageOnlineSend.getCreateTime()));
responseModel.setReqId(reqId);
// 响应发送方
channelSender.sendMsgLocal((NioSocketChannel) channel, responseModel);
......
......@@ -154,7 +154,7 @@ public class ChatRoomAction {
responseModel.setCmd(WsResponseCmdEnum.RES.getCmdCode());
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(new MsgVo(messageId));
responseModel.setData(new MsgVo(messageId, null, new Date()));
responseModel.setReqId(reqId);
// 响应发送方
channelSender.sendMsgLocal((NioSocketChannel) channel, responseModel);
......
......@@ -35,6 +35,9 @@ public class ImMessageOnlineSend extends BaseEntity {
@ApiModelProperty("消息id")
private Long msgId;
@ApiModelProperty("前一条消息的id")
private Long preMessageId;
@ApiModelProperty("创建时间")
private Date createTime;
......
......@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @Description TODO
......@@ -16,5 +17,16 @@ import java.io.Serializable;
@AllArgsConstructor
@NoArgsConstructor
public class MsgVo implements Serializable {
private Long msgId;
/**
* 上一条消息id
*/
private Long preMessageId;
/**
* 消息创建时间
*/
private Date createTime;
}
......@@ -42,7 +42,8 @@ public class Couriers {
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(message.getId());
imMessageOnlineSend.setCreateTime(new Date());
imMessageOnlineSend.setPreMessageId(message.getPreMessageId());
imMessageOnlineSend.setCreateTime(message.getCreateTime());
imMessageOnlineSend.setType(message.getMsgType());
imMessageOnlineSend.setSender(sender.getClientId());
imMessageOnlineSend.setContent(content);
......
......@@ -54,16 +54,13 @@ public class MessageBuilder {
* @param type
* @param application
* @param sender
* @param receiver
* @Return
*/
public static ImMessage buildEventMessage(MsgTypeEnum type, ImApplication application,
ImClient sender, ImConversation conversation,
String content) {
long messageId = SnowflakeUtil.getId();
ImMessage imMessage = new ImMessage();
// 保存消息至消息表
imMessage.setId(messageId);
imMessage.setMsgType(type.getUriCode());
imMessage.setFkAppid(application.getId());
imMessage.setSender(sender.getId());
......@@ -73,7 +70,6 @@ public class MessageBuilder {
imMessage.setSystemFlag(false);
imMessage.setSendStatus(2);
imMessage.setFkConversationId(conversation.getId());
imMessage.setCreateTime(new Date());
return imMessage;
}
......
......@@ -47,10 +47,6 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/
ApiResult<Boolean> restApiImMessageSend(ImMsgSendToOnlineClient imMsgSendToOnlineClient, ImApplication imApplication);
ImMessage saveImMessage(ImApplication imApplication, ImClient imClientSender, long messageId, ReceiveVO receiveVO, ReceiveDataVO sysParam);
@Transactional(rollbackFor = Exception.class)
ImMessage saveImMessage(ImClientSimpleDto client, ChatContentVo data);
......@@ -188,4 +184,11 @@ public interface ImMessageService extends BaseService<ImMessage> {
* @Return
*/
Boolean singleUserNotification(SingleUserNotificationParam param);
/**
* 保存消息到数据库
* @param imMessage
*/
void saveMessageToDb(ImMessage imMessage);
}
......@@ -139,7 +139,7 @@ public class ThousandChatAction {
}
// 响应发送方消息id等信息
response(reqId, imMessageOnlineSend.getMsgId(), request.getSenderChannel());
response(reqId, imMessageOnlineSend, request.getSenderChannel());
}
......@@ -200,6 +200,7 @@ public class ThousandChatAction {
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(imMessage.getId());
imMessageOnlineSend.setPreMessageId(imMessage.getPreMessageId());
imMessageOnlineSend.setSender(imClientSender.getClientId());
Map<String, Object> content = JsonUtils.beanCopyDeep(data, Map.class);
//action的属性无需要返回
......@@ -220,16 +221,16 @@ public class ThousandChatAction {
* 响应发送方消息id等信息
*
* @param reqId
* @param messageId
* @param imMessageOnlineSend
* @param channel
*/
private void response(String reqId, long messageId, Channel channel) {
private void response(String reqId, ImMessageOnlineSend imMessageOnlineSend, Channel channel) {
WsResponse<MsgVo> responseModel = new WsResponse<>();
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCmd(WsResponseCmdEnum.RES.getCmdCode());
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(new MsgVo(messageId));
responseModel.setData(new MsgVo(imMessageOnlineSend.getMsgId(), imMessageOnlineSend.getPreMessageId(), imMessageOnlineSend.getCreateTime()));
responseModel.setReqId(reqId);
// 响应发送方
channelSender.sendMsgLocal((NioSocketChannel)channel, responseModel);
......
......@@ -29,6 +29,9 @@ public class OfflineMsgDto implements Serializable {
@ApiModelProperty("消息id")
private Long msgId;
@ApiModelProperty("前一条消息的id")
private Long preMessageId;
@ApiModelProperty("创建时间")
private Date createTime;
......
......@@ -35,6 +35,7 @@
<select id="findOfflineMsgs" resultType="com.wecloud.im.thousandchat.param.ThousandOffineMsgDto">
<foreach collection="lastestMsgs" item="lastestMsg" separator=" union all ">
select msg.id AS msgId,
msg.pre_message_id AS preMessageId,
msg.create_time,
msg.withdraw_time,
msg.update_date,
......
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
......@@ -210,3 +210,6 @@ ALTER TABLE `im_message` ADD INDEX `idx_sender`(`sender`);
ALTER TABLE `im_message` ADD INDEX `idx_create_time`(`create_time`);
ALTER TABLE im_message
ADD COLUMN `pre_message_id` bigint(20) DEFAULT NULL COMMENT '前一条消息的id';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment