Files
taotie-api/api/v1/userapi.go

86 lines
1.9 KiB
Go

package v1
import (
"context"
"taotie-api/common"
"taotie-api/model/do/userdo"
"taotie-api/model/dto/userdto"
"taotie-api/service"
"taotie-api/utils/sctx"
)
type UserApi struct {
userService *service.UserService
}
func NewUserApi(userService *service.UserService) *UserApi {
return &UserApi{userService}
}
// Login 登录
func (api *UserApi) Login(ctx context.Context, req *userdto.LoginReq) (*userdto.LoginRes, error) {
out, err := api.userService.Login(ctx, &userdo.LoginIn{
TenantNo: req.TenantNo,
UserName: req.UserName,
Password: req.Password,
})
if err != nil {
return nil, err
}
// 登录成功,返回 token
tokenOut, err := api.userService.GenToken(ctx, &userdo.GenTokenIn{
TenantNo: out.TenantId,
UserId: out.UserId,
UserName: out.UserName,
})
if err != nil {
return nil, err
}
return &userdto.LoginRes{
Token: tokenOut.Token,
}, nil
}
// Register 注册
func (api *UserApi) Register(ctx context.Context, req *userdto.RegisterReq) (*userdto.RegisterRes, error) {
// 创建租户和用户
out, err := api.userService.Create(ctx, &userdo.CreateIn{
TenantName: req.TenantName,
UserName: req.UserName,
Password: req.Password,
})
if err != nil {
return nil, err
}
// 自动登录,生成 token
tokenOut, err := api.userService.GenToken(ctx, &userdo.GenTokenIn{
TenantNo: out.TenantId,
UserId: out.UserId,
UserName: out.UserName,
})
if err != nil {
return nil, err
}
return &userdto.RegisterRes{
Token: tokenOut.Token,
}, nil
}
// GetCurrentUserInfo 获取当前用户信息
func (api *UserApi) GetCurrentUserInfo(ctx context.Context, req *userdto.GetCurrentUserInfoReq) (*userdto.GetCurrentUserInfoRes, error) {
cuser := sctx.GetCurrentUser(ctx)
if cuser == nil {
return nil, common.ErrUserNotFound
}
return &userdto.GetCurrentUserInfoRes{
UserId: cuser.UserId,
UserName: cuser.UserName,
TenantId: cuser.TenantId,
}, nil
}