Commit 3808e8b9 by Future

ehcache

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