Przeglądaj źródła

上传文件至 'src/jy/admin'

log
wangji 6 lat temu
rodzic
commit
fa5dab38d6
1 zmienionych plików z 294 dodań i 293 usunięć
  1. 294 293
      src/jy/admin/version.go

+ 294 - 293
src/jy/admin/version.go

@@ -1,293 +1,294 @@
-// version
-package admin
-
-import (
-	. "jy/mongodbutil"
-	"jy/util"
-	"log"
-	"net/http"
-	qu "qfw/util"
-	"strings"
-	"time"
-
-	"github.com/gin-contrib/sessions"
-	"github.com/gin-gonic/gin"
-)
-
-func init() {
-	Admin.GET("/version", func(c *gin.Context) {
-		c.HTML(
-			http.StatusOK, "version.html",
-			gin.H{},
-		)
-	})
-	Admin.POST("/version/data", func(c *gin.Context) {
-		data, _ := Mgo.Find("version", `{"delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
-		c.JSON(200, gin.H{"data": data})
-	})
-	Admin.POST("/version/save", func(c *gin.Context) {
-		_id, _ := c.GetPostForm("_id")
-		data := GetPostForm(c)
-		if _id != "" {
-			Mgo.UpdateById("version", _id, map[string]interface{}{"$set": data})
-			c.JSON(200, gin.H{"rep": true})
-		} else {
-			version, _ := c.GetPostForm("version")
-			tmp, _ := Mgo.FindOne("version", `{"version":"`+version+`","delete":false}`)
-			if len(*tmp) > 0 {
-				c.JSON(200, gin.H{"rep": false})
-			} else {
-				s_pversionid, _ := c.GetPostForm("s_pversionid")
-				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
-				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})
-			}
-		}
-	})
-	Admin.POST("/version/use", func(c *gin.Context) {
-		_id, _ := c.GetPostForm("_id")
-		isuse, _ := c.GetPostForm("isuse")
-		if isuse == "true" { //启用确保只有一个版本
-			l, _ := Mgo.Find("version", `{"isuse":true}`, nil, nil, false, -1, -1)
-			if len(*l) > 0 {
-				c.JSON(200, gin.H{"rep": false})
-				return
-			}
-		}
-		bisuse := false
-		if isuse == "true" {
-			bisuse = true
-		}
-		set := map[string]interface{}{
-			"$set": map[string]interface{}{
-				"isuse": bisuse,
-			},
-		}
-		b := Mgo.UpdateById("version", _id, set)
-		c.JSON(200, gin.H{"rep": b})
-	})
-	Admin.POST("/version/del", func(c *gin.Context) { //删除版本
-		_id, _ := c.GetPostForm("_id")
-		s_version, _ := c.GetPostForm("version")
-		b := Mgo.UpdateById("version", _id, `{"$set":{"delete":true}}`)
-		//b := Mgo.Del("version", `{"_id":"`+_id+`"}`)
-		//级联删除
-		//刪除属性配置
-		//删除逻辑
-		//删除属性配置中的前置规则
-		//删除属性配置中的抽取规则
-		//删除属性配置中的后置规则
-		go DelVersionInfo(_id)
-		//删除版本的通用前置规则
-		go DelRulePre(s_version)
-		//删除版本的通用后置规则
-		go DelRuleBack(s_version)
-		//删除标签库
-		go DelTag(s_version)
-		//删除版本的通用前置规则
-		go DelCleanUp(s_version)
-		c.JSON(200, gin.H{"rep": b})
-	})
-	Admin.GET("/version/info", func(c *gin.Context) {
-		vid := c.Query("vid")
-		v, _ := Mgo.Find("version", `{}`, `{"_id":-1}`, `{"version":1}`, false, -1, -1)
-		c.HTML(
-			http.StatusOK, "versioninfo.html",
-			gin.H{"vid": vid, "versions": v},
-		)
-	})
-	Admin.POST("/version/infodata", func(c *gin.Context) {
-		vid, _ := c.GetPostForm("vid")
-		list, _ := Mgo.Find("versioninfo", `{"vid":"`+vid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
-		c.JSON(200, gin.H{"data": list, "vid": vid})
-	})
-	Admin.POST("/version/infosave", func(c *gin.Context) {
-		_id, _ := c.GetPostForm("_id")
-		data := GetPostForm(c)
-		if _id != "" {
-			Mgo.UpdateById("versioninfo", _id, map[string]interface{}{"$set": data})
-			c.JSON(200, gin.H{"rep": true})
-		} else {
-			s_field, _ := c.GetPostForm("s_field")
-			vid, _ := c.GetPostForm("vid")
-			tmp, _ := Mgo.FindOne("versioninfo", `{"s_field":"`+s_field+`","vid":"`+vid+`","delete":false}`)
-			if len(*tmp) > 0 {
-				c.JSON(200, gin.H{"rep": false})
-			} else {
-				data["l_createtime"] = time.Now().Unix()
-				data["s_username"] = sessions.Default(c).Get("username")
-				data["l_lasttime"] = time.Now().Unix()
-				data["delete"] = false
-				pid := Mgo.Save("versioninfo", data)
-				fromvid, _ := data["s_pversionid"].(string)
-				if fromvid != "" {
-					copyFieldRules(vid, pid, s_field, fromvid, sessions.Default(c).Get("username").(string))
-				}
-				c.JSON(200, gin.H{"rep": true})
-			}
-		}
-	})
-	Admin.POST("/version/infouse", func(c *gin.Context) {
-		_id, _ := c.GetPostForm("_id")
-		isuse, _ := c.GetPostForm("isuse")
-		b := Mgo.UpdateById("versioninfo", _id, `{"$set":{"isuse":`+isuse+`}}`)
-		c.JSON(200, gin.H{"rep": b})
-	})
-	Admin.POST("/version/infodel", func(c *gin.Context) {
-		_id, _ := c.GetPostForm("_id")
-		b := Mgo.UpdateById("versioninfo", _id, `{"$set":{"delete":true}}`)
-		v, _ := Mgo.FindById("versioninfo", _id, `{"vid":1}`)
-		go DelLogic(qu.ObjToString((*v)["vid"]), _id)
-		//b := Mgo.Del("versioninfo", `{"_id":"`+_id+`"}`)
-		c.JSON(200, gin.H{"rep": b})
-	})
-	Admin.GET("/version/specialainfo", func(c *gin.Context) {
-		vid := c.Query("vid")
-		c.HTML(
-			http.StatusOK, "specialainfo.html",
-			gin.H{"vid": vid},
-		)
-	})
-}
-
-//克隆版本通用属性
-func copyComRules(version, pvid, s_username string) {
-	tmp, _ := Mgo.FindById("version", pvid, nil)
-	oldversion := (*tmp)["version"].(string)
-	//克隆前置规则
-	plist, _ := Mgo.Find("rule_pre", `{"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_pre", v)
-	}
-	//克隆后置规则
-	blist, _ := Mgo.Find("rule_back", `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
-	for _, v := range *blist {
-		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_back", v)
-	}
-	//克隆tag
-	tlist, _ := Mgo.Find("tag", `{"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()
-		newId := Mgo.Save("tag", v) //克隆父标签
-		td, _ := Mgo.Find("tagdetailinfo", `{"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
-			Mgo.Save("tagdetailinfo", v2) //克隆详细标签
-		}
-	}
-	//克隆函数
-	clist, _ := Mgo.Find("cleanup", `{"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()
-		Mgo.Save("cleanup", v)
-	}
-}
-
-//克隆版本Field
-func copyFieldRules(vid, pid, s_field, oldvid, s_username string) {
-	tmp, _ := Mgo.FindOne("versioninfo", `{"vid":"`+oldvid+`","s_field":"`+s_field+`","delete":false}`)
-	oldpid := qu.BsonIdToSId((*tmp)["_id"])
-	//克隆逻辑列表
-	logic, _ := Mgo.FindOne("rule_logic", `{"vid":"`+oldvid+`","pid":"`+oldpid+`","delete":false}`)
-	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)
-		}
-	}
-}
-
-//获取代码
-func getCode(code string) string {
-	tmps := strings.Split(code, "_")
-	tmp := tmps[:len(tmps)-1]
-	return strings.Join(tmp, "_")
-}
+// version
+package admin
+
+import (
+	. "jy/mongodbutil"
+	"jy/util"
+	"log"
+	"net/http"
+	qu "qfw/util"
+	"strings"
+	"time"
+
+	"github.com/gin-contrib/sessions"
+	"github.com/gin-gonic/gin"
+)
+
+func init() {
+	Admin.GET("/version", func(c *gin.Context) {
+		c.HTML(
+			http.StatusOK, "version.html",
+			gin.H{},
+		)
+	})
+	Admin.POST("/version/data", func(c *gin.Context) {
+		data, _ := Mgo.Find("version", `{"delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
+		c.JSON(200, gin.H{"data": data})
+	})
+	Admin.POST("/version/save", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		data := GetPostForm(c)
+		if _id != "" {
+			Mgo.UpdateById("version", _id, map[string]interface{}{"$set": data})
+			c.JSON(200, gin.H{"rep": true})
+		} else {
+			version, _ := c.GetPostForm("version")
+			tmp, _ := Mgo.FindOne("version", `{"version":"`+version+`","delete":false}`)
+			if len(*tmp) > 0 {
+				c.JSON(200, gin.H{"rep": false})
+			} else {
+				s_pversionid, _ := c.GetPostForm("s_pversionid")
+				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
+				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})
+			}
+		}
+	})
+	Admin.POST("/version/use", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		isuse, _ := c.GetPostForm("isuse")
+		if isuse == "true" { //启用确保只有一个版本
+			l, _ := Mgo.Find("version", `{"isuse":true}`, nil, nil, false, -1, -1)
+			if len(*l) > 0 {
+				c.JSON(200, gin.H{"rep": false})
+				return
+			}
+		}
+		bisuse := false
+		if isuse == "true" {
+			bisuse = true
+		}
+		set := map[string]interface{}{
+			"$set": map[string]interface{}{
+				"isuse": bisuse,
+			},
+		}
+		b := Mgo.UpdateById("version", _id, set)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.POST("/version/del", func(c *gin.Context) { //删除版本
+		_id, _ := c.GetPostForm("_id")
+		s_version, _ := c.GetPostForm("version")
+		b := Mgo.UpdateById("version", _id, `{"$set":{"delete":true}}`)
+		//b := Mgo.Del("version", `{"_id":"`+_id+`"}`)
+		//级联删除
+		//刪除属性配置
+		//删除逻辑
+		//删除属性配置中的前置规则
+		//删除属性配置中的抽取规则
+		//删除属性配置中的后置规则
+		go DelVersionInfo(_id)
+		//删除版本的通用前置规则
+		go DelRulePre(s_version)
+		//删除版本的通用后置规则
+		go DelRuleBack(s_version)
+		//删除标签库
+		go DelTag(s_version)
+		//删除版本的通用前置规则
+		go DelCleanUp(s_version)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.GET("/version/info", func(c *gin.Context) {
+		vid := c.Query("vid")
+		v, _ := Mgo.Find("version", `{}`, `{"_id":-1}`, `{"version":1}`, false, -1, -1)
+		c.HTML(
+			http.StatusOK, "versioninfo.html",
+			gin.H{"vid": vid, "versions": v},
+		)
+	})
+	Admin.POST("/version/infodata", func(c *gin.Context) {
+		vid, _ := c.GetPostForm("vid")
+		list, _ := Mgo.Find("versioninfo", `{"vid":"`+vid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
+		c.JSON(200, gin.H{"data": list, "vid": vid})
+	})
+	Admin.POST("/version/infosave", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		data := GetPostForm(c)
+		if _id != "" {
+			Mgo.UpdateById("versioninfo", _id, map[string]interface{}{"$set": data})
+			c.JSON(200, gin.H{"rep": true})
+		} else {
+			s_field, _ := c.GetPostForm("s_field")
+			vid, _ := c.GetPostForm("vid")
+			tmp, _ := Mgo.FindOne("versioninfo", `{"s_field":"`+s_field+`","vid":"`+vid+`","delete":false}`)
+			if len(*tmp) > 0 {
+				c.JSON(200, gin.H{"rep": false})
+			} else {
+				data["l_createtime"] = time.Now().Unix()
+				data["s_username"] = sessions.Default(c).Get("username")
+				data["l_lasttime"] = time.Now().Unix()
+				data["delete"] = false
+				pid := Mgo.Save("versioninfo", data)
+				fromvid, _ := data["s_pversionid"].(string)
+				if fromvid != "" {
+					copyFieldRules(vid, pid, s_field, fromvid, sessions.Default(c).Get("username").(string))
+				}
+				c.JSON(200, gin.H{"rep": true})
+			}
+		}
+	})
+	Admin.POST("/version/infouse", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		isuse, _ := c.GetPostForm("isuse")
+		b := Mgo.UpdateById("versioninfo", _id, `{"$set":{"isuse":`+isuse+`}}`)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.POST("/version/infodel", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		b := Mgo.UpdateById("versioninfo", _id, `{"$set":{"delete":true}}`)
+		v, _ := Mgo.FindById("versioninfo", _id, `{"vid":1}`)
+		go DelLogic(qu.ObjToString((*v)["vid"]), _id)
+		//b := Mgo.Del("versioninfo", `{"_id":"`+_id+`"}`)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.GET("/version/specialainfo", func(c *gin.Context) {
+		vid := c.Query("vid")
+		log.Println("-----", vid)
+		c.HTML(
+			http.StatusOK, "specialainfo.html",
+			gin.H{"vid": vid},
+		)
+	})
+}
+
+//克隆版本通用属性
+func copyComRules(version, pvid, s_username string) {
+	tmp, _ := Mgo.FindById("version", pvid, nil)
+	oldversion := (*tmp)["version"].(string)
+	//克隆前置规则
+	plist, _ := Mgo.Find("rule_pre", `{"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_pre", v)
+	}
+	//克隆后置规则
+	blist, _ := Mgo.Find("rule_back", `{"s_version":"`+oldversion+`","delete":false}`, nil, nil, false, -1, -1)
+	for _, v := range *blist {
+		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_back", v)
+	}
+	//克隆tag
+	tlist, _ := Mgo.Find("tag", `{"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()
+		newId := Mgo.Save("tag", v) //克隆父标签
+		td, _ := Mgo.Find("tagdetailinfo", `{"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
+			Mgo.Save("tagdetailinfo", v2) //克隆详细标签
+		}
+	}
+	//克隆函数
+	clist, _ := Mgo.Find("cleanup", `{"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()
+		Mgo.Save("cleanup", v)
+	}
+}
+
+//克隆版本Field
+func copyFieldRules(vid, pid, s_field, oldvid, s_username string) {
+	tmp, _ := Mgo.FindOne("versioninfo", `{"vid":"`+oldvid+`","s_field":"`+s_field+`","delete":false}`)
+	oldpid := qu.BsonIdToSId((*tmp)["_id"])
+	//克隆逻辑列表
+	logic, _ := Mgo.FindOne("rule_logic", `{"vid":"`+oldvid+`","pid":"`+oldpid+`","delete":false}`)
+	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)
+		}
+	}
+}
+
+//获取代码
+func getCode(code string) string {
+	tmps := strings.Split(code, "_")
+	tmp := tmps[:len(tmps)-1]
+	return strings.Join(tmp, "_")
+}