# 流程列表支行管理员数据权限实施记录 ## 修改日期 2026-05-18 ## 需求范围 - 在 `loan_pricing_workflow` 新增 `dept_id`,保存新创建流程的创建人机构号。 - `GET /loanPricing/workflow/list` 增加支行管理员数据权限: - 超级管理员、角色名“管理员”或角色标识 `headAdmin` 查看全部流程。 - 角色名“支行管理员”或角色标识 `branchAdmin` 查看本人机构及下级机构创建的流程。 - 其他用户继续只查看本人 `create_by` 精确匹配的流程。 - 不回填历史流程数据,历史 `dept_id` 为空的数据不纳入支行管理员机构权限。 - 本次无前端代码改动。 ## 修改内容 - 新增 `sql/add_workflow_dept_id_20260518.sql`,为流程表增加 `dept_id` 字段和 `idx_dept_id` 索引。 - 同步更新流程表建表脚本中的 `dept_id` 字段和索引定义。 - `LoanPricingWorkflow` 增加表字段 `deptId` 和列表内部权限字段 `dataScopeDeptId`。 - `LoanPricingWorkflowServiceImpl.createLoanPricing` 在插入前写入当前登录人的 `deptId`。 - `LoanPricingWorkflowServiceImpl.selectLoanPricingPage` 增加支行管理员分支: - `headAdmin` 不加权限过滤。 - `branchAdmin` 写入当前登录人的 `dataScopeDeptId`。 - 客户经理继续写入 `dataScopeCreateBy`。 - `LoanPricingWorkflowMapper.xml` 增加基于 `lpw.dept_id` 与 `sys_dept.ancestors` 的本机构及下级机构过滤。 - 创建者查询参数仍按 `SUBSTRING_INDEX(lpw.create_by, '-', -1)` 只模糊匹配柜员号,并与数据权限条件取交集。 ## 验证记录 - 单元测试通过: ```bash mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest,LoanPricingWorkflowMapperXmlTest -Dsurefire.failIfNoSpecifiedTests=false test ``` - 后端打包通过: ```bash mvn -pl ruoyi-admin -am clean package -DskipTests ``` - 已在开发库执行: ```bash mysql ... loan-pricing < sql/add_workflow_dept_id_20260518.sql ``` - 数据库回查确认 `loan_pricing_workflow.dept_id` 和 `idx_dept_id` 已存在。 - API 验证通过: - `8929999/headAdmin` 查询临时流程返回 6 条,包含全部测试数据。 - `8920100/branchAdmin` 查询临时流程返回 4 条,仅包含本机构、本人和下级机构数据。 - `8920001/客户经理` 查询临时流程返回 1 条,仅包含本人创建数据。 - `8920100/branchAdmin` 使用其他支行创建者 `8920201` 作为查询条件时返回 0 条,创建者查询参数不能扩大数据权限。 - 真实创建接口验证通过: - `8920100/branchAdmin` 调用个人流程创建接口后,新流程落库 `dept_id=101`,`create_by=测试支行管理员-8920100`。 - browser-use 真实页面验证通过: - 支行管理员登录真实流程列表页,页面显示 `共 4 条`。 - 页面只显示 `BRANCH_SCOPE_20260518_CREATE`、`BRANCH_SCOPE_20260518_SELF`、`BRANCH_SCOPE_20260518_SAME`、`BRANCH_SCOPE_20260518_CHILD`。 - 页面未显示其他支行 `BRANCH_SCOPE_20260518_OTHER` 和普通客户经理本人 `BRANCH_SCOPE_20260518_MANAGER`。 ## 测试数据保留 - 按复测要求,本次验证保留测试用户和测试流程数据,不做清理。 - 保留临时用户: - `8920100`,昵称 `测试支行管理员`,角色 `branchAdmin`,机构 `101`。 - 保留流程数据: - `BRANCH_SCOPE_20260518_SELF`,机构 `101`,创建者 `测试支行管理员-8920100`。 - `BRANCH_SCOPE_20260518_SAME`,机构 `101`,创建者 `同支行客户经理-8920101`。 - `BRANCH_SCOPE_20260518_CHILD`,机构 `103`,创建者 `下级客户经理-8920103`。 - `BRANCH_SCOPE_20260518_OTHER`,机构 `102`,创建者 `其他支行客户经理-8920201`。 - `BRANCH_SCOPE_20260518_MANAGER`,机构 `100`,创建者 `测试客户经理-8920001`。 - `BRANCH_SCOPE_20260518_CREATE`,机构 `101`,创建者 `测试支行管理员-8920100`,由真实新增接口创建。