低空智控平台 后端go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

98 lines
2.4 KiB

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)
}