聊天对话修改
This commit is contained in:
parent
bdadacb5eb
commit
f159763290
|
|
@ -66,53 +66,85 @@ public class BmMessageServiceImpl implements IBmMessageService {
|
|||
@Override
|
||||
public List<BmMessage> selectBmMessageListFromCache(BmMessage bmMessage) {
|
||||
Long companyId = SecurityUtils.getLoginUser().getSysUser().getCompanyId();
|
||||
Collection<String> keys = SpringUtils.getBean(RedisService.class).keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + "*");
|
||||
List<BmMessage> list = new ArrayList<>();
|
||||
keys.stream().forEach(t -> {
|
||||
JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(t);
|
||||
list.addAll(arrayCache.toList(BmMessage.class));
|
||||
});
|
||||
List<BmMessage> result = list.stream().filter(o -> companyId.equals(o.getFromCompany()) || companyId.equals(o.getToCompany())).collect(Collectors.toList());
|
||||
List<BmMessage> sortedList = result.stream()
|
||||
.sorted(Comparator.comparing(BmMessage::getCreateTime))
|
||||
.collect(Collectors.toList());
|
||||
List<BmMessage> mergedList = filterAndMerge(sortedList);
|
||||
/* Optional<BmMessage> lastElement = sortedList.stream()
|
||||
.reduce((first, second) -> second);
|
||||
String messageContent = lastElement.map(BmMessage::getMessageContent)
|
||||
.orElse("");
|
||||
Integer isRead = lastElement.map(BmMessage::getIsRead)
|
||||
.orElse(0);*/
|
||||
if (mergedList.size() > 0) {
|
||||
// List<BmMessage> messages = sortedList.subList(0, 1);
|
||||
// messages.get(0).setMessageContent(messageContent);
|
||||
// messages.get(0).setIsRead(isRead);
|
||||
return mergedList;
|
||||
} else {
|
||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||
|
||||
// 获取所有消息缓存 key
|
||||
Collection<String> keys = redisService.keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + "*");
|
||||
if (keys == null || keys.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
List<BmMessage> list = new ArrayList<>();
|
||||
|
||||
// 遍历 key 获取消息列表
|
||||
for (String key : keys) {
|
||||
JSONArray arrayCache = redisService.getCacheObject(key);
|
||||
if (arrayCache != null && !arrayCache.isEmpty()) {
|
||||
try {
|
||||
list.addAll(arrayCache.toList(BmMessage.class));
|
||||
} catch (Exception e) {
|
||||
// 可记录日志:log.warn("解析缓存失败,key={}", key, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 过滤当前公司相关消息并排序
|
||||
List<BmMessage> filteredList = list.stream()
|
||||
.filter(o -> companyId.equals(o.getFromCompany()) || companyId.equals(o.getToCompany()))
|
||||
.sorted(Comparator.comparing(BmMessage::getCreateTime))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 合并消息
|
||||
List<BmMessage> mergedList = filterAndMerge(filteredList);
|
||||
|
||||
return mergedList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BmMessage> selectBmMessageListFromCacheOne(BmMessage bmMessage) {
|
||||
Long companyId = SecurityUtils.getLoginUser().getSysUser().getCompanyId();
|
||||
Long toCompany = bmMessage.getToCompany();
|
||||
Collection<String> keys1 = SpringUtils.getBean(RedisService.class).keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + toCompany + ":" + companyId);
|
||||
Collection<String> keys2 = SpringUtils.getBean(RedisService.class).keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + companyId + ":" + toCompany);
|
||||
|
||||
RedisService redisService = SpringUtils.getBean(RedisService.class);
|
||||
|
||||
String keyPattern1 = MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + toCompany + ":" + companyId;
|
||||
String keyPattern2 = MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + companyId + ":" + toCompany;
|
||||
|
||||
Collection<String> keys1 = redisService.keys(keyPattern1);
|
||||
Collection<String> keys2 = redisService.keys(keyPattern2);
|
||||
|
||||
List<String> keys = new ArrayList<>();
|
||||
keys.addAll(keys1);
|
||||
keys.addAll(keys2);
|
||||
if (keys1 != null) {
|
||||
keys.addAll(keys1);
|
||||
}
|
||||
if (keys2 != null) {
|
||||
keys.addAll(keys2);
|
||||
}
|
||||
|
||||
List<BmMessage> list = new ArrayList<>();
|
||||
keys.stream().forEach(t -> {
|
||||
JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(t);
|
||||
list.addAll(arrayCache.toList(BmMessage.class));
|
||||
});
|
||||
List<BmMessage> sortedList = list.stream()
|
||||
.sorted(Comparator.comparing(t -> t.getCreateTime()))
|
||||
|
||||
for (String key : keys) {
|
||||
JSONArray arrayCache = redisService.getCacheObject(key);
|
||||
if (arrayCache != null && !arrayCache.isEmpty()) {
|
||||
try {
|
||||
list.addAll(arrayCache.toList(BmMessage.class));
|
||||
} catch (Exception e) {
|
||||
// 可记录日志或跳过异常条目
|
||||
// log.warn("Failed to parse BmMessage from cache key: {}", key, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return list.stream()
|
||||
.sorted(Comparator.comparing(BmMessage::getCreateTime))
|
||||
.collect(Collectors.toList());
|
||||
return sortedList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 根据所属公司查询消息未读数量
|
||||
* @param bmMessage
|
||||
|
|
|
|||
Loading…
Reference in New Issue