角色对应用户的最终权限

select

用户ID user_id,

用户名 user_login_id,

姓名 user_name,

角色ID role_id,

角色 role_name,

部门ID dept_id,

部门 dept_name,

roleid,

authoritytype,

权限类型  permission_type_one,

类型 permission_type_two,

名称 menu_name,

    menu_url,

-- SORTINDEX,

-- PARENTID0,

-- PARENTID1,

-- PARENTID2,

-- PARENTID3,

-- PARENTID4,

权限目录类型 permission_menu_type,

适用平台 platform

from

(

select

u.ID 用户ID,

u.USERNAME 用户名,

u.REALNAME 姓名,

rc.id 角色ID,

rc.NAME 角色 ,

rd.id 部门ID,

d.NAME 部门

from

FINE_USER u

left join FINE_USER_ROLE_MIDDLE rm on

u.id = rm.userId

left join FINE_CUSTOM_ROLE rc on

rm.ROLETYPE = 2

and rm.ROLEID = rc.id

left join FINE_DEP_ROLE rd on

rm.ROLETYPE = 1

and rm.ROLEID = rd.id

left join FINE_DEPARTMENT d on

d.id = rd.DEPARTMENTID

left join FINE_POST p on

p.id = rd.POSTID

where

1 = 1

) A

join (

select

F.roleid,

f.AUTHORITYTYPE,

case

when f.AUTHORITYTYPE = '1' then '查看权限'

when f.AUTHORITYTYPE = '2' then '授权权限'

when f.AUTHORITYTYPE = '3' then '编辑权限'

when f.AUTHORITYTYPE = '4' then '数据连接管理权限'

when f.AUTHORITYTYPE = '101' then 'FineReport 模板认证权限'

when f.AUTHORITYTYPE = '102' then 'FineReport 模板查看权限'

when f.AUTHORITYTYPE = '103' then 'FineReport 模板填报权限'

when f.AUTHORITYTYPE = '201' then '业务包使用权限'

when f.AUTHORITYTYPE = '202' then '业务包管理权限'

when f.AUTHORITYTYPE = '203' then 'BI报表导出权限'

when f.AUTHORITYTYPE = '204' then 'BI仪表板分享权限'

when f.AUTHORITYTYPE = '205' then 'BI模板认证权限'

when f.AUTHORITYTYPE = '206' then 'BI模板查看权限'

when f.AUTHORITYTYPE = '207' then 'BI模板导出权限'

when f.AUTHORITYTYPE = '208' then 'BI仪表板分享角色控制权限'

when f.AUTHORITYTYPE = '209' then 'BI仪表板分享功能权限'

when f.AUTHORITYTYPE = '210' then 'BI仪表板公共链接功能权限'

end 权限类型,

case

when f.ROLETYPE = '1' then '部门'

when f.ROLETYPE = '2' then '角色'

when f.ROLETYPE = '3' then '用户'

when f.ROLETYPE = '4' then '职务'

end 类型,

a.ID,

a.DISPLAYNAME 名称,

      a.path menu_url,

a.SORTINDEX,

a.PARENTID PARENTID0,

b.PARENTID PARENTID1,

c.PARENTID PARENTID2,

d.PARENTID PARENTID3,

e.PARENTID PARENTID4,

case

when a.EXPANDTYPE = '1' then '平台管理系统节点'

when a.EXPANDTYPE = '2' then '首页'

when a.EXPANDTYPE = '3' then '目录'

when a.EXPANDTYPE = '5' then '链接'

when a.EXPANDTYPE = '6' then '文件'

when a.EXPANDTYPE = '101' then '上报流程'

when a.EXPANDTYPE = '102' then ' FineReport报表'

when a.EXPANDTYPE = '201' then ' BI报表'

end 权限目录类型,

case

when a.DEVICETYPE = '0' then '未勾选 '

when a.DEVICETYPE = '1' then 'PC '

when a.DEVICETYPE = '2' then '平板 '

when a.DEVICETYPE = '3' then 'PC、平板 '

when a.DEVICETYPE = '4' then '手机 '

when a.DEVICETYPE = '5' then 'PC、手机 '

when a.DEVICETYPE = '6' then '平板、手机 '

when a.DEVICETYPE = '7' then 'PC 、平板、手机 '

end 适用平台,

a.SORTINDEX 排序顺序

from

FINE_AUTHORITY_OBJECT a

left join FINE_AUTHORITY_OBJECT b on

a.PARENTID = b.id

left join FINE_AUTHORITY_OBJECT c on

b.PARENTID = c.id

left join FINE_AUTHORITY_OBJECT d on

c.PARENTID = d.id

left join FINE_AUTHORITY_OBJECT e on

d.PARENTID = e.id

join FINE_AUTHORITY f on

f.AUTHORITY = 2

and (a.id = f.AUTHORITYENTITYID

or a.PARENTID = f.AUTHORITYENTITYID

or b.PARENTID = f.AUTHORITYENTITYID

or c.PARENTID = f.AUTHORITYENTITYID

or d.PARENTID = f.AUTHORITYENTITYID

or e.PARENTID = f.AUTHORITYENTITYID)

order by

a.PARENTID,

a.SORTINDEX) B on

A.用户ID = B.roleid

or A.角色ID = B.roleid

or A.部门ID = B.roleid

where

not exists (

select

1

from

FINE_AUTHORITY f1

where

f1.AUTHORITY = 1

and (B.id = f1.AUTHORITYENTITYID

or B.PARENTID0 = f1.AUTHORITYENTITYID

or B.PARENTID1 = f1.AUTHORITYENTITYID

or B.PARENTID2 = f1.AUTHORITYENTITYID

or B.PARENTID3 = f1.AUTHORITYENTITYID

or B.PARENTID4 = f1.AUTHORITYENTITYID)

and A.用户ID = f1.roleid

and B.AUTHORITYTYPE = f1.AUTHORITYTYPE)

用这个sql 有些问题,在image.png

人员管理界面和目录权限界面都已经取消了该菜单权限,但是查询的时候还是关联出来了。一时没找到关联关系。又遇到这种问题的小伙伴吗?

在这个sql 124行的位置 改成了 

or (a.PARENTID = f.AUTHORITYENTITYID and  a.parentId !='decision-directory-root')

  or (b.PARENTID = f.AUTHORITYENTITYID and  b.parentId !='decision-directory-root')

  or (c.PARENTID = f.AUTHORITYENTITYID  and  c.parentId !='decision-directory-root')

  or (d.PARENTID = f.AUTHORITYENTITYID   and  d.parentId !='decision-directory-root')

  or (e.PARENTID = f.AUTHORITYENTITYID  and  e.parentId !='decision-directory-root')

就好了 但是不知道为什么。。。。

FineReport 重庆一棵草 发布于 2025-2-18 14:26 (编辑于 2025-2-18 14:58)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2025-2-18 14:32

暂时没有遇见,建议仔细阅读文档,实在找不到只能问技术支持

FineDB 表结构

  • 2关注人数
  • 26浏览人数
  • 最后回答于:2025-2-18 14:58
    请选择关闭问题的原因
    确定 取消
    返回顶部