diff --git a/apis/types.api b/apis/types.api index e53eebb..53e4b3f 100644 --- a/apis/types.api +++ b/apis/types.api @@ -565,6 +565,7 @@ type ( FamilyMemberItem { UserId int64 `json:"user_id"` Identifier string `json:"identifier"` + DeviceNo string `json:"device_no"` Role uint8 `json:"role"` RoleName string `json:"role_name"` Status uint8 `json:"status"` diff --git a/internal/logic/admin/user/getFamilyDetailLogic.go b/internal/logic/admin/user/getFamilyDetailLogic.go index 0c08bd7..b58e112 100644 --- a/internal/logic/admin/user/getFamilyDetailLogic.go +++ b/internal/logic/admin/user/getFamilyDetailLogic.go @@ -8,6 +8,7 @@ import ( "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/logger" + "github.com/perfect-panel/server/pkg/tool" "github.com/perfect-panel/server/pkg/xerr" "github.com/pkg/errors" "gorm.io/gorm" @@ -62,6 +63,15 @@ func (l *GetFamilyDetailLogic) GetFamilyDetail(req *types.GetFamilyDetailRequest return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "query family member identifiers failed") } + // 查出所有成员的设备,构建 userId → deviceNo 映射 + deviceNoMap := make(map[int64]string) + devices, _, _ := l.svcCtx.UserModel.QueryDeviceListByUserIds(l.ctx, userIDs) + for _, d := range devices { + if _, exists := deviceNoMap[d.UserId]; !exists { + deviceNoMap[d.UserId] = tool.DeviceIdToHash(d.Id) + } + } + memberItems := make([]types.FamilyMemberItem, 0, len(members)) for _, member := range members { identifier := identifierMap[member.UserId] @@ -72,6 +82,7 @@ func (l *GetFamilyDetailLogic) GetFamilyDetail(req *types.GetFamilyDetailRequest memberItem := types.FamilyMemberItem{ UserId: member.UserId, Identifier: identifier, + DeviceNo: deviceNoMap[member.UserId], Role: member.Role, RoleName: mapFamilyRoleName(member.Role), Status: member.Status, diff --git a/internal/types/types.go b/internal/types/types.go index e7b0bb9..aa88d6e 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -682,6 +682,7 @@ type FamilyDetail struct { type FamilyMemberItem struct { UserId int64 `json:"user_id"` Identifier string `json:"identifier"` + DeviceNo string `json:"device_no"` Role uint8 `json:"role"` RoleName string `json:"role_name"` Status uint8 `json:"status"`