惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
L
LangChain Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
博客园_首页
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
美团技术团队
V
V2EX

博客园 - 升鲜宝生鲜供应链系统

升鲜宝生鲜配送供应链系统 vs_车辆管理模块开发文档 PRD(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝供应链管理系统Spring Boot 4.0 项目源代码结构及数据库字典模块命名与表字段命名开发约束规范(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝 B2B 订货商城线性 --- |----- 原型图(一)---升鲜宝生鲜配送供应链管理系统源代码服务 升鲜宝云商品库功能设计与数据库表结构详细文档(一)---升鲜宝生鲜配送供应链管理系统源代码服务 升鲜宝PAD生产加工系统:销售单客户预订明细分割增强版 猪肉分割加工轻量版 · PAD端操作效果图与开发说明(二)---升鲜宝生鲜配送供应链管理系统源代码服务 升鲜宝PAD生产加工系统 猪肉分割加工轻量版功能模块方案与页面效果图(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝B2B订货商城后端开发文档(一)---升鲜宝生鲜配送供应链管理系统 【研究与学习】快驴商品模块功能分析与数据库表结构设计文档(一)---升鲜宝生鲜配送供应链管理系统源代码服务(标准版、专业版) 【研究与学习】悦厚系统商品模块功能设计与数据字典文档(一)---升鲜宝生鲜配送供应链管理系统 【研究与学习】易订货商品模块设计分析文档字段级数据字典 + 表关系 + 单位换算 + 价格/库存/促销链路(一)---升鲜宝生鲜配送供应链管理系统 【研究与学习收银系统】(一)菜某秘后台 SaaS 租户运营控制、费用管理系统数据字典及功能设计方案详细文档 升鲜宝云仓供应链管理系统功能详细设计方案 PRD(二)---升鲜宝生鲜配送供应链管理系统 升鲜宝云仓供应链管理系统方案(一)---升鲜宝供应链管理系统 统一字段权限组件功能设计方案(一)---升鲜宝生鲜配送供应链管理系统 升鲜宝供应链管理系统生成图片、生成 PDF、生成分享码通用组件功能设计文档(一)---升鲜宝生鲜配送供应链管理系统源代码(Spring Boot Vue3 Uniapp ) 升鲜宝后端 API 与手机端 API 开发说明(一)---升鲜宝生鲜配送供应链管理系统重构版 「我的中心」设置模块 功能设计与开发文档(一)--- 升鲜宝生鲜配送供应链管理系统重构说明 通用明细列表控件设计与开发文档(一)---升鲜宝生鲜配送供应链管理软件重构方案 管理类软件通用高级查询组件(一)---升鲜宝生鲜配送供应链管理软件重构方案 升鲜宝商品模块重构版接口清单 (二)+ 页面原型字段设计 升鲜宝供应链商品模块设计(一) 数据字典及功能开发详细说明 升鲜宝日志功能模块设计说明(一)---生鲜配送供应链管理系统源代码 升鲜宝静态文本国际化完整 SQL 说明 升鲜宝多语言数据库设计演进对比文档 升鲜宝通用自定义列导入导出功能的通用设计方案(一)---升鲜宝生鲜配送供应链管理系统源代码 升鲜宝高性能多语言解决方案(二)---升鲜宝生鲜配送供应链管理系统 升鲜宝高性能多语言解决方案(一)---升鲜宝生鲜配送供应链管理系统 企业微信CRM模块功能设计(三)—— 升鲜宝生鲜配送供应链管理系统源代码 企业微信CRM模块功能设计(二)—— 升鲜宝生鲜配送供应链管理系统源代码 企业微信CRM模块功能设计(一)—— 升鲜宝生鲜配送供应链管理系统源代码
升鲜宝供应链管理系统B端客户价格域的表结构设计及相关说明
升鲜宝生鲜供应链系统 · 2026-02-14 · via 博客园 - 升鲜宝生鲜供应链系统
 

在生鲜 B2B 供应链 SaaS 系统中,**B端价格域(Pricing Domain,简称 PRC 域)**是仅次于商品域的第二大核心引擎。

生鲜 B2B 交易和传统 2C 电商(如淘宝买衣服)最大的区别在于:B端是没有绝对“标准价”的。同样一箱西红柿,卖给高档餐厅、连锁快餐、企事业食堂的价格截然不同(一客一价);并且生鲜价格随行就市,今天和明天的价格也不同(周期报价)。

将价格和可见性从商品主数据(PMS)中彻底剥离出来,成立独立的 PRC 价格域,是极其高明的微服务架构切分。

以下是为您深度梳理并重构的**《升鲜宝 - PRC B端价格与客开域》**的完整 DDL 与设计规格:


核心设计思想:B2B 价格决议引擎 (Price Resolution Engine)

在重构表结构前,我们需要确立价格域的**“决议优先级”**。当客户(如:张三饭店)登录商城看到“一箱红富士(sku_unit_id = 1004)”时,系统应该按以下优先级从高到低去寻找价格,一旦命中立刻返回:

  1. 最高优先级:客户周期报价单 (prc_quotation) -> 比如张三饭店本周签订了锁价单,80元/箱。

  2. 第二优先级:客户专属特价 (prc_customer_price) -> 比如张三是老客,老板特批这箱苹果永远给他 85元/箱

  3. 第三优先级:客户购买数量阶梯价 (prc_tiered_price) -> 比如买 10箱以上 88元/箱

  4. 第四优先级:客户所属价格组/等级价 (prc_group_price) -> 比如张三属于“大中型餐饮组”,该组统一定价 90元/箱

  5. 最低优先级:商品基础零售指导价 -> pms_sku_unit.retail_price 默认兜底价 100元/箱。

基于以上引擎逻辑,我们来构建 PRC 域的底层 DDL:


一、 价格组与等级基石 (Customer Groups)

这是将海量客户进行归类统一定价的基础,替代原表 cus_customer_grade

/* 1. 价格组/客户等级主表 */
DROP TABLE IF EXISTS `prc_price_group`;
CREATE TABLE `prc_price_group` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `org_id` bigint NOT NULL DEFAULT '0' COMMENT '所属机构/租户ID',
  
  `group_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '价格组名称 (如: A类餐饮客户、B类食堂)',
  `group_icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '价格组标识图标',
  
  `auto_shelves_flag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '新品智能上架标识:0=否, 1=自动对该组上架 (原 auto_default) [cite: 119]',
  `default_period_id` bigint NOT NULL DEFAULT '0' COMMENT '该组默认账期ID [cite: 119, 120]',
  `use_count` int DEFAULT '0' COMMENT '绑定的客户数量',
  
  `sort_code` int NOT NULL DEFAULT '1',
  `enabled` tinyint(1) NOT NULL DEFAULT '1',
  `del_flag` tinyint(1) NOT NULL DEFAULT '0',
  `create_time` bigint DEFAULT NULL,
  `update_time` bigint DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PRC-客户价格组/等级表';


二、 具体定价清单 (Price Lists)

这是价格决议引擎真正读取的强业务表。所有的价格都必须精确到 decimal(14,4) 并挂载在 sku_unit_id(销售包装)上。

/* 3. 价格组-专属商品价格表 (原 cus_customer_grade_price ) */
/* 优先级 4:打破宏观加价策略,精确到具体单品的组价格 */
DROP TABLE IF EXISTS `prc_group_price`;
CREATE TABLE `prc_group_price` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `org_id` bigint NOT NULL DEFAULT '0',
  `group_id` bigint NOT NULL COMMENT '关联价格组ID [cite: 130]',
  
  `sku_unit_id` bigint NOT NULL COMMENT '关联销售规格包装ID [cite: 130]',
  `customer_sku_alias` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '该价格组看到的专属商品别名 [cite: 130, 131]',
  
  `unit_price` decimal(14,4) NOT NULL COMMENT '专属销售定价 (含税) [cite: 131]',
  `discount_rate` decimal(5,4) DEFAULT '1.0000' COMMENT '在原指导价基础上的折扣率 (原 price_ratio) [cite: 131]',
  `min_order_qty` decimal(10,3) DEFAULT '1.000' COMMENT '该组特有的起订量 [cite: 132]',
  
  `start_time` bigint DEFAULT NULL COMMENT '特价生效时间 [cite: 132]',
  `end_time` bigint DEFAULT NULL COMMENT '特价失效时间 [cite: 132]',
  
  `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_group_sku` (`group_id`, `sku_unit_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PRC-价格组特定商品清单价';


三、 B2B 强契约锁价单 (Quotations)

这是生鲜招投标或大客专供的核心。比如企事业食堂采用按月/周招标定价,那么在这个期间内,不论外面市场价怎么跌宕起伏,结账必须以这张报价单为准。

/* 6. 周期报价单主表 (原 pms_quoted_price [cite: 1046-1049]) */
/* 优先级 1:最高优先级的强锁价契约 */
DROP TABLE IF EXISTS `prc_quotation`;
CREATE TABLE `prc_quotation` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `org_id` bigint NOT NULL DEFAULT '0',
  
  `quotation_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '报价单号 [cite: 1046, 1047]',
  
  `quotation_type` tinyint NOT NULL COMMENT '类型:1=面向客户/价格组的销售报价, 2=面向供应商的采购报价 [cite: 1047]',
  `target_id` bigint NOT NULL COMMENT '对应 客户ID / 价格组ID / 供应商ID [cite: 1046]',
  
  `start_time` bigint NOT NULL COMMENT '报价生效开始时间 [cite: 1047]',
  `end_time` bigint NOT NULL COMMENT '报价失效结束时间 [cite: 1047]',
  
  `audit_status` tinyint NOT NULL DEFAULT '0' COMMENT '审核状态:0=待审核, 1=已审核生效, -1=已作废 (原 bill_state) [cite: 1047]',
  `auditor_id` bigint DEFAULT '0' COMMENT '审核人 [cite: 1049]',
  `audit_time` bigint DEFAULT NULL COMMENT '审核时间 [cite: 1049]',
  
  `enabled` tinyint(1) NOT NULL DEFAULT '1',
  `del_flag` tinyint(1) NOT NULL DEFAULT '0',
  `creator_id` bigint DEFAULT '0',
  `create_time` bigint DEFAULT NULL,
  `remark` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_target_time` (`quotation_type`, `target_id`, `start_time`, `end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PRC-B2B强契约周期报价单主表';


四、 客开可见性与屏蔽管控 (Visibility & Shielding)

决定了一个客户登录后,能不能看到这些商品。

/* 8. 商品可见性与专供授权表 (原 pms_goods_grant_scope [cite: 987-992]) */
/* 场景:特供A集团的“洗净土豆丝”,其他客户根本搜不到。 */
DROP TABLE IF EXISTS `prc_visibility_grant`;
CREATE TABLE `prc_visibility_grant` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `org_id` bigint NOT NULL DEFAULT '0',
  `sku_unit_id` bigint NOT NULL COMMENT '关联销售包装ID [cite: 991, 992]',
  
  `target_type` tinyint NOT NULL COMMENT '授权目标类型:1=价格组/等级, 2=特定客户, 3=特定门店 [cite: 988]',
  `target_id` bigint NOT NULL COMMENT '目标ID (如张三饭店的客户ID) [cite: 988]',
  
  `shelf_flag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '专属上架标识:0=下架,1=上架 (原 shelves) [cite: 990]',
  
  `enabled` tinyint(1) DEFAULT '1',
  `create_time` bigint DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_sku_unit_target` (`sku_unit_id`, `target_type`, `target_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PRC-商品专供与客开可见性授权表';


PRC 价格域系统设计亮点总结

通过重构,PRC (Pricing) 域彻底接管了《升鲜宝》的**“B端计价与客开权限”**:

  1. 彻底解耦:商品底座(PMS)安心发版新商品,PRC 引擎负责动态渲染每个客户看到的“一客一表一价”。

  2. 决议树引擎化:后端在获取商品价格时,将通过 prc_quotation -> prc_customer_price -> prc_tiered_price -> prc_group_price 的责任链(Chain of Responsibility)模式层层过滤,计算性能大幅提升且逻辑极度清晰。

  3. 数据隔离严谨:去除了原表中所有错别字和中式英语,使用高精度 decimal(14,4) 完全避免金额乘除时的分位丢失。