86 lines
1.9 KiB
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
|
|
}
|