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