产品管理、产品分类
这篇解决什么
CRM 卖品放哪、分类几层、上架后谁能被合同选。读完能对上 crm_product、crm_product_category、CrmProductStatusEnum。这不是商城 SKU,也不是 ERP 物料。
默认端口 48080,管理端前缀 /admin-api。PC 开发页 http://127.0.0.1:5800。合同选品见 合同管理、合同提醒。
示意图:分类先配,产品挂 categoryId。合同、商机只引用上架产品。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 产品接口 | @RequestMapping("/crm/product") | ruoyi-office/yudao-module-crm/.../controller/admin/product/CrmProductController.java |
| 产品表 | crm_product | CrmProductDO |
| 精简列表 | GET /simple-list,只出上架 | 同上 |
| 分类接口 | @RequestMapping("/crm/product-category") | CrmProductCategoryController |
| 分类表 | crm_product_category | CrmProductCategoryDO |
| 状态 | 0 下架 1 上架 | CrmProductStatusEnum |
| 单位字典 | CRM_PRODUCT_UNIT | DictTypeConstants |
| PC | /crm/product,分类 /crm/config/product/category | ruoyi-office-vben/apps/web-antd/src/views/crm/product/ |
官方菜单:2526 产品管理,2532 产品分类配置(挂在 2524 系统配置下)。按钮 crm:product:create / update,分类 crm:product-category:*。

本系统截图:CRM → 产品管理。名称、编码、分类、价格、上下架在这一张表。

本系统截图:CRM → 系统配置 → 产品分类配置。根分类 parentId=0,最多两层。
分类和上下架
分类根节点常量 PARENT_ID_NULL = 0,层级上限 CATEGORY_LEVEL = 2。产品必须挂分类,并指定负责人 ownerUserId。合同明细表 crm_contract_product 存当时的单价、数量、合计,不回写产品主数据。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
name / no | 名称、编码 | crm_product |
unit / price | 单位字典、单价(元) | 同上 |
status | 0 下架 1 上架 | CrmProductStatusEnum |
categoryId | 挂分类 | crm_product_category |
parentId | 父分类,根为 0 | 同上 |
CREATE TABLE crm_product (
id bigint NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
no varchar(64) DEFAULT NULL,
unit int DEFAULT NULL,
price decimal(24,6) DEFAULT NULL,
status int DEFAULT NULL,
category_id bigint DEFAULT NULL,
PRIMARY KEY (id)
);示意图:下架后 simple-list 不再给出。已经写进合同明细的行还在,改的是当时快照价。
不要和商城、ERP 产品混表
CRM 产品只服务商机和销售合同。商城 product、ERP 物料是另一套模块和表。改价格不会自动改已签合同金额。
配置与操作
先在 CRM → 系统配置 → 产品分类配置(2532)建分类:根 parentId=0,最多两层。再在 产品管理(2526)建产品,填 name、no、unit(字典 CRM_PRODUCT_UNIT)、price、categoryId、负责人 ownerUserId,status 设 1 上架。
保存后商机、合同的 simple-list 才能选到。下架后不再给出;已写入 crm_contract_product 的行仍是当时快照价。改价格不会改已签合同金额。
截图见上文。
