| @ -0,0 +1,107 @@ | |||||
| package helper | |||||
| import ( | |||||
| "encoding/json" | |||||
| "git.tetele.net/tgo/conf" | |||||
| "git.tetele.net/tgo/helper" | |||||
| "git.tetele.net/tgo/site" | |||||
| "git.tetele.net/tgo/userrpc" | |||||
| "io/ioutil" | |||||
| "log" | |||||
| "net/http" | |||||
| "strings" | |||||
| ) | |||||
| type BaseController struct { | |||||
| W http.ResponseWriter | |||||
| Req *http.Request | |||||
| SiteInfo map[string]string | |||||
| UserInfo map[string]string | |||||
| Token string | |||||
| Domain string | |||||
| JsonData map[string]interface{} | |||||
| JsonDataArr []map[string]interface{} | |||||
| } | |||||
| //前置操作 | |||||
| func (controller *BaseController)Construct(w http.ResponseWriter, req *http.Request) { | |||||
| log.Println("get from ", req.RemoteAddr, req.Method, req.Referer()) | |||||
| controller.W = w | |||||
| controller.Req = req | |||||
| var replyJson []byte | |||||
| helper.SetHeader(w, req) | |||||
| if strings.ToUpper(req.Method) == "OPTIONS" { | |||||
| replyJson, _ = json.Marshal(1) | |||||
| w.Write(replyJson) | |||||
| return | |||||
| } | |||||
| data := make(map[string]interface{}) | |||||
| var err error | |||||
| if conf.IS_PRIVATE { | |||||
| controller.SiteInfo = map[string]string{ | |||||
| "database": conf.DBNAME, | |||||
| "site_id": conf.SITE_ID, | |||||
| } | |||||
| } else { | |||||
| controller.SiteInfo, err = site.GetSiteInfoFromReq(conf.MASTER_URL, req) | |||||
| } | |||||
| if controller.Token != "" { | |||||
| controller.UserInfo, err = userrpc.GetUserByToken(controller.SiteInfo["database"], controller.Token, conf.USER_RPC_URL) | |||||
| } | |||||
| controller.Domain = helper.GetDomain(req) | |||||
| //获取json数据 | |||||
| body, _ := ioutil.ReadAll(req.Body) | |||||
| defer req.Body.Close() | |||||
| if len(body) > 0 { | |||||
| if strings.Index(string(body),"[{") == 0 { | |||||
| err = json.Unmarshal(body, &controller.JsonDataArr) | |||||
| } else{ | |||||
| err = json.Unmarshal(body, &controller.JsonData) | |||||
| } | |||||
| } | |||||
| if err != nil { | |||||
| data["code"] = 0 | |||||
| data["msg"] = err.Error() | |||||
| replyJson, _ = json.Marshal(data) | |||||
| w.Write(replyJson) | |||||
| return | |||||
| } | |||||
| } | |||||
| func (controller *BaseController) Success(result interface{}) { | |||||
| data := make(map[string]interface{}) | |||||
| data["data"] = result | |||||
| data["code"] = 1 | |||||
| data["msg"] = "" | |||||
| returnData, _ := json.Marshal(data) | |||||
| controller.W.Write(returnData) | |||||
| } | |||||
| func (controller *BaseController) Error(msg string) { | |||||
| data := make(map[string]interface{}) | |||||
| data["data"] = nil | |||||
| data["code"] = 0 | |||||
| data["msg"] = msg | |||||
| returnData, _ := json.Marshal(data) | |||||
| controller.W.Write(returnData) | |||||
| } | |||||