server/internal/logic/app/user/queryUserInfoLogic.go

64 lines
1.5 KiB
Go

package user
import (
"context"
"github.com/perfect-panel/server/pkg/constant"
"github.com/perfect-panel/server/internal/model/user"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/internal/types"
"github.com/perfect-panel/server/pkg/logger"
)
type QueryUserInfoLogic struct {
logger.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// query user info
func NewQueryUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *QueryUserInfoLogic {
return &QueryUserInfoLogic{
Logger: logger.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *QueryUserInfoLogic) QueryUserInfo() (resp *types.UserInfoResponse, err error) {
u := l.ctx.Value(constant.CtxKeyUser).(*user.User)
var devices []types.UserDevice
if len(u.UserDevices) != 0 {
for _, device := range u.UserDevices {
devices = append(devices, types.UserDevice{
Id: device.Id,
Identifier: device.Identifier,
Online: device.Online,
})
}
}
var authMeths []types.UserAuthMethod
authMethods, err := l.svcCtx.UserModel.FindUserAuthMethods(l.ctx, u.Id)
if err == nil && len(authMeths) != 0 {
for _, as := range authMethods {
authMeths = append(authMeths, types.UserAuthMethod{
AuthType: as.AuthType,
AuthIdentifier: as.AuthIdentifier,
})
}
}
resp = &types.UserInfoResponse{
Id: u.Id,
Balance: u.Balance,
Avatar: u.Avatar,
ReferCode: u.ReferCode,
RefererId: u.RefererId,
Devices: devices,
AuthMethods: authMeths,
}
return
}