# 流程列表支行管理员数据权限实施记录

## 修改日期

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`，由真实新增接口创建。
