This repository has been archived on 2026-04-05. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Exam_registration/internal/handler/user_handler.go
2026-03-20 21:41:00 +08:00

88 lines
1.9 KiB
Go

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