diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyBaseInfoExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyBaseInfoExe.java index c7452be0..3863b496 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyBaseInfoExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyBaseInfoExe.java @@ -4,13 +4,18 @@ import com.red.circle.framework.core.asserts.ResponseAssert; import com.red.circle.framework.core.response.CommonErrorCode; import com.red.circle.other.app.dto.clientobject.family.FamilyBaseInfoCO; import com.red.circle.other.app.dto.cmd.family.FamilyBaseInfoQueryCmd; +import com.red.circle.other.domain.gateway.user.UserProfileGateway; +import com.red.circle.other.domain.model.user.OwnSpecialId; +import com.red.circle.other.domain.model.user.UserProfile; import com.red.circle.other.infra.common.family.FamilyCommon; import com.red.circle.other.infra.database.cache.service.other.EnumConfigCacheService; import com.red.circle.other.infra.database.rds.entity.family.FamilyBaseInfo; +import com.red.circle.other.infra.database.rds.entity.family.FamilyMemberInfo; import com.red.circle.other.infra.database.rds.enums.OtherConfigEnum; import com.red.circle.other.infra.database.rds.service.family.FamilyBaseInfoService; 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.enums.family.FamilyRoleEnum; import com.red.circle.other.infra.enums.family.FamilyStatusEnum; import com.red.circle.other.inner.enums.config.EnumConfigKey; import com.red.circle.other.inner.model.dto.famliy.FamilyDetailsDTO; @@ -39,21 +44,38 @@ public class FamilyBaseInfoExe { private final FamilyBaseInfoService familyBaseInfoService; private final FamilyMemberInfoService familyMemberInfoService; private final EnumConfigCacheService enumConfigCacheService; + private final UserProfileGateway userProfileGateway; public FamilyBaseInfoCO execute(FamilyBaseInfoQueryCmd cmd) { FamilyBaseInfo baseInfo = getFamilyBaseInfo(cmd); FamilyDetailsDTO familyLevel = getCacheFamilyLevel(cmd, baseInfo.getId()); + FamilyMemberInfo familyMemberInfo = familyMemberInfoService.getAdmin(cmd.getFamilyId(), FamilyRoleEnum.ADMIN.getKey()); - return getFamilyInfoCO(baseInfo, familyLevel,cmd); + FamilyBaseInfoCO.FamilyAdminInfo adminInfo = null; + if (familyMemberInfo != null) { + UserProfile userProfile = userProfileGateway.getByUserId(familyMemberInfo.getMemberUserId()); + if (userProfile != null) { + adminInfo = new FamilyBaseInfoCO.FamilyAdminInfo(); + adminInfo.setUserId(userProfile.getId()); + adminInfo.setAccount(userProfile.getAccount()); + adminInfo.setUserAvatar(userProfile.getUserAvatar()); + adminInfo.setAccount(userProfile.getAccount()); + adminInfo.setSpecialAccount(Optional.ofNullable(userProfile.getOwnSpecialId()).map(OwnSpecialId::getAccount).orElse(null)); + } + } + + return getFamilyInfoCO(baseInfo, familyLevel, adminInfo); } private FamilyBaseInfoCO getFamilyInfoCO(FamilyBaseInfo baseInfo, - FamilyDetailsDTO familyLevel,FamilyBaseInfoQueryCmd cmd) { + FamilyDetailsDTO familyLevel, + FamilyBaseInfoCO.FamilyAdminInfo adminInfo) { return new FamilyBaseInfoCO() .setFamilyId(baseInfo.getId()) + .setFamilyAdmin(adminInfo) .setFamilyAccount(baseInfo.getFamilyAccount()) .setFamilyAvatar(baseInfo.getFamilyAvatar()) .setFamilyName(baseInfo.getFamilyName()) diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/family/FamilyBaseInfoCO.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/family/FamilyBaseInfoCO.java index 3e09cdf9..4f046306 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/family/FamilyBaseInfoCO.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/family/FamilyBaseInfoCO.java @@ -57,6 +57,11 @@ public class FamilyBaseInfoCO extends ClientObject { */ private String familyNotice; + /** + * 家族长信息 + */ + private FamilyAdminInfo familyAdmin; + /** * 家族当前经验值 */ @@ -115,4 +120,20 @@ public class FamilyBaseInfoCO extends ClientObject { */ private BigDecimal amount; + @Data + public static class FamilyAdminInfo { + + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + + private String account; + + private String specialAccount; + + private String userAvatar; + + private String userNickName; + + } + } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/entity/family/FamilyMemberInfo.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/entity/family/FamilyMemberInfo.java index cfba69a8..4bf1a2c3 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/entity/family/FamilyMemberInfo.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/entity/family/FamilyMemberInfo.java @@ -53,6 +53,7 @@ public class FamilyMemberInfo extends TimestampBaseEntity { /** * 角色. + * ADMIN-族长;MANAGE-管理员;MEMBER-成员 */ @TableField("member_role") private String memberRole;