家族新增增加支持者和主播列表
This commit is contained in:
parent
43448cab51
commit
a6f3a6cf5b
@ -21,15 +21,20 @@ import com.red.circle.other.infra.database.rds.service.family.FamilyBoxUserContr
|
||||
import com.red.circle.other.infra.database.rds.service.family.FamilyBoxUserRewardService;
|
||||
import com.red.circle.other.infra.database.rds.service.family.FamilyLevelExpService;
|
||||
import com.red.circle.other.infra.database.rds.service.family.FamilyMemberInfoService;
|
||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember;
|
||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService;
|
||||
import com.red.circle.other.infra.enums.family.FamilyRoleEnum;
|
||||
import com.red.circle.other.infra.enums.family.FamilyStatusEnum;
|
||||
import com.red.circle.other.infra.enums.family.FamilyBoxConfigEnum;
|
||||
import com.red.circle.other.inner.enums.config.EnumConfigKey;
|
||||
import com.red.circle.other.inner.enums.team.TeamMemberRole;
|
||||
import com.red.circle.other.inner.model.dto.famliy.FamilyDetailsDTO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
@ -58,6 +63,7 @@ public class FamilyBaseInfoExe {
|
||||
private final FamilyBoxDailyService familyBoxDailyService;
|
||||
private final FamilyBoxUserContributeService familyBoxUserContributeService;
|
||||
private final FamilyBoxUserRewardService familyBoxUserRewardService;
|
||||
private final TeamMemberService teamMemberService;
|
||||
private final EnumConfigCacheService enumConfigCacheService;
|
||||
private final UserProfileGateway userProfileGateway;
|
||||
|
||||
@ -83,13 +89,16 @@ public class FamilyBaseInfoExe {
|
||||
|
||||
FamilyBaseInfoCO.FamilyBoxInfo boxInfo = buildBoxInfo(cmd.getFamilyId(), cmd.getReqUserId());
|
||||
|
||||
return getFamilyInfoCO(baseInfo, familyLevel, adminInfo, boxInfo);
|
||||
FamilyBaseInfoCO.FamilyMemberList memberList = buildMemberList(cmd.getFamilyId());
|
||||
|
||||
return getFamilyInfoCO(baseInfo, familyLevel, adminInfo, boxInfo, memberList);
|
||||
}
|
||||
|
||||
private FamilyBaseInfoCO getFamilyInfoCO(FamilyBaseInfo baseInfo,
|
||||
FamilyDetailsDTO familyLevel,
|
||||
FamilyBaseInfoCO.FamilyAdminInfo adminInfo,
|
||||
FamilyBaseInfoCO.FamilyBoxInfo boxInfo) {
|
||||
FamilyBaseInfoCO.FamilyBoxInfo boxInfo,
|
||||
FamilyBaseInfoCO.FamilyMemberList memberList) {
|
||||
|
||||
return new FamilyBaseInfoCO()
|
||||
.setFamilyId(baseInfo.getId())
|
||||
@ -108,7 +117,8 @@ public class FamilyBaseInfoExe {
|
||||
.setLevelExp(familyLevel.getLevelExp())
|
||||
.setMaxMember(familyLevel.getMaxMember())
|
||||
.setLevelBackgroundPicture(familyLevel.getLevelBackgroundPicture())
|
||||
.setBoxInfo(boxInfo);
|
||||
.setBoxInfo(boxInfo)
|
||||
.setMemberList(memberList);
|
||||
}
|
||||
|
||||
private FamilyDetailsDTO getCacheFamilyLevel(FamilyBaseInfoQueryCmd cmd, Long familyId) {
|
||||
@ -156,4 +166,65 @@ public class FamilyBaseInfoExe {
|
||||
return boxInfo;
|
||||
}
|
||||
|
||||
private FamilyBaseInfoCO.FamilyMemberList buildMemberList(Long familyId) {
|
||||
List<FamilyMemberInfo> members = familyMemberInfoService.listFamilyMembers(familyId, null, 50);
|
||||
|
||||
if (members.isEmpty()) {
|
||||
return new FamilyBaseInfoCO.FamilyMemberList()
|
||||
.setHosts(new ArrayList<>())
|
||||
.setSupporters(new ArrayList<>());
|
||||
}
|
||||
|
||||
Set<Long> memberUserIds = members.stream()
|
||||
.map(FamilyMemberInfo::getMemberUserId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Map<Long, TeamMember> teamMemberMap = mapTeamMember(memberUserIds);
|
||||
Map<Long, UserProfile> userProfileMap = mapUserProfile(memberUserIds);
|
||||
|
||||
List<FamilyBaseInfoCO.SimpleMemberInfo> hosts = new ArrayList<>();
|
||||
List<FamilyBaseInfoCO.SimpleMemberInfo> supporters = new ArrayList<>();
|
||||
|
||||
for (FamilyMemberInfo member : members) {
|
||||
TeamMember teamMember = teamMemberMap.get(member.getMemberUserId());
|
||||
UserProfile userProfile = userProfileMap.get(member.getMemberUserId());
|
||||
|
||||
if (Objects.isNull(userProfile)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
FamilyBaseInfoCO.SimpleMemberInfo memberInfo = new FamilyBaseInfoCO.SimpleMemberInfo()
|
||||
.setUserId(member.getMemberUserId())
|
||||
.setUserAvatar(userProfile.getUserAvatar());
|
||||
|
||||
if (Objects.nonNull(teamMember)) {
|
||||
if (hosts.size() < 5) {
|
||||
hosts.add(memberInfo);
|
||||
}
|
||||
} else {
|
||||
if (supporters.size() < 5) {
|
||||
supporters.add(memberInfo);
|
||||
}
|
||||
}
|
||||
|
||||
if (hosts.size() >= 5 && supporters.size() >= 5) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new FamilyBaseInfoCO.FamilyMemberList()
|
||||
.setHosts(hosts)
|
||||
.setSupporters(supporters);
|
||||
}
|
||||
|
||||
private Map<Long, TeamMember> mapTeamMember(Set<Long> memberUserIds) {
|
||||
List<TeamMember> teamMemberList = teamMemberService.listByMemberIds(memberUserIds);
|
||||
return teamMemberList.stream()
|
||||
.collect(Collectors.toMap(TeamMember::getMemberId, e -> e, (v1, v2) -> v1));
|
||||
}
|
||||
|
||||
private Map<Long, UserProfile> mapUserProfile(Set<Long> memberUserIds) {
|
||||
return userProfileGateway.mapByUserIds(memberUserIds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -120,6 +120,11 @@ public class FamilyBaseInfoCO extends ClientObject {
|
||||
*/
|
||||
private FamilyBoxInfo boxInfo;
|
||||
|
||||
/**
|
||||
* 成员列表.
|
||||
*/
|
||||
private FamilyMemberList memberList;
|
||||
|
||||
/**
|
||||
* 家族群聊付费解锁金额.
|
||||
*/
|
||||
@ -161,4 +166,35 @@ public class FamilyBaseInfoCO extends ClientObject {
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class FamilyMemberList {
|
||||
|
||||
/**
|
||||
* 主播列表.
|
||||
*/
|
||||
private List<SimpleMemberInfo> hosts;
|
||||
|
||||
/**
|
||||
* 支持者列表.
|
||||
*/
|
||||
private List<SimpleMemberInfo> supporters;
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class SimpleMemberInfo {
|
||||
|
||||
/**
|
||||
* 用户ID.
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户头像.
|
||||
*/
|
||||
private String userAvatar;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user