diff --git a/internal/logic/public/user/queryUserInfoLogic.go b/internal/logic/public/user/queryUserInfoLogic.go index 7ddf548..12f85fd 100644 --- a/internal/logic/public/user/queryUserInfoLogic.go +++ b/internal/logic/public/user/queryUserInfoLogic.go @@ -45,10 +45,26 @@ func (l *QueryUserInfoLogic) QueryUserInfo() (resp *types.User, err error) { return nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access") } tool.DeepCopy(resp, u) - for i, d := range u.UserDevices { - if i < len(resp.UserDevices) { - resp.UserDevices[i].DeviceNo = tool.DeviceIdToHash(d.Id) + + // 用家庭范围查设备,而不是只看当前用户自己的 UserDevices + scopeHelper := newFamilyScopeHelper(l.ctx, l.svcCtx) + scopeUserIds, scopeErr := scopeHelper.resolveScopedUserIds(u.Id) + if scopeErr != nil { + l.Errorw("resolve scoped user ids failed", logger.Field("user_id", u.Id), logger.Field("error", scopeErr.Error())) + scopeUserIds = []int64{u.Id} + } + deviceList, _, deviceErr := l.svcCtx.UserModel.QueryDeviceListByUserIds(l.ctx, scopeUserIds) + if deviceErr != nil { + l.Errorw("query device list failed", logger.Field("user_id", u.Id), logger.Field("error", deviceErr.Error())) + } else { + userDevices := make([]types.UserDevice, 0, len(deviceList)) + tool.DeepCopy(&userDevices, deviceList) + for i, d := range deviceList { + if i < len(userDevices) { + userDevices[i].DeviceNo = tool.DeviceIdToHash(d.Id) + } } + resp.UserDevices = userDevices } // refer_code 为空时自动生成 if resp.ReferCode == "" {