diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/basic/service/impl/BmMessageServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/basic/service/impl/BmMessageServiceImpl.java index a01b58f..0f2e004 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/basic/service/impl/BmMessageServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/basic/service/impl/BmMessageServiceImpl.java @@ -67,27 +67,40 @@ public class BmMessageServiceImpl implements IBmMessageService { JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(t); list.addAll(arrayCache.toList(BmMessage.class)); }); - List result = list.stream().filter(o -> companyId.equals(o.getFromCompany())).collect(Collectors.toList()); - Map groupedMessages = result.stream() + List result = list.stream().filter(o -> companyId.equals(o.getFromCompany()) || companyId.equals(o.getToCompany())).collect(Collectors.toList()); + Map groupedMessages1 = result.stream() .collect(Collectors.toMap( BmMessage::getFromCompany, Function.identity(), (existing, replacement) -> existing )); - List messages = new ArrayList<>(groupedMessages.values()); - return messages; + Map groupedMessages2 = result.stream() + .collect(Collectors.toMap( + BmMessage::getToCompany, + Function.identity(), + (existing, replacement) -> existing + )); + List messages1 = new ArrayList<>(groupedMessages1.values()); + List messages2 = new ArrayList<>(groupedMessages2.values()); + List messages3 = new ArrayList<>(); + messages3.addAll(messages1); + messages3.addAll(messages2); + return messages3; } public List selectBmMessageListFromCacheOne(BmMessage bmMessage) { Long companyId = SecurityUtils.getLoginUser().getSysUser().getCompanyId(); - Collection keys = SpringUtils.getBean(RedisService.class).keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + "*"); + Collection keys1 = SpringUtils.getBean(RedisService.class).keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + "*" + ":" + companyId); + Collection keys2 = SpringUtils.getBean(RedisService.class).keys(MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + companyId + ":" + "*"); + List keys = new ArrayList<>(); + keys.addAll(keys1); + keys.addAll(keys2); List list = new ArrayList<>(); keys.stream().forEach(t -> { JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(t); list.addAll(arrayCache.toList(BmMessage.class)); }); - List result = list.stream().filter(o -> companyId.equals(o.getFromCompany()) && o.getToCompany().equals(bmMessage.getToCompany())).collect(Collectors.toList()); - return result; + return list; } /** @@ -104,7 +117,7 @@ public class BmMessageServiceImpl implements IBmMessageService { bmMessage.setFromCompany(companyId); bmMessage.setFromUser(SecurityUtils.getLoginUser().getSysUser().getUserId()); bmMessage.setUuid(String.valueOf(UUID.randomUUID())); - String msgKey = MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + System.currentTimeMillis(); + String msgKey = MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE + companyId + ":" + bmMessage.getToCompany(); (SpringUtils.getBean(RedisService.class)).setCacheObject(msgKey, Arrays.asList(bmMessage), MaterialConstants.CACHE_MATERIAL_MALL_MESSAGE_HOURS, TimeUnit.HOURS); return bmMessageMapper.insertBmMessage(bmMessage); } catch (Exception e) {