init
This commit is contained in:
87
internal/handler/user_handler.go
Normal file
87
internal/handler/user_handler.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"exam_registration/internal/middleware"
|
||||
"exam_registration/internal/service"
|
||||
"exam_registration/pkg/response"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type UserHandler struct {
|
||||
userService *service.UserService
|
||||
}
|
||||
|
||||
func NewUserHandler() *UserHandler {
|
||||
return &UserHandler{
|
||||
userService: &service.UserService{},
|
||||
}
|
||||
}
|
||||
|
||||
// Login 用户登录
|
||||
func (h *UserHandler) Login(c *gin.Context) {
|
||||
var req service.LoginRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, response.BAD_REQUEST, "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
token, err := h.userService.Login(&req)
|
||||
if err != nil {
|
||||
response.Error(c, response.ERROR, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, gin.H{"token": token})
|
||||
}
|
||||
|
||||
// Register 用户注册
|
||||
func (h *UserHandler) Register(c *gin.Context) {
|
||||
var req service.RegisterRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.Error(c, response.BAD_REQUEST, "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.userService.Register(&req); err != nil {
|
||||
response.Error(c, response.ERROR, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, nil)
|
||||
}
|
||||
|
||||
// GetUserInfo 获取当前用户信息
|
||||
func (h *UserHandler) GetUserInfo(c *gin.Context) {
|
||||
userID, _ := c.Get("user_id")
|
||||
|
||||
user, err := h.userService.GetUserByID(userID.(uint64))
|
||||
if err != nil {
|
||||
response.Error(c, response.ERROR, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, user)
|
||||
}
|
||||
|
||||
// UpdateUserInfo 更新用户信息
|
||||
func (h *UserHandler) UpdateUserInfo(c *gin.Context) {
|
||||
userID, _ := c.Get("user_id")
|
||||
|
||||
var updates map[string]interface{}
|
||||
if err := c.ShouldBindJSON(&updates); err != nil {
|
||||
response.Error(c, response.BAD_REQUEST, "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
// 不允许修改敏感字段
|
||||
delete(updates, "password")
|
||||
delete(updates, "role")
|
||||
delete(updates, "status")
|
||||
|
||||
if err := h.userService.UpdateUser(userID.(uint64), updates); err != nil {
|
||||
response.Error(c, response.ERROR, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, nil)
|
||||
}
|
||||
Reference in New Issue
Block a user