From b51ca4553150610f14034cbecffe98d7093da2d5 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 4 May 2026 19:14:36 +0800 Subject: [PATCH] ✨ feat(im):实现 1209 FRIEND_INFO_UPDATED 推送链路 + 修 deleteFriend 单边 TIP bug + FRIEND_APPLICATION 重命名 FRIEND_REQUEST_RECEIVED --- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/ImCommonConstants.java | 4 ---- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/message/ImMessageTypeEnum.java | 2 +- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImpl.java | 4 ++-- yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java | 7 ++----- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/ImCommonConstants.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/ImCommonConstants.java index 29404e9..6cfd23a 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/ImCommonConstants.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/ImCommonConstants.java @@ -60,9 +60,5 @@ public interface ImCommonConstants { * 好友添加系统提示 */ String FRIEND_ADD_TIP_MESSAGE = "你们已成为好友,现在可以开始聊天了"; - /** - * 好友删除系统提示 - */ - String FRIEND_DELETE_TIP_MESSAGE = "你们的好友关系已被解除"; } diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/message/ImMessageTypeEnum.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/message/ImMessageTypeEnum.java index 3a8b7e3..4d85402 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/message/ImMessageTypeEnum.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/message/ImMessageTypeEnum.java @@ -50,7 +50,7 @@ public enum ImMessageTypeEnum implements ArrayValuable { * 对应自己的类:FriendRequestNotification * 场景:A 申请加 B,推给 B 多端,前端落到「新的朋友」列表 */ - FRIEND_APPLICATION(1203, "收到新的好友申请", false, false), + FRIEND_REQUEST_RECEIVED(1203, "收到新的好友申请", false, false), /** * 对应 OpenIM:FriendAddedNotification 1204 * 对应自己的类:FriendAddNotification diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImpl.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImpl.java index a41d73e..9380895 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImpl.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImpl.java @@ -98,12 +98,12 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService { friendRequestMapper.insert(request); } - // 3. 推送 FRIEND_APPLICATION 给 toUser 多端 + // 3. 推送 FRIEND_REQUEST_RECEIVED 给 toUser 多端 FriendRequestNotification payload = (FriendRequestNotification) new FriendRequestNotification() .setRequestId(request.getId()).setApplyContent(request.getApplyContent()).setAddSource(request.getAddSource()) .setOperatorUserId(fromUserId).setFriendUserId(fromUserId); websocketService.sendPrivateMessageAsync(toUserId, ImPrivateMessageDTO.ofFriendNotification( - ImMessageTypeEnum.FRIEND_APPLICATION.getType(), fromUserId, toUserId, payload)); + ImMessageTypeEnum.FRIEND_REQUEST_RECEIVED.getType(), fromUserId, toUserId, payload)); // 4. 全局自动通过开关:注册 afterCommit 回调,事务提交后再走同意流程 // 回调内 try/catch 兜底 —— afterCommit 异常会被 Spring 静默吞掉,否则同意失败时申请方永远等不到 APPROVED diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java index f9997dc..f7e8b78 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java @@ -34,7 +34,6 @@ import static cn.iocoder.yudao.module.im.dal.redis.RedisKeyConstants.FRIEND_STAT import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.FRIEND_NOT_BLOCKED; import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.FRIEND_NOT_FRIEND; import static cn.iocoder.yudao.module.im.enums.ImCommonConstants.FRIEND_ADD_TIP_MESSAGE; -import static cn.iocoder.yudao.module.im.enums.ImCommonConstants.FRIEND_DELETE_TIP_MESSAGE; /** * IM 好友关系 Service 实现类 @@ -169,12 +168,10 @@ public class ImFriendServiceImpl implements ImFriendService { @Transactional(rollbackFor = Exception.class) public void deleteFriend(Long userId, Long friendUserId) { // 1. 单边软删:仅 userId 视角的关系置 DISABLE;friendUserId 视角不动 + // 不推 TIP 系统消息:单边删除语义下对方不应感知;userId 端反馈由前端 toast 承担,多端同步靠下面的 FRIEND_DELETE getSelf().deleteFriend0(userId, friendUserId); - // 2.1 推 TIP 系统消息 - privateMessageService.sendTipPrivateMessage(userId, friendUserId, FRIEND_DELETE_TIP_MESSAGE); - - // 2.2 推 FRIEND_DELETE 给 userId 多端做同步(friendUserId 不感知) + // 2. 推 FRIEND_DELETE 给 userId 多端做同步(friendUserId 不感知) FriendDeleteNotification payload = (FriendDeleteNotification) new FriendDeleteNotification() .setOperatorUserId(userId).setFriendUserId(friendUserId); websocketService.sendPrivateMessageAsync(userId, ImPrivateMessageDTO.ofFriendNotification( -- libgit2 0.21.4