Commit b5f5c408eeec8e4d6acb1ec5a7513de5b1f7cd70

Authored by YunaiV
1 parent b0221c21

✨ feat(im):好友申请通知 payload 补 fromNickname/fromAvatar,前端按 requestId 直推不再回拉

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 @@ -20,6 +20,7 @@ import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.Frie
20 import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestNotification; 20 import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestNotification;
21 import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestRejectedNotification; 21 import cn.iocoder.yudao.module.im.service.websocket.dto.notification.friend.FriendRequestRejectedNotification;
22 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 22 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  23 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
23 import jakarta.annotation.Resource; 24 import jakarta.annotation.Resource;
24 import lombok.extern.slf4j.Slf4j; 25 import lombok.extern.slf4j.Slf4j;
25 import org.springframework.stereotype.Service; 26 import org.springframework.stereotype.Service;
@@ -98,9 +99,12 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService { @@ -98,9 +99,12 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService {
98 friendRequestMapper.insert(request); 99 friendRequestMapper.insert(request);
99 } 100 }
100 101
101 - // 3. 推送 FRIEND_REQUEST_RECEIVED 给 toUser 多端 102 + // 3. 推送 FRIEND_REQUEST_RECEIVED 给 toUser 多端;payload 携带申请方昵称 / 头像,前端按 requestId 直推 push 进列表
  103 + AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId);
102 FriendRequestNotification payload = (FriendRequestNotification) new FriendRequestNotification() 104 FriendRequestNotification payload = (FriendRequestNotification) new FriendRequestNotification()
103 .setRequestId(request.getId()).setApplyContent(request.getApplyContent()).setAddSource(request.getAddSource()) 105 .setRequestId(request.getId()).setApplyContent(request.getApplyContent()).setAddSource(request.getAddSource())
  106 + .setFromNickname(fromUser != null ? fromUser.getNickname() : null)
  107 + .setFromAvatar(fromUser != null ? fromUser.getAvatar() : null)
104 .setOperatorUserId(fromUserId).setFriendUserId(fromUserId); 108 .setOperatorUserId(fromUserId).setFriendUserId(fromUserId);
105 websocketService.sendPrivateMessageAsync(toUserId, ImPrivateMessageDTO.ofFriendNotification( 109 websocketService.sendPrivateMessageAsync(toUserId, ImPrivateMessageDTO.ofFriendNotification(
106 ImMessageTypeEnum.FRIEND_REQUEST_RECEIVED.getType(), fromUserId, toUserId, payload)); 110 ImMessageTypeEnum.FRIEND_REQUEST_RECEIVED.getType(), fromUserId, toUserId, payload));
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; @@ -5,7 +5,7 @@ import lombok.Data;
5 /** 5 /**
6 * 收到新的好友申请通知 6 * 收到新的好友申请通知
7 * <p> 7 * <p>
8 - * 推送给申请的接收方多端;前端拿到 requestId 后按需 fetch 完整申请记录,避免 payload 体积过大 8 + * 推送给申请的接收方多端;payload 已携带 fromUser 聚合字段,前端按 requestId 直接 push 进列表,无需回拉
9 */ 9 */
10 @Data 10 @Data
11 public class FriendRequestNotification extends BaseFriendNotification { 11 public class FriendRequestNotification extends BaseFriendNotification {
@@ -23,4 +23,15 @@ public class FriendRequestNotification extends BaseFriendNotification { @@ -23,4 +23,15 @@ public class FriendRequestNotification extends BaseFriendNotification {
23 */ 23 */
24 private Integer addSource; 24 private Integer addSource;
25 25
  26 + // ========== 聚合自 AdminUser,避免前端再调 system 接口 ==========
  27 +
  28 + /**
  29 + * 申请方昵称
  30 + */
  31 + private String fromNickname;
  32 + /**
  33 + * 申请方头像
  34 + */
  35 + private String fromAvatar;
  36 +
26 } 37 }