base.go 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package controllers
  2. import (
  3. "h5-2019/utils"
  4. "reflect"
  5. "github.com/astaxie/beego"
  6. "net/http"
  7. )
  8. //Message api统一的返回消息格式
  9. type Message struct {
  10. Code int `json:"code"`
  11. Message interface{} `json:"message"`
  12. }
  13. //BaseController 基础controller
  14. type BaseController struct {
  15. beego.Controller
  16. }
  17. const (
  18. SESSION_USER = "h5.user"
  19. PAGENUM = 10
  20. LISTPAGENUM = 20
  21. )
  22. // BaseControllerInterface 项目约定的 Controller 须满足的接口
  23. type BaseControllerInterface interface {
  24. Constructor()
  25. }
  26. //Prepare 继承beego的
  27. func (c *BaseController) Prepare() {
  28. // 微信初始化
  29. utils.WechatInit()
  30. // 路由对应的实际 Controller 初始化
  31. c.initController()
  32. }
  33. // ResponseJson 自定义的JSON返回
  34. func (c *BaseController) ResponseJson(msg interface{}, code ...int) {
  35. status := http.StatusOK
  36. if len(code) > 0 {
  37. status = code[0]
  38. }
  39. if reflect.ValueOf(msg).Type().String() == "*errors.errorString" {
  40. err := msg.(error)
  41. c.Data["json"] = Message{status, err.Error()}
  42. } else {
  43. c.Data["json"] = Message{status, msg}
  44. }
  45. c.ServeJSON()
  46. c.StopRun()
  47. }
  48. // initAppController 执行当前路由请求对应的 Controller 初始化
  49. func (c *BaseController) initController() {
  50. if ctrl, ok := c.AppController.(BaseControllerInterface); ok {
  51. ctrl.Constructor()
  52. }
  53. }
  54. func (c *BaseController) WechatAppID() {
  55. c.ResponseJson(map[string]interface{}{
  56. "appid": beego.AppConfig.String("wechat::appid"),
  57. })
  58. }