统一权限基座 + 门店域独立策略 + 多主体多上下文授权
版本:V1.0
适用范围:升鲜宝供应链管理系统 / 门店 POS / 客户域 / 会员域 / B2B 客户商城 / OMS 订单域
输出日期:2021-06-29
文档信息
| 项目 | 内容 |
|---|---|
| 文档名称 | 升鲜宝升级后权限管理系统设计思路及整体方案 |
| 设计目标 | 形成统一、可扩展、可审计、可灰度发布的企业级权限治理平台 |
| 核心架构 | 统一权限基座 + 门店域独立策略 |
| 核心能力 | 模块权限、按钮权限、数据权限、字段权限、二次授权、设备绑定、权限快照、审计诊断、灰度发布 |
| 适用系统 | 供应链总部后台、门店后台、POS 前台、客户订货、会员中心、OMS 订单、数据 BI |
目录
-
总体设计定位
-
核心架构:方案 C
-
核心权限原则
-
用户与组织、角色关系设计
-
主体模型设计
-
领域边界设计
-
菜单体系设计
-
总部权限中心功能结构
-
模块权限与按钮权限设计
-
数据范围权限设计
-
字段级权限设计
-
门店 POS 权限设计
-
二次授权设计
-
设备绑定设计
-
权限快照与离线权限
-
权限审计与异常诊断
-
权限发布与灰度发布
-
数据库核心表设计
-
权限计算链路
-
开发落地建议
-
最终总结
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. 字段级权限设计
字段权限管理的不是"新增数据库字段",而是给系统中已有字段配置可见、可读、可写、脱敏、导出、打印、复制、筛选、排序、聚合权限。
| 功能菜单 | 职责 |
|---|---|
| 字段权限总览 | 查看字段总数、敏感字段、已配置规则、模板、访问频率、最近变更和高敏字段排行。 |
| 字段权限规则配置 | 新增/编辑字段规则,选择资源、字段、适用角色、上下文,并配置可见、可读、可写、导出、打印、脱敏等权限。 |
| 脱敏与导出权限配置 | 专门管理脱敏规则、导出规则、打印规则、复制限制、审批要求和风险监控。 |
| 字段权限模板 | 按角色和业务域沉淀字段规则组合,例如店长模板、收银员模板、客户管理员模板、财务模板。 |
-
同步资源字段:从数据库表结构、实体类或接口 DTO 中把字段同步到字段库。
-
新增字段规则:为已有字段配置可见、可读、可写、导出、打印、脱敏规则。
-
应用字段模板:把一组字段规则批量应用到角色、用户、组织、门店或客户分组。
-
预览效果:按角色、用户、页面场景预览字段展示、编辑、导出、打印效果。
-
发布规则:通过审批和缓存刷新后,前后端同时生效。
字段权限必须后端生效:不可见字段接口不返回;脱敏字段返回脱敏值;不可写字段提交时报错;不可导出字段在导出文件中移除;不可打印字段在打印模板中被过滤。
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. 权限计算链路
-
用户登录,识别 subject_type + subject_id。
-
获取当前上下文 context_type + context_id。
-
校验用户是否属于该上下文。
-
加载当前上下文有效角色。
-
合并模块权限和按钮权限。
-
注入数据范围查询条件。
-
应用字段权限,控制返回字段、脱敏、写入和导出打印。
-
校验设备绑定和业务状态。
-
高风险操作触发二次授权。
-
写入权限审计日志。
-
返回前端可见菜单、按钮、字段和数据。
最终权限 = 主体身份 + 当前上下文 + 角色权限 + 资源动作权限 + 数据范围权限 + 字段权限 + 设备绑定 + 二次授权 + 系统参数 + 发布版本
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助手,都可以复用同一套权限基座,不需要每个业务模块重复建设权限系统。