maxiaoshan 6 жил өмнө
parent
commit
dab49e183f

+ 1 - 1
src/jy/admin/clearversion.go

@@ -63,7 +63,7 @@ func init() {
 		_id, _ := c.GetPostForm("_id")
 		isuse, _ := c.GetPostForm("isuse")
 		if isuse == "true" { //启用确保只有一个版本
-			l, _ := Mgo.Find("clearversion", `{"isuse":true}`, nil, nil, false, -1, -1)
+			l, _ := Mgo.Find("clearversion", `{"delete":false,"isuse":true}`, nil, nil, false, -1, -1)
 			if len(*l) > 0 {
 				c.JSON(200, gin.H{"rep": false})
 				return

+ 131 - 125
src/jy/admin/user.go

@@ -10,10 +10,11 @@ import (
 	qu "qfw/util"
 	"time"
 
+	"fmt"
+
 	"github.com/gin-contrib/sessions"
 	"github.com/gin-gonic/gin"
 	"gopkg.in/mgo.v2/bson"
-	"fmt"
 )
 
 func init() {
@@ -45,28 +46,34 @@ func init() {
 		_id := c.Query("id")
 		c.HTML(http.StatusOK, "secondmenu.html", gin.H{"_id": _id})
 	})
-	Admin.POST("/menu", Menu)
-	Admin.POST("/menu/save", MenuSave)
-	Admin.POST("/menu/data", MenuData)
-	Admin.POST("/menu/searchbyid", MenuSearchById)
-	Admin.POST("/menu/del", MenuDel)
-	Admin.POST("/infotype/data", InfotypeData)
-	Admin.POST("/fields/data", FieldsData)
-	Admin.POST("/topclass/data", TopclassData)
-	Admin.POST("/subclass/data", SubclassData)
-	Admin.POST("/infotype/save", InfotypeSave)
-	Admin.POST("/infotype/select", InfotypeSelect)
-	Admin.POST("/infotype/del", InfotypeDel)
-	Admin.POST("/role/menu/data", RoleMenuData)
-	Admin.POST("/role/menu/save", RoleMenuSave)
-	Admin.POST("/role/select", RoleSelect)
-	Admin.POST("/role/secondmenu/data", RoleSecondMenuData)
-	Admin.POST("/role/menu/del", RoleMenuDel)
-	Admin.POST("/role/secondmenu/del", RoleSecondMenuDel)
-	Admin.POST("/secondmenu/data", SecondMenuData)
-	Admin.POST("/secondmenu/save", SecondMenuSave)
-	Admin.POST("/secondmenu/searchbyid", SecondMenuSearchById)
-	Admin.POST("/secondmenu/del", SecondMenuDel)
+
+	Admin.POST("/menu", Menu) //左侧菜单栏
+	//一级菜单
+	Admin.POST("/menu/save", MenuSave)             //保存一级菜单
+	Admin.POST("/menu/data", MenuData)             //查询一级菜单
+	Admin.POST("/menu/searchbyid", MenuSearchById) //编辑一级菜单
+	Admin.POST("/menu/del", MenuDel)               //删除一级菜单
+	//二级菜单
+	Admin.POST("/secondmenu/data", SecondMenuData)             //查询二级菜单
+	Admin.POST("/secondmenu/save", SecondMenuSave)             //保存二级菜单
+	Admin.POST("/secondmenu/searchbyid", SecondMenuSearchById) //编辑二级菜单
+	Admin.POST("/secondmenu/del", SecondMenuDel)               //删除二级菜单
+	//分类抽取
+	Admin.POST("/infotype/data", InfotypeData)     //查询分类信息
+	Admin.POST("/fields/data", FieldsData)         //查询所有属性
+	Admin.POST("/topclass/data", TopclassData)     //查询所有一级分类
+	Admin.POST("/subclass/data", SubclassData)     //查询二级分类
+	Admin.POST("/infotype/save", InfotypeSave)     //保存分类信息
+	Admin.POST("/infotype/select", InfotypeSelect) //编辑分类信息
+	Admin.POST("/infotype/del", InfotypeDel)       //删除分类信息
+	//角色
+	Admin.POST("/role/menu/data", RoleMenuData) //查询角色的所有菜单
+	Admin.POST("/role/menu/save", RoleMenuSave) //保存角色的所有菜单
+	Admin.POST("/role/select", RoleSelect)      //编辑一级菜单下的二级菜单
+	//Admin.POST("/role/secondmenu/data", RoleSecondMenuData) //查询一级菜单下的二级菜单
+	Admin.POST("/role/menu/del", RoleMenuDel) //删除一级菜单
+	//Admin.POST("/role/secondmenu/del", RoleSecondMenuDel)   //
+
 	Admin.POST("/user/data", User)
 	Admin.POST("/user/save", UserSave)
 	Admin.POST("/user/searchbyid", UserSearchById)
@@ -97,51 +104,51 @@ func SecondMenuData(c *gin.Context) {
 }
 func InfotypeData(c *gin.Context) {
 	datas, _ := Mgo.Find("infotype", `{}`, nil, nil, false, -1, -1)
-	list:=[]map[string]interface{}{}
-	for _,data:=range *datas{
-		if data["subclass"]==nil{
-			data["subclass"]=""
-			list=append(list,data)
-		}else{
-			for k,_:=range data["subclass"].(map[string]interface{}){
-				value:=map[string]interface{}{
-					"_id":data["_id"],
-					"topclass":data["topclass"],
-					"subclass":k,
+	list := []map[string]interface{}{}
+	for _, data := range *datas {
+		if data["subclass"] == nil {
+			data["subclass"] = ""
+			list = append(list, data)
+		} else {
+			for k, _ := range data["subclass"].(map[string]interface{}) {
+				value := map[string]interface{}{
+					"_id":      data["_id"],
+					"topclass": data["topclass"],
+					"subclass": k,
 				}
-				list=append(list,value)
+				list = append(list, value)
 			}
 		}
 	}
 	c.JSON(200, gin.H{"data": list})
 }
-func FieldsData(c *gin.Context){
+func FieldsData(c *gin.Context) {
 	datas, _ := Mgo.Find("fields", `{}`, nil, nil, false, -1, -1)
 	c.JSON(200, gin.H{"data": datas})
 }
-func TopclassData(c *gin.Context){
+func TopclassData(c *gin.Context) {
 	datas, _ := Mgo.Find("infoclass", `{}`, nil, nil, false, -1, -1)
 	c.JSON(200, gin.H{"data": datas})
 }
-func SubclassData(c *gin.Context){
+func SubclassData(c *gin.Context) {
 	topclass, _ := c.GetPostForm("top")
-	datas, _ := Mgo.FindOneByField("infoclass",`{"topclass":"`+topclass+`"}`,`{"subclass":"1"}`)
-	data:=*datas
-	if data["subclass"]!=nil{
+	datas, _ := Mgo.FindOneByField("infoclass", `{"topclass":"`+topclass+`"}`, `{"subclass":"1"}`)
+	data := *datas
+	if data["subclass"] != nil {
 		c.JSON(200, gin.H{"data": datas})
 	}
 }
-func InfotypeSave(c *gin.Context){
+func InfotypeSave(c *gin.Context) {
 	topclass, _ := c.GetPostForm("topclass")
 	subclass, _ := c.GetPostForm("subclass")
 	fieldsStr, _ := c.GetPostForm("fields")
 	fieldsStr2, _ := c.GetPostForm("fields2")
-	_id,_:=c.GetPostForm("_id")
+	_id, _ := c.GetPostForm("_id")
 	fields := make([]string, 0)
 	err := json.Unmarshal([]byte(fieldsStr), &fields)
 	fields2 := make([]string, 0)
 	err2 := json.Unmarshal([]byte(fieldsStr2), &fields2)
-	if _id=="" {
+	if _id == "" {
 		b := Mgo.Count("infotype", map[string]interface{}{
 			"topclass": topclass,
 		})
@@ -153,7 +160,7 @@ func InfotypeSave(c *gin.Context){
 				},
 			})
 		}
-		if (b == 0)||(b!=0&&b2==0&&subclass!=""){
+		if (b == 0) || (b != 0 && b2 == 0 && subclass != "") {
 			if err == nil {
 				if subclass == "" {
 					maps := map[string]interface{}{
@@ -165,8 +172,7 @@ func InfotypeSave(c *gin.Context){
 					}
 					Mgo.Save("infotype", maps)
 				} else {
-					maps := map[string]interface{}{
-					}
+					maps := map[string]interface{}{}
 					for _, field := range fields {
 						maps = map[string]interface{}{
 							"subclass." + subclass + "." + field: true,
@@ -183,25 +189,25 @@ func InfotypeSave(c *gin.Context){
 				c.JSON(200, gin.H{"rep": true})
 			}
 		}
-	}else{
-		if err == nil && err2==nil{
-			set:=map[string]interface{}{
-				"_id":bson.ObjectIdHex(_id),
+	} else {
+		if err == nil && err2 == nil {
+			set := map[string]interface{}{
+				"_id": bson.ObjectIdHex(_id),
 			}
 			if subclass == "" {
 				maps := map[string]interface{}{
-					"fields":   map[string]interface{}{},
+					"fields": map[string]interface{}{},
 				}
 				for _, field := range fields {
 					maps["fields"].(map[string]interface{})[field] = true
 				}
-				maps2:=map[string]interface{}{
-					"$set":maps,
+				maps2 := map[string]interface{}{
+					"$set": maps,
 				}
 				Mgo.Update("infotype", set, maps2, false, false)
 			} else {
 				maps := map[string]interface{}{
-					"subclass."+subclass:map[string]interface{}{},
+					"subclass." + subclass: map[string]interface{}{},
 				}
 				for _, field := range fields {
 					maps["subclass."+subclass].(map[string]interface{})[field] = true
@@ -219,75 +225,73 @@ func InfotypeSave(c *gin.Context){
 func InfotypeSelect(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
 	subclass, _ := c.GetPostForm("subclass")
-	fmt.Println(_id)
-	fmt.Println(subclass)
-	one1,_:=Mgo.FindById("infotype",_id,`{}`)
-	one:=*one1
+	one1, _ := Mgo.FindById("infotype", _id, `{}`)
+	one := *one1
 	datas, _ := Mgo.Find("fields", `{}`, nil, nil, false, -1, -1)
-	datas2:=*datas
+	datas2 := *datas
 	//list2:=[]map[string]interface{}{}
-	if one["subclass"]==nil{
-		list:=[]interface{}{}
-		for k,v:=range one["fields"].(map[string]interface{}){
-			if v==true{
-				s_name1,_:=Mgo.FindOneByField("fields",map[string]interface{}{"s_field":k},`{}`)
-				s_name:=*s_name1
+	if one["subclass"] == nil {
+		list := []interface{}{}
+		for k, v := range one["fields"].(map[string]interface{}) {
+			if v == true {
+				s_name1, _ := Mgo.FindOneByField("fields", map[string]interface{}{"s_field": k}, `{}`)
+				s_name := *s_name1
 				//已存在属性
-				list=append(list,s_name)
-				for key,value:=range datas2{
-					if value["s_field"]==k{
+				list = append(list, s_name)
+				for key, value := range datas2 {
+					if value["s_field"] == k {
 						datas2 = append(datas2[:key], datas2[key+1:]...)
 					}
 				}
 			}
 		}
-		fmt.Println(one["topclass"].(string),list)
-		c.JSON(200, gin.H{"topclass": one["topclass"].(string), "subclass": "","fields2":datas2, "fields": list})
-	}else{
-		maps:=one["subclass"].(map[string]interface{})[subclass]
-		list:=[]interface{}{}
-		for k,v:=range maps.(map[string]interface{}){
-			if v==true{
-				s_name1,_:=Mgo.FindOneByField("fields",map[string]interface{}{"s_field":k},`{}`)
-				s_name:=*s_name1
-				list=append(list,s_name)
-				for key,value:=range datas2{
-					if value["s_field"]==k{
+		fmt.Println(one["topclass"].(string), list)
+		c.JSON(200, gin.H{"topclass": one["topclass"].(string), "subclass": "", "fields2": datas2, "fields": list})
+	} else {
+		maps := one["subclass"].(map[string]interface{})[subclass]
+		list := []interface{}{}
+		for k, v := range maps.(map[string]interface{}) {
+			if v == true {
+				s_name1, _ := Mgo.FindOneByField("fields", map[string]interface{}{"s_field": k}, `{}`)
+				s_name := *s_name1
+				list = append(list, s_name)
+				for key, value := range datas2 {
+					if value["s_field"] == k {
 						datas2 = append(datas2[:key], datas2[key+1:]...)
 					}
 				}
 			}
 		}
-		fmt.Println(one["topclass"].(string),subclass,list)
-		c.JSON(200, gin.H{"topclass": one["topclass"].(string), "subclass":subclass,"fields2":datas2, "fields": list})
+		fmt.Println(one["topclass"].(string), subclass, list)
+		c.JSON(200, gin.H{"topclass": one["topclass"].(string), "subclass": subclass, "fields2": datas2, "fields": list})
 	}
 
 }
 func InfotypeDel(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
 	subclass, _ := c.GetPostForm("subclass")
-	set:=map[string]interface{}{
-		"_id":bson.ObjectIdHex(_id),
+	set := map[string]interface{}{
+		"_id": bson.ObjectIdHex(_id),
 	}
-	if subclass==""{
-		b:=Mgo.Del("infotype",set)
+	if subclass == "" {
+		b := Mgo.Del("infotype", set)
 		c.JSON(200, gin.H{"rep": b})
-	}else{
-		info1,_:=Mgo.FindById("infotype",_id,`{}`)
-		info:=*info1
-		maps:=info["subclass"].(map[string]interface{})
-		delete(maps,subclass)
-		if len(maps)==0{
-			b:=Mgo.Del("infotype",set)
+	} else {
+		info1, _ := Mgo.FindById("infotype", _id, `{}`)
+		info := *info1
+		maps := info["subclass"].(map[string]interface{})
+		delete(maps, subclass)
+		if len(maps) == 0 {
+			b := Mgo.Del("infotype", set)
 			c.JSON(200, gin.H{"rep": b})
-		}else{
-			maps2:=map[string]interface{}{
-				"subclass":maps,
+		} else {
+			maps2 := map[string]interface{}{
+				"subclass": maps,
 			}
-			maps3:=map[string]interface{}{
-				"$set":maps2,
+			maps3 := map[string]interface{}{
+				"$set": maps2,
 			}
-			b:=Mgo.Update("infotype",set,maps3,false,false)
+			b := Mgo.Update("infotype", set, maps3, false, false)
 			c.JSON(200, gin.H{"rep": b})
 		}
 	}
@@ -405,17 +409,18 @@ func RoleSelect(c *gin.Context) {
 	}
 
 }
-func RoleSecondMenuData(c *gin.Context) {
-	role, _ := c.GetPostForm("role")
-	_id, _ := c.GetPostForm("_id")
-	maps := map[string]interface{}{
-		"menuid":       _id,
-		"role." + role: true,
-	}
-	datas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
 
-	c.JSON(200, gin.H{"data": datas})
-}
+//func RoleSecondMenuData(c *gin.Context) {
+//	role, _ := c.GetPostForm("role")
+//	_id, _ := c.GetPostForm("_id")
+//	maps := map[string]interface{}{
+//		"menuid":       _id,
+//		"role." + role: true,
+//	}
+//	datas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
+
+//	c.JSON(200, gin.H{"data": datas})
+//}
 func Menu(c *gin.Context) {
 	session := sessions.Default(c)
 	u := session.Get("user").(*map[string]interface{})
@@ -572,21 +577,22 @@ func RoleMenuDel(c *gin.Context) {
 	}
 	c.JSON(200, gin.H{"rep": b})
 }
-func RoleSecondMenuDel(c *gin.Context) {
-	_id, _ := c.GetPostForm("_id")
-	role, _ := c.GetPostForm("role")
-	maps := map[string]interface{}{
-		"_id": bson.ObjectIdHex(_id),
-	}
-	data := map[string]interface{}{
-		"role." + role: false,
-	}
-	data2 := map[string]interface{}{
-		"$set": data,
-	}
-	b := Mgo.Update("menusecond", maps, data2, true, false)
-	c.JSON(200, gin.H{"rep": b})
-}
+
+//func RoleSecondMenuDel(c *gin.Context) {
+//	_id, _ := c.GetPostForm("_id")
+//	role, _ := c.GetPostForm("role")
+//	maps := map[string]interface{}{
+//		"_id": bson.ObjectIdHex(_id),
+//	}
+//	data := map[string]interface{}{
+//		"role." + role: false,
+//	}
+//	data2 := map[string]interface{}{
+//		"$set": data,
+//	}
+//	b := Mgo.Update("menusecond", maps, data2, true, false)
+//	c.JSON(200, gin.H{"rep": b})
+//}
 func UserUppwd(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
 	pwd, _ := c.GetPostForm("pwd")

+ 5 - 4
src/jy/extract/clearesult.go

@@ -45,6 +45,7 @@ func (c *ClearTask) ClearProcess(doc *map[string]interface{}) {
 				}
 			}
 			tmpmaparr[field] = tmparr
+			//	qu.Debug("tmpmaparr--", tmpmaparr)
 			set[field] = (*doc)[field]
 		}
 		tmpmaparr["resultid"] = _id
@@ -97,7 +98,7 @@ func SaveCltLog() {
 	time.AfterFunc(10*time.Second, SaveCltLog)
 }
 
-//批量更新抽取结果的值(todo)
+//批量更新抽取结果的值
 func (c *ClearTask) UpdateResultVal() {
 	defer qu.Catch()
 	c.ClearChannel = make(chan bool, 5)
@@ -108,7 +109,7 @@ func (c *ClearTask) UpdateResultVal() {
 			arr := c.UpdateResult[:500]
 			go func(tmp *[][]map[string]interface{}) {
 				qu.Try(func() {
-					db.Mgo.UpdateBulk(c.ClearTaskInfo.FromColl, *tmp...)
+					c.ClearTaskInfo.FDB.UpdateBulk(c.ClearTaskInfo.FromColl, *tmp...)
 					<-c.ClearChannel
 				}, func(err interface{}) {
 					log.Println(err)
@@ -119,9 +120,9 @@ func (c *ClearTask) UpdateResultVal() {
 		} else {
 			c.ClearChannel <- true
 			arr := c.UpdateResult
-			go func(tmp *[][]map[string]interface{}) {
+			func(tmp *[][]map[string]interface{}) {
 				qu.Try(func() {
-					db.Mgo.UpdateBulk(c.ClearTaskInfo.FromColl, *tmp...)
+					c.ClearTaskInfo.FDB.UpdateBulk(c.ClearTaskInfo.FromColl, *tmp...)
 					<-c.ClearChannel
 				}, func(err interface{}) {
 					log.Println(err)

+ 5 - 5
src/jy/extract/extractInit.go

@@ -84,9 +84,9 @@ type ExtractTask struct {
 	AuditFields   []string                            //需要审核的字段名称
 
 	ProvinceMap       map[string]string
-	CityBrief         map[string]*City     //只加载一次即可
-	ProvinceBrief     map[string]*Province //只加载一次
-	AreaToCity        map[string][]*City   //两个文件共用
+	CityBrief         map[string]*City     //市简称(只加载一次即可)
+	ProvinceBrief     map[string]*Province //省简称(只加载一次)
+	AreaToCity        map[string][]*City   //市,省全称简称(两个文件共用)
 	DistrictCityMap   map[string]*City
 	StreetDistrictMap map[string]*District
 	AreaGet           *ju.DFA //市全称
@@ -718,7 +718,7 @@ func (e *ExtractTask) InitDFA() {
 		pb := v["brief"].(string)
 		p := e.ProvinceBrief[pb]
 		//加载
-		for _, ss := range []string{k, pb} {
+		for _, ss := range []string{k, pb} { //省全称和省简称
 			cs := e.AreaToCity[ss]
 			if cs != nil {
 				cs = append(cs, p.Captial)
@@ -726,7 +726,7 @@ func (e *ExtractTask) InitDFA() {
 				cs = []*City{p.Captial}
 			}
 			e.AreaToCity[ss] = cs
-			e.AreaSimGet.AddWord(ss) //省全称和省简称
+			e.AreaSimGet.AddWord(ss)
 		}
 		city, _ := v["city"].(map[string]interface{})
 		for k1, v1 := range city {

+ 4 - 8
src/jy/extract/extractcity.go

@@ -53,11 +53,11 @@ func (e *ExtractTask) TransmitData(resulttmp map[string]interface{}, id string)
 			fieldval = append(fieldval, fmt.Sprint(val))
 		}
 	}
-	//log.Println("field========", fieldval)
+	//qu.Debug("fieldval========", fieldval)
 	bres, c, p = e.ExtractProvinceCity(province, city, id, fieldval) //抽取省和市
-	//log.Println("b--------", bres, "p---------", p, "c-------------", c)
+	//qu.Debug("b--------", bres, "p---------", p, "c-------------", c)
 	bres, p, c, d = e.ExtractDistrict(fieldval, bres, c, p, id) //抽取区或县
-	//log.Println("bres========", bres, "p===========", p, "c=========", c, "d=============", d)
+	//qu.Debug("bres========", bres, "p===========", p, "c=========", c, "d=============", d)
 	return
 }
 
@@ -65,10 +65,8 @@ func (e *ExtractTask) TransmitData(resulttmp map[string]interface{}, id string)
 func (e *ExtractTask) ExtractDistrict(field []string, bres bool, c, p, id string) (bool, string, string, string) {
 	d := ""
 	for _, str := range field {
-		//log.Println("field===========", str)
 		for pos, GET := range []*ju.DFA{e.AreaDistrict, e.AreaStreet} { //先匹配区或县再匹配街道
 			word := GET.CheckSensitiveWord(str)
-			//log.Println("word================", word)
 			if word != "" {
 				if pos == 0 { //区或县匹配
 					//log.Println("县直接匹配到====", word)
@@ -80,7 +78,7 @@ func (e *ExtractTask) ExtractDistrict(field []string, bres bool, c, p, id string
 						d = word
 						ctmp := city.Brief
 						ptmp := city.P.Brief
-						//log.Println("ctmpptmp================", ptmp, ctmp)
+						//log.Println("ctmpptmp================", ptmp, ctmp, bres)
 						if !bres { //城市省份没有抽到,通过区或县定位市和省
 							c = ctmp
 							p = ptmp
@@ -88,7 +86,6 @@ func (e *ExtractTask) ExtractDistrict(field []string, bres bool, c, p, id string
 						} else { //对比抽到的城市省份是否一致
 							if c != ctmp || p != ptmp {
 								//log.Println("str---", str, "====", word)
-								//log.Println("district: City And Province, Inconsistent Before And After,Id:", id, c, p, ctmp, ptmp, d)
 								c = ctmp
 								p = ptmp
 							}
@@ -111,7 +108,6 @@ func (e *ExtractTask) ExtractDistrict(field []string, bres bool, c, p, id string
 							bres = true
 						} else { //对比抽到的城市省份是否一致
 							if c != ctmp || p != ptmp {
-								//log.Println("street: City And Province, Inconsistent Before And After,Id:", id, c, p, ctmp, ptmp, d)
 								c = ctmp
 								p = ptmp
 							}

+ 0 - 1
src/res/blocktagdb/中标单位.txt

@@ -39,7 +39,6 @@
 推荐中标候选人排序
 确定入围评标投标人
 第一中标侯选人
-第一中标候选人
 第一包中标人
 预中标人
 询价小组推荐的成交候选人

+ 1 - 1
src/web/templates/admin/clearversion.html

@@ -168,7 +168,7 @@ function use(_id,isuse){
 			data:{"_id":_id,"isuse":isuse},
 			success:function(r){
 				if(r.rep){				
-					window.location.href="/admin/clearversion"	
+					window.location.href="/admin/versionclear"	
 				}else{
 					showTip("启用失败", 1000, function() {});
 				}