package user import ( "context" "UserManager/internal/model" "UserManager/internal/service" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" ) type cUser struct{} var User = cUser{} // 全局实例,方便路由绑定 // RegisterReq 接收参数 type RegisterReq struct { g.Meta `path:"/register" method:"post"` Passport string `v:"required|length:3,16"` Password string `v:"required|length:6,20"` Nickname string } type RegisterRes struct{} // 空响应 // ListReq 用户列表请求 type ListReq struct { g.Meta `path:"/list" method:"get"` Page int `d:"1" v:"min:1"` PageSize int `d:"10" v:"min:1|max:100"` Passport string Nickname string } // ListRes 用户列表响应 type ListRes struct { List []*model.UserOutput `json:"list"` Total int `json:"total"` Page int `json:"page"` } // GetByPassportReq 根据账号查询请求 type GetByPassportReq struct { g.Meta `path:"/get" method:"get"` Passport string `v:"required"` } // GetByPassportRes 根据账号查询响应 type GetByPassportRes *model.UserOutput func (c *cUser) Register(ctx context.Context, req *RegisterReq) (res *RegisterRes, err error) { err = service.User().Register(ctx, model.UserRegisterInput{ Passport: req.Passport, Password: req.Password, Nickname: req.Nickname, }) return } func (c *cUser) List(ctx context.Context, req *ListReq) (res *ListRes, err error) { output, err := service.User().GetList(ctx, model.UserListInput{ Page: req.Page, PageSize: req.PageSize, Passport: req.Passport, Nickname: req.Nickname, }) if err != nil { return nil, err } return &ListRes{ List: output.List, Total: output.Total, Page: output.Page, }, nil } func (c *cUser) GetByPassport(ctx context.Context, req *GetByPassportReq) (res *GetByPassportRes, err error) { output, err := service.User().GetByPassport(ctx, req.Passport) if err != nil { return nil, err } return (*GetByPassportRes)(&output), nil } type LoginReq struct { g.Meta `path:"/login" method:"post"` Passport string `v:"required" json:"passport"` Password string `v:"required" json:"password"` } // LoginRes 登录响应 type LoginRes struct { Token string `json:"token"` UserInfo *model.UserOutput `json:"user_info"` } func (c *cUser) Login(ctx context.Context, req *LoginReq) (res *LoginRes, err error) { output, err := service.User().Login(ctx, model.UserLoginInput{ Passport: req.Passport, Password: req.Password, }) if err != nil { // 在这里统一转换错误信息 return nil, gerror.New("登录失败,请检查账号密码") } return &LoginRes{ Token: output.Token, UserInfo: output.UserInfo, }, nil }