






















PMS商品域完整 DDL 脚本 及 系统功能设计规格书,这套底层模型能够完美支撑生鲜行业特有的“多单位销售”、“双单位称重核算”以及“非标品临采”等复杂场景。
/* 1. 商品分类表 (无限极树形结构,纯净主数据) */
DROP TABLE IF EXISTS `pms_category`;
CREATE TABLE `pms_category` (
`id` bigint NOT NULL COMMENT '主键ID',
`org_id` bigint NOT NULL DEFAULT '0' COMMENT '所属机构/租户ID',
`parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父级分类ID,顶级为0',
`category_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类编码',
`category_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类名称',
`category_icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分类图标',
`inv_control_enabled` tinyint(1) DEFAULT '1' COMMENT '是否控制库存:0=不控制,1=控制',
`sort_code` int NOT NULL DEFAULT '1' COMMENT '排序码',
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1=启用,0=禁用',
`del_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除:0=正常,1=删除',
`create_time` bigint DEFAULT NULL COMMENT '创建时间(毫秒时间戳)',
`update_time` bigint DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_org_parent` (`org_id`, `parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PMS-商品分类表';
(注:彻底剥离所有关于价格的定义,仅维护客观实体及其物理/包装属性)
/* 6. 商品 SPU 主表 */
DROP TABLE IF EXISTS `pms_goods`;
CREATE TABLE `pms_goods` (
`id` bigint NOT NULL COMMENT '主键ID (SPU ID)',
`org_id` bigint NOT NULL DEFAULT '0' COMMENT '所属机构/租户ID',
`category_id` bigint NOT NULL DEFAULT '0' COMMENT '分类ID',
`brand_id` bigint DEFAULT '0' COMMENT '品牌ID',
`storage_method_id` bigint DEFAULT NULL COMMENT '存储方式ID',
`goods_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品编码(全局唯一)',
`goods_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品名称',
`mnemonic_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拼音助记码',
`selling_point` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品卖点',
`origin_place` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '产地',
`goods_property` tinyint NOT NULL DEFAULT '1' COMMENT '商品性质:0=非标品(称重生鲜), 1=标品(计件工业品)',
`goods_type` tinyint NOT NULL DEFAULT '0' COMMENT '商品类别:0=正常建档, 1=临时商品(支撑“一包豆芽菜”临采场景)',
`spec_type` tinyint NOT NULL DEFAULT '0' COMMENT '规格类型:0=单规格, 1=多规格',
`tax_rate` decimal(5,2) DEFAULT '0.00' COMMENT '进销项默认税率(%)',
`shelf_life_days` int DEFAULT '0' COMMENT '保质期天数',
`media_urls` json DEFAULT NULL COMMENT '图文视频集:[{"type":"image","url":"...","main_status":true}]',
`goods_desc` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '图文详情',
`shelf_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'SPU全局上下架状态:0=下架, 1=上架',
`recommend_status` tinyint(1) DEFAULT '0' COMMENT '推荐状态:0=否,1=是',
`sort_code` int DEFAULT '1',
`enabled` tinyint(1) DEFAULT '1',
`del_flag` tinyint(1) DEFAULT '0',
`creator_id` bigint DEFAULT '0',
`create_time` bigint DEFAULT NULL,
`updater_id` bigint DEFAULT '0',
`update_time` bigint DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_goods_code_org` (`goods_code`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PMS-商品主表(SPU)';
/* 9. 商品-供应商来源映射表 (无价格版,仅作合规采购字典) */
DROP TABLE IF EXISTS `pms_sku_supplier`;
CREATE TABLE `pms_sku_supplier` (
`id` bigint NOT NULL COMMENT '主键ID',
`org_id` bigint NOT NULL DEFAULT '0',
`sku_id` bigint NOT NULL COMMENT '物理SKU ID (采购买的是物理货)',
`supplier_id` bigint NOT NULL COMMENT '供应商ID',
`purchase_unit_id` bigint NOT NULL COMMENT '向该供应商采购的默认包装单位ID',
`supplier_item_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '供应商系统货号',
`supply_weight` decimal(5,2) DEFAULT '1.00' COMMENT '智能派单采购分配权重',
`primary_flag` tinyint(1) DEFAULT '0' COMMENT '首选供应商标识:0=否, 1=是',
`sort_code` int DEFAULT '1',
`enabled` tinyint(1) DEFAULT '1',
`del_flag` tinyint(1) DEFAULT '0',
`create_time` bigint DEFAULT NULL,
`update_time` bigint DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_sku_supplier` (`sku_id`, `supplier_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PMS-商品供应商采购白名单映射表';
升鲜宝 PMS 商品域(Product Management System)是整个供应链系统的核心主数据基石。经过架构重构,本域彻底执行**“销、存、采三权分立”和“去价化”**原则。 PMS 的唯一职责是:准确描述客观商品的物理属性、物流包装、销售表现形态以及基础采购字典映射,绝不干涉任何B2B定价逻辑、客户可见性逻辑及仓内作业流程。
系统采用三层商品数据结构,完美解耦“如何卖”与“如何管”:
SPU(pms_goods):定义商品的名片(如“红富士苹果”),承载图文详情、类目、品牌。
物理 SKU(pms_sku):定义仓库和采购眼中的“真实物体”。解决生鲜**双单位(非标重)**核心痛点,建立主辅单位并行的核算底座。
销售包装 SKU_UNIT(pms_sku_unit):定义前端商城的“销售马甲”。解决**多单位(Multi-UOM)**售卖痛点。它负责定义“按个、按箱”对应的独立条码和物理包裹尺寸,通过 base_unit_ratio 与物理 SKU 打通。
无限极类目树:维护 pms_category,去除层级字段依赖,支持灵活拖拽。
计量单位库:维护 pms_unit,明确定义每个单位属于“计件”还是“计重”属性,为 OMS 订单换算及 WMS 出入库过磅提供基础支撑。
双单位称重机制:针对生鲜冻品、肉类等品类,强制开启 dual_unit_flag。设定主单位(如 KG)作为财务及库存绝对核算标准,设定辅单位(如 箱)作为仓配作业指导,解决“按箱捡货、按重算钱”的误差。
临时商品(临采)容错引擎:通过 goods_type=1 标识,允许采购人员在无标准化建档的情况下,通过输入商品名静默生成一条 SPU->SKU 链路,实现“非目录商品的零摩擦越库直发”。
多包装发布:为同一个物理 SKU 自由挂载多个销售包装组合。为每一个包装分配独立的 PLU 码(对接生鲜电子秤)和 UPC 条形码。
周转物料绑定:为特定销售包装(如“10kg原筐装”)绑定对应的 box_id(周转筐),当订单生成时,OMS 可依据此包装配置自动计算客户需抵扣的筐押金或数量。
采购白名单:维护 pms_sku_supplier。定义某个物理 SKU 允许从哪些供应商处采购,并绑定其在供应商系统中的专属货号。此模块为“智能缺货采购(MRP)”提供唯一合法的上游数据源池,防范采购乱挂账。
无价格:该域不产生任何基于客户或供应商的价格单据。所有价格获取均通过调用独立的 定价域(Pricing Domain)。
无权限拦截:该域默认暴露全量库给内部微服务,前端面向具体客户的商品屏蔽和专供上架过滤,交由 客户/价格域 提供的拦截器进行处理。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。