Commit 091707e7 by Future

批量获取会话信息

parent ccd7e805
...@@ -2,11 +2,13 @@ package com.wecloud.im.action; ...@@ -2,11 +2,13 @@ package com.wecloud.im.action;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.dispatch.annotation.ActionMapping; import com.wecloud.dispatch.annotation.ActionMapping;
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.ExitChatRoomParam;
import com.wecloud.im.param.GroupChatSettingParam; import com.wecloud.im.param.GroupChatSettingParam;
import com.wecloud.im.param.ImConversationQueryParam; import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.IntoChatRoomParam; import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.param.ListConversationParam;
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;
...@@ -18,10 +20,12 @@ import com.wecloud.im.param.add.ImConversationCreate; ...@@ -18,10 +20,12 @@ 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.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
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 com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
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.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;
...@@ -29,6 +33,7 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -29,6 +33,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.HashMap; import java.util.HashMap;
...@@ -272,4 +277,26 @@ public class ConversationAction { ...@@ -272,4 +277,26 @@ public class ConversationAction {
} }
/**
* 全量获取聊天室成员
*/
@PostMapping("/listChatRoomMember")
@ApiOperation(value = "全量获取聊天室成员", notes = "全量获取聊天室成员")
public WsResponse<List<ChatRoomMemberVo>> listChatRoomMember(ChatRoomMemberPageParam data) {
log.info("全量获取聊天室成员入参 {}", JSON.toJSONString(data));
List<ChatRoomMemberVo> r = imConversationService.listChatRoomMember(data);
return WsResponse.ok(r);
}
/**
* 查找会话信息
* @return
*/
@ActionMapping("/listConversation")
@ApiOperation(value = "查找会话信息", notes = "会话")
public WsResponse<List<ConversationVo>> listConversation(ListConversationParam data) {
List<ConversationVo> conversationList = imConversationService.listConversation(data);
return WsResponse.ok(conversationList);
}
} }
package com.wecloud.im.controller; package com.wecloud.im.controller;
import com.alibaba.fastjson.JSON;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.ChatRoomMemberPageParam; import com.wecloud.im.param.ChatRoomMemberPageParam;
import com.wecloud.im.param.DisbandConversationParam;
import com.wecloud.im.param.ExitChatRoomParam; import com.wecloud.im.param.ExitChatRoomParam;
import com.wecloud.im.param.GroupChatSettingParam;
import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.IntoChatRoomParam; import com.wecloud.im.param.IntoChatRoomParam;
import com.wecloud.im.param.ListConversationParam;
import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation;
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.service.ImConversationService;
import com.wecloud.im.vo.ChatRoomMemberVo; 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.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;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
...@@ -22,23 +37,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -22,23 +37,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import java.util.List;
import com.wecloud.im.param.DisbandConversationParam;
import com.wecloud.im.param.GroupChatSettingParam;
import com.wecloud.im.param.ImConversationQueryParam;
import com.wecloud.im.param.MutedGroupMemberParam;
import com.wecloud.im.param.MutedGroupParam;
import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.TransferOwnerParam;
import com.wecloud.im.param.add.ImClientLeaveConversation;
import com.wecloud.im.param.add.ImClientToConversation;
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.service.ImConversationService;
import com.wecloud.im.vo.ConversationVo;
import com.wecloud.im.vo.ImConversationCreateVo;
/** /**
* 会话表 控制器 * 会话表 控制器
...@@ -255,6 +254,16 @@ public class ImConversationController extends BaseController { ...@@ -255,6 +254,16 @@ public class ImConversationController extends BaseController {
return ApiResult.ok(imConversationService.listChatRoomMember(param)); return ApiResult.ok(imConversationService.listChatRoomMember(param));
} }
/**
* 查找会话信息
* @return
*/
@ActionMapping("/listConversation")
@ApiOperation(value = "查找会话信息", notes = "会话")
public ApiResult<List<ConversationVo>> listConversation(ListConversationParam param) {
List<ConversationVo> conversationList = imConversationService.listConversation(param);
return ApiResult.ok(conversationList);
}
} }
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/5/1 9:35
* @Description 查找聊天室入参
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "查找聊天室入参")
public class ListConversationParam extends BaseEntity {
private static final long serialVersionUID = -3602523207000275557L;
@ApiModelProperty("会话属性,1:单聊,2:普通群,3:万人群")
private Integer chatType;
@ApiModelProperty("会话id列表")
private List<Long> conversationIds;
}
...@@ -10,6 +10,7 @@ import com.wecloud.im.param.ImConversationPageParam; ...@@ -10,6 +10,7 @@ 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.IntoChatRoomParam;
import com.wecloud.im.param.ListConversationParam;
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;
...@@ -231,11 +232,18 @@ public interface ImConversationService extends BaseService<ImConversation> { ...@@ -231,11 +232,18 @@ public interface ImConversationService extends BaseService<ImConversation> {
Boolean exitChatRoom(ExitChatRoomParam param); Boolean exitChatRoom(ExitChatRoomParam param);
/** /**
* 分页获取聊天室成员入参 * 获取聊天室成员入参
* @param param * @param param
* @return * @return
*/ */
List<ChatRoomMemberVo> listChatRoomMember(ChatRoomMemberPageParam param); List<ChatRoomMemberVo> listChatRoomMember(ChatRoomMemberPageParam param);
/**
* 获取会话信息
* @param param
* @return
*/
List<ConversationVo> listConversation(ListConversationParam param);
} }
...@@ -26,6 +26,7 @@ import com.wecloud.im.param.ImConversationQueryParam; ...@@ -26,6 +26,7 @@ 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.IntoChatRoomParam;
import com.wecloud.im.param.ListConversationMembersParam; import com.wecloud.im.param.ListConversationMembersParam;
import com.wecloud.im.param.ListConversationParam;
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;
...@@ -66,6 +67,7 @@ import io.geekidea.springbootplus.framework.core.pagination.PageInfo; ...@@ -66,6 +67,7 @@ import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
...@@ -1038,11 +1040,12 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1038,11 +1040,12 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
/** /**
* 发送会话配置变更事件 * 发送会话配置变更事件
* @Author luozh *
* @Date 2022年04月27日 01:52:54
* @param currentClient 当前client信息 * @param currentClient 当前client信息
* @param conversationId 会话id * @param conversationId 会话id
* @param msgType 消息类型 * @param msgType 消息类型
* @Author luozh
* @Date 2022年04月27日 01:52:54
* @Return * @Return
*/ */
private void sendConversationSettingChangeMsg(ImClient currentClient, Long conversationId, Integer msgType) { private void sendConversationSettingChangeMsg(ImClient currentClient, Long conversationId, Integer msgType) {
...@@ -1080,13 +1083,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1080,13 +1083,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
/** /**
* 发送会话事件消息至群成员列表 * 发送会话事件消息至群成员列表
* @Author luozh *
* @Date 2022年04月27日 02:11:19
* @param conversationId 会话id * @param conversationId 会话id
* @param membersList 成员列表 * @param membersList 成员列表
* @param appId appId * @param appId appId
* @param sender 发送者 * @param sender 发送者
* @param content 消息内容 * @param content 消息内容
* @Author luozh
* @Date 2022年04月27日 02:11:19
*/ */
private void sendMsgToMembers(Long conversationId, List<ImConversationMembers> membersList, Long appId, private void sendMsgToMembers(Long conversationId, List<ImConversationMembers> membersList, Long appId,
String sender, Map content, ImMessage message) { String sender, Map content, ImMessage message) {
...@@ -1110,13 +1114,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1110,13 +1114,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
/** /**
* 发送会话事件消息至指定成员 * 发送会话事件消息至指定成员
* @Author luozh *
* @Date 2022年04月27日 03:11:00
* @param conversationId 会话id * @param conversationId 会话id
* @param appId appId * @param appId appId
* @param sender 发送者 * @param sender 发送者
* @param receiverClientId 接收者client id * @param receiverClientId 接收者client id
* @param message * @param message
* @Author luozh
* @Date 2022年04月27日 03:11:00
*/ */
private void sendEventMsgToMember(Long conversationId, Long appId, String sender, private void sendEventMsgToMember(Long conversationId, Long appId, String sender,
Long receiverClientId, Map<String, Object> content, ImMessage message) { Long receiverClientId, Map<String, Object> content, ImMessage message) {
...@@ -1133,12 +1138,13 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1133,12 +1138,13 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
/** /**
* 发送会话事件消息 * 发送会话事件消息
* @Author luozh *
* @Date 2022年04月27日 03:11:34
* @param conversationId 会话id * @param conversationId 会话id
* @param sender 发送者 * @param sender 发送者
* @param receiverClientId 接收者client id * @param receiverClientId 接收者client id
* @param content 消息内容 * @param content 消息内容
* @Author luozh
* @Date 2022年04月27日 03:11:34
*/ */
private void sendConversationEventMsg(Long conversationId, String sender, private void sendConversationEventMsg(Long conversationId, String sender,
Long receiverClientId, Map<String, Object> content, ImMessage message) { Long receiverClientId, Map<String, Object> content, ImMessage message) {
...@@ -1164,6 +1170,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1164,6 +1170,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
responseModel.setReqId(null); responseModel.setReqId(null);
channelSender.sendMsg(responseModel, receiverClientId); channelSender.sendMsg(responseModel, receiverClientId);
} }
@Override @Override
public Boolean intoChatRoom(IntoChatRoomParam param) { public Boolean intoChatRoom(IntoChatRoomParam param) {
// 获取当前client // 获取当前client
...@@ -1289,6 +1296,29 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -1289,6 +1296,29 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
return result; return result;
} }
@Override
public List<ConversationVo> listConversation(ListConversationParam param) {
if (CollectionUtils.isEmpty(param.getConversationIds())) {
throw new BusinessException("会话id列表不可为空");
}
List<ConversationVo> conversationVoList = Lists.newArrayList();
List<ImConversation> conversations = imConversationMapper.selectList(
new QueryWrapper<ImConversation>().lambda()
.eq(ImConversation::getChatType, param.getChatType())
.in(ImConversation::getId, param.getConversationIds())
.orderByDesc(ImConversation::getId)
);
if (CollectionUtils.isEmpty(conversations)) {
return conversationVoList;
}
for (ImConversation conversation : conversations) {
ConversationVo conversationVo = new ConversationVo();
BeanUtils.copyProperties(conversation, conversationVo);
conversationVoList.add(conversationVo);
}
return conversationVoList;
}
private ImConversationCreateVo createChatRoom(ImConversationCreate imConversationCreate, ImClient createClient) { private ImConversationCreateVo createChatRoom(ImConversationCreate imConversationCreate, ImClient createClient) {
// 会话id // 会话id
Long chatRoomId = SnowflakeUtil.getId(); Long chatRoomId = SnowflakeUtil.getId();
......
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