123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- // 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) {
- version, _ := c.GetPostForm("version")
- tmp, _ := Mgo.FindOne("version", `{"version":"`+version+`"}`)
- if len(*tmp) > 0 {
- c.JSON(200, gin.H{"rep": false})
- } else {
- s_pversionid, _ := c.GetPostForm("s_pversionid")
- data := GetPostForm(c)
- 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)
- if s_pversionid != "" {
- copyComRules(version, 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 == "1" { //启用确保只有一个版本
- l, _ := Mgo.Find("version", `{"isuse":"1"}`, nil, nil, false, -1, -1)
- if len(*l) > 0 {
- c.JSON(200, gin.H{"rep": false})
- return
- }
- }
- b := Mgo.UpdateById("version", _id, `{"$set":{"isuse":"`+isuse+`"}}`)
- c.JSON(200, gin.H{"rep": b})
- })
- Admin.POST("/version/del", func(c *gin.Context) {
- _id, _ := c.GetPostForm("_id")
- b := Mgo.UpdateById("version", _id, `{"$set":{"delete":true}}`)
- //b := Mgo.Del("version", `{"_id":"`+_id+`"}`)
- 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) {
- s_field, _ := c.GetPostForm("s_field")
- vid, _ := c.GetPostForm("vid")
- data := GetPostForm(c)
- data["l_createtime"] = time.Now().Unix()
- data["s_username"] = sessions.Default(c).Get("username")
- data["l_lasttime"] = time.Now().Unix()
- data["delete"] = false
- tmp, _ := Mgo.FindOne("versioninfo", `{"s_field":"`+s_field+`","vid":"`+vid+`"}`)
- if len(*tmp) > 0 {
- c.JSON(200, gin.H{"rep": false})
- } else {
- 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}}`)
- //b := Mgo.Del("versioninfo", `{"_id":"`+_id+`"}`)
- c.JSON(200, gin.H{"rep": b})
- })
- }
- //克隆版本通用属性
- 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"])
- 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)
- }
- }
- //获取代码
- func getCode(code string) string {
- tmps := strings.Split(code, "_")
- tmp := tmps[:len(tmps)-1]
- return strings.Join(tmp, "_")
- }
|