64 lines
1.5 KiB
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
|
|
}
|