Commit 7e5af2de by Future

聊天室成员列表获取

parent 87ef58df
......@@ -235,7 +235,7 @@ public class ConversationAction {
*/
@ActionMapping("/intoChatRoom")
@ApiOperation(value = "用户进入聊天室", notes = "用户进入聊天室")
public WsResponse<Map<String, Boolean>> intoChatRoom(@RequestBody IntoChatRoomParam data) {
public WsResponse<Map<String, Boolean>> intoChatRoom(IntoChatRoomParam data) {
log.info("用户进入聊天室入参 {}", JSON.toJSONString(data));
Boolean r = imConversationService.intoChatRoom(data);
Map<String, Boolean> result = new HashMap<>();
......@@ -249,9 +249,9 @@ public class ConversationAction {
*/
@ActionMapping("/exitRoom")
@ApiOperation(value = "用户退出聊天室", notes = "用户退出聊天室")
public WsResponse<Map<String, Boolean>> exitRoom(@RequestBody ExitChatRoomParam data) {
public WsResponse<Map<String, Boolean>> exitRoom(ExitChatRoomParam data) {
log.info("用户退出聊天室入参 {}", JSON.toJSONString(data));
Boolean r =imConversationService.exitRoom(data);
Boolean r =imConversationService.exitChatRoom(data);
Map<String, Boolean> result = new HashMap<>();
result.put("result", r);
return WsResponse.ok(result);
......
package com.wecloud.im.controller;
import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.vo.ChatRoomMemberVo;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -225,9 +228,19 @@ public class ImConversationController extends BaseController {
*/
@PostMapping("/exitRoom")
@ApiOperation(value = "用户退出聊天室", notes = "用户退出聊天室")
public ApiResult<Boolean> exitRoom(@RequestBody ExitChatRoomParam param) {
public ApiResult<Boolean> exitChatRoom(@RequestBody ExitChatRoomParam param) {
log.info("用户退出聊天室入参 {}", JSON.toJSONString(param));
return ApiResult.ok(imConversationService.exitRoom(param));
return ApiResult.ok(imConversationService.exitChatRoom(param));
}
/**
* 全量获取聊天室成员
*/
@PostMapping("/listChatRoomMember")
@ApiOperation(value = "全量获取聊天室成员", notes = "全量获取聊天室成员")
public ApiResult<List<ChatRoomMemberVo>> listChatRoomMember(@RequestBody ChatRoomMemberPageParam param) {
log.info("全量获取聊天室成员入参 {}", JSON.toJSONString(param));
return ApiResult.ok(imConversationService.listChatRoomMember(param));
}
......
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/4/27 16:42
* @Description 聊天室成员分页入参
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "聊天室成员分页入参")
public class ChatRoomMemberPageParam implements Serializable {
private static final long serialVersionUID = 3284648263835691087L;
@ApiModelProperty("聊天室房间id")
private Long chatRoomId;
}
package com.wecloud.im.service;
import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.IntoChatRoomParam;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.DisbandConversationParam;
import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam;
......@@ -24,8 +19,14 @@ import com.wecloud.im.param.add.ImConversationAttrUpdate;
import com.wecloud.im.param.add.ImConversationCreate;
import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.vo.ChatRoomMemberVo;
import com.wecloud.im.vo.ConversationVo;
import com.wecloud.im.vo.ImConversationCreateVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import java.util.List;
/**
* 会话表 服务类
......@@ -219,7 +220,14 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @param param
* @return
*/
Boolean exitRoom(ExitChatRoomParam param);
Boolean exitChatRoom(ExitChatRoomParam param);
/**
* 分页获取聊天室成员入参
* @param param
* @return
*/
List<ChatRoomMemberVo> listChatRoomMember(ChatRoomMemberPageParam param);
}
package com.wecloud.im.service.impl;
import com.wecloud.im.chatroom.cache.ChatRoomCacheManager;
import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.vo.ChatRoomMemberVo;
import com.wecloud.im.ws.utils.RedisUtils;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
......@@ -1219,7 +1221,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
@Override
public Boolean exitRoom(ExitChatRoomParam param) {
public Boolean exitChatRoom(ExitChatRoomParam param) {
// 获取当前client
ImClient currentClient = contextService.getImClientIfNotNullOrThrow();
// 根据appId查询application
......@@ -1272,4 +1274,18 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
return true;
}
@Override
public List<ChatRoomMemberVo> listChatRoomMember(ChatRoomMemberPageParam param) {
Map<String, String> chatRoomMembers = chatRoomCacheManager.findOnlineClientsByChatRoomId(param.getChatRoomId());
if (chatRoomMembers.isEmpty()) {
return Lists.newArrayList();
}
List<ChatRoomMemberVo> result = Lists.newArrayList();
for (String key : chatRoomMembers.keySet()) {
ImClient client = imClientService.getCacheImClient(Long.valueOf(key.split(RedisUtils.SPLIT)[0]));
result.add(new ChatRoomMemberVo(param.getChatRoomId(), client.getClientId()));
}
return result;
}
}
package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/4/27 16:47
* @Description 聊天室成员VO
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "聊天室成员VO")
@AllArgsConstructor
@NoArgsConstructor
public class ChatRoomMemberVo implements Serializable {
private static final long serialVersionUID = 5417994988121322697L;
@ApiModelProperty("聊天室房间id")
private Long chatRoomId;
@ApiModelProperty("客户端id")
private String clientId;
}
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