response.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package utils
  2. import (
  3. "github.com/beego/beego/v2/server/web"
  4. )
  5. // Response 统一响应结构
  6. type Response struct {
  7. StatusCode int `json:"statusCode"`
  8. Msg string `json:"msg"`
  9. Data interface{} `json:"data,omitempty"`
  10. }
  11. // BaseController 基础控制器,提供统一响应方法
  12. type BaseController struct {
  13. web.Controller
  14. }
  15. // Success 成功响应
  16. func (c *BaseController) Success(data interface{}) {
  17. c.Data["json"] = Response{
  18. StatusCode: 200,
  19. Msg: "success",
  20. Data: data,
  21. }
  22. c.ServeJSON()
  23. }
  24. // SuccessMsg 成功响应(仅消息)
  25. func (c *BaseController) SuccessMsg(msg string) {
  26. c.Data["json"] = Response{
  27. StatusCode: 200,
  28. Msg: msg,
  29. }
  30. c.ServeJSON()
  31. }
  32. // Error 错误响应
  33. func (c *BaseController) Error(code int, msg string) {
  34. c.Data["json"] = Response{
  35. StatusCode: code,
  36. Msg: msg,
  37. }
  38. c.ServeJSON()
  39. }
  40. // ErrorWithData 错误响应(带数据)
  41. func (c *BaseController) ErrorWithData(code int, msg string, data interface{}) {
  42. c.Data["json"] = Response{
  43. StatusCode: code,
  44. Msg: msg,
  45. Data: data,
  46. }
  47. c.ServeJSON()
  48. }
  49. // GetUserID 从context获取用户ID,失败返回错误响应
  50. func (c *BaseController) GetUserID() (int, bool) {
  51. userInfo, err := GetUserInfoFromContext(c.Ctx.Input.GetData("userInfo"))
  52. if err != nil {
  53. c.Error(401, "获取用户信息失败: "+err.Error())
  54. return 0, false
  55. }
  56. userID := int(userInfo.ID)
  57. if userID == 0 {
  58. userID = 1
  59. }
  60. return userID, true
  61. }
  62. // GetUserInfo 从context获取完整用户信息
  63. func (c *BaseController) GetUserInfo() (*TokenUserInfo, bool) {
  64. userInfo, err := GetUserInfoFromContext(c.Ctx.Input.GetData("userInfo"))
  65. if err != nil {
  66. c.Error(401, "获取用户信息失败: "+err.Error())
  67. return nil, false
  68. }
  69. return userInfo, true
  70. }