CRM 数据权限
这篇解决什么
CRM 业务数据谁能看、谁能改,和菜单权限怎么叠。读完能对上 crm_permission、@CrmPermission、CrmPermissionLevelEnum,以及角色码 crm_biz。这是业务行权限,不是 system 的菜单树。
默认端口 48080,管理端前缀 /admin-api。PC 开发页 http://127.0.0.1:5800。菜单权限见 功能与数据权限。先开模块见 CRM 功能设计。
示意图:详情页「团队成员」读写的是 crm_permission。方法上的注解按行校验,超级管理员角色直接过。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 权限接口 | @RequestMapping("/crm/permission") | ruoyi-office/yudao-module-crm/.../controller/admin/permission/CrmPermissionController.java |
| 权限表 | crm_permission | CrmPermissionDO |
| 创建 / 改级别 | POST /create、PUT /update | 同上 |
| 删别人 / 退出 | DELETE /delete、/delete-self | 同上 |
| 注解 | @CrmPermission | .../framework/permission/core/annotations/ |
| 切面 | CrmPermissionAspect | .../framework/permission/core/aop/ |
| 级别 | OWNER 1 / READ 2 / WRITE 3 | CrmPermissionLevelEnum |
| 业务类型 | 线索到回款计划 | CrmBizTypeEnum |
| PC | 详情页「团队成员」 | ruoyi-office-vben/apps/web-antd/src/views/crm/permission/ |
没有独立「CRM 权限」菜单。改级别要当前记录的 OWNER。列表场景「我负责的 / 我参与的 / 下属负责的」走 CrmPermissionUtils.appendPermissionCondition。

本系统截图:客户详情 → 团队成员。一行用户、一个级别,对应 crm_permission 一行。
级别怎么判
新建客户、合同、回款时,会给负责人插一条 OWNER。公海把客户负责人清空时,会删这条客户的负责人权限。领取 / 分配再补上。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
bizType / bizId | 哪类业务、哪一行 | crm_permission |
userId / level | 谁、什么级别 | 同上 |
| OWNER | 负责人,读写都过,可转移、可改团队 | CrmPermissionLevelEnum |
| WRITE | 能改,不能当负责人操作 | 同上 |
| READ | 只能看 | 同上 |
crm_biz | 角色码「CRM业务」,切面直接放行 | RoleCodeEnum.CRM_BIZ |
CREATE TABLE crm_permission (
id bigint NOT NULL AUTO_INCREMENT,
biz_type int DEFAULT NULL,
biz_id bigint DEFAULT NULL,
user_id bigint DEFAULT NULL,
level int DEFAULT NULL,
PRIMARY KEY (id)
);@CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id",
level = CrmPermissionLevelEnum.WRITE)没有权限行时,读请求会放行(公海那种大家都能看)。写请求没有行直接拒。自己不是 OWNER 时,还会看下级是不是负责人或有足够级别。
示意图:先过 Spring Security 菜单,再过 CRM 行权限。两个都要。
改团队只要负责人
PUT /update 注解级别是 OWNER。只读写成员不能改别人的级别。退出自己走 /delete-self。
配置与操作
没有独立「CRM 权限」菜单。负责人在客户 / 合同等详情的「团队成员」里 POST /create、PUT /update,填 userId 和级别:OWNER 1 / READ 2 / WRITE 3。改级别要当前记录的 OWNER。保存后立刻进 crm_permission,列表「我负责的 / 我参与的 / 下属负责的」按这张表过滤。
新建客户、合同、回款会给负责人插 OWNER。公海清空负责人时删这条客户的负责人权限。角色码 crm_biz 的切面直接放行。退出自己走 /delete-self。菜单权限仍要先过 Spring Security。
