package handler import ( "net/http" "github.com/gin-gonic/gin" "newaterobot-process/service" ) var userService = service.NewUserService() // Register 用户注册处理器 func Register(c *gin.Context) { // 定义请求参数结构体 var req struct { Username string `json:"username" binding:"required"` Password string `json:"password" binding:"required"` Email string `json:"email"` Nickname string `json:"nickname"` } // 绑定参数 if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "code": 400, "message": "请求参数错误: " + err.Error(), }) return } // 调用服务注册用户 user, err := userService.Register(req.Username, req.Password, req.Email, req.Nickname) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "code": 500, "message": "注册失败: " + err.Error(), }) return } // 返回成功响应 c.JSON(http.StatusOK, gin.H{ "code": 200, "message": "注册成功", "data": gin.H{ "id": user.ID, "username": user.Username, "email": user.Email, "nickname": user.Nickname, }, }) } // Login 用户登录处理器 func Login(c *gin.Context) { // 定义请求参数结构体 var req struct { Username string `json:"username" binding:"required"` Password string `json:"password" binding:"required"` } // 绑定参数 if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "code": 400, "message": "请求参数错误: " + err.Error(), }) return } // 调用服务登录 token, err := userService.Login(req.Username, req.Password) if err != nil { c.JSON(http.StatusUnauthorized, gin.H{ "code": 401, "message": "登录失败: " + err.Error(), }) return } // 返回成功响应 c.JSON(http.StatusOK, gin.H{ "code": 200, "message": "登录成功", "data": gin.H{ "token": token, }, }) } // GetUserInfo 获取用户信息处理器 func GetUserInfo(c *gin.Context) { // 从上下文获取用户ID userIDStr, exists := c.Get("user_id") if !exists { c.JSON(http.StatusUnauthorized, gin.H{ "code": 401, "message": "用户未认证", }) return } // 转换用户ID类型 userID, ok := userIDStr.(uint) if !ok { c.JSON(http.StatusInternalServerError, gin.H{ "code": 500, "message": "用户ID类型错误", }) return } // 调用服务获取用户信息 user, err := userService.GetUserByID(userID) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "code": 500, "message": "获取用户信息失败: " + err.Error(), }) return } // 返回成功响应 c.JSON(http.StatusOK, gin.H{ "code": 200, "message": "获取成功", "data": gin.H{ "id": user.ID, "username": user.Username, "email": user.Email, "nickname": user.Nickname, "status": user.Status, "createdat": user.CreatedAt, }, }) }