Commit 3808e8b9 by Future

ehcache

parent 8aedf9a1
package com.wecloud.im.action; package com.wecloud.im.action;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.wecloud.dispatch.annotation.ActionMapping; import com.wecloud.dispatch.annotation.ActionMapping;
...@@ -116,10 +115,7 @@ public class NormalChatAction { ...@@ -116,10 +115,7 @@ public class NormalChatAction {
// 给所有人(在线+离线)遍历发送 // 给所有人(在线+离线)遍历发送
// 先查询该会话所有成员 // 先查询该会话所有成员
Long time1 = System.currentTimeMillis(); Long time1 = System.currentTimeMillis();
List<ImConversationMembers> membersList = imConversationMembersService.list( List<ImConversationMembers> membersList = ehcacheService.getEhCacheMember("member"+conversation.getId(), conversation.getId());
new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, data.getToConversation())
);
log.info("获取群成员列表耗时 {}",System.currentTimeMillis() - time1); log.info("获取群成员列表耗时 {}",System.currentTimeMillis() - time1);
if (membersList.isEmpty()) { if (membersList.isEmpty()) {
log.info("查询会话所有成员返回空,会话ID: {}", data.getToConversation()); log.info("查询会话所有成员返回空,会话ID: {}", data.getToConversation());
...@@ -149,10 +145,10 @@ public class NormalChatAction { ...@@ -149,10 +145,10 @@ public class NormalChatAction {
if (beKickOut(reqId, imClientSender, membersList, request.getSenderChannel())) { if (beKickOut(reqId, imClientSender, membersList, request.getSenderChannel())) {
return; return;
} }
if (muted(conversation, reqId, imClientSender, membersList, memberMap, request.getSenderChannel())) { if (muted(conversation, reqId, imClientSender, memberMap, request.getSenderChannel())) {
return; return;
} }
if (baned(conversation, reqId, imClientSender, membersList, request.getSenderChannel())) { if (baned(conversation, reqId, request.getSenderChannel())) {
return; return;
} }
} }
...@@ -497,11 +493,10 @@ public class NormalChatAction { ...@@ -497,11 +493,10 @@ public class NormalChatAction {
* @param conversation * @param conversation
* @param reqId * @param reqId
* @param imClientSender * @param imClientSender
* @param membersList
* @param channel * @param channel
* @return 是-ture 否-false * @return 是-ture 否-false
*/ */
private boolean muted(ImConversationQueryVo conversation, String reqId, ImClient imClientSender, List<ImConversationMembers> membersList, Map<Long, ImConversationMembers> memberMap, Channel channel) { private boolean muted(ImConversationQueryVo conversation, String reqId, ImClient imClientSender, Map<Long, ImConversationMembers> memberMap, Channel channel) {
Long senderId = imClientSender.getId(); Long senderId = imClientSender.getId();
if (Lists.newArrayList(GroupRoleEnum.OWNER.getCode(), GroupRoleEnum.ADMIN.getCode()) if (Lists.newArrayList(GroupRoleEnum.OWNER.getCode(), GroupRoleEnum.ADMIN.getCode())
.contains(memberMap.get(senderId).getRole())) { .contains(memberMap.get(senderId).getRole())) {
...@@ -515,8 +510,8 @@ public class NormalChatAction { ...@@ -515,8 +510,8 @@ public class NormalChatAction {
} }
if (MutedEnum.NO.getCode().equals(conversation.getMuted())) { if (MutedEnum.NO.getCode().equals(conversation.getMuted())) {
// 未设置群禁言 判断自己是否被禁言 // 未设置群禁言 判断自己是否被禁言
List<ImConversationMembers> self = membersList.stream().filter(m -> senderId.equals(m.getFkClientId())).collect(Collectors.toList()); ImConversationMembers self = memberMap.get(senderId);
if (CollectionUtils.isEmpty(self) || MutedEnum.YES.getCode().equals(self.get(0).getMuted())) { if (self == null || MutedEnum.YES.getCode().equals(self.getMuted())) {
result = true; result = true;
} }
} }
...@@ -542,7 +537,7 @@ public class NormalChatAction { ...@@ -542,7 +537,7 @@ public class NormalChatAction {
* @Date 2022年06月06日 01:42:33 * @Date 2022年06月06日 01:42:33
* @Return * @Return
*/ */
private boolean baned(ImConversationQueryVo conversation, String reqId, ImClient imClientSender, List<ImConversationMembers> membersList, Channel channel) { private boolean baned(ImConversationQueryVo conversation, String reqId, Channel channel) {
// 会话是否被封禁 // 会话是否被封禁
String attributes = conversation.getAttributes(); String attributes = conversation.getAttributes();
if (StringUtils.isNotBlank(attributes)) { if (StringUtils.isNotBlank(attributes)) {
......
package com.wecloud.im.service; package com.wecloud.im.service;
import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.param.ImConversationQueryVo; import com.wecloud.im.param.ImConversationQueryVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -13,6 +13,8 @@ import org.springframework.cache.annotation.CacheEvict; ...@@ -13,6 +13,8 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @Author Future * @Author Future
...@@ -32,8 +34,12 @@ public class EhcacheService { ...@@ -32,8 +34,12 @@ public class EhcacheService {
@Autowired @Autowired
private CacheManager cacheManager; private CacheManager cacheManager;
@Autowired
private ImConversationMembersService imConversationMembersService;
/** /**
* 本地缓存中获取 * 本地缓存中获取
*
* @param key * @param key
* @return * @return
*/ */
...@@ -67,6 +73,14 @@ public class EhcacheService { ...@@ -67,6 +73,14 @@ public class EhcacheService {
public void delEhCacheConversation(Long id) { public void delEhCacheConversation(Long id) {
} }
@Cacheable(value = "business", key = "#key")
public List<ImConversationMembers> getEhCacheMember(String key, Long id) {
return imConversationMembersService.list(new QueryWrapper<ImConversationMembers>().lambda()
.eq(ImConversationMembers::getFkConversationId, id));
}
@CacheEvict(value = "business", key = "#key")
public void delEhCacheMember(String key) {
}
} }
...@@ -62,24 +62,6 @@ public interface ImConversationMembersService extends BaseService<ImConversation ...@@ -62,24 +62,6 @@ public interface ImConversationMembersService extends BaseService<ImConversation
Boolean saveOrUpdateAttr(ImConversationMemAttrUpdate imConversationMemAttrUpdate); Boolean saveOrUpdateAttr(ImConversationMemAttrUpdate imConversationMemAttrUpdate);
/** /**
* 保存
*
* @param imConversationMembers
* @return
* @throws Exception
*/
boolean saveImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;
/**
* 修改
*
* @param imConversationMembers
* @return
* @throws Exception
*/
boolean updateImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;
/**
* 删除 * 删除
* *
* @param id * @param id
......
...@@ -47,16 +47,6 @@ import com.wecloud.im.vo.ImConversationCreateVo; ...@@ -47,16 +47,6 @@ import com.wecloud.im.vo.ImConversationCreateVo;
public interface ImConversationService extends BaseService<ImConversation> { public interface ImConversationService extends BaseService<ImConversation> {
/** /**
* 保存
*
* @param imConversation
* @return
* @throws Exception
*/
boolean saveImConversation(ImConversation imConversation) throws Exception;
/**
* 创建会话 * 创建会话
* *
* @param imConversationCreate * @param imConversationCreate
......
...@@ -7,14 +7,26 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem; ...@@ -7,14 +7,26 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.wecloud.im.entity.*; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.entity.ImConversationMembers;
import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.friend.param.ImFriendApplyParam; import com.wecloud.im.friend.param.ImFriendApplyParam;
import com.wecloud.im.friend.service.ImFriendService; import com.wecloud.im.friend.service.ImFriendService;
import com.wecloud.im.mapper.ImConversationMapper;
import com.wecloud.im.mapper.ImConversationMembersMapper; import com.wecloud.im.mapper.ImConversationMembersMapper;
import com.wecloud.im.param.*; import com.wecloud.im.param.ApiImConversationMembersPageParam;
import com.wecloud.im.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.param.ChatSettingParam;
import com.wecloud.im.param.ChatSettingTypeEnum;
import com.wecloud.im.param.ImConvMemeClientRemarkNameParam;
import com.wecloud.im.param.ImConversationMembersPageParam;
import com.wecloud.im.param.ImConversationMembersQueryVo;
import com.wecloud.im.param.ListConversationMembersParam;
import com.wecloud.im.param.SetAdminsParam;
import com.wecloud.im.param.add.ImConversationMemAttrUpdate; import com.wecloud.im.param.add.ImConversationMemAttrUpdate;
import com.wecloud.im.service.ContextService; import com.wecloud.im.service.ContextService;
import com.wecloud.im.service.EhcacheService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationMembersService; import com.wecloud.im.service.ImConversationMembersService;
import com.wecloud.im.service.ImConversationService; import com.wecloud.im.service.ImConversationService;
...@@ -55,9 +67,6 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -55,9 +67,6 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
private ChannelSender channelSender; private ChannelSender channelSender;
@Autowired @Autowired
private ImConversationMapper imConversationMapper;
@Autowired
private ImConversationMembersService imConversationMembersService; private ImConversationMembersService imConversationMembersService;
@Autowired @Autowired
...@@ -75,9 +84,11 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -75,9 +84,11 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
@Autowired @Autowired
private ImFriendService imFriendService; private ImFriendService imFriendService;
@Autowired
private EhcacheService ehcacheService;
@Override @Override
public ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication) { public ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication) {
List<ApiImConversationMembersQueryVo> restApiImConversationMembersList = imConversationMembersMapper.getRestApiImConversationMembersList(apiImConversationMembersPageParam.getConversationId()); List<ApiImConversationMembersQueryVo> restApiImConversationMembersList = imConversationMembersMapper.getRestApiImConversationMembersList(apiImConversationMembersPageParam.getConversationId());
return ApiResult.ok(restApiImConversationMembersList); return ApiResult.ok(restApiImConversationMembersList);
} }
...@@ -194,19 +205,6 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -194,19 +205,6 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveImConversationMembers(ImConversationMembers imConversationMembers) throws Exception {
return super.save(imConversationMembers);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateImConversationMembers(ImConversationMembers imConversationMembers) throws Exception {
return super.updateById(imConversationMembers);
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean deleteImConversationMembers(Long id) { public boolean deleteImConversationMembers(Long id) {
...@@ -271,6 +269,7 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa ...@@ -271,6 +269,7 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
} else if (ChatSettingTypeEnum.DO_NOT_DISTURB.equals(type)) { } else if (ChatSettingTypeEnum.DO_NOT_DISTURB.equals(type)) {
result = update(Wrappers.<ImConversationMembers>lambdaUpdate().eq(ImConversationMembers::getId, result = update(Wrappers.<ImConversationMembers>lambdaUpdate().eq(ImConversationMembers::getId,
conversation.getId()).set(ImConversationMembers::getDoNotDisturb, on)); conversation.getId()).set(ImConversationMembers::getDoNotDisturb, on));
ehcacheService.delEhCacheMember("member" + conversation.getId());
} }
return result; return result;
} }
......
...@@ -157,12 +157,6 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -157,12 +157,6 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Resource @Resource
private EhcacheService ehcacheService; private EhcacheService ehcacheService;
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveImConversation(ImConversation imConversation) {
return super.save(imConversation);
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ImConversationCreateVo createImConversation(ImConversationCreate imConversationCreate) { public ImConversationCreateVo createImConversation(ImConversationCreate imConversationCreate) {
...@@ -646,6 +640,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap ...@@ -646,6 +640,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
mutedMemberList.add(saveMutedMember); mutedMemberList.add(saveMutedMember);
} }
imConversationMembersService.updateBatchById(mutedMemberList); imConversationMembersService.updateBatchById(mutedMemberList);
ehcacheService.delEhCacheMember("member" + param.getConversationId());
return true; 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