浏览代码

修改获取组织树数据权限

huangyh 6 年之前
父节点
当前提交
914cac874c
共有 2 个文件被更改,包括 28 次插入14 次删除
  1. 28 8
      controllers/partial/SystemController.go
  2. 0 6
      sqlconfig/system_controller/system_get_org_tree.tpl

+ 28 - 8
controllers/partial/SystemController.go

@@ -170,12 +170,20 @@ func System_FindUserPage(c *entitys.CtrlContext) {
 func System_GetOrgTree(c *entitys.CtrlContext) {
 	var roleRule interface{} = ""
 	rule_code := "org_tree"
+	var user sysmodel.SysUser
 	// 管理员角色ID 5c38ee66-c5e6-40a7-b190-86d115bae3e5,如果是管理员,可以看所有,否则只看到本部门
 	user_id := c.Ctx.GetString("user_id")
 	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{}{"sort": "name", "role_rule": roleRule}
+		result, err := sysutils.TreeSearch(c.Db, "system", "get_org_tree", "sys_org", paramMap_i_t)
+		if err == nil {
+			c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
+		} else {
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		}
 	} else if rule_code != "" {
 		var roleRules []models.SysDataPermissionDetail
 		// 根据rule_code获取角色对应的接口规则
@@ -185,16 +193,28 @@ func System_GetOrgTree(c *entitys.CtrlContext) {
 		} else {
 			roleRule = sysutils.ParseRule(roleRules)
 		}
-	}
-	paramMap_i_t := map[string]interface{}{"sort": "name", "user_id": user_id, "role_rule": roleRule}
-	result, err := sysutils.TreeSearch(c.Db, "system", "get_org_tree", "sys_org", paramMap_i_t)
+		// 查找用户组织ID
+		_, err = c.Db.ID(user_id).Get(&user)
+		if err != nil {
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+			return
+		}
 
-	if err == nil {
-		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
-	} else {
-		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
-	}
+		stplkey := fmt.Sprintf("%s_%s.tpl", "system", "get_org_tree")
+		paramMap_i_t := map[string]interface{}{"sort": "name", "org_id": user.OrgId, "role_rule": roleRule}
+		result, err := c.Db.SqlTemplateClient(stplkey, &paramMap_i_t).Query().List()
+		if err != nil {
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+			return
+		}
 
+		tree, err := sysutils.BuildTree(user.OrgId, result)
+		if err == nil {
+			c.Ctx.JSON(200, sysmodel.SysReturn{200, "", tree})
+		} else {
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		}
+	}
 }
 
 // _FindOrgPage

+ 0 - 6
sqlconfig/system_controller/system_get_org_tree.tpl

@@ -1,14 +1,8 @@
 
 select
-    distinct sys_org.id,
     sys_org.*
 from
     sys_org
-{{if ne .role_rule ""}}
-left join
-    sys_user
-on sys_user.org_id = sys_org.id
-{{end}}
 where
     sys_org.del_flag = 0
 {{if ne .role_rule ""}}