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 }