Kaynağa Gözat

菜单及用户登录优化

zhangjinkun 6 yıl önce
ebeveyn
işleme
33082d3339
3 değiştirilmiş dosya ile 196 ekleme ve 191 silme
  1. 154 190
      src/jy/admin/user.go
  2. 41 0
      src/jy/front/front.go
  3. 1 1
      src/web/templates/admin/com_memu.html

+ 154 - 190
src/jy/admin/user.go

@@ -2,21 +2,22 @@
 package admin
 
 import (
+	"encoding/json"
+	"jy/front"
 	. "jy/mongodbutil"
 	. "jy/util"
 	"net/http"
+	qu "qfw/util"
 	"time"
-	"github.com/gin-gonic/gin"
+
 	"github.com/gin-contrib/sessions"
+	"github.com/gin-gonic/gin"
 	"gopkg.in/mgo.v2/bson"
-	qu "qfw/util"
-	"encoding/json"
-	"strconv"
 )
 
 func init() {
 	Admin.GET("/index", func(c *gin.Context) {
-		c.HTML(http.StatusOK, "index.html",nil)
+		c.HTML(http.StatusOK, "index.html", nil)
 	})
 	Admin.GET("/user", func(c *gin.Context) {
 		c.HTML(http.StatusOK, "user.html", gin.H{})
@@ -28,31 +29,31 @@ func init() {
 		c.HTML(http.StatusOK, "role.html", gin.H{})
 	})
 	Admin.GET("/role/menu", func(c *gin.Context) {
-		role:=c.Query("role")
-		c.HTML(http.StatusOK, "rolemenu.html", gin.H{"role":role})
+		role := c.Query("role")
+		c.HTML(http.StatusOK, "rolemenu.html", gin.H{"role": role})
 	})
 	Admin.GET("/role/secondmenu", func(c *gin.Context) {
-		role:=c.Query("role")
-		_id:=c.Query("_id")
-		c.HTML(http.StatusOK, "rolesecondmenu.html", gin.H{"role":role,"_id":_id})
+		role := c.Query("role")
+		_id := c.Query("_id")
+		c.HTML(http.StatusOK, "rolesecondmenu.html", gin.H{"role": role, "_id": _id})
 	})
 	Admin.GET("/secondmenu", func(c *gin.Context) {
 		_id := c.Query("id")
-		c.HTML(http.StatusOK, "secondmenu.html", gin.H{"_id":_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/save", MenuSave)
+	Admin.POST("/menu/data", MenuData)
 	Admin.POST("/menu/searchbyid", MenuSearchById)
 	Admin.POST("/menu/del", MenuDel)
-	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("/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("/user/data", User)
@@ -63,9 +64,9 @@ func init() {
 }
 
 func User(c *gin.Context) {
-	maps:=map[string]interface{}{
-		"role":map[string]interface{}{
-			"$ne":"3",
+	maps := map[string]interface{}{
+		"role": map[string]interface{}{
+			"$ne": "3",
 		},
 	}
 	data, _ := Mgo.Find("user", maps, nil, nil, false, -1, -1)
@@ -76,209 +77,173 @@ func MenuData(c *gin.Context) {
 	c.JSON(200, gin.H{"data": data})
 }
 func SecondMenuData(c *gin.Context) {
-	_id,_:= c.GetPostForm("_id")
-	maps:=map[string]interface{}{
-		"menuid":_id,
+	_id, _ := c.GetPostForm("_id")
+	maps := map[string]interface{}{
+		"menuid": _id,
 	}
-	data, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
+	data, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
 	c.JSON(200, gin.H{"data": data})
 }
 func RoleMenuData(c *gin.Context) {
-	role,_:=c.GetPostForm("role")
+	role, _ := c.GetPostForm("role")
 	maps := map[string]interface{}{
-		"role."+role: true,
+		"role." + role: true,
 	}
-	datas, _ := Mgo.Find("menu",maps, nil, nil, false, -1, -1)
-	list:=[]map[string]interface{}{}
-	for _,value:= range *datas{
-		_id:=qu.BsonIdToSId(value["_id"])
-		maps:=map[string]interface{}{
+	datas, _ := Mgo.Find("menu", maps, nil, nil, false, -1, -1)
+	list := []map[string]interface{}{}
+	for _, value := range *datas {
+		_id := qu.BsonIdToSId(value["_id"])
+		maps := map[string]interface{}{
 			"menuid": _id,
 		}
-		count, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
-		if len(*count)!=0{
-			value["secondmenu"]=true
-		}else{
-			value["secondmenu"]=false
+		count, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
+		if len(*count) != 0 {
+			value["secondmenu"] = true
+		} else {
+			value["secondmenu"] = false
 		}
-		list=append(list,value)
+		list = append(list, value)
 	}
 	c.JSON(200, gin.H{"data": list})
 }
-func RoleMenuSave(c *gin.Context){
-	menu,_:=c.GetPostForm("menu")
+func RoleMenuSave(c *gin.Context) {
+	menu, _ := c.GetPostForm("menu")
 	secondmenuStr, _ := c.GetPostForm("secondmenuStr")
 	secondmenuStr2, _ := c.GetPostForm("secondmenuStr2")
-	role,_:=c.GetPostForm("role")
+	role, _ := c.GetPostForm("role")
 	secondmenus := make([]string, 0)
 	secondmenus2 := make([]string, 0)
 	err := json.Unmarshal([]byte(secondmenuStr), &secondmenus)
 	err2 := json.Unmarshal([]byte(secondmenuStr2), &secondmenus2)
-	if err == nil && err2==nil {
+	if err == nil && err2 == nil {
 		for _, v := range secondmenus {
-			maps:=map[string]interface{}{
-				"_id":bson.ObjectIdHex(v),
+			maps := map[string]interface{}{
+				"_id": bson.ObjectIdHex(v),
 			}
-			data:=map[string]interface{}{
-				"role."+role:true,
+			data := map[string]interface{}{
+				"role." + role: true,
 			}
-			data2:=map[string]interface{}{
-				"$set":data,
+			data2 := map[string]interface{}{
+				"$set": data,
 			}
 			Mgo.Update("menusecond", maps, data2, true, false)
 		}
 		for _, v := range secondmenus2 {
-			maps:=map[string]interface{}{
-				"_id":bson.ObjectIdHex(v),
+			maps := map[string]interface{}{
+				"_id": bson.ObjectIdHex(v),
 			}
-			data:=map[string]interface{}{
-				"role."+role:false,
+			data := map[string]interface{}{
+				"role." + role: false,
 			}
-			data2:=map[string]interface{}{
-				"$set":data,
+			data2 := map[string]interface{}{
+				"$set": data,
 			}
 			Mgo.Update("menusecond", maps, data2, true, false)
 		}
 	}
-	b:=false
-	if (len(secondmenus)==0 && len(secondmenus2)==0)||(len(secondmenus)>0){
-		maps:=map[string]interface{}{
-			"_id":bson.ObjectIdHex(menu),
+	b := false
+	if (len(secondmenus) == 0 && len(secondmenus2) == 0) || (len(secondmenus) > 0) {
+		maps := map[string]interface{}{
+			"_id": bson.ObjectIdHex(menu),
 		}
-		data:=map[string]interface{}{
-			"role."+role:true,
+		data := map[string]interface{}{
+			"role." + role: true,
 		}
-		data2:=map[string]interface{}{
-			"$set":data,
+		data2 := map[string]interface{}{
+			"$set": data,
 		}
-		b=Mgo.Update("menu", maps, data2, true, false)
+		b = Mgo.Update("menu", maps, data2, true, false)
 	}
-	if (len(secondmenus)==0 && len(secondmenus2)>0){
-		maps:=map[string]interface{}{
-			"_id":bson.ObjectIdHex(menu),
+	if len(secondmenus) == 0 && len(secondmenus2) > 0 {
+		maps := map[string]interface{}{
+			"_id": bson.ObjectIdHex(menu),
 		}
-		data:=map[string]interface{}{
-			"role."+role:false,
+		data := map[string]interface{}{
+			"role." + role: false,
 		}
-		data2:=map[string]interface{}{
-			"$set":data,
+		data2 := map[string]interface{}{
+			"$set": data,
 		}
-		b=Mgo.Update("menu", maps, data2, true, false)
+		b = Mgo.Update("menu", maps, data2, true, false)
 	}
 
 	c.JSON(200, gin.H{"rep": b})
 }
-func RoleSelect(c *gin.Context){
-	menuid,_:=c.GetPostForm("_id")
-	mark,_:=c.GetPostForm("mark")
-	role,_:=c.GetPostForm("role")
-	if mark==""{
+func RoleSelect(c *gin.Context) {
+	menuid, _ := c.GetPostForm("_id")
+	mark, _ := c.GetPostForm("mark")
+	role, _ := c.GetPostForm("role")
+	if mark == "" {
 		maps := map[string]interface{}{
-			"menuid":menuid,
+			"menuid": menuid,
 		}
-		datas, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
+		datas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
 		c.JSON(200, gin.H{"data": datas})
-	}else{
+	} else {
 		maps := map[string]interface{}{
-			"menuid":menuid,
-			"role."+role:true,
+			"menuid":       menuid,
+			"role." + role: true,
 		}
-		data, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
+		data, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
 		maps2 := map[string]interface{}{
-			"menuid":menuid,
-			"role."+role:false,
+			"menuid":       menuid,
+			"role." + role: false,
 		}
-		names, _ := Mgo.FindById("menu",menuid,`{name:1}`)
-		name:=*names
-		name1:=name["name"]
-		data2, _ := Mgo.Find("menusecond",maps2, nil, nil, false, -1, -1)
-		c.JSON(200, gin.H{"name":name1,"data": data,"data2":data2})
+		names, _ := Mgo.FindById("menu", menuid, `{name:1}`)
+		name := *names
+		name1 := name["name"]
+		data2, _ := Mgo.Find("menusecond", maps2, nil, nil, false, -1, -1)
+		c.JSON(200, gin.H{"name": name1, "data": data, "data2": data2})
 	}
 
 }
 func RoleSecondMenuData(c *gin.Context) {
-	role,_:=c.GetPostForm("role")
-	_id,_:=c.GetPostForm("_id")
+	role, _ := c.GetPostForm("role")
+	_id, _ := c.GetPostForm("_id")
 	maps := map[string]interface{}{
-		"menuid":_id,
-		"role."+role: true,
+		"menuid":       _id,
+		"role." + role: true,
 	}
-	datas, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
+	datas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
 
 	c.JSON(200, gin.H{"data": datas})
 }
 func Menu(c *gin.Context) {
-	//管理员0,审核员1.开发员2,超级管理3
 	session := sessions.Default(c)
-	role:=session.Get("role").(string)
-	maps:=map[string]interface{}{
-	}
-	if role=="3"{
-		maps=map[string]interface{}{
-		}
-	}else {
-		maps = map[string]interface{}{
-			"role." + role: true,
-		}
-	}
-	data, _ := Mgo.Find("menu", maps, nil, nil, false, -1, -1)
-	list:=[]map[string]interface{}{}
-	for _,value:=range *data{
-		_id:=value["_id"]
-		if role=="3"{
-			maps=map[string]interface{}{
-				"menuid":qu.BsonIdToSId(_id),
-			}
-		}else {
-			maps = map[string]interface{}{
-				"role." + role: true,
-				"menuid":qu.BsonIdToSId(_id),
-			}
-		}
-		secdatas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
-		secmenumap:=map[string]interface{}{}
-		for index,secdata:=range *secdatas{
-			secmenumap[strconv.Itoa(index+1)]=secdata
-		}
-		if len(secmenumap)!=0{
-			value["secondmenu"]=secmenumap
-		}
-		list=append(list,value)
-	}
-
-	c.JSON(200, gin.H{"data": list,"role":role})
+	u := session.Get("user").(*map[string]interface{})
+	list := front.UserMenu[qu.ObjToString((*u)["email"])]
+	c.JSON(200, gin.H{"data": list})
 }
 func MenuSave(c *gin.Context) {
 	name, _ := c.GetPostForm("name")
 	href, _ := c.GetPostForm("href")
 	pic, _ := c.GetPostForm("pic")
-	_id,_:=c.GetPostForm("_id")
-	data := map[string]interface{}{
-	}
-	if _id==""{
+	_id, _ := c.GetPostForm("_id")
+	data := map[string]interface{}{}
+	if _id == "" {
 		data = map[string]interface{}{
 			"name": name,
-			"href":   href,
+			"href": href,
 			"pic":  pic,
-			"role":map[string]interface{}{
-				"0":false,
-				"1":false,
-				"2":false,
+			"role": map[string]interface{}{
+				"0": false,
+				"1": false,
+				"2": false,
 			},
 		}
-		b:=Mgo.Save("menu",data)
+		b := Mgo.Save("menu", data)
 		c.JSON(200, gin.H{"rep": b})
-	}else{
+	} else {
 		data = map[string]interface{}{
 			"name": name,
-			"href":   href,
+			"href": href,
 			"pic":  pic,
 		}
-		data2:=map[string]interface{}{
-			"$set":data,
+		data2 := map[string]interface{}{
+			"$set": data,
 		}
-		maps:=map[string]interface{}{
-			"_id":bson.ObjectIdHex(_id),
+		maps := map[string]interface{}{
+			"_id": bson.ObjectIdHex(_id),
 		}
 		b := Mgo.Update("menu", maps, data2, true, false)
 		c.JSON(200, gin.H{"rep": b})
@@ -291,35 +256,34 @@ func SecondMenuSave(c *gin.Context) {
 	pic, _ := c.GetPostForm("pic")
 	_id, _ := c.GetPostForm("_id")
 	menuid, _ := c.GetPostForm("menuid")
-	data := map[string]interface{}{
-	}
-	if _id==""{
+	data := map[string]interface{}{}
+	if _id == "" {
 		data = map[string]interface{}{
-			"name": name,
+			"name":   name,
 			"href":   href,
-			"pic":  pic,
-			"menuid":menuid,
-			"role":map[string]interface{}{
-				"0":false,
-				"1":false,
-				"2":false,
+			"pic":    pic,
+			"menuid": menuid,
+			"role": map[string]interface{}{
+				"0": false,
+				"1": false,
+				"2": false,
 			},
 		}
-		b:=Mgo.Save("menusecond",data)
+		b := Mgo.Save("menusecond", data)
 		c.JSON(200, gin.H{"rep": b})
-	}else {
+	} else {
 		data = map[string]interface{}{
-			"name":   name,
-			"href":   href,
-			"pic":    pic,
+			"name": name,
+			"href": href,
+			"pic":  pic,
 		}
-		data2:=map[string]interface{}{
-			"$set":data,
+		data2 := map[string]interface{}{
+			"$set": data,
 		}
-		maps:=map[string]interface{}{
-			"_id":bson.ObjectIdHex(_id),
+		maps := map[string]interface{}{
+			"_id": bson.ObjectIdHex(_id),
 		}
-		b := Mgo.Update("menusecond",maps, data2, true, false)
+		b := Mgo.Update("menusecond", maps, data2, true, false)
 		c.JSON(200, gin.H{"rep": b})
 	}
 
@@ -375,24 +339,24 @@ func SecondMenuDel(c *gin.Context) {
 func RoleMenuDel(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
 	role, _ := c.GetPostForm("role")
-	maps:=map[string]interface{}{
-		"_id":bson.ObjectIdHex(_id),
+	maps := map[string]interface{}{
+		"_id": bson.ObjectIdHex(_id),
 	}
-	data:=map[string]interface{}{
-		"role."+role:false,
+	data := map[string]interface{}{
+		"role." + role: false,
 	}
-	data2:=map[string]interface{}{
-		"$set":data,
+	data2 := map[string]interface{}{
+		"$set": data,
 	}
 	b := Mgo.Update("menu", maps, data2, true, false)
-	maps=map[string]interface{}{
-		"menuid":_id,
+	maps = map[string]interface{}{
+		"menuid": _id,
 	}
-	count,_:=Mgo.Find("menusecond",maps,nil,nil,false,-1,-1)
-	if len(*count)!=0{
-		for _,c:=range *count{
-			maps=map[string]interface{}{
-				"_id":c["_id"],
+	count, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
+	if len(*count) != 0 {
+		for _, c := range *count {
+			maps = map[string]interface{}{
+				"_id": c["_id"],
 			}
 			Mgo.Update("menusecond", maps, data2, true, false)
 		}
@@ -403,14 +367,14 @@ func RoleMenuDel(c *gin.Context) {
 func RoleSecondMenuDel(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
 	role, _ := c.GetPostForm("role")
-	maps:=map[string]interface{}{
-		"_id":bson.ObjectIdHex(_id),
+	maps := map[string]interface{}{
+		"_id": bson.ObjectIdHex(_id),
 	}
-	data:=map[string]interface{}{
-		"role."+role:false,
+	data := map[string]interface{}{
+		"role." + role: false,
 	}
-	data2:=map[string]interface{}{
-		"$set":data,
+	data2 := map[string]interface{}{
+		"$set": data,
 	}
 	b := Mgo.Update("menusecond", maps, data2, true, false)
 	c.JSON(200, gin.H{"rep": b})

+ 41 - 0
src/jy/front/front.go

@@ -7,12 +7,16 @@ import (
 	. "jy/util"
 	"net/http"
 	qu "qfw/util"
+	"strconv"
 
 	"github.com/gin-contrib/sessions"
 	"github.com/gin-gonic/gin"
 )
 
+var UserMenu map[string][]map[string]interface{}
+
 func init() {
+	UserMenu = make(map[string][]map[string]interface{})
 	front := Router.Group("/")
 	{
 		front.Static("/front", "./web/templates/front")
@@ -27,6 +31,7 @@ func Login(c *gin.Context) {
 	pwd := c.PostForm("pwd")
 	res, _ := Mgo.FindOne("user", fmt.Sprintf(`{"email":"%s","pwd":"%s"}`, email, Se.EncodeString(pwd)))
 	if res != nil && len(*res) > 0 {
+		UserMenu[qu.ObjToString((*res)["email"])] = GetUserMenu(qu.ObjToString((*res)["role"]))
 		session := sessions.Default(c)
 		(*res)["pwd"] = pwd
 		(*res)["_id"] = qu.BsonIdToSId((*res)["_id"])
@@ -44,3 +49,39 @@ func Logout(c *gin.Context) {
 	session.Delete("user")
 	c.Redirect(http.StatusMovedPermanently, "/front/login.html")
 }
+
+func GetUserMenu(role string) []map[string]interface{} {
+	list := []map[string]interface{}{}
+	maps := map[string]interface{}{}
+	if role == "3" {
+		maps = map[string]interface{}{}
+	} else {
+		maps = map[string]interface{}{
+			"role." + role: true,
+		}
+	}
+	data, _ := Mgo.Find("menu", maps, nil, nil, false, -1, -1)
+	for _, value := range *data {
+		_id := value["_id"]
+		if role == "3" {
+			maps = map[string]interface{}{
+				"menuid": qu.BsonIdToSId(_id),
+			}
+		} else {
+			maps = map[string]interface{}{
+				"role." + role: true,
+				"menuid":       qu.BsonIdToSId(_id),
+			}
+		}
+		secdatas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
+		secmenumap := map[string]interface{}{}
+		for index, secdata := range *secdatas {
+			secmenumap[strconv.Itoa(index+1)] = secdata
+		}
+		if len(secmenumap) != 0 {
+			value["secondmenu"] = secmenumap
+		}
+		list = append(list, value)
+	}
+	return list
+}

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

@@ -88,7 +88,7 @@ function menuActive(name){
 	a.parent().addClass("active");
 	a.parent().parent().parent().addClass("active");
 	a.parent().parent().parent().addClass("menu-open");
-    },200);
+    },100);
 }
  
 </script>