init: taotie-api 项目初始化
This commit is contained in:
85
api/v1/userapi.go
Normal file
85
api/v1/userapi.go
Normal file
@@ -0,0 +1,85 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user