package handler import ( "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) }