Commit a02c4d6d by hweeeeeei

服务端下发透传消息

parent e1c75079
......@@ -55,7 +55,7 @@ public class ApiImMessageController extends BaseController {
return ApiResult.result(ApiCode.FAIL, null);
}
return imMessageService.restApiImMessageSend(imMsgSendToOnlineClient);
return imMessageService.restApiImMessageSend(imMsgSendToOnlineClient, imApplication);
}
......
......@@ -24,7 +24,13 @@ import java.util.List;
public interface ImMessageService extends BaseService<ImMessage> {
ApiResult<Boolean> restApiImMessageSend(ImMsgSendToOnlineClient imMsgSendToOnlineClient);
/**
* 下发透传消息
*
* @param imMsgSendToOnlineClient
* @return
*/
ApiResult<Boolean> restApiImMessageSend(ImMsgSendToOnlineClient imMsgSendToOnlineClient, ImApplication imApplication);
ImMessage saveImMessage(ImApplication imApplication, ImClient imClientSender, Long toConversationId, long messageId, String content);
......
......@@ -42,7 +42,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 消息存储表 服务实现类
......@@ -77,7 +79,49 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
private WriteDataService writeDataService;
@Override
public ApiResult<Boolean> restApiImMessageSend(ImMsgSendToOnlineClient imMsgSendToOnlineClient) {
public ApiResult<Boolean> restApiImMessageSend(ImMsgSendToOnlineClient imMsgSendToOnlineClient, ImApplication imApplication) {
// 查询该会话所有成员
List<ImConversationMembers> membersList = imConversationMembersService.list(
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, imMsgSendToOnlineClient.getConversationId())
);
if (membersList.isEmpty()) {
log.info("membersList为空,toConversationId:" + imMsgSendToOnlineClient.getConversationId());
return ApiResult.fail();
}
Map<String, Object> msgMaps = new HashMap<>();
msgMaps.put("content", imMsgSendToOnlineClient.getContent());
msgMaps.put("createTime", new Date());
msgMaps.put("toConversation", imMsgSendToOnlineClient.getConversationId().toString());
// 遍历发送
for (ImConversationMembers conversationMembers : membersList) {
// 查询接收方
ImClient imClientReceiver = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, imApplication.getId())
.eq(ImClient::getId, conversationMembers.getFkClientId()));
if (imClientReceiver == null) {
continue;
}
WsResponseModel<Map<String, Object>> responseModel = new WsResponseModel<>();
responseModel.setCmd(WsResponseCmdEnum.REST_API_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(msgMaps);
responseModel.setReqId(null);
// 向接收方推送
writeDataService.write(responseModel, imApplication.getAppKey(), imClientReceiver.getClientId());
}
return null;
}
......
......@@ -8,6 +8,11 @@ package com.wecloud.im.ws.enums;
public enum WsResponseCmdEnum {
/**
* 服务端下发透传消息
*/
REST_API_MSG(6),
/**
* 会话中的事件
*/
CONVERSATION_EVENT_MSG(5),
......
# wecloud-im 前端Websocket对接文档
# wecloud-im 前端Websocket对接文档
......@@ -454,7 +454,7 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响
"cmd":6,
"data":{
"toConversation":1394188055950266368,
"createTime":1621240016587,
"content":"json字符串,或任意字符数据"
}
}
......@@ -462,10 +462,6 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响
## 客户端在线接收事件类型消息
### 事件类型type (xx表示为某客户端)
......@@ -475,9 +471,8 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响
- xx已接收某消息 -1009
- xx已读某条消息 -1010
- 你被xx拉入新会话 -1011
- xx主动退出会话 -1012
- xx成为新群主 -1013
- xx主动退出会话 -1012
- xx成为新群主 -1013
......
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