Commit 2804e5ed1009a3118af189180db0f97ae89758d7
1 parent
ba1a85e3
fix(im):好友模块 code review 多项修复(缓存事务时序、agree/refuse 乐观锁、补建表 SQL 与字典 seed);framewor…
…k 开 setTransactionAware 让 @CacheEvict 自动事务感知
Showing
4 changed files
with
3 additions
and
3 deletions
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/ErrorCodeConstants.java
| @@ -52,7 +52,6 @@ public interface ErrorCodeConstants { | @@ -52,7 +52,6 @@ public interface ErrorCodeConstants { | ||
| 52 | ErrorCode FRIEND_REQUEST_NOT_EXISTS = new ErrorCode(1_040_610_001, "好友申请不存在"); | 52 | ErrorCode FRIEND_REQUEST_NOT_EXISTS = new ErrorCode(1_040_610_001, "好友申请不存在"); |
| 53 | ErrorCode FRIEND_REQUEST_HANDLED = new ErrorCode(1_040_610_002, "好友申请已处理"); | 53 | ErrorCode FRIEND_REQUEST_HANDLED = new ErrorCode(1_040_610_002, "好友申请已处理"); |
| 54 | ErrorCode FRIEND_REQUEST_NOT_TO_ME = new ErrorCode(1_040_610_003, "不能处理别人的好友申请"); | 54 | ErrorCode FRIEND_REQUEST_NOT_TO_ME = new ErrorCode(1_040_610_003, "不能处理别人的好友申请"); |
| 55 | - ErrorCode FRIEND_REQUEST_TARGET_INVALID = new ErrorCode(1_040_610_004, "好友申请的对方不存在或已禁用"); | ||
| 56 | ErrorCode FRIEND_REQUEST_ALREADY_FRIEND = new ErrorCode(1_040_610_005, "您已是 TA 的好友,无需重复添加"); | 55 | ErrorCode FRIEND_REQUEST_ALREADY_FRIEND = new ErrorCode(1_040_610_005, "您已是 TA 的好友,无需重复添加"); |
| 57 | ErrorCode FRIEND_REQUEST_BLOCKED_BY_PEER = new ErrorCode(1_040_610_006, "您已被对方拉入黑名单,无法添加为好友"); | 56 | ErrorCode FRIEND_REQUEST_BLOCKED_BY_PEER = new ErrorCode(1_040_610_006, "您已被对方拉入黑名单,无法添加为好友"); |
| 58 | 57 |
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/friend/ImFriendStateEnum.java
| @@ -9,7 +9,7 @@ import java.util.Arrays; | @@ -9,7 +9,7 @@ import java.util.Arrays; | ||
| 9 | /** | 9 | /** |
| 10 | * IM 好友关系状态(合并「是否好友」+「是否拉黑」两态) | 10 | * IM 好友关系状态(合并「是否好友」+「是否拉黑」两态) |
| 11 | * <p> | 11 | * <p> |
| 12 | - * 用 state 而非 status:避免和 ImFriendDO 的 statue 物理字段(CommonStatusEnum:ENABLE / DISABLE)混淆。 | 12 | + * 用 state 而非 status:避免和 ImFriendDO 的 status 物理字段(CommonStatusEnum:ENABLE / DISABLE)混淆。 |
| 13 | * <p> | 13 | * <p> |
| 14 | * 用于 ImFriendService.getFriendState 返回值与 FRIEND_STATE 缓存值:私聊发送热点路径下,sender 调缓存即可同时判定「能否发」和「是否屏蔽接收方」 | 14 | * 用于 ImFriendService.getFriendState 返回值与 FRIEND_STATE 缓存值:私聊发送热点路径下,sender 调缓存即可同时判定「能否发」和「是否屏蔽接收方」 |
| 15 | * | 15 | * |
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendService.java
| @@ -73,7 +73,7 @@ public interface ImFriendService { | @@ -73,7 +73,7 @@ public interface ImFriendService { | ||
| 73 | /** | 73 | /** |
| 74 | * 删除好友(单向软删除) | 74 | * 删除好友(单向软删除) |
| 75 | * <p> | 75 | * <p> |
| 76 | - * 仅删除 userId 视角下的好友关系;对端 friendUserId 的视角不受影响(与 OpenIM 单边删除语义对齐) | 76 | + * 仅删除 userId 视角下的好友关系;对端 friendUserId 的视角不受影响(单边删除语义) |
| 77 | */ | 77 | */ |
| 78 | void deleteFriend(Long userId, Long friendUserId); | 78 | void deleteFriend(Long userId, Long friendUserId); |
| 79 | 79 |
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java
| @@ -154,6 +154,7 @@ public class ImFriendServiceImpl implements ImFriendService { | @@ -154,6 +154,7 @@ public class ImFriendServiceImpl implements ImFriendService { | ||
| 154 | getSelf().addFriend0(userId, friendUserId, displayName, addSource); | 154 | getSelf().addFriend0(userId, friendUserId, displayName, addSource); |
| 155 | 155 | ||
| 156 | // 2. 仅推 FRIEND_ADD 给 userId 多端(不通知对方,保持「对方一直把我当好友」的错觉) | 156 | // 2. 仅推 FRIEND_ADD 给 userId 多端(不通知对方,保持「对方一直把我当好友」的错觉) |
| 157 | + // operatorUserId 填 friendUserId(对方):让 userId 多端 UI 呈现「对方加了我」的视觉效果,与 silent 语义对齐 | ||
| 157 | FriendAddNotification payload = (FriendAddNotification) new FriendAddNotification() | 158 | FriendAddNotification payload = (FriendAddNotification) new FriendAddNotification() |
| 158 | .setOperatorUserId(friendUserId).setFriendUserId(friendUserId); | 159 | .setOperatorUserId(friendUserId).setFriendUserId(friendUserId); |
| 159 | websocketService.sendPrivateMessageAsync(userId, ImPrivateMessageDTO.ofFriendNotification( | 160 | websocketService.sendPrivateMessageAsync(userId, ImPrivateMessageDTO.ofFriendNotification( |