package handler import ( "strings" "github.com/gin-gonic/gin" "laic-backend/common" "laic-backend/service" "laic-backend/vo" ) // Register 用户注册 func Register(c *gin.Context) { var req vo.RegisterReq if err := c.ShouldBindJSON(&req); err != nil { common.FailWithBindError(c, common.ErrParam, err) return } resp, busiErr := service.DefaultUserService.Register(req.Name, req.Phone, req.Email, req.Password) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, resp) } // Login 用户登录 func Login(c *gin.Context) { var req vo.UserLoginReq if err := c.ShouldBindJSON(&req); err != nil { common.FailWithBindError(c, common.ErrParam, err) return } resp, busiErr := service.DefaultUserService.Login(req.Phone, req.Password) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, resp) } // Refresh 刷新令牌 func Refresh(c *gin.Context) { var req vo.RefreshReq if err := c.ShouldBindJSON(&req); err != nil { common.FailWithBindError(c, common.ErrParam, err) return } resp, busiErr := service.DefaultUserService.Refresh(req.RefreshToken) if busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OKWithData(c, resp) } // Logout 登出 func Logout(c *gin.Context) { var req vo.LogoutReq _ = c.ShouldBindJSON(&req) // refreshToken 可选,忽略绑定错误 accessToken := strings.TrimPrefix(c.GetHeader("Authorization"), "Bearer ") userID := common.GetUserId(c) if busiErr := service.DefaultUserService.Logout(userID, accessToken, req.RefreshToken); busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OK(c) } // SmsCode 发送短信验证码 func SmsCode(c *gin.Context) { var req vo.SmsCodeReq if err := c.ShouldBindJSON(&req); err != nil { common.FailWithBindError(c, common.ErrParam, err) return } if _, busiErr := service.DefaultUserService.SendSmsCode(req.Phone); busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OK(c) } // ResetPassword 重置密码 func ResetPassword(c *gin.Context) { var req vo.ResetPasswordReq if err := c.ShouldBindJSON(&req); err != nil { common.FailWithBindError(c, common.ErrParam, err) return } if busiErr := service.DefaultUserService.ResetPassword(req.Phone, req.SmsCode, req.NewPassword); busiErr != nil { common.FailWithBusiError(c, busiErr) return } common.OK(c) }