ソースを参照

站点加载抽取

fengweiqiang 5 年 前
コミット
adebead7e7

+ 1 - 0
src/jy/admin/rulecheck.go

@@ -322,6 +322,7 @@ func checkBackScript(table, code, name, version, infoid, script string, alone bo
 	e := &extract.ExtractTask{}
 	e.IsRun = true
 	e.TaskInfo = &extract.TaskInfo{Version: qu.ObjToString((*vsion)["s_version"]), VersionId: qu.BsonIdToSId((*vsion)["_id"]), TestLua: true}
+	e.InitSite()
 	e.InitRulePres()
 	e.InitRuleBacks(false)
 	e.InitRuleBacks(true)

+ 0 - 22
src/jy/admin/site_management.go

@@ -7,7 +7,6 @@ import (
 	"github.com/gin-contrib/sessions"
 	"github.com/gin-gonic/gin"
 	"gopkg.in/mgo.v2/bson"
-	"jy/extract"
 	. "jy/mongodbutil"
 	"net/http"
 	"net/url"
@@ -59,20 +58,7 @@ func init() {
 			data["site_href"] = "http://" + strings.TrimSpace(data["site_href"].(string))
 		}
 		if scripts, ok := data["site_script"].(string); ok {
-			if _id != "" {
-				tt, _ := Mgo.FindById("site_management", _id, `{"site_script":1}`)
-				if dbv, ok := (*tt)["site_script"].([]interface{}); ok {
-					for _, vv := range dbv {
-						extract.Luacodes.Delete(vv)
-					}
-				} else if dbv, ok := (*tt)["site_script"].(interface{}); ok {
-					extract.Luacodes.Delete(dbv)
-				}
-			}
 			luacodes := strings.Split(scripts, ",")
-			for _, v := range luacodes {
-				extract.Luacodes.Store(v, true)
-			}
 			data["site_script"] = luacodes
 		}
 		if data["isuse"] == nil {
@@ -97,14 +83,6 @@ func init() {
 		if _id == "" || !bson.IsObjectIdHex(_id) {
 			c.JSON(400, gin.H{"rep": false})
 		} else {
-			tt, _ := Mgo.FindById("site_management", _id, `{"site_script":1}`)
-			if dbv, ok := (*tt)["site_script"].([]interface{}); ok {
-				for _, vv := range dbv {
-					extract.Luacodes.Delete(vv)
-				}
-			} else if dbv, ok := (*tt)["site_script"].(interface{}); ok {
-				extract.Luacodes.Delete(dbv)
-			}
 			Mgo.Del("site_management", bson.M{"_id": bson.ObjectIdHex(_id)})
 			c.JSON(200, gin.H{"rep": true})
 		}

+ 56 - 20
src/jy/admin/version.go

@@ -62,7 +62,7 @@ func init() {
 				data["delete"] = false
 				vid := Mgo.Save("version", data)
 				if s_pversionid != "" {
-					copyComRules(version, s_pversionid, s_username, false)
+					copyComRules(version, s_pversionid, s_username, false, "", "","")
 					if iscopysite {
 						scopySites(version, s_pversionid, s_username, true, vid)
 					}
@@ -139,7 +139,7 @@ func init() {
 		go DelVersionInfo(_id, true)
 		//站点删除
 		go func(_id string) {
-			Mgo.Del("site_management",bson.M{"vid":_id})
+			Mgo.Del("site_management", bson.M{"vid": _id})
 		}(_id)
 		//删除分包配置
 		go DelPkgInfo(_id)
@@ -501,7 +501,7 @@ func init() {
 }
 
 //克隆版本通用属性
-func copyComRules(version, pvid, s_username string, isSite bool) {
+func copyComRules(version, pvid, s_username string, isSite bool, newVersionId, newSiteId,oldSiteId string) {
 	var versiondb, rule_predb, rule_backdb, tagdb, tagdetailinfodb, cleanupdb string
 	if isSite {
 		rule_predb = "site_rule_pre"
@@ -520,18 +520,25 @@ func copyComRules(version, pvid, s_username string, isSite bool) {
 	tmp, _ := Mgo.FindById(versiondb, pvid, nil)
 	oldversion := (*tmp)["version"].(string)
 	//克隆前置规则
-	plist, _ := Mgo.Find(rule_predb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
-	for _, v := range *plist {
-		delete(v, "_id")
-		v["s_version"] = version
-		v["s_code"] = util.GetSyncIndex(getCode(v["s_code"].(string)))
-		v["s_username"] = s_username
-		v["l_createtime"] = time.Now().Unix()
-		v["l_lasttime"] = time.Now().Unix()
-		Mgo.Save(rule_predb, v)
+	if !isSite {
+		plist, _ := Mgo.Find(rule_predb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+		for _, v := range *plist {
+			delete(v, "_id")
+			v["s_version"] = version
+			v["s_code"] = util.GetSyncIndex(getCode(v["s_code"].(string)))
+			v["s_username"] = s_username
+			v["l_createtime"] = time.Now().Unix()
+			v["l_lasttime"] = time.Now().Unix()
+			Mgo.Save(rule_predb, v)
+		}
 	}
 	//克隆后置规则
-	blist, _ := Mgo.Find(rule_backdb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	var blist *[]map[string]interface{}
+	if isSite{
+		blist, _ = Mgo.Find(rule_backdb, `{"s_version":"`+oldversion+`","pid":"`+oldSiteId+`","vid":"`+pvid+`","delete":false}`, nil, nil, false, -1, -1)
+	}else {
+		blist, _ = Mgo.Find(rule_backdb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	}
 	for _, v := range *blist {
 		delete(v, "_id")
 		v["s_version"] = version
@@ -539,34 +546,65 @@ func copyComRules(version, pvid, s_username string, isSite bool) {
 		v["s_username"] = s_username
 		v["l_createtime"] = time.Now().Unix()
 		v["l_lasttime"] = time.Now().Unix()
+		if isSite{
+			v["pid"] = newSiteId
+			v["vid"] = newVersionId
+		}
 		Mgo.Save(rule_backdb, v)
 	}
+	var tlist *[]map[string]interface{}
 	//克隆tag
-	tlist, _ := Mgo.Find(tagdb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	if isSite{
+		tlist, _ = Mgo.Find(tagdb, `{"s_version":"`+oldversion+`","pid":"`+oldSiteId+`","vid":"`+pvid+`","delete":false}`, nil, nil, false, -1, -1)
+	}else {
+		tlist, _ = Mgo.Find(tagdb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	}
 	for _, v := range *tlist {
 		oldId := qu.BsonIdToSId(v["_id"])
 		delete(v, "_id")
 		v["s_version"] = version
 		v["s_creater"] = s_username
 		v["l_intime"] = time.Now().Unix()
+		if isSite{
+			v["pid"] = newSiteId
+			v["vid"] = newVersionId
+		}
 		newId := Mgo.Save(tagdb, v) //克隆父标签
-		td, _ := Mgo.Find(tagdetailinfodb, `{"s_parentid":"`+oldId+`","delete":false}`, nil, nil, false, -1, -1)
+		var td *[]map[string]interface{}
+		if isSite{
+			td, _ = Mgo.Find(tagdetailinfodb, `{"s_parentid":"`+oldId+`","vid":"`+pvid+`","pid":"`+oldSiteId+`","delete":false}`, nil, nil, false, -1, -1)
+		}else {
+			td, _ = Mgo.Find(tagdetailinfodb, `{"s_parentid":"`+oldId+`","delete":false}`, nil, nil, false, -1, -1)
+		}
 		for _, v2 := range *td {
 			delete(v2, "_id")
 			v2["s_version"] = version
 			v2["s_creater"] = s_username
 			v2["l_intime"] = time.Now().Unix()
 			v2["s_parentid"] = newId
+			if isSite{
+				v2["pid"] = newSiteId
+				v2["vid"] = newVersionId
+			}
 			Mgo.Save(tagdetailinfodb, v2) //克隆详细标签
 		}
 	}
 	//克隆函数
-	clist, _ := Mgo.Find(cleanupdb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	var clist *[]map[string]interface{}
+	if isSite{
+		clist, _ = Mgo.Find(cleanupdb, `{"s_version":"`+oldversion+`","pid":"`+oldSiteId+`","vid":"`+pvid+`","delete":false}`, nil, nil, false, -1, -1)
+	}else {
+		clist, _ = Mgo.Find(cleanupdb, `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	}
 	for _, v := range *clist {
 		delete(v, "_id")
 		v["s_version"] = version
 		v["s_creater"] = s_username
 		v["l_intime"] = time.Now().Unix()
+		if isSite{
+			v["pid"] = newSiteId
+			v["vid"] = newVersionId
+		}
 		Mgo.Save(cleanupdb, v)
 	}
 }
@@ -699,7 +737,6 @@ func copyClearRuleLogic(vid, pid, s_field, oldvid, s_username string) {
 
 //站点克隆
 func scopySites(version, pvid, s_username string, isSite bool, newVersionId string) {
-	log.Println(version, pvid, s_username, isSite, newVersionId)
 	//站点克隆
 	sites, _ := Mgo.Find("site_management", bson.M{"vid": pvid}, nil, bson.M{}, false, -1, -1)
 	for _, v := range *sites {
@@ -726,10 +763,9 @@ func scopySites(version, pvid, s_username string, isSite bool, newVersionId stri
 				copyFieldRules(newVersionId, pid, s_field, pvid, s_username, true)
 			}
 		}
-
+		//站点后置规则克隆
+		copyComRules(version, pvid, s_username, true, newVersionId, newSiteId,oldSiteID)
 	}
-	//后置规则克隆
-	copyComRules(version,pvid,s_username,true)
 }
 
 //获取代码

+ 1 - 0
src/jy/extract/exportask.go

@@ -51,6 +51,7 @@ func extractAndExport(v string, t map[string]interface{}) {
 		ProcessPool: make(chan bool, 5),
 	}
 	e.TaskInfo.FDB = db.MgoFactory(1, 3, 120, fmt.Sprint(t["dbaddr"]), fmt.Sprint(t["dbname"]))
+	ext.InitSite()
 	e.InitRulePres()
 	e.InitRuleBacks(false)
 	e.InitRuleBacks(true)

+ 10 - 1
src/jy/extract/extract.go

@@ -36,6 +36,7 @@ var (
 	Fields2       = `{"budget":1,"bidamount":1,"title":1,"projectname":1,"winner":1}`
 )
 var Luacodes = sync.Map{}
+var SiteManages = sync.Map{}
 
 //启动测试抽取
 func StartExtractTestTask(taskId, startId, num, resultcoll, trackcoll string) bool {
@@ -45,6 +46,7 @@ func StartExtractTestTask(taskId, startId, num, resultcoll, trackcoll string) bo
 	ext.IsRun = true
 	ext.InitTestTaskInfo(resultcoll, trackcoll)
 	ext.TaskInfo.FDB = db.MgoFactory(1, 3, 120, ext.TaskInfo.FromDbAddr, ext.TaskInfo.FromDB)
+	ext.InitSite()
 	ext.InitRulePres()
 	ext.InitRuleBacks(false)
 	ext.InitRuleBacks(true)
@@ -126,6 +128,7 @@ func StartExtractTaskId(taskId string) bool {
 	}
 	ext.TaskInfo.FDB = db.MgoFactory(3, 5, 600, ext.TaskInfo.FromDbAddr, ext.TaskInfo.FromDB)
 	ext.TaskInfo.TDB = db.MgoFactory(3, 5, 600, ext.TaskInfo.ToDbAddr, ext.TaskInfo.ToDB)
+	ext.InitSite()
 	ext.InitRulePres()
 	ext.InitRuleBacks(false)
 	ext.InitRuleBacks(true)
@@ -321,7 +324,13 @@ func (e *ExtractTask) PreInfo(doc map[string]interface{}) (j, jf *ju.Job, isSite
 		}
 	}
 	//是否配置站点
-	_, isSite = Luacodes.Load(qu.ObjToString(doc["spidercode"]))
+	exp, isSite := Luacodes.Load(qu.ObjToString(doc["spidercode"]))
+	if isSite{
+		e.SiteClearFn = exp.( map[string]interface{})["e.SiteClearFn"].( map[string][]string)
+		e.SiteTag = exp.( map[string]interface{})["e.SiteTag"].( map[string][]*Tag)
+		e.SiteRuleCores = exp.( map[string]interface{})["e.SiteRuleCores"].(  map[string]map[string][]*RuleCore)
+		e.SiteRuleBacks = exp.( map[string]interface{})["e.SiteRuleBacks"].(  []*RegLuaInfo)
+	}
 	qu.Try(func() {
 		pretreated.AnalyStart(j, isSite) //job.Block分块
 		if isextFile {

+ 130 - 32
src/jy/extract/extractInit.go

@@ -2,6 +2,7 @@
 package extract
 
 import (
+	"gopkg.in/mgo.v2/bson"
 	db "jy/mongodbutil"
 	ju "jy/util"
 	qu "qfw/util"
@@ -235,6 +236,18 @@ func (e *ExtractTask) InitTaskInfo() {
 		return
 	}
 }
+func (e *ExtractTask) InitSite() {
+	sites, _ := db.Mgo.Find("site_management", bson.M{"version": e.TaskInfo.Version}, nil, bson.M{"site_script": 1}, false, -1, -1)
+	for _, v := range *sites {
+		if vv, ok := v["site_script"].([]interface{}); ok {
+			for _, vv := range vv {
+				Luacodes.Store(vv, map[string]interface{}{})
+			}
+		} else if vv, ok := v["site_script"].(interface{}); ok {
+			Luacodes.Store(vv, map[string]interface{}{})
+		}
+	}
+}
 
 //加载通用前置规则
 func (e *ExtractTask) InitRulePres() {
@@ -279,6 +292,7 @@ func (e *ExtractTask) InitRulePres() {
 func (e *ExtractTask) InitRuleBacks(isSite bool) {
 	defer qu.Catch()
 	cDB := ""
+	eSiteRuleBacks := []*RegLuaInfo{}
 	if isSite {
 		cDB = "site_rule_back"
 		e.SiteRuleBacks = []*RegLuaInfo{}
@@ -296,7 +310,8 @@ func (e *ExtractTask) InitRuleBacks(isSite bool) {
 		if rinfo.IsLua {
 			rinfo.RuleText = v["s_luascript"].(string)
 			if isSite {
-				e.SiteRuleBacks = append(e.SiteRuleBacks, rinfo)
+				eSiteRuleBacks = append(eSiteRuleBacks, rinfo)
+				//e.SiteRuleBacks = append(e.SiteRuleBacks, rinfo)
 			} else {
 				e.RuleBacks = append(e.RuleBacks, rinfo)
 			}
@@ -318,7 +333,7 @@ func (e *ExtractTask) InitRuleBacks(isSite bool) {
 					rinfo.RegPreBac = &ExtReg{Reg: regexp.MustCompile(pattern), Replace: ""}
 				}
 				if isSite {
-					e.SiteRuleBacks = append(e.SiteRuleBacks, rinfo)
+					eSiteRuleBacks = append(eSiteRuleBacks, rinfo)
 				} else {
 					e.RuleBacks = append(e.RuleBacks, rinfo)
 				}
@@ -326,6 +341,20 @@ func (e *ExtractTask) InitRuleBacks(isSite bool) {
 				log.Debug(rinfo.Code, rinfo.Field, err)
 			})
 		}
+		if isSite {
+			sm, _ := db.Mgo.FindById("site_management", qu.ObjToString(v["pid"]), bson.M{"site_script": 1})
+			for _, v2 := range (*sm)["site_script"].([]interface{}) {
+				if mdpvalue, ok := Luacodes.Load(v2); ok {
+					if mdpvalue.(map[string]interface{})["e.SiteRuleBacks"] == nil{
+						mdpvalue.(map[string]interface{})["e.SiteRuleBacks"] = eSiteRuleBacks
+					}else {
+						mdpvalue.(map[string]interface{})["e.SiteRuleBacks"].([]*RegLuaInfo) = append(mdpvalue.(map[string]interface{})["e.SiteRuleBacks"].([]*RegLuaInfo), eSiteRuleBacks...)
+					}
+					Luacodes.Store(v2, mdpvalue)
+				}
+			}
+			eSiteRuleBacks = []*RegLuaInfo{}
+		}
 	}
 }
 func (e *ExtractTask) InfoTypeList() {
@@ -342,6 +371,7 @@ func (e *ExtractTask) InitRuleCore(isSite bool) {
 	allFields := getALLFields()
 	e.Fields = map[string]int{}
 	var versioninfodb, rule_logicdb, rule_logicpredb, rule_logicbackdb, rule_logicoredb string
+	eSiteRuleCores := make(map[string]map[string][]*RuleCore)
 	if isSite {
 		versioninfodb = "site_versioninfo"
 		rule_logicdb = "site_rule_logic"
@@ -511,36 +541,55 @@ func (e *ExtractTask) InitRuleCore(isSite bool) {
 			}
 			fieldrules[s_field] = append(fieldrules[s_field], rcore)
 		}
+		if isSite {
+			sm, _ := db.Mgo.FindById("site_management", qu.ObjToString(vinfo["pid"]), bson.M{"site_script": 1})
+			for _, v2 := range (*sm)["site_script"].([]interface{}) {
+				if mdpvalue, ok := Luacodes.Load(v2); ok {
+					//属性配置
+					infolist, _ := db.Mgo.Find("infotype", `{}`, `{}`, `{}`, false, -1, -1)
+					for _, v := range *infolist {
+						topclass := qu.ObjToString(v["topclass"])
+						if v["subclass"] == nil {
+							eSiteRuleCores[topclass] = make(map[string][]*RuleCore)
+							for attr, _ := range v["fields"].(map[string]interface{}) {
+								eSiteRuleCores[topclass][attr] = fieldrules[attr]
+							}
+						} else {
+							for ca, fs := range v["subclass"].(map[string]interface{}) {
+								eSiteRuleCores[topclass+"_"+ca] = make(map[string][]*RuleCore)
+								for field, _ := range fs.(map[string]interface{}) {
+									eSiteRuleCores[topclass+"_"+ca][field] = fieldrules[field]
+								}
+							}
+						}
+					}
+					if mdpvalue.(map[string]interface{})["e.SiteRuleCores"] == nil{
+						mdpvalue.(map[string]interface{})["e.SiteRuleCores"] = eSiteRuleCores
+					}else {
+						for k2,v2 :=range eSiteRuleCores{
+							mdpvalue.(map[string]interface{})["e.SiteRuleCores"].(map[string]map[string][]*RuleCore )[k2] = v2
+						}
+					}
+					Luacodes.Store(v2, mdpvalue)
+				}
+			}
+			eSiteRuleCores = make(map[string]map[string][]*RuleCore)
+		}
 	}
-
-	//属性配置
-	infolist, _ := db.Mgo.Find("infotype", `{}`, `{}`, `{}`, false, -1, -1)
-	for _, v := range *infolist {
-		topclass := qu.ObjToString(v["topclass"])
-		if v["subclass"] == nil {
-			if isSite {
-				e.SiteRuleCores[topclass] = make(map[string][]*RuleCore)
-			} else {
+	if !isSite {
+		//属性配置
+		infolist, _ := db.Mgo.Find("infotype", `{}`, `{}`, `{}`, false, -1, -1)
+		for _, v := range *infolist {
+			topclass := qu.ObjToString(v["topclass"])
+			if v["subclass"] == nil {
 				e.RuleCores[topclass] = make(map[string][]*RuleCore)
-			}
-			for attr, _ := range v["fields"].(map[string]interface{}) {
-				if isSite {
-					e.SiteRuleCores[topclass][attr] = fieldrules[attr]
-				} else {
+				for attr, _ := range v["fields"].(map[string]interface{}) {
 					e.RuleCores[topclass][attr] = fieldrules[attr]
 				}
-			}
-		} else {
-			for ca, fs := range v["subclass"].(map[string]interface{}) {
-				if isSite {
-					e.SiteRuleCores[topclass+"_"+ca] = make(map[string][]*RuleCore)
-				} else {
+			} else {
+				for ca, fs := range v["subclass"].(map[string]interface{}) {
 					e.RuleCores[topclass+"_"+ca] = make(map[string][]*RuleCore)
-				}
-				for field, _ := range fs.(map[string]interface{}) {
-					if isSite {
-						e.SiteRuleCores[topclass+"_"+ca][field] = fieldrules[field]
-					} else {
+					for field, _ := range fs.(map[string]interface{}) {
 						e.RuleCores[topclass+"_"+ca][field] = fieldrules[field]
 					}
 				}
@@ -615,6 +664,7 @@ func (e *ExtractTask) InitPkgCore() {
 func (e *ExtractTask) InitTag(isSite bool) {
 	defer qu.Catch()
 	var tagdetailinfodb string
+	eSiteTag := map[string][]*Tag{}
 	if isSite {
 		tagdetailinfodb = "site_tagdetailinfo"
 		e.SiteTag = map[string][]*Tag{}
@@ -633,7 +683,8 @@ func (e *ExtractTask) InitTag(isSite bool) {
 			for k, key := range tmp {
 				tag := &Tag{Type: "string", Key: key.(string)}
 				if isSite {
-					e.SiteTag[field] = append(e.SiteTag[field], tag)
+					eSiteTag[field] = append(eSiteTag[field], tag)
+					//e.SiteTag[field] = append(e.SiteTag[field], tag)
 				} else {
 					e.Tag[field] = append(e.Tag[field], tag)
 				}
@@ -647,6 +698,22 @@ func (e *ExtractTask) InitTag(isSite bool) {
 				ju.TagdbTable.Store(fname, &tab)
 			}
 		}
+		if isSite {
+			sm, _ := db.Mgo.FindById("site_management", qu.ObjToString(v["pid"]), bson.M{"site_script": 1})
+			for _, v2 := range (*sm)["site_script"].([]interface{}) {
+				if mdpvalue, ok := Luacodes.Load(v2); ok {
+					if mdpvalue.(map[string]interface{})["e.SiteTag"] == nil{
+						mdpvalue.(map[string]interface{})["e.SiteTag"] = eSiteTag
+					}else {
+						for k2,v2 := range eSiteTag{
+							mdpvalue.(map[string]interface{})["e.SiteTag"].(map[string][]*Tag)[k2] = v2
+						}
+					}
+					Luacodes.Store(v2, mdpvalue)
+				}
+			}
+			eSiteTag = map[string][]*Tag{}
+		}
 	}
 	//正则标签库
 	list, _ = db.Mgo.Find(tagdetailinfodb, `{"s_type":"reg","s_version":"`+e.TaskInfo.Version+`","delete":false}`, nil, nil, false, -1, -1)
@@ -659,7 +726,8 @@ func (e *ExtractTask) InitTag(isSite bool) {
 			for k, key := range tmp {
 				tag := &Tag{Type: "regexp", Key: key.(string), Reg: regexp.MustCompile(key.(string))}
 				if isSite {
-					e.SiteTag[field] = append(e.SiteTag[field], tag)
+					eSiteTag[field] = append(eSiteTag[field], tag)
+					//e.SiteTag[field] = append(e.SiteTag[field], tag)
 				} else {
 					e.Tag[field] = append(e.Tag[field], tag)
 				}
@@ -673,6 +741,22 @@ func (e *ExtractTask) InitTag(isSite bool) {
 				ju.TagdbTable.Store(fname+"_reg", &tab)
 			}
 		}
+		if isSite {
+			sm, _ := db.Mgo.FindById("site_management", qu.ObjToString(v["pid"]), bson.M{"site_script": 1})
+			for _, v2 := range (*sm)["site_script"].([]interface{}) {
+				if mdpvalue, ok := Luacodes.Load(v2); ok {
+					if mdpvalue.(map[string]interface{})["e.SiteTag"] == nil{
+						mdpvalue.(map[string]interface{})["e.SiteTag"] = eSiteTag
+					}else {
+						for k2,v2 := range eSiteTag{
+							mdpvalue.(map[string]interface{})["e.SiteTag"].(map[string][]*Tag)[k2] = v2
+						}
+					}
+					Luacodes.Store(v2, mdpvalue)
+				}
+			}
+			eSiteTag = map[string][]*Tag{}
+		}
 	}
 }
 
@@ -706,10 +790,24 @@ func (e *ExtractTask) InitClearFn(isSite bool) {
 		for _, v := range fns {
 			fn[field] = append(fn[field], v.(string))
 		}
+		if isSite {
+			sm, _ := db.Mgo.FindById("site_management", qu.ObjToString(tmp["pid"]), bson.M{"site_script": 1})
+			for _, v2 := range (*sm)["site_script"].([]interface{}) {
+				if mdpvalue, ok := Luacodes.Load(v2); ok {
+					if mdpvalue.(map[string]interface{})["e.SiteClearFn"]== nil{
+						mdpvalue.(map[string]interface{})["e.SiteClearFn"] = fn
+					}else {
+						for k2,v2 := range fn{
+							mdpvalue.(map[string]interface{})["e.SiteClearFn"].(map[string][]string)[k2] = v2
+						}
+					}
+					Luacodes.Store(v2, mdpvalue)
+				}
+			}
+			fn = map[string][]string{}
+		}
 	}
-	if isSite {
-		e.SiteClearFn = fn
-	} else {
+	if !isSite{
 		e.ClearFn = fn
 	}
 }

+ 1 - 0
src/jy/extract/extractudp.go

@@ -99,6 +99,7 @@ func ExtractByUdp(sid, eid string, ra *net.UDPAddr, instanceId ...string) {
 		ext.InitTaskInfo()
 		ext.TaskInfo.FDB = db.MgoFactory(3, 5, 600, ext.TaskInfo.FromDbAddr, ext.TaskInfo.FromDB)
 		ext.TaskInfo.TDB = db.MgoFactory(3, 5, 600, ext.TaskInfo.ToDbAddr, ext.TaskInfo.ToDB)
+		ext.InitSite()
 		ext.InitRulePres()
 		ext.InitRuleBacks(false)
 		ext.InitRuleBacks(true)

+ 0 - 12
src/main.go

@@ -1,14 +1,12 @@
 package main
 
 import (
-	"gopkg.in/mgo.v2/bson"
 	_ "jy/admin"
 	_ "jy/admin/audit"
 	_ "jy/admin/distribution"
 	_ "jy/admin/task"
 	"jy/extract"
 	_ "jy/front"
-	"jy/mongodbutil"
 	. "jy/router"
 	"jy/util"
 	qu "qfw/util"
@@ -36,16 +34,6 @@ func init() {
 	//初始化elastic连接
 	//"winner=172.17.145.179:2710,buyer=172.17.145.179:2711"
 	//elastic.InitElasticSize(qu.ObjToString(util.Config["elasticsearch"]), qu.IntAllDef(util.Config["elasticPoolSize"], 30))
-	sites,_:=mongodbutil.Mgo.Find("site_management",bson.M{},nil,bson.M{"site_script":1},false,-1,-1)
-	for _,v := range *sites{
-		if vv,ok:= v["site_script"].([]interface{});ok{
-			for _,vv := range vv{
-				extract.Luacodes.Store(vv,true)
-			}
-		}else if vv,ok:= v["site_script"].(interface{});ok{
-			extract.Luacodes.Store(vv,true)
-		}
-	}
 }
 
 func main() {

+ 3 - 2
src/main_blocktest.go

@@ -77,6 +77,7 @@ func com(doc map[string]interface{}) {
 	e.InitTaskInfo()
 	//d.TaskInfo.FDB = db.MgoFactory(3, 5, 600, ext.TaskInfo.FromDbAddr, ext.TaskInfo.FromDB)
 	//d.TaskInfo.TDB = db.MgoFactory(3, 5, 600, ext.TaskInfo.ToDbAddr, ext.TaskInfo.ToDB)
+	e.InitSite()
 	e.InitRulePres()
 	e.InitRuleBacks(false)
 	e.InitRuleBacks(true)
@@ -119,8 +120,8 @@ func com(doc map[string]interface{}) {
 		RuleBlock: e.RuleBlock,
 	}
 	e.TaskInfo.ProcessPool <- true
-	pretreated.AnalyStart(j,isSite)
-	e.ExtractProcess(j, nil)
+	pretreated.AnalyStart(j,false)
+	e.ExtractProcess(j, nil,false)
 
 	log.Println("=============块信息================")
 	for _, v := range j.Block {