|
@ -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) |
|
|
|
|
|
} |