package utils import ( "github.com/beego/beego/v2/server/web" ) // Response 统一响应结构 type Response struct { StatusCode int `json:"statusCode"` Msg string `json:"msg"` Data interface{} `json:"data,omitempty"` } // BaseController 基础控制器,提供统一响应方法 type BaseController struct { web.Controller } // Success 成功响应 func (c *BaseController) Success(data interface{}) { c.Data["json"] = Response{ StatusCode: 200, Msg: "success", Data: data, } c.ServeJSON() } // SuccessMsg 成功响应(仅消息) func (c *BaseController) SuccessMsg(msg string) { c.Data["json"] = Response{ StatusCode: 200, Msg: msg, } c.ServeJSON() } // Error 错误响应 func (c *BaseController) Error(code int, msg string) { c.Data["json"] = Response{ StatusCode: code, Msg: msg, } c.ServeJSON() } // ErrorWithData 错误响应(带数据) func (c *BaseController) ErrorWithData(code int, msg string, data interface{}) { c.Data["json"] = Response{ StatusCode: code, Msg: msg, Data: data, } c.ServeJSON() } // GetUserID 从context获取用户ID,失败返回错误响应 func (c *BaseController) GetUserID() (int, bool) { userInfo, err := GetUserInfoFromContext(c.Ctx.Input.GetData("userInfo")) if err != nil { c.Error(401, "获取用户信息失败: "+err.Error()) return 0, false } userID := int(userInfo.ID) if userID == 0 { userID = 1 } return userID, true } // GetUserInfo 从context获取完整用户信息 func (c *BaseController) GetUserInfo() (*TokenUserInfo, bool) { userInfo, err := GetUserInfoFromContext(c.Ctx.Input.GetData("userInfo")) if err != nil { c.Error(401, "获取用户信息失败: "+err.Error()) return nil, false } return userInfo, true }