Commit 229eeaf5 by 罗长华

sdk发送群事件增加定向发送的功能

parent b731e392
......@@ -29,6 +29,12 @@ public class GroupChatStatusMessageParam {
private String toGroupIds;
/**
* 指定一个或多个用户
*/
@ApiModelProperty("指定一个或多个用户")
private String toUserIds;
/**
* 消息类型
*/
@NotEmpty(message = "消息类型不能为空")
......
......@@ -22,6 +22,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
......@@ -604,17 +605,25 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
if (conversationList.size() <= 0) {
throw new BusinessException("群聊ids为 " + conversationIdsStr + " 的群聊列表不存在");
}
conversationList.forEach(conversation -> {
// 是否指定用户
List<String> toUserIds = Collections.emptyList();
boolean isToUser = false;
if (StringUtils.isNotBlank(param.getToUserIds())) {
isToUser = true;
toUserIds = Arrays.asList(param.getToUserIds().split(","));
}
for (ImConversation conversation : conversationList) {
// 获取群成员
List<ImConversationMembers> membersList = imConversationMembersService.list(
List<ImConversationMembers> membersList = Collections.emptyList();
if (isToUser) {
// 指定群成员
membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, conversation.getId()).in(ImConversationMembers::getClientId, toUserIds));
} else {
membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, conversation.getId()));
if (param.getToUserIds() != null && !param.getToUserIds().isEmpty()) {
// 定向发送
membersList =
membersList.stream().filter(members -> param.getToUserIds().contains(members.getClientId())).collect(Collectors.toList());
}
// 组装消息
......@@ -640,8 +649,8 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 离线消息推送
pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt());
}
}
});
return true;
}
......@@ -663,12 +672,27 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
if (conversationList.size() <= 0) {
throw new BusinessException("群聊ids为 " + conversationIdsStr + " 的群聊列表不存在");
}
conversationList.forEach(conversation -> {
// 是否指定用户
List<String> toUserIds = Collections.emptyList();
boolean isToUser = false;
if (StringUtils.isNotBlank(param.getToUserIds())) {
isToUser = true;
toUserIds = Arrays.asList(param.getToUserIds().split(","));
}
// 开始发送
for (ImConversation conversation : conversationList) {
// 获取群成员
List<ImConversationMembers> membersList = imConversationMembersService.list(
List<ImConversationMembers> membersList = Collections.emptyList();
if (isToUser) {
// 指定群成员
membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, conversation.getId()).in(ImConversationMembers::getClientId, toUserIds));
} else {
membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, conversation.getId()));
}
// 组装消息
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), true,
......@@ -687,8 +711,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 在线用户直接发消息
sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend);
}
});
}
return true;
}
......
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