家族新增增加支持者和主播列表
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.FamilyBoxUserRewardService;
|
||||||
import com.red.circle.other.infra.database.rds.service.family.FamilyLevelExpService;
|
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.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.FamilyRoleEnum;
|
||||||
import com.red.circle.other.infra.enums.family.FamilyStatusEnum;
|
import com.red.circle.other.infra.enums.family.FamilyStatusEnum;
|
||||||
import com.red.circle.other.infra.enums.family.FamilyBoxConfigEnum;
|
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.config.EnumConfigKey;
|
||||||
|
import com.red.circle.other.inner.enums.team.TeamMemberRole;
|
||||||
import com.red.circle.other.inner.model.dto.famliy.FamilyDetailsDTO;
|
import com.red.circle.other.inner.model.dto.famliy.FamilyDetailsDTO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -58,6 +63,7 @@ public class FamilyBaseInfoExe {
|
|||||||
private final FamilyBoxDailyService familyBoxDailyService;
|
private final FamilyBoxDailyService familyBoxDailyService;
|
||||||
private final FamilyBoxUserContributeService familyBoxUserContributeService;
|
private final FamilyBoxUserContributeService familyBoxUserContributeService;
|
||||||
private final FamilyBoxUserRewardService familyBoxUserRewardService;
|
private final FamilyBoxUserRewardService familyBoxUserRewardService;
|
||||||
|
private final TeamMemberService teamMemberService;
|
||||||
private final EnumConfigCacheService enumConfigCacheService;
|
private final EnumConfigCacheService enumConfigCacheService;
|
||||||
private final UserProfileGateway userProfileGateway;
|
private final UserProfileGateway userProfileGateway;
|
||||||
|
|
||||||
@ -83,13 +89,16 @@ public class FamilyBaseInfoExe {
|
|||||||
|
|
||||||
FamilyBaseInfoCO.FamilyBoxInfo boxInfo = buildBoxInfo(cmd.getFamilyId(), cmd.getReqUserId());
|
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,
|
private FamilyBaseInfoCO getFamilyInfoCO(FamilyBaseInfo baseInfo,
|
||||||
FamilyDetailsDTO familyLevel,
|
FamilyDetailsDTO familyLevel,
|
||||||
FamilyBaseInfoCO.FamilyAdminInfo adminInfo,
|
FamilyBaseInfoCO.FamilyAdminInfo adminInfo,
|
||||||
FamilyBaseInfoCO.FamilyBoxInfo boxInfo) {
|
FamilyBaseInfoCO.FamilyBoxInfo boxInfo,
|
||||||
|
FamilyBaseInfoCO.FamilyMemberList memberList) {
|
||||||
|
|
||||||
return new FamilyBaseInfoCO()
|
return new FamilyBaseInfoCO()
|
||||||
.setFamilyId(baseInfo.getId())
|
.setFamilyId(baseInfo.getId())
|
||||||
@ -108,7 +117,8 @@ public class FamilyBaseInfoExe {
|
|||||||
.setLevelExp(familyLevel.getLevelExp())
|
.setLevelExp(familyLevel.getLevelExp())
|
||||||
.setMaxMember(familyLevel.getMaxMember())
|
.setMaxMember(familyLevel.getMaxMember())
|
||||||
.setLevelBackgroundPicture(familyLevel.getLevelBackgroundPicture())
|
.setLevelBackgroundPicture(familyLevel.getLevelBackgroundPicture())
|
||||||
.setBoxInfo(boxInfo);
|
.setBoxInfo(boxInfo)
|
||||||
|
.setMemberList(memberList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private FamilyDetailsDTO getCacheFamilyLevel(FamilyBaseInfoQueryCmd cmd, Long familyId) {
|
private FamilyDetailsDTO getCacheFamilyLevel(FamilyBaseInfoQueryCmd cmd, Long familyId) {
|
||||||
@ -156,4 +166,65 @@ public class FamilyBaseInfoExe {
|
|||||||
return boxInfo;
|
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 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