Commit 344d2d5e by Future

添加消息链

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