Kaynağa Gözat

修改获取菜单按钮权限接口

huangyh 6 yıl önce
ebeveyn
işleme
cf98b65069

+ 11 - 3
controllers/partial/SystemController.go

@@ -517,6 +517,7 @@ func System_FindMenuPage(c *entitys.CtrlContext) {
 	page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
 	rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
 
+	user_id := c.Ctx.DefaultQuery("user_id", "")
 	name := c.Ctx.DefaultQuery("name", "")
 	code := c.Ctx.DefaultQuery("code", "")
 	cn_id := c.Ctx.DefaultQuery("cn_id", "")
@@ -526,7 +527,14 @@ func System_FindMenuPage(c *entitys.CtrlContext) {
 
 	op := template.HTML(type_op)
 
-	paramMap_i_t := map[string]interface{}{"hidden": hidden, "page": page, "rows": rows, "type": _type, "type_op": op, "name": name, "code": code, "cn_id": cn_id}
+	// 管理员角色ID 5c38ee66-c5e6-40a7-b190-86d115bae3e5
+	exist, _ := c.Db.Table("sys_user_role").Where("user_id = ? and role_id = ?", user_id, "5c38ee66-c5e6-40a7-b190-86d115bae3e5").Exist()
+	//如果是管理员
+	if exist {
+		user_id = ""
+	}
+
+	paramMap_i_t := map[string]interface{}{"user_id": user_id, "hidden": hidden, "page": page, "rows": rows, "type": _type, "type_op": op, "name": name, "code": code, "cn_id": cn_id}
 	result, err := sysutils.PageSearch(c.Db, "system", "find_menu_page", "sys_menu", paramMap_i_t)
 	if err == nil {
 		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
@@ -642,7 +650,7 @@ func System_AddMenu(c *entitys.CtrlContext) {
 
 	if paramObj0.Parent != "" {
 		parentNodes := []sysmodel.SysMenu{}
-		err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
+		err := c.Db.SqlMapClient("select_parent_menu", paramObj0.Parent).Find(&parentNodes)
 		if err != nil {
 			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
 			return
@@ -705,7 +713,7 @@ func System_UpdateMenu(c *entitys.CtrlContext) {
 
 	if paramObj0.Parent != "" {
 		parentNodes := []sysmodel.SysMenu{}
-		err := c.Db.SqlMapClient("one_sys_menu", paramObj0.Parent).Find(&parentNodes)
+		err := c.Db.SqlMapClient("select_parent_menu", paramObj0.Parent).Find(&parentNodes)
 		if err != nil {
 			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
 			return

+ 5 - 0
sqlconfig/light-apiengine-develop/sys_menu.xml

@@ -1,4 +1,9 @@
 <sqlMap>
+    <sql id="select_parent_menu">
+        select
+        `id`,`name`,`code`,`parent`,`inheritance`,`url`,`component`,`perms`,`type`,`icon`,`order_num`,`create_by`,`create_time`,`last_update_by`,`last_update_time`,`del_flag`
+        from sys_menu where parent = ?
+    </sql>
     <sql id="select_sys_menu">
         select
         `id`,`name`,`code`,`parent`,`inheritance`,`url`,`component`,`perms`,`type`,`icon`,`order_num`,`create_by`,`create_time`,`last_update_by`,`last_update_time`,`del_flag`

+ 14 - 6
sqlconfig/system_controller/system_find_menu_page_count.tpl

@@ -2,18 +2,26 @@
 select
     count(*) records
 from
-    sys_menu
+    sys_menu, sys_role_menu, sys_user_role, sys_user
 where
-	del_flag = 0
+    sys_menu.id = sys_role_menu.menu_id
+    and sys_role_menu.role_id = sys_user_role.role_id
+    and sys_user_role.user_id = sys_user.id
+    and sys_menu.del_flag = 0
 {{if ne .name ""}}
-    and name like '%{{.name}}%'
+    and sys_menu.name like '%{{.name}}%'
 {{end}}
 {{if ne .code ""}}
-    and code like '%{{.code}}%'
+    and sys_menu.code like '%{{.code}}%'
 {{end}}
 {{if ne .cn_id ""}}
-    and inheritance like '%{{.cn_id}}%'
+    and sys_menu.inheritance like '%{{.cn_id}}%'
 {{end}}
 {{if ne .type_op ""}}
-    and type {{.type_op}} {{.type}}
+    and sys_menu.type {{.type_op}} {{.type}}
+{{end}}
+{{if ne .user_id ""}}
+    and sys_user.id = '{{.user_id}}'
+{{else}}
+    group by sys_menu.id
 {{end}}

+ 15 - 7
sqlconfig/system_controller/system_find_menu_page_select.tpl

@@ -1,21 +1,29 @@
 
 select
-    *
+    sys_menu.*
 from
-    sys_menu
+    sys_menu, sys_role_menu, sys_user_role, sys_user
 where
-    del_flag = 0
+    sys_menu.id = sys_role_menu.menu_id
+    and sys_role_menu.role_id = sys_user_role.role_id
+    and sys_user_role.user_id = sys_user.id
+    and sys_menu.del_flag = 0
 {{if ne .name ""}}
-    and name like '%{{.name}}%'
+    and sys_menu.name like '%{{.name}}%'
 {{end}}
 {{if ne .code ""}}
-    and code like '%{{.code}}%'
+    and sys_menu.code like '%{{.code}}%'
 {{end}}
 {{if ne .cn_id ""}}
-    and inheritance like '%{{.cn_id}}%'
+    and sys_menu.inheritance like '%{{.cn_id}}%'
 {{end}}
 {{if ne .type_op ""}}
-    and type {{.type_op}} {{.type}}
+    and sys_menu.type {{.type_op}} {{.type}}
+{{end}}
+{{if ne .user_id ""}}
+    and sys_user.id = '{{.user_id}}'
+{{else}}
+    group by sys_menu.id
 {{end}}
 order by order_num
 LIMIT {{.rows}} OFFSET {{.offset}}