diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/redpacket/query/QueryRoomRedPacketDetailQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/redpacket/query/QueryRoomRedPacketDetailQryExe.java index 6e5572dc..9d44356e 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/redpacket/query/QueryRoomRedPacketDetailQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/redpacket/query/QueryRoomRedPacketDetailQryExe.java @@ -3,6 +3,7 @@ package com.red.circle.other.app.command.redpacket.query; import com.red.circle.framework.core.asserts.ResponseAssert; import com.red.circle.other.app.convertor.RoomRedPacketAppConvertor; import com.red.circle.other.app.dto.clientobject.RoomRedPacketDetailCO; +import com.red.circle.other.app.dto.clientobject.RoomRedPacketRecordCO; import com.red.circle.other.app.dto.cmd.QueryRoomRedPacketDetailCmd; import com.red.circle.other.domain.gateway.RoomRedPacketGateway; import com.red.circle.other.domain.gateway.RoomRedPacketRecordGateway; @@ -17,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.*; +import java.util.stream.Collectors; /** * 查询红包详情执行器 @@ -52,8 +54,11 @@ public class QueryRoomRedPacketDetailQryExe { boolean grabbed = roomRedPacketCacheService.hasUserGrabbed(packetId, userId); detailCO.setGrabbed(grabbed); - Map profileMap = userProfileGateway.mapByUserIds(Set.of(detailCO.getUserId())); - UserProfile userProfile = profileMap.get(userId); + Set userIdSet = detailCO.getRecords().stream().map(RoomRedPacketRecordCO::getUserId).collect(Collectors.toSet()); + userIdSet.add(detailCO.getUserId()); + + Map profileMap = userProfileGateway.mapByUserIds(userIdSet); + UserProfile userProfile = profileMap.get(detailCO.getUserId()); if (userProfile != null) { detailCO.setUserId(userProfile.getId()); detailCO.setAccount(userProfile.getAccount()); @@ -61,6 +66,16 @@ public class QueryRoomRedPacketDetailQryExe { detailCO.setUserAvatar(userProfile.getUserAvatar()); } + detailCO.getRecords().forEach(roomRedPacketRecord -> { + UserProfile profile = profileMap.get(roomRedPacketRecord.getUserId()); + if (profile != null) { + roomRedPacketRecord.setUserId(profile.getId()); + roomRedPacketRecord.setAccount(profile.getAccount()); + roomRedPacketRecord.setUserName(profile.getUserNickname()); + roomRedPacketRecord.setUserAvatar(profile.getUserAvatar()); + }; + }); + // 5. 如果当前用户已领取,设置领取金额 if (grabbed) { Optional myRecord = records.stream() diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RoomRedPacketRecordCO.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RoomRedPacketRecordCO.java index 1b59999c..57d35642 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RoomRedPacketRecordCO.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RoomRedPacketRecordCO.java @@ -20,6 +20,8 @@ public class RoomRedPacketRecordCO { */ private Long userId; + private String account; + /** * 领取人昵称 */