Files
BMS/bms-back/AR_ROW_SCOPE.md
T

2.8 KiB

应收账单行级权限

规则独立于 @DataScope 和角色管理的 dataScope,现有菜单、按钮权限保持不变。

roleKey 数据范围
ORA_6041 / ORA_6163 销售员、商务专员:本人负责客户
ORA_6040 本部门人员负责客户,不含下级部门
ORA_6042 / ORA_6043 财务经理、应收财务:全部账单

超级管理员沿用系统判断。仅参与当前入口功能授权的有效角色合并范围;未知角色、空权限对象默认无数据。财务本期不使用账单 create_user_id。应付财务不参与应收账单权限规则。

归属链为 ar_bill.customer_id → ctr_customer.sales_user_id → sys_user.user_id / dept_id。销售员和商务专员均通过客户的 sales_user_id 与当前登录用户 ID 匹配本人客户。客户转交后,历史账单跟随当前归属变化。全量角色可见未关联销售、销售已删除、客户已删除的历史账单;受限角色不放行无有效归属的数据。业务员仅停用但未删除时,其部门经理仍可查看。

核心实现位于 bms-system/src/main/java/com/bms/ar/security 和 mapper/ar/ArBillScopeMapper.xml。内部权限对象作为独立 Mapper 参数传递,不绑定 HTTP 查询对象;后台生成和导出任务继续使用独立的内部读取方法。

接入范围包括列表、汇总、列表导出、详情/费用、日志、生成预览及提交、生成任务、导出任务及下载、客户账单入口,以及客户/收款页面的待核销账单、核销记录、核销和反核销。应收筛选及生成客户选项分别使用 /ar/bill/customer-options、/ar/bill/generate/customer-options。

用户编辑、调部门、停用、分配角色,以及角色编辑、停用、删除和授权关系调整,会在事务提交后让受影响的登录会话失效;相关用户需要重新登录。不改变角色配置本身。

本地验证

在 bms-back 下执行(PowerShell):

mvn -o -pl bms-admin -am -DskipTests compile

本次新增的行级权限测试用例及其辅助脚本已按要求删除。

在 bms-front 下执行 npm run build:prod 验证前端构建。

部署前核实

  • 本次没有新增数据库字段、权限配置表或迁移 SQL。
  • 目标环境 ctr_customer.sales_user_id 必须已经统一为系统用户 ID,不能仍是旧业务员工号。现有迁移文件位于 sql/customer+supplier/20261028_customer_sales_user_migration.sql,需要按原有流程确认执行状态,本次不自动执行。
  • 使用真实销售 A/B、经理、财务和商务专员账号检查数据范围与功能授权,特别是生产角色实际拥有的接口权限。
  • 上线前仍需在 MySQL 5.7 环境联调,并检查实际数据的执行计划。