Files
loan-pricing/doc/implementation-report-2026-05-12-workflow-list-role-data-scope.md

3.0 KiB
Raw Blame History

流程列表角色数据权限实施记录

修改日期

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.xmlcreateBy 查询调整为 SUBSTRING_INDEX(lpw.create_by, '-', -1) LIKE ...,即只按柜员号模糊匹配。
  • 补充 LoanPricingWorkflowServiceImplTestLoanPricingWorkflowMapperXmlTest,覆盖管理员、业务管理员、客户经理、越权创建者查询参数和 XML 条件。

验证记录

  • 单元测试通过:
mvn -pl ruoyi-loan-pricing -am -Dtest=LoanPricingWorkflowServiceImplTest,LoanPricingWorkflowMapperXmlTest -Dsurefire.failIfNoSpecifiedTests=false test
  • 后端打包通过:
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_001create_by = 测试客户经理-8920001
  • 验证结束后已删除该临时数据,回查剩余数量为 0。