Commit 45b6e147 by 王祖波

奖励分组

parent d02af397
......@@ -152,45 +152,44 @@ public class GroupChatActivityRewardBaseDTO implements Serializable {
}
public static Map<Integer, List<GroupChatActivityRewardDTO>> reverseMapConvert(List<GroupChatActivityRewardBaseDTO> baseDTOList) {
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = new HashMap<>();
// 按 rewardInvite 分组
Map<Integer, Map<Long, GroupChatActivityRewardDTO>> groupedMap = new HashMap<>();
for (GroupChatActivityRewardBaseDTO baseDTO : baseDTOList) {
int rewardInvite = baseDTO.getRewardInvite();
Long chatActivityId = baseDTO.getChatActivityId();
groupedMap.putIfAbsent(rewardInvite, new HashMap<>());
Map<Long, GroupChatActivityRewardDTO> rewardDTOMap = groupedMap.get(rewardInvite);
GroupChatActivityRewardDTO rewardDTO = rewardDTOMap.computeIfAbsent(chatActivityId, id -> {
GroupChatActivityRewardDTO newRewardDTO = new GroupChatActivityRewardDTO();
newRewardDTO.setChatActivityId(baseDTO.getChatActivityId());
newRewardDTO.setInviteNumber(baseDTO.getInviteNumber());
newRewardDTO.setInviteLevel(baseDTO.getInviteLevel());
newRewardDTO.setLimitReward(baseDTO.getLimitReward());
newRewardDTO.setDetailList(new ArrayList<>());
return newRewardDTO;
});
GroupChatActivityRewardDetailDTO detailDTO = new GroupChatActivityRewardDetailDTO();
detailDTO.setChatActivityRewardId(baseDTO.getChatActivityRewardId());
detailDTO.setRewardType(baseDTO.getRewardType());
detailDTO.setRewardValue(baseDTO.getRewardValue());
detailDTO.setRewardName(baseDTO.getRewardName());
rewardDTO.getDetailList().add(detailDTO);
}
groupedMap.forEach((rewardInvite, rewardDTOMap) -> {
List<GroupChatActivityRewardDTO> rewardDTOList = new ArrayList<>(rewardDTOMap.values());
rewardMap.put(rewardInvite, rewardDTOList);
});
// 按 rewardInvite、chatActivityId 和 inviteLevel 进行分组
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = baseDTOList.stream()
.collect(Collectors.groupingBy(
GroupChatActivityRewardBaseDTO::getRewardInvite,
Collectors.collectingAndThen(
Collectors.groupingBy(baseDTO -> Arrays.asList(baseDTO.getChatActivityId(), baseDTO.getInviteLevel())),
chatActivityGroups -> chatActivityGroups.values().stream()
.map(group -> {
GroupChatActivityRewardBaseDTO firstDTO = group.get(0);
GroupChatActivityRewardDTO rewardDTO = new GroupChatActivityRewardDTO();
rewardDTO.setChatActivityId(firstDTO.getChatActivityId());
rewardDTO.setInviteNumber(firstDTO.getInviteNumber());
rewardDTO.setInviteLevel(firstDTO.getInviteLevel());
rewardDTO.setLimitReward(firstDTO.getLimitReward());
List<GroupChatActivityRewardDetailDTO> detailList = group.stream()
.map(baseDTO -> {
GroupChatActivityRewardDetailDTO detailDTO = new GroupChatActivityRewardDetailDTO();
detailDTO.setChatActivityRewardId(baseDTO.getChatActivityRewardId());
detailDTO.setRewardType(baseDTO.getRewardType());
detailDTO.setRewardValue(baseDTO.getRewardValue());
detailDTO.setRewardName(baseDTO.getRewardName());
return detailDTO;
})
.collect(Collectors.toList());
rewardDTO.setDetailList(detailList);
return rewardDTO;
})
.collect(Collectors.toList())
)
));
return rewardMap;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment