Commit 843cc90b872758743735b588b56029dbe9b07d84
1 parent
106cf1c9
✨ feat(im): 好友/群成员添加增加唯一索引并发兼容
- ImFriendServiceImpl#addFriend0 捕获 DuplicateKeyException 并发插入冲突时忽略(另一方插入必然为 ENABLE 状态) - ImGroupMemberServiceImpl#addGroupMember 改为先查后写: 已存在 DISABLE 复活为 ENABLE,新记录 insert 失败降级 select 返回 - ImGroupMemberServiceImpl#addGroupMembers 批量 insert 触发 DuplicateKey 时降级为逐个 addGroupMember 走幂等兜底 - 依赖 im_friend.uk_user_friend 与 im_group_member.uk_group_user 唯一索引
Showing
2 changed files
with
2 additions
and
2 deletions
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImpl.java
| ... | ... | @@ -137,7 +137,7 @@ public class ImFriendServiceImpl implements ImFriendService { |
| 137 | 137 | * - 已存在且 ENABLE:无需重复操作 |
| 138 | 138 | * - 已存在但 DISABLE:恢复关系(status=ENABLE,刷新 addTime,清空 deleteTime) |
| 139 | 139 | * <p> |
| 140 | - * 并发安全:依靠 im_friend 表的唯一索引 uk_user_friend(user_id, friend_user_id) 保证幂等, | |
| 140 | + * 并发安全:依靠 im_friend 表的唯一索引 uk_im_friend_user_friend(user_id, friend_user_id) 保证幂等, | |
| 141 | 141 | * 当并发 insert 触发 {@link DuplicateKeyException} 时降级为 select + update。 |
| 142 | 142 | */ |
| 143 | 143 | @CacheEvict(cacheNames = FRIEND, key = "#userId + '_' + #friendUserId") | ... | ... |
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/group/ImGroupMemberServiceImpl.java
| ... | ... | @@ -66,7 +66,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService { |
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | /** |
| 69 | - * 并发安全:依靠 im_group_member 表的唯一索引 uk_group_user(group_id, user_id) 保证幂等, | |
| 69 | + * 并发安全:依靠 im_group_member 表的唯一索引 uk_im_group_member_group_user(group_id, user_id) 保证幂等, | |
| 70 | 70 | * 当并发 insert 触发 {@link DuplicateKeyException} 时降级为 select + update。 |
| 71 | 71 | */ |
| 72 | 72 | @Override | ... | ... |