浏览代码

菜单展示

maxiaoshan 5 年之前
父节点
当前提交
3a95ecd4a6
共有 1 个文件被更改,包括 67 次插入11 次删除
  1. 67 11
      dataprocess/src/front/front.go

+ 67 - 11
dataprocess/src/front/front.go

@@ -2,6 +2,7 @@ package front
 
 import (
 	qu "qfw/util"
+	"strconv"
 	"time"
 
 	. "../util"
@@ -10,6 +11,11 @@ import (
 	"gopkg.in/mgo.v2/bson"
 )
 
+var UserMenu map[string][]map[string]interface{} //存储菜单
+func init() {
+	UserMenu = make(map[string][]map[string]interface{})
+}
+
 type Front struct {
 	*xweb.Action
 	login     xweb.Mapper `xweb:"/"`                //登录页面
@@ -27,15 +33,15 @@ type Front struct {
 	menuSecond     xweb.Mapper `xweb:"/front/menuSecond"`      //查二级菜单
 	menuSecondSave xweb.Mapper `xweb:"/front/menuSecond/save"` //保存二级菜单
 	menuSecondDel  xweb.Mapper `xweb:"/front/menuSecond/del"`  //删除二级菜单
-
-	roleManager		xweb.Mapper	`xweb:"/front/role"`			//角色权限管理
-	roleEdit		xweb.Mapper	`xweb:"/front/role/edit/(.*)"`	//角色权限查看
-	roleFirst		xweb.Mapper	`xweb:"/front/role/first"`		//一级权限的查看
-	roleSecond		xweb.Mapper	`xweb:"/front/role/second"`		//二级权限的查看
-	roleSave		xweb.Mapper `xweb:"/front/role/edit/save"`	//权限编辑保存
-	roleDel			xweb.Mapper	`xweb:"/front/role/edit/del"`	//权限编辑删除
-	roleSecondEdit  xweb.Mapper	`xweb:"/front/role/second/edit"`//二级权限编辑
-
+	personalMenu   xweb.Mapper `xweb:"/front/personalMenu"`
+	//role
+	roleManager    xweb.Mapper `xweb:"/front/role"`             //角色权限管理
+	roleEdit       xweb.Mapper `xweb:"/front/role/edit/(.*)"`   //角色权限查看
+	roleFirst      xweb.Mapper `xweb:"/front/role/first"`       //一级权限的查看
+	roleSecond     xweb.Mapper `xweb:"/front/role/second"`      //二级权限的查看
+	roleSave       xweb.Mapper `xweb:"/front/role/edit/save"`   //权限编辑保存
+	roleDel        xweb.Mapper `xweb:"/front/role/edit/del"`    //权限编辑删除
+	roleSecondEdit xweb.Mapper `xweb:"/front/role/second/edit"` //二级权限编辑
 
 }
 
@@ -52,7 +58,7 @@ func (f *Front) Login() {
 		}
 		user, _ := Mgo.FindOne("user", query)
 		checked := false
-		if (*user) != nil {
+		if user != nil && len(*user) > 0 {
 			checked = true
 			f.SetSession("user", map[string]interface{}{
 				"name":  (*user)["s_name"],
@@ -61,6 +67,7 @@ func (f *Front) Login() {
 				"email": email,
 				"id":    qu.BsonIdToSId((*user)["_id"]),
 			})
+			UserMenu[email] = GetUserMenu(qu.ObjToString((*user)["s_role"]))
 		}
 		f.ServeJson(map[string]interface{}{
 			"checked": checked,
@@ -101,7 +108,12 @@ func (f *Front) UpdatePwd() {
 func (f *Front) User() {
 	defer qu.Catch()
 	if f.Method() == "POST" {
-		data, _ := Mgo.Find("user", nil, `{"_id":1}`, nil, false, -1, -1)
+		query := bson.M{
+			"s_role": bson.M{
+				"$ne": "0",
+			},
+		}
+		data, _ := Mgo.Find("user", query, `{"_id":1}`, nil, false, -1, -1)
 		for _, d := range *data {
 			d["s_pwd"] = qu.SE.DecodeString(qu.ObjToString(d["s_pwd"]))
 		}
@@ -155,3 +167,47 @@ func (f *Front) UserSave() {
 		"rep": b,
 	})
 }
+
+func (f *Front) PersonalMenu() {
+	user := f.GetSession("user").(map[string]interface{})
+	list := UserMenu[qu.ObjToString(user["email"])]
+	f.ServeJson(map[string]interface{}{
+		"data": list,
+	})
+}
+
+func GetUserMenu(role string) []map[string]interface{} {
+	list := []map[string]interface{}{}
+	maps := map[string]interface{}{}
+	if role == "0" {
+		maps = map[string]interface{}{}
+	} else {
+		maps = map[string]interface{}{
+			"role." + role: true,
+		}
+	}
+	data, _ := Mgo.Find("menu_first", maps, nil, nil, false, -1, -1)
+	for _, d := range *data {
+		_id := d["_id"]
+		if role == "0" {
+			maps = map[string]interface{}{
+				"s_pid": qu.BsonIdToSId(_id),
+			}
+		} else {
+			maps = map[string]interface{}{
+				"role." + role: true,
+				"s_pid":        qu.BsonIdToSId(_id),
+			}
+		}
+		secdatas, _ := Mgo.Find("menu_second", 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 {
+			d["secondmenu"] = secmenumap
+		}
+		list = append(list, d)
+	}
+	return list
+}