package controllers import ( "h5-2019/utils" "reflect" "github.com/astaxie/beego" "net/http" ) //Message api统一的返回消息格式 type Message struct { Code int `json:"code"` Message interface{} `json:"message"` } //BaseController 基础controller type BaseController struct { beego.Controller } const ( SESSION_USER = "h5.user" PAGENUM = 10 LISTPAGENUM = 20 ) // BaseControllerInterface 项目约定的 Controller 须满足的接口 type BaseControllerInterface interface { Constructor() } //Prepare 继承beego的 func (c *BaseController) Prepare() { // 微信初始化 utils.WechatInit() // 路由对应的实际 Controller 初始化 c.initController() } // ResponseJson 自定义的JSON返回 func (c *BaseController) ResponseJson(msg interface{}, code ...int) { status := http.StatusOK if len(code) > 0 { status = code[0] } if reflect.ValueOf(msg).Type().String() == "*errors.errorString" { err := msg.(error) c.Data["json"] = Message{status, err.Error()} } else { c.Data["json"] = Message{status, msg} } c.ServeJSON() c.StopRun() } // initAppController 执行当前路由请求对应的 Controller 初始化 func (c *BaseController) initController() { if ctrl, ok := c.AppController.(BaseControllerInterface); ok { ctrl.Constructor() } } func (c *BaseController) WechatAppID() { c.ResponseJson(map[string]interface{}{ "appid": beego.AppConfig.String("wechat::appid"), }) }