Commit 7e5af2de by Future

聊天室成员列表获取

parent 87ef58df
...@@ -235,7 +235,7 @@ public class ConversationAction { ...@@ -235,7 +235,7 @@ public class ConversationAction {
*/ */
@ActionMapping("/intoChatRoom") @ActionMapping("/intoChatRoom")
@ApiOperation(value = "用户进入聊天室", notes = "用户进入聊天室") @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)); log.info("用户进入聊天室入参 {}", JSON.toJSONString(data));
Boolean r = imConversationService.intoChatRoom(data); Boolean r = imConversationService.intoChatRoom(data);
Map<String, Boolean> result = new HashMap<>(); Map<String, Boolean> result = new HashMap<>();
...@@ -249,9 +249,9 @@ public class ConversationAction { ...@@ -249,9 +249,9 @@ public class ConversationAction {
*/ */
@ActionMapping("/exitRoom") @ActionMapping("/exitRoom")
@ApiOperation(value = "用户退出聊天室", notes = "用户退出聊天室") @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)); log.info("用户退出聊天室入参 {}", JSON.toJSONString(data));
Boolean r =imConversationService.exitRoom(data); Boolean r =imConversationService.exitChatRoom(data);
Map<String, Boolean> result = new HashMap<>(); Map<String, Boolean> result = new HashMap<>();
result.put("result", r); result.put("result", r);
return WsResponse.ok(result); return WsResponse.ok(result);
......
package com.wecloud.im.controller; package com.wecloud.im.controller;
import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.ExitChatRoomParam; import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.IntoChatRoomParam; 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.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; 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.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -225,9 +228,19 @@ public class ImConversationController extends BaseController { ...@@ -225,9 +228,19 @@ public class ImConversationController extends BaseController {
*/ */
@PostMapping("/exitRoom") @PostMapping("/exitRoom")
@ApiOperation(value = "用户退出聊天室", notes = "用户退出聊天室") @ApiOperation(value = "用户退出聊天室", notes = "用户退出聊天室")
public ApiResult<Boolean> exitRoom(@RequestBody ExitChatRoomParam param) { public ApiResult<Boolean> exitChatRoom(@RequestBody ExitChatRoomParam param) {
log.info("用户退出聊天室入参 {}", JSON.toJSONString(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; 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.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImConversation; import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.DisbandConversationParam; import com.wecloud.im.param.DisbandConversationParam;
import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.ImConversationPageParam; import com.wecloud.im.param.ImConversationPageParam;
import com.wecloud.im.param.ImConversationQueryParam; import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.param.MutedGroupMemberParam; import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam; import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam; import com.wecloud.im.param.SetAdminsParam;
...@@ -24,8 +19,14 @@ import com.wecloud.im.param.add.ImConversationAttrUpdate; ...@@ -24,8 +19,14 @@ import com.wecloud.im.param.add.ImConversationAttrUpdate;
import com.wecloud.im.param.add.ImConversationCreate; import com.wecloud.im.param.add.ImConversationCreate;
import com.wecloud.im.param.add.ImConversationDisplayUpdate; import com.wecloud.im.param.add.ImConversationDisplayUpdate;
import com.wecloud.im.param.add.ImConversationNameUpdate; import com.wecloud.im.param.add.ImConversationNameUpdate;
import com.wecloud.im.vo.ChatRoomMemberVo;
import com.wecloud.im.vo.ConversationVo; import com.wecloud.im.vo.ConversationVo;
import com.wecloud.im.vo.ImConversationCreateVo; 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> { ...@@ -219,7 +220,14 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @param param * @param param
* @return * @return
*/ */
Boolean exitRoom(ExitChatRoomParam param); Boolean exitChatRoom(ExitChatRoomParam param);
/**
* 分页获取聊天室成员入参
* @param param
* @return
*/
List<ChatRoomMemberVo> listChatRoomMember(ChatRoomMemberPageParam param);
} }
package com.wecloud.im.service.impl; package com.wecloud.im.service.impl;
import com.wecloud.im.chatroom.cache.ChatRoomCacheManager; import com.wecloud.im.chatroom.cache.ChatRoomCacheManager;
import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.ExitChatRoomParam; import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.IntoChatRoomParam; import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.vo.ChatRoomMemberVo;
import com.wecloud.im.ws.utils.RedisUtils; import com.wecloud.im.ws.utils.RedisUtils;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -1219,7 +1221,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1219,7 +1221,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
} }
@Override @Override
public Boolean exitRoom(ExitChatRoomParam param) { public Boolean exitChatRoom(ExitChatRoomParam param) {
// 获取当前client // 获取当前client
ImClient currentClient = contextService.getImClientIfNotNullOrThrow(); ImClient currentClient = contextService.getImClientIfNotNullOrThrow();
// 根据appId查询application // 根据appId查询application
...@@ -1272,4 +1274,18 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1272,4 +1274,18 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
return true; 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