58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
# 流程列表角色数据权限实施记录
|
||
|
||
## 修改日期
|
||
|
||
2026-05-12
|
||
|
||
## 需求范围
|
||
|
||
- 仅控制 `GET /loanPricing/workflow/list` 流程列表接口。
|
||
- 超级管理员 `user_id=1`、启用角色名为“管理员”或角色标识为 `headAdmin` 的用户可查看全部流程。
|
||
- 非管理员用户只能查看 `loan_pricing_workflow.create_by` 精确等于当前登录人 `昵称-柜员号` 的流程。
|
||
- 列表页“创建者”查询参数继续保留,但只按 `create_by` 中的柜员号部分进行模糊匹配。
|
||
|
||
## 修改内容
|
||
|
||
- `LoanPricingWorkflow` 增加非表字段 `dataScopeCreateBy`,专用于后端内部数据权限精确过滤。
|
||
- `LoanPricingWorkflowServiceImpl.selectLoanPricingPage` 增加流程列表数据权限裁剪:
|
||
- 管理员不写入 `dataScopeCreateBy`。
|
||
- 非管理员写入 `dataScopeCreateBy = nickName + "-" + username`。
|
||
- 前端传入 `createBy` 时仍保留原查询参数,但不能扩大非管理员可见范围。
|
||
- `LoanPricingWorkflowMapper.xml` 增加 `lpw.create_by = #{query.dataScopeCreateBy}` 精确权限条件。
|
||
- `LoanPricingWorkflowMapper.xml` 将 `createBy` 查询调整为 `SUBSTRING_INDEX(lpw.create_by, '-', -1) LIKE ...`,即只按柜员号模糊匹配。
|
||
- 补充 `LoanPricingWorkflowServiceImplTest` 和 `LoanPricingWorkflowMapperXmlTest`,覆盖管理员、业务管理员、客户经理、越权创建者查询参数和 XML 条件。
|
||
|
||
## 验证记录
|
||
|
||
- 单元测试通过:
|
||
|
||
```bash
|
||
mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest,LoanPricingWorkflowMapperXmlTest -Dsurefire.failIfNoSpecifiedTests=false test
|
||
```
|
||
|
||
- 后端打包通过:
|
||
|
||
```bash
|
||
mvn -pl ruoyi-admin -am clean package -DskipTests
|
||
```
|
||
|
||
- API 验证通过:
|
||
- `admin/admin123` 查询流程列表返回全量数据,包含测试行和 `若依-admin` 历史行。
|
||
- `8929999/123456` 业务管理员查询流程列表返回全量数据。
|
||
- `8920001/123456` 客户经理查询流程列表只返回本人创建的测试行。
|
||
- 客户经理按 `createBy=8920001` 查询可返回本人测试行。
|
||
- 客户经理按昵称 `createBy=测试客户经理` 查询返回 0 条。
|
||
- 客户经理按其他柜员号 `createBy=admin` 查询返回 0 条。
|
||
|
||
- browser-use 真实页面验证通过:
|
||
- 管理员登录真实流程列表页,页面显示 `共 40 条`,可见本人测试行和 `若依-admin` 历史行。
|
||
- 客户经理登录真实流程列表页,页面只显示本人创建的测试行。
|
||
- 客户经理在“创建者”输入 `admin` 后页面显示暂无数据。
|
||
- 客户经理在“创建者”输入 `8920001` 后页面重新显示本人测试行。
|
||
|
||
## 验证数据与清理
|
||
|
||
- 因当前开发库创建流程接口依赖的模型输出表缺少 `coupon_rate` 字段,无法通过页面新增生成验证流程。
|
||
- 本次验证使用一条临时 SQL 测试数据:`serial_num = ROLE_SCOPE_20260512_001`,`create_by = 测试客户经理-8920001`。
|
||
- 验证结束后已删除该临时数据,回查剩余数量为 0。
|