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 9380895..446b740 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 @@ -20,6 +20,7 @@ import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.Frie import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestNotification; import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestRejectedNotification; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -98,9 +99,12 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService { friendRequestMapper.insert(request); } - // 3. 推送 FRIEND_REQUEST_RECEIVED 给 toUser 多端 + // 3. 推送 FRIEND_REQUEST_RECEIVED 给 toUser 多端;payload 携带申请方昵称 / 头像,前端按 requestId 直推 push 进列表 + AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId); FriendRequestNotification payload = (FriendRequestNotification) new FriendRequestNotification() .setRequestId(request.getId()).setApplyContent(request.getApplyContent()).setAddSource(request.getAddSource()) + .setFromNickname(fromUser != null ? fromUser.getNickname() : null) + .setFromAvatar(fromUser != null ? fromUser.getAvatar() : null) .setOperatorUserId(fromUserId).setFriendUserId(fromUserId); websocketService.sendPrivateMessageAsync(toUserId, ImPrivateMessageDTO.ofFriendNotification( ImMessageTypeEnum.FRIEND_REQUEST_RECEIVED.getType(), fromUserId, toUserId, payload)); diff --git a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/notification/friend/FriendRequestNotification.java b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/notification/friend/FriendRequestNotification.java index 965e904..924e895 100644 --- a/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/notification/friend/FriendRequestNotification.java +++ b/yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/websocket/dto/notification/friend/FriendRequestNotification.java @@ -5,7 +5,7 @@ import lombok.Data; /** * 收到新的好友申请通知 *
- * 推送给申请的接收方多端;前端拿到 requestId 后按需 fetch 完整申请记录,避免 payload 体积过大 + * 推送给申请的接收方多端;payload 已携带 fromUser 聚合字段,前端按 requestId 直接 push 进列表,无需回拉 */ @Data public class FriendRequestNotification extends BaseFriendNotification { @@ -23,4 +23,15 @@ public class FriendRequestNotification extends BaseFriendNotification { */ private Integer addSource; + // ========== 聚合自 AdminUser,避免前端再调 system 接口 ========== + + /** + * 申请方昵称 + */ + private String fromNickname; + /** + * 申请方头像 + */ + private String fromAvatar; + }