|
@@ -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")
|