Commit 7f6f9a9f by 罗长华

抽象出Couriers和MessageBuilder类,重构会话发送消息方法

parent 819498c8
......@@ -16,8 +16,11 @@ import com.wecloud.im.sdk.enums.GroupChatSettingTypeEnum;
@Data
public class GroupChatSettingParam {
@ApiModelProperty("设置类型FORBID_ADD_FRIEND 禁止群成员互加好友 FORBID_SEND_RED_PACKETS 禁止群成员发红包 FORBID_SEND_PIC 禁止群成员发图片 " +
"FORBID_SEND_LINK 禁止群成员发链接")
@ApiModelProperty("操作人客户端Id server sdk调用传入")
private String operatorClientId;
@ApiModelProperty("设置类型FORBID_ADD_FRIEND 禁止群成员互加好友 FORBID_SEND_PIC 禁止群成员发图片 FORBID_SEND_LINK 禁止群成员发链接" +
"MUTED 群禁言 NAME修改群名 HEAD_PORTRAIT 修改群头像")
private GroupChatSettingTypeEnum type;
@NotNull
......@@ -26,4 +29,12 @@ public class GroupChatSettingParam {
@ApiModelProperty("开启 true是 false否")
private Boolean on;
@ApiModelProperty("群名称 修改群名称时传值")
private String name;
@ApiModelProperty("头像 修改群头像时传值")
private String headPortrait;
}
package com.wecloud.im.post;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import lombok.AllArgsConstructor;
import java.util.Date;
import org.springframework.stereotype.Service;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
/**
* 投递员 负责投送消息
* @Author luozh
* @Date 2022年05月13日 14:19
* @Version 1.0
*/
@AllArgsConstructor
@Service
public class Couriers {
private final ChannelSender channelSender;
/**
* 投递消息
* @Author luozh
* @Date 2022年05月13日 02:34:29
* @param message 消息实体
* @param sender 发件人
* @param receiver 收件人
* @param cmd ws命令类型
* @Return
*/
public void deliver(ImMessage message, ImClient sender, ImClient receiver, WsResponseCmdEnum cmd) {
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(message.getId());
imMessageOnlineSend.setCreateTime(new Date());
imMessageOnlineSend.setType(message.getMsgType());
imMessageOnlineSend.setSender(sender.getClientId());
imMessageOnlineSend.setContent(message.getContent());
imMessageOnlineSend.setConversationId(message.getFkConversationId());
imMessageOnlineSend.setWithdraw(message.getWithdraw());
imMessageOnlineSend.setEvent(message.getEvent());
// 向接收方推送
WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(cmd.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, receiver.getId());
}
}
package com.wecloud.im.post;
import java.util.Date;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.ws.enums.MsgTypeEnum;
import com.wecloud.utils.SnowflakeUtil;
/**
* 消息构造者
* @Author luozh
* @Date 2022年05月13日 14:20
* @Version 1.0
*/
public class MessageBuilder {
/**
* 构建普通消息
* @Author luozh
* @Date 2022年05月13日 02:30:27
* @param type
* @param application
* @param sender
* @param receiver
* @Return
*/
public static ImMessage buildNormalMessage(MsgTypeEnum type, ImApplication application,
ImClient sender, ImConversation conversation) {
long messageId = SnowflakeUtil.getId();
ImMessage imMessage = new ImMessage();
// 保存消息至消息表
imMessage.setId(messageId);
imMessage.setMsgType(type.getUriCode());
imMessage.setFkAppid(application.getId());
imMessage.setSender(sender.getId());
imMessage.setWithdraw(false);
imMessage.setEvent(false);
imMessage.setSystemFlag(false);
imMessage.setSendStatus(2);
imMessage.setFkConversationId(conversation.getId());
imMessage.setCreateTime(new Date());
return imMessage;
}
/**
* 构建事件消息
* @Author luozh
* @Date 2022年05月13日 02:30:27
* @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());
imMessage.setContent(content);
imMessage.setWithdraw(false);
imMessage.setEvent(true);
imMessage.setSystemFlag(false);
imMessage.setSendStatus(2);
imMessage.setFkConversationId(conversation.getId());
imMessage.setCreateTime(new Date());
return imMessage;
}
}
......@@ -6,9 +6,9 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.entity.ImMessage;
......@@ -233,6 +233,13 @@ public interface ImConversationService extends BaseService<ImConversation> {
Boolean groupChatSetting(GroupChatSettingParam param);
/**
* 群聊设置
* @param param
* @return
*/
Boolean groupChatSettingForSdk(GroupChatSettingParam param);
/**
* 群头像设置
* @param param
* @return
......@@ -288,8 +295,8 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @param message
* @Return
*/
void sendMsgToMembers(Long conversationId, List<ImConversationMembers> membersList, Long appId,
String sender, Map content, ImMessage message);
void sendMsgToMembers(ImConversation conversation, List<ImConversationMembers> membersList, ImClient sender,
ImMessage message);
}
......@@ -22,6 +22,7 @@ import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.param.add.ServerImConversationCreate;
import com.wecloud.im.post.MessageBuilder;
import com.wecloud.im.sdk.enums.ChatTypeEnum;
import com.wecloud.im.sdk.enums.GroupRoleEnum;
import com.wecloud.im.sdk.enums.MutedEnum;
......@@ -141,26 +142,15 @@ public class ImGroupServiceImpl implements ImGroupService {
conversationMembersService.deleteByConversationId(conversation.getId());
// 保存事件消息
ImMessage imMessage = new ImMessage();
Map<String, Object> content = new HashMap<>();
content.put("operator", operator.getClientId());
imMessage.setContent(JsonUtils.encodeJson(content));
ImMessage imMessage = MessageBuilder.buildEventMessage(MsgTypeEnum.CONVERSATION_DISBAND, application,
operator, conversation, JsonUtils.encodeJson(content));
// 保存消息至消息表
imMessage.setId(SnowflakeUtil.getId());
imMessage.setMsgType(MsgTypeEnum.CONVERSATION_DISBAND.getUriCode());
imMessage.setCreateTime(new Date());
imMessage.setFkAppid(operator.getFkAppid());
imMessage.setSender(operator.getId());
imMessage.setWithdraw(false);
imMessage.setEvent(true);
imMessage.setSystemFlag(false);
imMessage.setSendStatus(2);
imMessage.setFkConversationId(conversation.getId());
imMessageService.save(imMessage);
conversationService.sendMsgToMembers(conversation.getId(), membersList, appId, operator.getClientId(), content,
imMessage);
conversationService.sendMsgToMembers(conversation, membersList, operator, imMessage);
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