From f96cc6cda17fac66e35286053f812ab74a201e79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=84=E9=94=90=E6=B3=A2?= <10549902+zhuangruibo@user.noreply.gitee.com> Date: Sat, 16 May 2026 18:57:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E8=BF=87?= =?UTF-8?q?=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...执法码数据权限过滤使用说明.md | 26 ++++++++++++------- .../013-计划任务表设计.sql | 1 + 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/doc/执法码数据权限过滤使用说明.md b/doc/执法码数据权限过滤使用说明.md index c0e832fc..ba8a7046 100644 --- a/doc/执法码数据权限过滤使用说明.md +++ b/doc/执法码数据权限过滤使用说明.md @@ -1,11 +1,17 @@ # 执法码数据权限过滤使用说明 -## 1. 虚拟单位树(efcode_virtual_unit)数据模型 +## 1. 虚拟单位树(efcode_virtual_unit)数据模型,将一期通过程序生成的执法单位树,改变成为实际存储在数据库中的关系,形成实际上的上下级关系 ![执法单位设置.png](%E6%89%A7%E6%B3%95%E5%8D%95%E4%BD%8D%E8%AE%BE%E7%BD%AE.png)![架构图](./images/architecture.png![执法单位设置.png](%E6%89%A7%E6%B3%95%E5%8D%95%E4%BD%8D%E8%AE%BE%E7%BD%AE.png)) 数据权限过滤的核心依赖是 **虚拟单位树**(表 `efcode_virtual_unit`),它构建了一棵与实际部门关联的逻辑组织树,用于控制数据可见范围。 +* 所有的业务相关的表中都加上3个字段 + * bureau_dept_id:执法单位ID(当前用户所在的执法单位的id)=DataFilterUtil.getUserBureauDeptId + * dept_id:部门ID(当前用户所在的部门id)=DataFilterUtil.getUserDeptId + * organ_id:组织单位ID (当前用户所在的组织单位id)=DataFilterUtil.getUserOrganId + * 对应的名称作为可选项,自行决定加不加 + ### 1.1 表结构(EfcodeVirtualUnit / EfcodeVirtualUnitVo) | 字段 | 类型 | 说明 | @@ -204,20 +210,20 @@ public TableDataInfo directFilterPageList(TestEnfDemoBo bo, PageQ ### 5.1 权限判断方法 -| 方法签名 | 返回值 | 说明 | -|----------|--------|------| -| `isFullAccess()` | `boolean` | 判断当前用户是否全部放行(超管或 ViewAllDataRole) | -| `needFilter()` | `boolean` | 判断当前用户是否需要数据过滤(拥有 ViewFilterDataRole) | -| `hasNoAccess()` | `boolean` | 判断当前用户是否无权访问(既非放行也非过滤) | -| `getUserAccessibleDeptIds(includeStatistics, includeSearch)` | `List` | 获取当前用户可访问的 sys_dept_id 列表(null=全放行,空=无权) | -| `getFilteredDeptIdsForCurrentUser(includeStatistics, includeSearch)` | `List` | 获取 ViewFilterDataRole 用户在虚拟单位树中对应节点及子孙的 sys_dept_id | +| 方法签名 | 返回值 | 说明 | +|---------------------------------------------------------------------|--------|------| +| `isFullAccess()` | `boolean` | 判断当前用户是否全部放行(超管或 ViewAllDataRole) | +| `needFilter()` | `boolean` | 判断当前用户是否需要数据过滤(拥有 ViewFilterDataRole) | +| `hasNoAccess()` | `boolean` | 判断当前用户是否无权访问(既非放行也非过滤) | +| `getUserAccessibleDeptIds` | `List` | 获取当前用户可访问的 sys_dept_id 列表(null=全放行,空=无权) | +| `getFilteredDeptIdsForCurrentUser` | `List` | 获取 ViewFilterDataRole 用户在虚拟单位树中对应节点及子孙的 sys_dept_id | ### 5.2 子孙节点查询方法 | 方法签名 | 返回值 | 说明 | |----------|--------|------| -| `getDescendantDeptIds(virId, includeSearch, includeStatistics, includeBusiness)` | `List` | 获取指定 virId 下所有子孙节点的 sys_dept_id(已去重) | -| `getDescendantVirIds(virId, includeSearch, includeStatistics, includeBusiness)` | `List` | 获取指定 virId 下所有子孙节点的 vir_id(已去重) | +| `getDescendantDeptIds` | `List` | 获取指定 virId 下所有子孙节点的 sys_dept_id(已去重) | +| `getDescendantVirIds` | `List` | 获取指定 virId 下所有子孙节点的 vir_id(已去重) | 参数说明: - `virId`:起始节点的虚拟单位ID(如 `DataFilterUtil.SHENZHEN_AREAS`) diff --git a/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql b/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql index 19de79eb..8a0fa8c0 100644 --- a/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql +++ b/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql @@ -14,6 +14,7 @@ CREATE TABLE `efcode_cp_plan` `is_union` tinyint NOT NULL DEFAULT 1 COMMENT '是否联合执法 1=是 0=否', `union_dept` varchar(500) DEFAULT NULL COMMENT '联合执法单位(多个逗号分隔)', `reserve_status` tinyint NOT NULL DEFAULT 0 COMMENT '预约状态 0=待预约 1=预约中 2=预约完成 3=停止预约', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门', `update_by` varchar(64) DEFAULT '' COMMENT '更新者',