升鲜宝升级后权限管理系统设计思路及整体方案(一)---升鲜宝供应链管理系统源代码服务

统一权限基座 + 门店域独立策略 + 多主体多上下文授权

版本:V1.0
适用范围:升鲜宝供应链管理系统 / 门店 POS / 客户域 / 会员域 / B2B 客户商城 / OMS 订单域
输出日期:2021-06-29

文档信息

项目 内容
文档名称 升鲜宝升级后权限管理系统设计思路及整体方案
设计目标 形成统一、可扩展、可审计、可灰度发布的企业级权限治理平台
核心架构 统一权限基座 + 门店域独立策略
核心能力 模块权限、按钮权限、数据权限、字段权限、二次授权、设备绑定、权限快照、审计诊断、灰度发布
适用系统 供应链总部后台、门店后台、POS 前台、客户订货、会员中心、OMS 订单、数据 BI

目录

  1. 总体设计定位

  2. 核心架构:方案 C

  3. 核心权限原则

  4. 用户与组织、角色关系设计

  5. 主体模型设计

  6. 领域边界设计

  7. 菜单体系设计

  8. 总部权限中心功能结构

  9. 模块权限与按钮权限设计

  10. 数据范围权限设计

  11. 字段级权限设计

  12. 门店 POS 权限设计

  13. 二次授权设计

  14. 设备绑定设计

  15. 权限快照与离线权限

  16. 权限审计与异常诊断

  17. 权限发布与灰度发布

  18. 数据库核心表设计

  19. 权限计算链路

  20. 开发落地建议

  21. 最终总结

1. 总体设计定位

升鲜宝升级后的权限系统不再是传统的"用户 → 角色 → 菜单"模式,而是面向供应链、门店、客户、会员、订单、财务、报表等业务域的企业级权限治理平台。

新系统需要回答的不只是某个按钮能不能点,而是需要完整判断:谁在什么组织、什么门店、什么仓库、什么客户上下文下,能看哪些菜单、点哪些按钮、查哪些数据、看哪些字段、导出打印哪些内容,以及高风险操作是否需要审批。

建设目标 说明
权限可配置 角色、资源、动作、数据范围、字段规则、设备绑定、二次授权均可配置。
数据可隔离 组织、门店、仓库、客户、供应商、终端、班次等维度均可限制数据范围。
字段可保护 手机号、成本价、毛利、欠款、储值余额、支付流水号等敏感字段按角色和上下文控制。
操作可追踪 访问、拒绝、字段读取、导出、打印、授权、审批、发布、回滚均进入审计。
高风险可审批 退款、改价、开钱箱、会员余额调整、敏感导出等触发二次授权。
总部统一管控 总部统一管权限基座、模板、敏感规则、审计与发布。
门店独立运行 门店可在授权范围内管理本店员工、收银员、终端、班次、离线权限。

2. 核心架构:方案 C

最终采用"方案 C:统一权限基座 + 门店域独立策略"。这不是两套权限系统,而是一套权限基座下的两个管理层级。

层级 职责
总部统一权限基座 管理权限模型、组织、用户、角色、资源、动作、菜单、按钮、数据范围、字段权限、审计、发布、缓存和参数。
门店域独立策略 在总部授权范围内管理本店员工、本店收银员、本店终端、本店班次、本店 POS 权限快照和二次授权记录。
POS 前台运行时 根据统一权限基座生成的快照执行菜单、按钮、数据、字段、二次授权和设备绑定校验。

总部:管规则、模板、敏感权限、跨组织/跨门店权限、审计发布
门店:管本店员工、本店终端、本店班次、本店收银权限、本店二次授权
POS:使用权限快照 + 离线限制 + 二次授权规则保障前台安全

3. 核心权限原则

  • 用户是谁,由 sys_user 管;
  • 用户属于哪里,由 sys_user_org 管;
  • 用户在什么上下文拥有什么角色,由 sys_subject_role 管;
  • 角色能干什么,由资源权限管;
  • 角色能看哪些数据,由数据范围管;
  • 角色能看哪些字段,由字段权限管;
  • 高风险动作是否能执行,由二次授权规则管;
  • 用户能在哪些设备上登录,由设备绑定管;
  • 所有访问、变更、拒绝、发布、回滚,由审计日志管。

该原则解决旧权限系统中"一个用户只能属于一个部门、一个用户只能有一个角色、角色和组织上下文脱节、字段权限不知道如何新增与生效、权限变更不可回滚"等问题。

4. 用户与组织、角色关系设计

新版权限系统必须支持一个用户属于多个组织、拥有多个角色,并且同一个用户在不同组织、门店、仓库、客户、供应商上下文下拥有不同角色和权限。

能力 说明 关键表
多组织 一个用户可同时属于总部、大区、分公司、门店、仓库等多个组织或业务上下文。 sys_user_org
多角色 同一用户可拥有多个角色,角色必须带上下文才生效。 sys_subject_role
上下文切换 用户切换当前组织、门店、仓库或客户上下文时,菜单、按钮、数据、字段权限重新计算。 sys_subject_role / sys_permission_snapshot
权限缓存隔离 缓存 Key 必须包含 subject_type、subject_id、context_type、context_id 和权限版本。 sys_permission_cache_version

permission:{subject_type}:{subject_id}:{context_type}:{context_id}:{permission_version}
示例:permission:SYS_USER:1001:ORG:2001:v23
示例:permission:POS_CASHIER:501:STORE:10001:v12

5. 主体模型设计

主体类型 来源表 说明
SYS_USER sys_user 总部后台用户、供应链管理后台用户。
POS_STORE_ACCOUNT pos_store_account 门店后台账号、店长账号、门店运营账号。
POS_CASHIER pos_cashier 收银员、值班经理、POS 前台操作员。
CUS_CUSTOMER_ACCOUNT cus_customer_account B2B 客户账号、客户管理员、客户下单员。
MEM_MEMBER mem_member 会员本人,线上线下一体会员身份。
SUPPLIER_ACCOUNT 供应商账号表,可扩展 供应商协同账号、供应商报价/结算/发货账号。

统一主体模型的关键是:所有授权关系尽量进入 sys_subject_role,而不是散落到不同业务表中。

6. 领域边界设计

权限系统升级与业务域重构需要同步推进,关键是把门店、客户、会员、B2B 客户商城、OMS 订单、POS 收银等领域拆清楚。

领域前缀 领域含义 权限关注点
sys_ 组织、用户、权限、审计、配置 统一权限基座、组织架构、角色资源、审计发布。
pos_ 门店 POS 收银域 门店账号、收银员、终端、班次、POS 权限快照、离线权限。
cus_ 客户域 客户档案、客户账号、客户价格、账期、合同、欠款。
mem_ 会员域 会员身份、手机号、储值、积分、等级、权益、地址。
b2b_ B2B 客户商城入口域 客户订货入口、商品可见范围、购物车、提交入口。
oms_ 正式订单域 客户订单、B2B 订单、门店要货单、订单审核、配送、对账。
pay_ 支付清分域 支付流水、交易号、清分、商户号、手续费。
rpt_ 报表统计域 报表查看、成本、毛利、导出、BI 看板。

mall_shop.trade_type_id = 0 → pos_store 门店
mall_shop.trade_type_id = 1 → cus_customer 客户

客户 != 门店 != 会员
B2B 客户商城只做订货入口,正式订单走 oms_order / oms_order_item
门店向公司要货单也走 oms_order / oms_order_item
POS 前台零售订单单独走 pos_order / pos_order_item

7. 菜单体系设计

一级菜单保持升鲜宝真实业务模块,权限核心功能放在"系统 → 权限中心",门店自管权限放在"门店 → 门店权限"。

层级 定义 是否可打开页面
一级菜单 工作台、系统、商品、B2B商城、会员、客户、门店、订单、采购、库房、物流、财务、AI助手、数据BI、应用。 通常不直接打开复杂业务页
二级菜单 功能分组,例如角色与资源权限、数据范围权限、字段级权限、门店 POS 权限、审计与系统设置。 建议作为分组,不直接打开页面
三级菜单 真正可打开的功能页面,例如用户管理、角色管理、字段权限规则配置、数据范围授权。
按钮权限 新增、编辑、删除、导出、发布、回滚、审批等页面内动作。 不放菜单树,挂在三级菜单页面内部

8. 总部权限中心功能结构

二级菜单 三级功能菜单
权限工作台 权限总览、授权预警、高风险监控、最近变更
组织与用户权限 组织架构管理、岗位管理、用户管理、用户组织关系、账号安全策略
角色与资源权限 角色管理、角色授权、资源权限管理、菜单管理、菜单按钮权限、API权限管理、权限模板管理
数据范围权限 数据范围策略、数据范围授权、自定义组合范围
字段级权限 字段权限总览、字段权限规则配置、脱敏与导出权限配置、字段权限模板
门店 POS 权限 门店权限模板、门店账号授权、收银员授权、终端权限配置、班次权限配置、POS权限快照、离线权限配置
业务域权限 客户域权限、会员域权限、B2B客户商城权限、OMS订单权限、支付财务权限、报表BI权限
二次授权与设备 二次授权规则、二次授权记录、高风险操作规则、设备管理、主体设备绑定、设备登录日志
审计与系统设置 权限审计日志、高风险授权日志、字段访问日志、数据权限命中日志、权限异常诊断、权限变更审批、权限快照、权限发布中心、权限发布差异、权限灰度发布、缓存刷新管理、多语言权限资源、权限参数配置

9. 模块权限与按钮权限设计

模块权限控制用户能不能进入某个页面,按钮权限控制用户在页面内能不能执行某个动作。按钮不单独出现在菜单树中,而是挂到三级菜单页面里。

  • READ 查看
  • DETAIL 详情
  • CREATE 新增
  • UPDATE 修改
  • DELETE 删除
  • ENABLE 启用
  • DISABLE 停用
  • EXPORT 导出
  • IMPORT 导入
  • COPY 复制
  • PUBLISH 发布
  • ROLLBACK 回滚
  • APPROVE 审批
  • REJECT 驳回
  • CONFIG 配置
  • CONFIG_SCOPE 配置数据范围
  • CONFIG_FIELD 配置字段权限
  • BIND_DEVICE 绑定设备
  • SECOND_AUTH 二次授权
  • VIEW_LOG 查看日志
  • PREVIEW 预览

权限值格式:RESOURCE_CODE:ACTION_CODE
示例:SYS_USER:CREATE
示例:SYS_ROLE:CONFIG_SCOPE
示例:POS_CASHIER_PERMISSION:BIND_DEVICE
示例:CUS_CUSTOMER_PRICE:EXPORT
示例:OMS_ORDER:APPROVE

10. 数据范围权限设计

数据范围权限用于控制用户能看到哪些组织、门店、仓库、客户、供应商、终端、班次的数据。数据范围最终由后端自动注入查询条件,不能只依赖前端过滤。

功能菜单 核心作用 典型按钮
数据范围策略 定义可复用的数据范围策略,如全部、本组织、本组织及下级、指定门店、指定仓库、本人当前班次、自定义组合。 新增策略、编辑、复制、启用、停用、规则配置、发布、导入、导出、刷新
数据范围授权 把数据范围策略授权给用户、角色、组织、门店、仓库、客户、供应商、终端或班次。 新增授权、批量授权、复制授权、失效处理、范围配置、提交审批、导出、刷新缓存
自定义组合范围 配置复杂 AND/OR/NOT 条件,如组织范围 + 门店状态 + 客户等级 + 时间范围。 新增组合、添加条件、添加条件组、规则校验、SQL预览、命中预览、保存草稿、保存并发布

示例条件:
华东大区 AND 门店状态 = 启用 AND 最近90天有交易 AND 客户等级 IN (A, B) AND 排除夜班班次

11. 字段级权限设计

字段权限管理的不是"新增数据库字段",而是给系统中已有字段配置可见、可读、可写、脱敏、导出、打印、复制、筛选、排序、聚合权限。

功能菜单 职责
字段权限总览 查看字段总数、敏感字段、已配置规则、模板、访问频率、最近变更和高敏字段排行。
字段权限规则配置 新增/编辑字段规则,选择资源、字段、适用角色、上下文,并配置可见、可读、可写、导出、打印、脱敏等权限。
脱敏与导出权限配置 专门管理脱敏规则、导出规则、打印规则、复制限制、审批要求和风险监控。
字段权限模板 按角色和业务域沉淀字段规则组合,例如店长模板、收银员模板、客户管理员模板、财务模板。
  1. 同步资源字段:从数据库表结构、实体类或接口 DTO 中把字段同步到字段库。

  2. 新增字段规则:为已有字段配置可见、可读、可写、导出、打印、脱敏规则。

  3. 应用字段模板:把一组字段规则批量应用到角色、用户、组织、门店或客户分组。

  4. 预览效果:按角色、用户、页面场景预览字段展示、编辑、导出、打印效果。

  5. 发布规则:通过审批和缓存刷新后,前后端同时生效。

字段权限必须后端生效:不可见字段接口不返回;脱敏字段返回脱敏值;不可写字段提交时报错;不可导出字段在导出文件中移除;不可打印字段在打印模板中被过滤。

12. 门店 POS 权限设计

总部配置 门店自管
门店权限模板 本店员工授权
门店账号授权 收银员授权
收银员授权 班长权限配置
终端权限配置 终端绑定
班次权限配置 班次权限
POS权限快照 本店权限快照
离线权限配置 本店二次授权记录

收银员默认权限边界:当前门店 + 当前终端 + 本人当前班次。收银员默认禁止跨店数据、全店报表、他人班次、成本价、毛利、库存金额、银行清分、完整会员手机号、完整支付流水号和敏感数据导出。

13. 二次授权设计

二次授权用于控制退款、作废订单、手工改价、超限折扣、无销售开钱箱、会员储值调整、积分调整、敏感数据导出、批量删除、权限提升等高风险操作。

配置项 说明
规则名称 / 编码 唯一识别二次授权规则。
业务域 / 操作类型 例如 POS 退款、订单作废、价格调整、数据导出。
风险等级 低、中、高、极高。
触发条件 例如退款金额 > 5000 元、折扣率 > 10%、导出条数 > 1000。
适用角色 / 组织 哪些角色、组织、门店或设备范围生效。
审批流程 审批节点、审批人、审批时限、超时策略。
审计策略 记录申请、审批、拒绝、执行和回放日志。

14. 设备绑定设计

设备绑定主要用于 POS、PDA、电子秤、打印机、钱箱、自助终端等场景,防止账号被非授权设备使用。

  • 账号是否允许在该设备登录;
  • 收银员是否绑定指定终端;
  • 设备是否属于当前门店;
  • 设备是否在线或异常;
  • 设备是否允许离线使用权限快照;
  • 钱箱是否只允许授权角色打开。

15. 权限快照与离线权限

POS 端需要支持离线运行,因此需要设计权限快照、离线权限配置、终端权限缓存和权限缓存版本。

快照内容 用途
菜单权限、按钮权限 离线时控制 POS 可进入模块和可执行动作。
数据范围 离线时限制当前门店、终端、班次、本人数据。
字段权限 离线时仍隐藏成本、毛利、完整手机号、支付流水号等敏感字段。
二次授权规则 离线场景下限制退款、改价、开钱箱等风险操作。
设备绑定 离线时确认当前终端是否允许该账号使用。
版本信息 用于差异比对、回滚和审计还原。

16. 权限审计与异常诊断

审计系统需要覆盖权限访问、权限拒绝、字段访问、数据范围命中、敏感字段脱敏、导出打印、二次授权、权限变更、权限发布、设备登录和异常诊断。

功能菜单 说明
权限审计日志 记录权限访问、授权变更、拒绝、发布和审批事件。
高风险授权日志 记录退款、改价、开钱箱、导出敏感数据等高风险操作。
字段访问日志 记录敏感字段读取、脱敏、导出、打印、拒绝等行为。
数据权限命中日志 记录数据范围策略命中情况和拼接条件。
权限异常诊断 发现角色冲突、重复授权、权限过大、字段规则冲突、缓存不一致等问题。
权限变更审批 对权限新增、修改、停用、发布进行审批。

17. 权限发布与灰度发布

权限系统不能"配置即全量生效",必须支持草稿、审批、差异分析、发布、灰度、回滚。

发布模式 说明
OFF 关闭新权限,仅保留旧逻辑。
AUDIT 审计模式,只记录权限决策,不拦截业务。
ENFORCE 强制执行模式,权限判断失败直接阻断操作。

保存草稿 → 规则校验 → 命中预览 → 差异分析 → 提交审批 → 发布到测试环境 → 灰度发布 → 全量发布 → 失败回滚

灰度发布可按组织、门店、角色、用户、设备、业务域逐步放量,降低权限调整带来的业务风险。

18. 数据库核心表设计

分组 核心表
用户与组织 sys_user、sys_org、sys_user_org、sys_post
主体与角色 sys_role、sys_subject_role
资源与动作 sys_permission_resource、sys_permission_action、sys_role_resource_permission、sys_menu、sys_role_menu
数据范围 sys_data_scope_policy、sys_data_scope_auth、sys_resource_scope_mapping、sys_scope_subject_binding
字段权限 sys_permission_field、sys_field_permission、sys_permission_template、sys_permission_template_field
二次授权 sys_second_auth_rule、sys_second_auth_record
设备绑定 sys_access_device、sys_subject_device_binding、sys_device_session_log
快照/缓存/发布/审计 sys_permission_snapshot、sys_permission_audit_log、sys_permission_change_log、sys_permission_cache_version、sys_permission_config、sys_permission_i18n

19. 权限计算链路

  1. 用户登录,识别 subject_type + subject_id。

  2. 获取当前上下文 context_type + context_id。

  3. 校验用户是否属于该上下文。

  4. 加载当前上下文有效角色。

  5. 合并模块权限和按钮权限。

  6. 注入数据范围查询条件。

  7. 应用字段权限,控制返回字段、脱敏、写入和导出打印。

  8. 校验设备绑定和业务状态。

  9. 高风险操作触发二次授权。

  10. 写入权限审计日志。

  11. 返回前端可见菜单、按钮、字段和数据。

最终权限 = 主体身份 + 当前上下文 + 角色权限 + 资源动作权限 + 数据范围权限 + 字段权限 + 设备绑定 + 二次授权 + 系统参数 + 发布版本

20. 开发落地建议

批次 建设内容
第一批:统一权限基座 sys_org、sys_user、sys_user_org、sys_role、sys_subject_role、资源动作、菜单按钮、角色授权、权限工作台。
第二批:数据范围与字段权限 数据范围策略、数据范围授权、自定义组合范围、字段权限总览、字段权限规则配置、脱敏与导出、字段模板。
第三批:门店 POS 权限 门店权限模板、门店账号授权、收银员授权、终端权限、班次权限、POS权限快照、离线权限、设备绑定。
第四批:业务域权限 客户域权限、会员域权限、B2B客户商城权限、OMS订单权限、支付财务权限、报表BI权限。
第五批:高风险、审计、发布 二次授权规则、二次授权记录、权限审计、异常诊断、变更审批、发布中心、差异、灰度、缓存刷新。

21. 最终总结

升鲜宝升级后的权限系统,本质上是从"菜单角色权限"升级为"企业级权限治理平台"。它不仅解决菜单和按钮权限,还覆盖多组织、多门店、多仓库、客户、会员、订单、财务、报表、POS 收银、B2B 客户商城等全业务链路的安全控制。

最终推荐架构为:

统一权限基座

  • 门店域独立策略
  • 多主体多上下文授权
  • 模块权限
  • 按钮权限
  • 数据范围权限
  • 字段级权限
  • 二次授权
  • 设备绑定
  • 权限快照
  • 审计诊断
  • 灰度发布

这样设计后,升鲜宝后续无论扩展多组织、多门店、多仓库、B2B客户商城、会员线上线下一体、OMS统一订单、POS收银、财务清分、数据BI和AI助手,都可以复用同一套权限基座,不需要每个业务模块重复建设权限系统。