Commit 5bc4f004 by Future

消息表落库事件消息接收人

parent 784d12dc
...@@ -48,6 +48,9 @@ public class ImMessage extends BaseEntity { ...@@ -48,6 +48,9 @@ public class ImMessage extends BaseEntity {
@ApiModelProperty("发送者客户端id") @ApiModelProperty("发送者客户端id")
private Long sender; private Long sender;
@ApiModelProperty("接收人,多人用英文逗号分隔-群内指定人员可见场景")
private String receivers;
/** /**
* 数据库字段类型为JSON格式 * 数据库字段类型为JSON格式
* 因mysql关系型数据库非MongoDB文档类型数据库,第三方应用拓展的自定义参数名和值需使用json格式落库 * 因mysql关系型数据库非MongoDB文档类型数据库,第三方应用拓展的自定义参数名和值需使用json格式落库
......
...@@ -671,7 +671,6 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -671,7 +671,6 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
@Override @Override
public Boolean groupStatusMessagePublish(GroupChatStatusMessageParam param) { public Boolean groupStatusMessagePublish(GroupChatStatusMessageParam param) {
Long appId = SecurityUtils.getCurrentAppId(); Long appId = SecurityUtils.getCurrentAppId();
ImApplication application = imApplicationService.getCacheById(appId);
// 获取发件人信息 // 获取发件人信息
String senderClientId = param.getFromUserId(); String senderClientId = param.getFromUserId();
ImClient sender = imClientService.getCacheImClient(appId, senderClientId); ImClient sender = imClientService.getCacheImClient(appId, senderClientId);
...@@ -711,6 +710,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -711,6 +710,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 组装消息 // 组装消息
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), true, ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), true,
param.getContent()); param.getContent());
if (isToUser && CollectionUtils.isNotEmpty(membersList)) {
// 指定群内成员发送 落库接收人 仅限少量接收人场景时落库
List<Long> memberFkClientIds = membersList.stream().map(m -> m.getFkClientId()).collect(Collectors.toList());
String receivers = StringUtils.join(memberFkClientIds, ",");
if (receivers.length() < 200) {
message.setReceivers(receivers);
}
}
// 持久化 // 持久化
this.save(message); this.save(message);
// 拼装发送消息体 // 拼装发送消息体
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
FROM `im_message` FROM `im_message`
INNER JOIN `im_client` ON `im_client`.id = `im_message`.sender INNER JOIN `im_client` ON `im_client`.id = `im_message`.sender
WHERE fk_conversation_id = #{param.conversationId} and im_message.is_delete = 1 and im_message.withdraw = 0 WHERE fk_conversation_id = #{param.conversationId} and im_message.is_delete = 1 and im_message.withdraw = 0
and (im_message.`event`=0 || (im_message.`event`=1 and sender != #{param.currentFkClientId} )) and (im_message.`event`=0 || (im_message.`event`=1 and sender != #{param.currentFkClientId} and (receivers is null || (receivers !=null and FIND_IN_SET(#{param.currentFkClientId}, receivers))) ))
<if test="param.msgIdStart != null"> <if test="param.msgIdStart != null">
AND im_message.id > #{param.msgIdStart} AND im_message.id > #{param.msgIdStart}
</if> </if>
......
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本 -- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
...@@ -160,6 +160,10 @@ ALTER TABLE im_conversation ...@@ -160,6 +160,10 @@ ALTER TABLE im_conversation
ADD COLUMN head_portrait varchar(1000) DEFAULT NULL COMMENT '群头像'; ADD COLUMN head_portrait varchar(1000) DEFAULT NULL COMMENT '群头像';
ALTER TABLE im_message
ADD COLUMN receivers varchar(200) DEFAULT NULL COMMENT '接收人,多人用英文逗号分隔-群内指定人员可见场景';
DROP TABLE IF EXISTS `im_rtc_record`; DROP TABLE IF EXISTS `im_rtc_record`;
CREATE TABLE `im_rtc_record` CREATE TABLE `im_rtc_record`
......
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