商机管理、商机状态
这篇解决什么
商机怎么挂客户、状态组怎么配、赢单输单写哪几个字段。读完能对上 crm_business、crm_business_status_type / crm_business_status,以及 CrmBusinessEndStatusEnum。
默认端口 48080,管理端前缀 /admin-api。PC 开发页 http://127.0.0.1:5800。客户要先有,见 客户管理、公海客户。
示意图:状态组是配置。每条商机选一个组,再沿组内状态往前推,结束才写赢/输/无效。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 商机接口 | @RequestMapping("/crm/business") | ruoyi-office/yudao-module-crm/.../controller/admin/business/CrmBusinessController.java |
| 商机表 | crm_business | CrmBusinessDO |
| 改阶段 | PUT /update-status | 同上 |
| 转移 | PUT /transfer | 同上 |
| 按客户 / 联系人 | /list-by-customer、/page-by-contact | 同上 |
| 状态组 | @RequestMapping("/crm/business-status") | CrmBusinessStatusController |
| 状态组表 | crm_business_status_type | CrmBusinessStatusTypeDO |
| 阶段表 | crm_business_status | CrmBusinessStatusDO |
| 商机产品 | crm_business_product | CrmBusinessProductDO |
| PC | /crm/business、状态 /crm/config/business-status | ruoyi-office-vben/apps/web-antd/src/views/crm/business/ |
官方菜单:2410 商机管理,2703 商机状态配置。按钮 crm:business:create / update / delete。

本系统截图:CRM → 商机管理。客户、状态、金额在列表上,阶段变更走 update-status。
状态组和结束状态
状态组可以按部门限制 deptIds。组内阶段有名称、赢单率、排序。商机同时记 statusTypeId 和当前 statusId。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
customerId | 必须挂已有客户 | crm_business |
statusTypeId / statusId | 哪一组、当前阶段 | 同上 |
endStatus | 1 赢单 2 输单 3 无效 | CrmBusinessEndStatusEnum |
totalProductPrice | 产品明细合计 | crm_business_product |
discountPercent / totalPrice | 整单折扣和商机金额 | 同上 |
CREATE TABLE crm_business (
id bigint NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
customer_id bigint DEFAULT NULL,
status_type_id bigint DEFAULT NULL,
status_id bigint DEFAULT NULL,
end_status int DEFAULT NULL,
total_price decimal(24,6) DEFAULT NULL,
PRIMARY KEY (id)
);示意图:推进阶段改 statusId。结束状态是另一列,不要用阶段名当赢单。
商机不走合同审批 key
改阶段、赢单不是 crm-contract-audit。合同从商机带过去时,审批在合同篇。这里只维护销售漏斗。
金额以商机产品和整单折扣为准。只改 totalPrice、不改明细,对账会对不上。联系人通过 crm_contact_business 挂多对多,不是商机上的单个字段。
配置与操作
先在 CRM → 商机状态配置(2703)建状态组:名称、部门限制 deptIds,组内阶段填名称、赢单率、排序。保存后新建商机才能选组。
走 商机管理(2410),必须挂 customerId,选 statusTypeId / statusId。推进阶段 PUT /update-status 只改 statusId。赢 / 输 / 无效写 endStatus(1 / 2 / 3),不要用阶段名当赢单。金额以 crm_business_product 合计再加 discountPercent 为准。联系人走 crm_contact_business。改阶段不是 crm-contract-audit。
