主题
后台 · 用户与权限管理(UMS)
覆盖页面:会员列表、会员等级、用户列表、角色列表、菜单列表、资源列表 路由前缀:
/ums设计目标:管好两类人(C端会员 + B端运营账号),权限清晰可控
一、会员列表(/ums/member)
1.1 页面定位
- 角色:C 端消费者资产管理,会员运营的基础
- 用户决策:哪些会员活跃?哪些需要召回?违规会员怎么处理?
- 核心指标:会员总量、活跃率、违规处理效率
1.2 页面结构
┌─ 筛选搜索 ──────────────────────────────────┐
│ 用户名[____] 手机号[____] 会员等级[▾] │
│ 启用状态[▾] 注册时间[起~止] [查询] [重置] │
└────────────────────────────────────────────┘
┌─ 会员列表 ──────────────────────────────────┐
│ │编号│头像│用户名│手机号│会员等级│积分│成长值│状态│注册时间│操作│
│ │ 1 │[○]│user1│138xx│黄金会员│1200│3000│[启用]│07-01│详情│
│ │ │ │ │ │ │ │ │ │ │禁用│
└────────────────────────────────────────────┘1.3 功能模块
列表展示
- 会员基础信息 + 等级 + 积分 + 成长值 + 状态
- 状态 Tag:启用(绿)/禁用(红)
行内操作
| 操作 | 说明 |
|---|---|
| 详情 | 弹窗展示会员完整信息(资料/积分/等级/最近登录/订单统计) |
| 禁用/启用 | 禁用后该会员无法登录下单,二次确认 |
会员详情弹窗
- 基本信息:头像/用户名/手机/性别/生日/注册时间
- 资产信息:积分/成长值/会员等级
- 行为信息:最近登录时间/登录次数
- 消费统计:订单数/消费总额(可选)
1.4 业务规则
| 规则 | 说明 |
|---|---|
| 禁用影响 | 禁用会员无法登录,已登录会话强制下线 |
| 不可删除 | 会员涉及订单数据,仅可禁用不可删除 |
| 等级自动 | 会员等级由成长值自动计算(见会员等级),不可手动改 |
1.5 验收标准
- AC-MM01:会员多条件筛选,详情弹窗完整展示
- AC-MM02:禁用会员后无法登录
- AC-MM03:会员等级与积分正确展示
二、会员等级(/ums/memberLevel)
2.1 页面定位
- 角色:会员成长体系的规则配置,决定"升级有什么好处"
- 用户决策:等级怎么划分?各等级给什么权益?
- 核心指标:高等级会员占比、升级驱动的复购
2.2 页面结构
┌─ 会员等级列表 ────────────────────────────────┐
│ [+ 新增等级] │
│ │编号│等级名称│所需成长值│折扣率│免邮│积分倍率│是否默认│操作│
│ │ 1 │普通会员│ 0 │1.0 │否 │ 1x │[默认]│编辑│
│ │ 2 │白银会员│ 1000 │0.98│否 │ 1.2x│ │编辑│
│ │ 3 │黄金会员│ 5000 │0.95│是 │ 1.5x│ │编辑│
│ │ 4 │钻石会员│ 20000 │0.9 │是 │ 2x │ │编辑│
└────────────────────────────────────────────┘2.3 等级模型
| 字段 | 规则 |
|---|---|
| 等级名称* | 如"黄金会员" |
| 所需成长值* | 达到该等级的成长值门槛,唯一且递增 |
| 折扣率 | 该等级购物折扣(1.0=无折扣,0.95=95折) |
| 免邮特权 | 是否享受免邮 |
| 积分倍率 | 购物获取积分的倍数 |
| 备注 | 等级权益说明(前台展示) |
2.4 业务规则
| 规则 | 说明 |
|---|---|
| 自动升降级 | 会员成长值变化后自动匹配对应等级(消费累积成长值) |
| 成长值门槛 | 各等级成长值必须唯一且递增 |
| 默认等级 | 注册时的初始等级(成长值门槛最低) |
| 删除约束 | 有会员挂靠的等级不可删除;默认等级不可删除 |
2.5 验收标准
- AC-ML01:会员等级增删改查,成长值门槛校验
- AC-ML02:会员成长值达到门槛自动升级
- AC-ML03:等级权益(折扣/免邮/积分倍率)在下单时生效
- AC-ML04:有会员的等级删除被拒绝
三、用户列表(/ums/admin)—— B 端运营账号
3.1 页面定位
- 角色:后台运营团队的账号管理,"谁能进后台"
- 核心指标:账号安全、权限准确率
3.2 页面结构
┌─ 筛选搜索 ──────────────────────────────────┐
│ 用户名[____] 状态[▾] [查询] [重置] │
└────────────────────────────────────────────┘
┌─ 用户列表 ──────────────────────────────────┐
│ [+ 新增用户] │
│ │编号│用户名│昵称│邮箱│角色│状态│最后登录│创建时间│操作│ │
│ │ 1 │admin│超管 │a@x │[超级管理员]│[启用]│07-15│01-01│编辑│
│ │ │ │ │ │ │ │ │ │分配角色│
│ │ │ │ │ │ │ │ │ │禁用│
└────────────────────────────────────────────┘3.3 功能模块
新增/编辑用户(弹窗)
| 字段 | 规则 |
|---|---|
| 用户名* | 唯一,4-20位 |
| 密码* | 新增时必填,编辑时可选(不填=不修改) |
| 昵称* | 展示名 |
| 邮箱 | 格式校验 |
| 状态 | 启用/禁用 |
分配角色(核心)
- 点击"分配角色"打开角色多选弹窗
- 一个用户可拥有多个角色,权限取并集
- 保存后立即生效
禁用/启用
- 禁用后该账号无法登录后台
- 超级管理员不可被禁用/删除(系统保护)
3.4 业务规则
| 规则 | 说明 |
|---|---|
| 密码存储 | 密码加密存储(BCrypt),不可明文查看 |
| 角色并集 | 多角色权限取并集 |
| 超管保护 | 内置超管账号不可删除/禁用 |
| 最后登录 | 记录最后登录时间,辅助安全审计 |
3.5 验收标准
- AC-UA01:用户增删改查,密码加密存储
- AC-UA02:分配角色后权限即时生效
- AC-UA03:禁用用户无法登录
- AC-UA04:超管账号受保护不可删除/禁用
四、角色列表(/ums/role)
4.1 页面定位
- 角色:权限的载体,"一组权限的打包"
- 设计思想:不直接给用户权限,而是给用户角色,角色绑定权限
- 核心指标:角色覆盖率、权限配置准确性
4.2 页面结构
┌─ 角色列表 ──────────────────────────────────┐
│ [+ 新增角色] │
│ │编号│角色名称│描述│用户数│创建时间│操作│ │
│ │ 1 │商品运营│商品管理│ 3 │01-01│分配菜单│ │
│ │ │ │ │ │ │分配资源│ │
│ │ │ │ │ │ │编辑 删除│ │
└────────────────────────────────────────────┘4.3 功能模块
新增/编辑角色
- 角色名称* + 描述 + 状态
分配菜单(核心)
- 打开菜单权限树(三级树形多选)
- 勾选该角色可见的菜单页面
- 父子联动:勾选父级自动勾选子级,取消父级自动取消子级
- 保存后,该角色用户的侧边栏只显示勾选的菜单
分配资源(核心)
- 打开资源权限列表(按资源分类分组的多选)
- 勾选该角色可调用的 API 资源
- 控制按钮级/接口级权限
4.4 业务规则
| 规则 | 说明 |
|---|---|
| 权限并集 | 用户多角色时,菜单与资源权限取并集 |
| 内置角色 | 超级管理员角色不可删除/修改权限 |
| 删除约束 | 有用户挂靠的角色不可删除 |
| 即时生效 | 权限修改后,用户下次请求即按新权限校验 |
4.5 验收标准
- AC-R01:角色增删改查
- AC-R02:分配菜单后,角色用户侧边栏正确过滤
- AC-R03:分配资源后,无权 API 返回 403
- AC-R04:有用户的角色删除被拒绝
五、菜单列表(/ums/menu)
5.1 页面定位
- 角色:后台页面权限树的维护,"后台有哪些页面"
- 核心指标:菜单结构准确性
5.2 页面结构
- 树形表格展示三级菜单(模块→页面→按钮/子页面)
- 列:菜单名称/图标/排序/显示状态/操作
- 新增/编辑:
- 上级菜单(树选择)
- 菜单名称* + 前端路径 + 图标
- 排序 + 显示状态
5.3 业务规则
| 规则 | 说明 |
|---|---|
| 层级 | 最多三级 |
| 动态渲染 | 侧边栏菜单 = 全部菜单 ∩ 用户有权限的菜单 |
| 删除约束 | 有子菜单的不可删除;已被角色引用的不可删除 |
| 隐藏菜单 | 显示状态=隐藏的菜单不在侧边栏展示(如详情页路由) |
5.4 验收标准
- AC-MN01:菜单树增删改查,三级结构
- AC-MN02:菜单变更后台侧边栏动态更新
- AC-MN03:隐藏菜单不展示但路由可访问
六、资源列表(/ums/resource)
6.1 页面定位
- 角色:API 级权限的维护,"哪些接口受权限控制"
- 设计思想:每个受保护的 API 注册为一个资源,角色绑定资源实现接口鉴权
- 核心指标:资源覆盖率(所有敏感 API 都已注册)
6.2 页面结构
┌─ 资源列表 ──────────────────────────────────┐
│ [+ 新增资源] [资源分类管理] │
│ │编号│资源名称│资源URL│分类│描述│操作│ │
│ │ 1 │删除商品│/api/product/delete│商品管理│..│编辑│
│ │ │ │ │ │ │删除│
└────────────────────────────────────────────┘6.3 功能模块
资源管理
- 新增/编辑:资源名称* + 资源URL*(API路径,支持通配)+ 资源分类 + 描述
- 资源分类管理(子页面):对资源分组(商品管理/订单管理/…),便于分配时按组勾选
鉴权机制
请求 /api/product/delete
→ 安全框架匹配资源表
→ 校验当前用户角色是否拥有该资源
→ 有权限放行 / 无权限返回 4036.4 业务规则
| 规则 | 说明 |
|---|---|
| URL 匹配 | 资源 URL 支持路径匹配(如 /api/product/**) |
| 未注册资源 | 未在资源表注册的 API 默认放行(仅登录校验) |
| 超管豁免 | 超级管理员不受资源权限限制 |
| 删除约束 | 已被角色引用的资源不可删除 |
6.5 验收标准
- AC-RS01:资源与资源分类增删改查
- AC-RS02:无资源权限的用户调用受控 API 返回 403
- AC-RS03:超管不受资源限制
- AC-RS04:被引用的资源删除被拒绝
七、体验优化(效率与安全视角)
权限模块的核心是"安全可控、配置不犯错"。按优先级排列。
会员管理
| 优先级 | 优化点 | 说明 |
|---|---|---|
| P1 | 会员画像标签 | 详情弹窗展示消费能力/活跃度标签(高价值/流失预警),指导精准运营 |
| P1 | 会员导出 | 按筛选条件导出会员名单(脱敏),供营销触达 |
| P2 | 禁用原因记录 | 禁用会员时填写原因,留痕可查 |
用户/角色/权限(安全重点)
| 优先级 | 优化点 | 说明 |
|---|---|---|
| P0 | 权限变更审计日志 | 记录"谁在什么时候给谁改了什么权限",安全事件可追溯(B 端合规刚需) |
| P0 | 权限预览 | 分配菜单/资源时提供"以该角色身份预览侧边栏",避免配错导致用户看不到页面 |
| P1 | 登录日志 | 用户登录记录(时间/IP/结果),异常登录(多次失败/异地)警示 |
| P1 | 批量导入用户 | 运营团队批量开户时支持 Excel 导入 + 模板下载 |
| P2 | 角色复制 | 复制已有角色为新角色(微调权限),避免从零勾选 |
| P2 | 超管二次验证 | 超管敏感操作(删用户/改权限)要求二次验证(输密码) |
菜单/资源
| 优先级 | 优化点 | 说明 |
|---|---|---|
| P1 | 资源自动发现 | 提供"扫描未注册 API"功能,列出未纳入权限控制的接口,防止权限遗漏 |
| P2 | 菜单拖拽排序 | 菜单树拖拽调整顺序 |
设计要点:
- 权限审计日志与权限预览是 B 端权限模块的合规与安全底线,必须优先
- 权限配置错误的代价是"用户看不到页面"或"越权",预览与审计缺一不可
- 超管账号受保护 + 敏感操作二次验证,防止内部误操作/恶意操作