From 8af1e6b933f71b06643e135046bd2de5f5bbcd1d Mon Sep 17 00:00:00 2001 From: blue <825657193@qq.com> Date: Tue, 30 Apr 2024 15:44:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=9B=B4=E6=96=B0,?= =?UTF-8?q?=E6=B8=85=E7=90=86=E6=97=A0=E6=95=88=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 - .../controller/GroupMessageController.java | 7 --- .../controller/PrivateMessageController.java | 7 --- .../service/IGroupMessageService.java | 8 --- .../service/IPrivateMessageService.java | 8 --- .../service/impl/GroupMessageServiceImpl.java | 53 ------------------- .../impl/PrivateMessageServiceImpl.java | 40 -------------- 7 files changed, 125 deletions(-) diff --git a/README.md b/README.md index be2d811..00b9bab 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,6 @@ ![输入图片说明](%E6%88%AA%E5%9B%BE/wx%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg) -注:由于每次发布小程序都需要经过严格且繁琐的审核,当前线上微信小程序并非最新版本,最后一次更新时间是2023年12月 - #### 相关项目 diff --git a/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java b/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java index 9a0f959..c9df96c 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java @@ -35,13 +35,6 @@ public class GroupMessageController { return ResultUtils.success(); } - - @GetMapping("/loadMessage") - @ApiOperation(value = "拉取消息(已废弃)", notes = "拉取消息,一次最多拉取100条") - public Result> loadMessage(@RequestParam Long minId) { - return ResultUtils.success(groupMessageService.loadMessage(minId)); - } - @GetMapping("/pullOfflineMessage") @ApiOperation(value = "拉取离线消息", notes = "拉取离线消息,消息将通过webscoket异步推送") public Result pullOfflineMessage(@RequestParam Long minId) { diff --git a/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java b/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java index 758c86f..9f99531 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java @@ -36,13 +36,6 @@ public class PrivateMessageController { return ResultUtils.success(); } - - @GetMapping("/loadMessage") - @ApiOperation(value = "拉取消息(已废弃)", notes = "拉取消息,一次最多拉取100条") - public Result> loadMessage(@RequestParam Long minId) { - return ResultUtils.success(privateMessageService.loadMessage(minId)); - } - @GetMapping("/pullOfflineMessage") @ApiOperation(value = "拉取离线消息", notes = "拉取离线消息,消息将通过webscoket异步推送") public Result pullOfflineMessage(@RequestParam Long minId) { diff --git a/im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java b/im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java index e67f809..54f9f5e 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java @@ -24,14 +24,6 @@ public interface IGroupMessageService extends IService { */ void recallMessage(Long id); - /** - * 拉取消息,只能拉取最近1个月的消息,一次拉取100条 - * - * @param minId 消息起始id - * @return 聊天消息列表 - */ - List loadMessage(Long minId); - /** * 拉取离线消息,只能拉取最近1个月的消息,最多拉取1000条 * diff --git a/im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java b/im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java index 4a470d1..89669b8 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java @@ -36,14 +36,6 @@ public interface IPrivateMessageService extends IService { List findHistoryMessage(Long friendId, Long page, Long size); - /** - * 拉取消息,只能拉取最近1个月的消息,一次拉取100条 - * - * @param minId 消息起始id - * @return 聊天消息列表 - */ - List loadMessage(Long minId); - /** * 拉取离线消息,只能拉取最近1个月的消息,最多拉取1000条 * diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java index 2faa946..1fb1795 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java @@ -147,59 +147,6 @@ public class GroupMessageServiceImpl extends ServiceImpl loadMessage(Long minId) { - UserSession session = SessionContext.getSession(); - List members = groupMemberService.findByUserId(session.getUserId()); - if (CollectionUtil.isEmpty(members)) { - return new ArrayList<>(); - } - Map groupMemberMap = CollStreamUtil.toIdentityMap(members, GroupMember::getGroupId); - Set groupIds = groupMemberMap.keySet(); - // 只能拉取最近1个月的 - Date minDate = DateUtils.addMonths(new Date(), -1); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.gt(GroupMessage::getId, minId).gt(GroupMessage::getSendTime, minDate).in(GroupMessage::getGroupId, groupIds) - .ne(GroupMessage::getStatus, MessageStatus.RECALL.code()).orderByAsc(GroupMessage::getId).last("limit 100"); - - List messages = this.list(wrapper); - // 转成vo - List vos = messages.stream() - .filter(m -> { - //排除加群之前的消息 - GroupMember member = groupMemberMap.get(m.getGroupId()); - return Objects.nonNull(member) && DateUtil.compare(member.getCreatedTime(), m.getSendTime()) <= 0; - }) - .map(m -> { - GroupMessageVO vo = BeanUtils.copyProperties(m, GroupMessageVO.class); - // 被@用户列表 - if (StringUtils.isNotBlank(m.getAtUserIds()) && Objects.nonNull(vo)) { - List atIds = Splitter.on(",").trimResults().splitToList(m.getAtUserIds()); - vo.setAtUserIds(atIds.stream().map(Long::parseLong).collect(Collectors.toList())); - } - return vo; - }).collect(Collectors.toList()); - // 通过群聊对消息进行分组 - Map> messageGroupMap = vos.stream().collect(Collectors.groupingBy(GroupMessageVO::getGroupId)); - messageGroupMap.forEach((groupId, messageVos) -> { - // 填充消息状态 - String key = StrUtil.join(":", RedisKey.IM_GROUP_READED_POSITION, groupId); - Object o = redisTemplate.opsForHash().get(key, session.getUserId().toString()); - long readedMaxId = Objects.isNull(o) ? -1 : Long.parseLong(o.toString()); - messageVos.forEach(messageVo -> messageVo.setStatus(readedMaxId >= messageVo.getId() ? MessageStatus.READED.code() : MessageStatus.UNSEND.code())); - // 针对回执消息填充已读人数 - List receiptMessageVos = messageVos.stream().filter(GroupMessageVO::getReceipt).collect(Collectors.toList()); - if (!receiptMessageVos.isEmpty()) { - Map maxIdMap = redisTemplate.opsForHash().entries(key); - receiptMessageVos.forEach(receiptMessageVo -> { - int count = getReadedUserIds(maxIdMap, receiptMessageVo.getId(),receiptMessageVo.getSendId()).size(); - receiptMessageVo.setReadedCount(count); - }); - } - }); - return vos; - } - @Override public void pullOfflineMessage(Long minId) { UserSession session = SessionContext.getSession(); diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java index 415e438..e97e0de 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java @@ -136,46 +136,6 @@ public class PrivateMessageServiceImpl extends ServiceImpl loadMessage(Long minId) { - UserSession session = SessionContext.getSession(); - List friends = friendService.findFriendByUserId(session.getUserId()); - if (friends.isEmpty()) { - return new ArrayList<>(); - } - List friendIds = friends.stream().map(Friend::getFriendId).collect(Collectors.toList()); - // 获取当前用户的消息 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - // 只能拉取最近1个月的 - Date minDate = DateUtils.addMonths(new Date(), -1); - queryWrapper.gt(PrivateMessage::getId, minId) - .ge(PrivateMessage::getSendTime, minDate) - .ne(PrivateMessage::getStatus, MessageStatus.RECALL.code()) - .and(wrap -> wrap.and( - wp -> wp.eq(PrivateMessage::getSendId, session.getUserId()) - .in(PrivateMessage::getRecvId, friendIds)) - .or(wp -> wp.eq(PrivateMessage::getRecvId, session.getUserId()) - .in(PrivateMessage::getSendId, friendIds))) - .orderByAsc(PrivateMessage::getId) - .last("limit 100"); - - List messages = this.list(queryWrapper); - // 更新发送状态 - List ids = messages.stream() - .filter(m -> !m.getSendId().equals(session.getUserId()) && m.getStatus().equals(MessageStatus.UNSEND.code())) - .map(PrivateMessage::getId) - .collect(Collectors.toList()); - if (!ids.isEmpty()) { - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); - updateWrapper.in(PrivateMessage::getId, ids) - .set(PrivateMessage::getStatus, MessageStatus.SENDED.code()); - this.update(updateWrapper); - } - log.info("拉取消息,用户id:{},数量:{}", session.getUserId(), messages.size()); - return messages.stream().map(m -> BeanUtils.copyProperties(m, PrivateMessageVO.class)).collect(Collectors.toList()); - } - @Override public void pullOfflineMessage(Long minId) { UserSession session = SessionContext.getSession();