default.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package controllers
  2. import (
  3. "github.com/astaxie/beego"
  4. "github.com/astaxie/beego/logs"
  5. "server/middleware"
  6. "server/models"
  7. "strconv"
  8. )
  9. type RespData struct {
  10. Code int `json:"code"`
  11. Msg string `json:"msg"`
  12. Data interface{} `json:"data"`
  13. }
  14. type BaseController struct {
  15. beego.Controller
  16. jsonData *RespData
  17. // json real data
  18. respData map[string]any
  19. }
  20. func (c *BaseController) json() {
  21. c.checkJsonData()
  22. if c.respData != nil {
  23. c.jsonData.Data = c.respData
  24. }
  25. c.Data["json"] = c.jsonData
  26. c.ServeJSON()
  27. }
  28. func (c *BaseController) ErrorJson(error error) {
  29. c.setCode(-1).setMsg(error.Error()).json()
  30. }
  31. func (c *BaseController) checkJsonData() *BaseController {
  32. data := c.jsonData
  33. if data == nil {
  34. data = &RespData{
  35. Code: 0,
  36. Msg: "success",
  37. Data: nil,
  38. }
  39. c.jsonData = data
  40. }
  41. return c
  42. }
  43. func (c *BaseController) setData(v interface{}) *BaseController {
  44. c.checkJsonData()
  45. c.jsonData.Data = v
  46. return c
  47. }
  48. func (c *BaseController) addRespData(k string, v interface{}) *BaseController {
  49. c.checkJsonData()
  50. if c.respData == nil {
  51. c.respData = map[string]any{}
  52. }
  53. c.respData[k] = v
  54. return c
  55. }
  56. func (c *BaseController) setCode(code int) *BaseController {
  57. c.checkJsonData()
  58. c.jsonData.Code = code
  59. return c
  60. }
  61. func (c *BaseController) setMsg(msg string) *BaseController {
  62. c.checkJsonData()
  63. c.jsonData.Msg = msg
  64. return c
  65. }
  66. func (c *BaseController) getParam(k string) string {
  67. return c.Ctx.Input.Param(k)
  68. }
  69. func (c *BaseController) getIntParam(k string) (int, error) {
  70. idStr := c.Ctx.Input.Param(k)
  71. id, err := strconv.Atoi(idStr)
  72. logs.Info("id", id)
  73. if err != nil {
  74. return 0, err
  75. }
  76. return id, nil
  77. }
  78. func (c *BaseController) GetUser(required bool) *models.User {
  79. data := c.GetSession("user")
  80. if data == nil && required {
  81. middleware.WriteForbidden(c.Ctx.ResponseWriter)
  82. return nil
  83. }
  84. if data == nil {
  85. return nil
  86. }
  87. user := data.(models.User)
  88. return &user
  89. }
  90. func (c *BaseController) RequiredUser() *models.User {
  91. return c.GetUser(true)
  92. }