package helper
|
|
|
|
import (
|
|
"encoding/json"
|
|
"git.tetele.net/tgo/conf"
|
|
"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
|
|
|
|
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 = 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)
|
|
}
|