Kaynağa Gözat

分包及版本克隆

zhangjinkun 6 yıl önce
ebeveyn
işleme
eda5be836e

+ 65 - 47
src/jy/admin/version.go

@@ -33,14 +33,30 @@ func init() {
 		} else {
 			s_pversionid, _ := c.GetPostForm("s_pversionid")
 			data := GetPostForm(c)
+			iscopyfiled, _ := data["iscopyfiled"].(bool)
 			data["l_createtime"] = time.Now().Unix()
 			s_username := sessions.Default(c).Get("username").(string)
 			data["s_username"] = s_username
 			data["delete"] = false
-			Mgo.Save("version", data)
+			vid := Mgo.Save("version", data)
 			if s_pversionid != "" {
 				copyComRules(version, s_pversionid, s_username)
 			}
+			if iscopyfiled {
+				list, _ := Mgo.Find("versioninfo", `{"vid":`+s_pversionid+`,"delete":false}`, nil, nil, false, -1, -1)
+				log.Println(s_pversionid, len(*list))
+				for _, v := range *list {
+					delete(v, "_id")
+					v["l_createtime"] = time.Now().Unix()
+					v["s_username"] = sessions.Default(c).Get("username")
+					v["l_lasttime"] = time.Now().Unix()
+					v["vid"] = vid
+					v["delete"] = false
+					pid := Mgo.Save("versioninfo", v)
+					s_field := qu.ObjToString(v["s_field"])
+					copyFieldRules(vid, pid, s_field, s_pversionid, s_username)
+				}
+			}
 			c.JSON(200, gin.H{"rep": true})
 		}
 	})
@@ -173,52 +189,54 @@ func copyFieldRules(vid, pid, s_field, oldvid, s_username string) {
 	log.Println(s_field, oldvid, oldpid, s_username)
 	//克隆逻辑列表
 	logic, _ := Mgo.FindOne("rule_logic", `{"vid":"`+oldvid+`","pid":"`+oldpid+`","delete":false}`)
-	oldsid := qu.BsonIdToSId((*logic)["_id"])
-	delete(*logic, "_id")
-	(*logic)["vid"] = vid
-	(*logic)["pid"] = pid
-	(*logic)["l_createtime"] = time.Now().Unix()
-	(*logic)["l_lasttime"] = time.Now().Unix()
-	(*logic)["s_username"] = s_username
-	sid := Mgo.Save("rule_logic", logic)
-	//克隆前置规则
-	plist, _ := Mgo.Find("rule_logicpre", `{"sid":"`+oldsid+`","delete":false}`, nil, nil, false, -1, -1)
-	for _, v := range *plist {
-		delete(v, "_id")
-		v["vid"] = vid
-		v["pid"] = pid
-		v["sid"] = sid
-		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_logicpre", v)
-	}
-	//克隆抽取规则
-	elist, _ := Mgo.Find("rule_logicore", `{"sid":"`+oldsid+`","delete":false}`, nil, nil, false, -1, -1)
-	for _, v := range *elist {
-		delete(v, "_id")
-		v["vid"] = vid
-		v["pid"] = pid
-		v["sid"] = sid
-		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_logicore", v)
-	}
-	//克隆过滤规则
-	blist, _ := Mgo.Find("rule_logicback", `{"sid":"`+oldsid+`","delete":false}`, nil, nil, false, -1, -1)
-	for _, v := range *blist {
-		delete(v, "_id")
-		v["vid"] = vid
-		v["pid"] = pid
-		v["sid"] = sid
-		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_logicback", v)
+	if len(*logic) > 0 {
+		oldsid := qu.BsonIdToSId((*logic)["_id"])
+		delete(*logic, "_id")
+		(*logic)["vid"] = vid
+		(*logic)["pid"] = pid
+		(*logic)["l_createtime"] = time.Now().Unix()
+		(*logic)["l_lasttime"] = time.Now().Unix()
+		(*logic)["s_username"] = s_username
+		sid := Mgo.Save("rule_logic", logic)
+		//克隆前置规则
+		plist, _ := Mgo.Find("rule_logicpre", `{"sid":"`+oldsid+`","delete":false}`, nil, nil, false, -1, -1)
+		for _, v := range *plist {
+			delete(v, "_id")
+			v["vid"] = vid
+			v["pid"] = pid
+			v["sid"] = sid
+			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_logicpre", v)
+		}
+		//克隆抽取规则
+		elist, _ := Mgo.Find("rule_logicore", `{"sid":"`+oldsid+`","delete":false}`, nil, nil, false, -1, -1)
+		for _, v := range *elist {
+			delete(v, "_id")
+			v["vid"] = vid
+			v["pid"] = pid
+			v["sid"] = sid
+			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_logicore", v)
+		}
+		//克隆过滤规则
+		blist, _ := Mgo.Find("rule_logicback", `{"sid":"`+oldsid+`","delete":false}`, nil, nil, false, -1, -1)
+		for _, v := range *blist {
+			delete(v, "_id")
+			v["vid"] = vid
+			v["pid"] = pid
+			v["sid"] = sid
+			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_logicback", v)
+		}
 	}
 }
 

+ 48 - 5
src/jy/extract/extpackage.go

@@ -13,6 +13,8 @@ func PackageDetail(j *ju.Job, e *ExtractTask) {
 		packageResult := map[string]map[string]interface{}{}
 		packagenum := len(j.BlockPackage)
 		for pkName, pkg := range j.BlockPackage {
+			//是否清理标记
+			clearmap := map[string]bool{}
 			sonJobResult := map[string]interface{}{}
 			sonJobResult["text"] = pkg.Text
 			sonJobResult["origin"] = pkg.Origin
@@ -24,6 +26,7 @@ func PackageDetail(j *ju.Job, e *ExtractTask) {
 					if pkg.TableKV != nil {
 						for key, val := range pkg.TableKV.Kv {
 							if tag.Key == key {
+								clearmap[k] = false
 								sonJobResult[k] = val
 								if packagenum == 1 {
 									field := &ju.ExtField{
@@ -45,6 +48,7 @@ func PackageDetail(j *ju.Job, e *ExtractTask) {
 					if pkg.ColonKV != nil {
 						for key, val := range pkg.ColonKV.Kv {
 							if tag.Key == key {
+								clearmap[k] = true
 								sonJobResult[k] = val
 								if packagenum == 1 {
 									field := &ju.ExtField{
@@ -66,6 +70,7 @@ func PackageDetail(j *ju.Job, e *ExtractTask) {
 					if pkg.SpaceKV != nil {
 						for key, val := range pkg.SpaceKV.Kv {
 							if tag.Key == key {
+								clearmap[k] = true
 								sonJobResult[k] = val
 								if packagenum == 1 {
 									field := &ju.ExtField{
@@ -97,18 +102,56 @@ func PackageDetail(j *ju.Job, e *ExtractTask) {
 				}
 			}
 			//log.Println(pkName, sonJobResult)
+			sonJobResult["clear"] = clearmap
 			packageResult[pkName] = sonJobResult
 		}
 		if len(packageResult) > 0 {
 			j.PackageInfo = packageResult
 		}
 	}
-	for _, packageResult := range j.PackageInfo {
-		//函数清理
-		for key, val := range packageResult {
+	extRegBackPack(j, e)
+}
+
+//清理分包信息
+func extRegBackPack(j *ju.Job, e *ExtractTask) {
+	//正则清理
+	for _, rc := range e.RuleCores {
+		for _, pack := range j.PackageInfo {
+			clear, _ := pack["clear"].(map[string]interface{})
+			for k, val := range pack {
+				if b, ok := clear[k].(bool); ok && b {
+					if rc.Field == k {
+						text := qu.ObjToString(val)
+						for _, in := range rc.RuleBacks {
+							if text != "" && !in.IsLua {
+								text = in.RegPreBac.Reg.ReplaceAllString(text, in.RegPreBac.Replace)
+							}
+						}
+						pack[k] = text
+					}
+				}
+			}
+		}
+	}
+	//通用正则清理
+	for _, in := range e.RuleBacks {
+		for _, pack := range j.PackageInfo {
+			for k, val := range pack {
+				if in.Field == k {
+					text := qu.ObjToString(val)
+					if text != "" && !in.IsLua {
+						text = in.RegPreBac.Reg.ReplaceAllString(text, in.RegPreBac.Replace)
+					}
+					pack[k] = text
+				}
+			}
+		}
+	}
+	//函数清理
+	for _, pack := range j.PackageInfo {
+		for key, val := range pack {
 			data := clear.DoClearFn(e.ClearFn[key], []interface{}{val, j.Content})
-			packageResult[key] = data[0]
+			pack[key] = data[0]
 		}
 	}
-	//log.Println(j.PackageInfo)
 }

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

@@ -85,7 +85,7 @@ func StartExtractTaskId(taskId string) bool {
 		ext.Id = taskId
 		ext.InitTaskInfo()
 	}
-	ext.TaskInfo.DB = db.MgoFactory(1, 3, 120, ext.TaskInfo.FromDbAddr, ext.TaskInfo.FromDB)
+	ext.TaskInfo.DB = db.MgoFactory(5, 10, 120, ext.TaskInfo.FromDbAddr, ext.TaskInfo.FromDB)
 	ext.InitRulePres()
 	ext.InitRuleBacks()
 	ext.InitRuleCore()
@@ -755,6 +755,9 @@ func AnalysisSaveResult(j *ju.Job, task *TaskInfo) {
 	if len(j.PackageInfo) > 0 { //分包信息
 		resulttmp["package"] = j.PackageInfo
 	}
+	if len(j.Winnerorder) > 0 { //候选人信息
+		resulttmp["winnerorder"] = j.Winnerorder
+	}
 	for k, v := range *doc {
 		if resulttmp[k] == nil { //&& (k != "detail" || k != "contenthtml") {
 			resulttmp[k] = v

+ 1 - 0
src/web/templates/admin/version.html

@@ -104,6 +104,7 @@ $(function () {
 					{label:"版本名称",s_label:"version",placeholder:"版本名称",must:true},
 					{label:"描述",s_label:"s_descript",placeholder:"描述信息",must:true},
 					{label:"克隆版本",s_label:"s_pversionid",type:"tpl_list_local",url:"/admin/getversions"},
+					{label:"克隆属性",s_label:"iscopyfiled",type:"tpl_list_local",list:[{"s_name":"是","_id":true},{"s_name":"否","_id":false}],default:false},
 					{s_label:"isuse",type:"tpl_hidden"},
 				]
 				obj={"isuse":false}