123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- // checkrule
- package admin
- import (
- "jy/extract"
- . "jy/mongodbutil"
- ju "jy/util"
- qu "qfw/util"
- "github.com/gin-gonic/gin"
- )
- func init() {
- //正则规则验证
- Admin.POST("/check/prerule", func(c *gin.Context) {
- rule, _ := c.GetPostForm("s_rule")
- con, _ := c.GetPostForm("s_testcon")
- str := extract.PreRulesCheckReg(con, rule)
- c.JSON(200, gin.H{"rep": str})
- })
- Admin.POST("/check/extrule", func(c *gin.Context) {
- rule, _ := c.GetPostForm("s_rule")
- con, _ := c.GetPostForm("s_testcon")
- field, _ := c.GetPostForm("s_field")
- tmp := extract.ExtRulesCheckReg(field, con, rule)
- c.JSON(200, gin.H{"rep": tmp})
- })
- Admin.POST("/check/backrule", func(c *gin.Context) {
- rule, _ := c.GetPostForm("s_rule")
- con, _ := c.GetPostForm("s_testcon")
- str := extract.BackRulesCheckReg(con, rule)
- c.JSON(200, gin.H{"rep": str})
- })
- //lua脚本验证
- //通用前置验证
- Admin.GET("/check/lua/pre", func(c *gin.Context) {
- version := c.Query("version")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("rule_pre", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = qu.BsonIdToSId((*rule)["_id"])
- c.HTML(200, "check_luapre.html", gin.H{"version": version, "code": s_code, "rule": &rule, "infos": getCheckInfos()})
- })
- Admin.POST("/check/lua/prerule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkPreScript(code, name, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //通用后置验证
- Admin.GET("/check/lua/back", func(c *gin.Context) {
- version := c.Query("version")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("rule_back", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = qu.BsonIdToSId((*rule)["_id"])
- c.HTML(200, "check_luaback.html", gin.H{"version": version, "code": s_code, "rule": &rule, "infos": getCheckInfos()})
- })
- Admin.POST("/check/lua/backrule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- version, _ := c.GetPostForm("s_version")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkBackScript(code, name, version, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //抽取前置验证
- Admin.GET("/check/lua/corepre", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("rule_logicpre", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = qu.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "check_luacorepre.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid, "sid": sid},
- )
- })
- Admin.POST("/check/lua/coreprerule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkPreScript(code, name, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //抽取验证
- Admin.GET("/check/lua/core", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("rule_logicore", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = qu.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "check_luacore.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid, "sid": sid},
- )
- })
- Admin.POST("/check/lua/corerule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- extinfo := checkCoreScript(code, name, infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- //抽取后置验证
- Admin.GET("/check/lua/coreback", func(c *gin.Context) {
- vid := c.Query("vid")
- pid := c.Query("pid")
- sid := c.Query("sid")
- s_code := c.Query("s_code")
- rule, _ := Mgo.FindOne("rule_logicback", `{"s_code":"`+s_code+`"}`)
- (*rule)["_id"] = qu.BsonIdToSId((*rule)["_id"])
- c.HTML(200,
- "check_luacoreback.html",
- gin.H{"code": s_code, "rule": &rule, "infos": getCheckInfos(),
- "pid": pid, "vid": vid, "sid": sid},
- )
- })
- Admin.POST("/check/lua/corebackrule", func(c *gin.Context) {
- luascript, _ := c.GetPostForm("s_luascript")
- infoid, _ := c.GetPostForm("infoid")
- code, _ := c.GetPostForm("s_code")
- name, _ := c.GetPostForm("s_name")
- vid, _ := c.GetPostForm("vid")
- version, _ := Mgo.FindById("version", vid, `{"version":1}`)
- extinfo := checkBackScript(code, name, qu.ObjToString((*version)["version"]), infoid, luascript)
- c.JSON(200, gin.H{"rep": extinfo})
- })
- }
- //获取信息
- func getCheckInfos() *[]map[string]interface{} {
- infos, _ := Mgo.Find("bidding", `{}`, `{"_id":-1}`, `{"title":1}`, false, 0, 100)
- for _, v := range *infos {
- v["_id"] = qu.BsonIdToSId(v["_id"])
- }
- return infos
- }
- //前置过滤验证
- func checkPreScript(code, name, infoid, script string) map[string]interface{} {
- doc, _ := Mgo.FindById("bidding", infoid, extract.Fields)
- j := extract.PreInfo(*doc)
- delete(*j.Data, "contenthtml")
- lua := ju.LuaScript{Code: code, Name: name, Doc: *j.Data, Script: script}
- lua.Block = j.Block
- rep := lua.RunScript("pre")
- return rep
- }
- //通用后置过滤验证
- func checkBackScript(code, name, version, infoid, script string) map[string]interface{} {
- defer qu.Catch()
- vsion, _ := Mgo.FindOne("version", `{"version":"`+version+`"}`)
- e := &extract.ExtractTask{}
- e.IsRun = true
- e.TaskInfo = &extract.TaskInfo{Version: qu.ObjToString((*vsion)["s_version"]), VersionId: qu.BsonIdToSId((*vsion)["_id"]), TestLua: true}
- e.InitRulePres()
- e.InitRuleBacks()
- e.InitRuleCore()
- e.InitTag()
- tmp, _ := Mgo.FindById("bidding", infoid, extract.Fields)
- j := extract.PreInfo(*tmp)
- doc := *j.Data
- //全局前置规则,结果覆盖doc属性
- for _, v := range e.RulePres {
- doc = extract.ExtRegPre(doc, j, v, e.TaskInfo)
- }
- //抽取规则
- for _, vc := range e.RuleCores {
- tmp := ju.DeepCopy(doc).(map[string]interface{})
- //是否进入逻辑
- if !ju.Logic(vc.LuaLogic, tmp) {
- continue
- }
- //抽取-前置规则
- for _, v := range vc.RulePres {
- tmp = extract.ExtRegPre(tmp, j, v, e.TaskInfo)
- }
- //抽取-规则
- for _, v := range vc.RuleCores {
- extract.ExtRegCore(vc.ExtFrom, tmp, j, v, e)
- }
- }
- result := extract.GetResultMapForLua(j)
- lua := ju.LuaScript{Code: code, Name: name, Result: result, Script: script}
- lua.Block = j.Block
- extinfo := lua.RunScript("back")
- return extinfo
- }
- //抽取验证
- func checkCoreScript(code, name, infoid, script string) map[string]interface{} {
- doc, _ := Mgo.FindById("bidding", infoid, extract.Fields)
- j := extract.PreInfo(*doc)
- delete(*j.Data, "contenthtml")
- lua := ju.LuaScript{Code: code, Name: name, Doc: *j.Data, Script: script}
- lua.Block = j.Block
- rep := lua.RunScript("core")
- return rep
- }
- //抽取过滤验证
|