一、多规格商品销售的核心需求
1. 商品维度管理
- 支持同一商品的不同规格(如重量、包装、产地、品质等级等),例如:
- 苹果:按重量(500g/1kg)、包装(散装/礼盒装)、品种(红富士/嘎啦果)划分。
- 肉类:按部位(里脊/五花肉)、切割方式(切片/切块)、是否去骨等。
- 每个规格需独立管理库存、价格、促销活动及SKU编码。
2. 用户体验优化
- 前端展示:清晰呈现规格选项(如单选/多选、下拉菜单、图片切换)。
- 价格动态计算:根据用户选择的规格实时更新总价。
- 库存联动:选择规格后显示对应库存,避免超卖。
3. 供应链协同
- 采购与分拣:根据规格拆分采购订单,指导分拣员按规格包装。
- 仓储管理:按规格分配库位,支持动态库存调整(如损耗、退货)。
二、系统架构设计
1. 数据库设计
- 商品主表(Product)
存储商品基础信息(名称、分类、描述等)。
- 规格模板表(SpecTemplate)
定义规格类型(如“重量”“包装”)及其可选值(如“500g”“1kg”)。
- 商品规格关联表(ProductSpec)
关联商品与规格模板,生成具体SKU(如“苹果-红富士-1kg”)。
- 库存表(Inventory)
按SKU记录库存数量、预警阈值、批次信息。
- 价格表(Price)
支持多规格价格策略(如基础价、会员价、促销价)。
2. 关键模块实现
- 规格配置后台
- 管理员可灵活创建规格模板(如“颜色+尺寸”组合)。
- 支持批量导入规格数据,减少人工操作。
- 前端交互组件
- 使用React/Vue实现动态规格选择器,支持图片、文字、价格联动。
- 示例:用户选择“1kg”后,自动显示对应价格并禁用缺货选项。
- 库存实时计算
- 通过WebSocket或轮询机制更新库存显示。
- 下单时预占库存,支付成功后扣减,避免超卖。
- 订单拆分与合并
- 多规格商品可能来自不同仓库,系统需自动拆分子订单并分配物流。
- 支持合并相同规格的订单以减少包装成本。
三、技术挑战与解决方案
1. 高并发下的库存一致性
- 解决方案:采用分布式锁(如Redis)或乐观锁机制,确保库存扣减的原子性。
- 案例:叮咚买菜在促销期间通过分库分表+Redis缓存,支撑每秒万级订单请求。
2. 规格组合爆炸问题
- 问题:商品规格过多会导致SKU数量指数级增长(如3种规格×5个选项=15个SKU)。
- 解决方案:
- 动态生成SKU:仅在用户选择规格后实时计算可用组合。
- 规格分组:将关联性强的规格(如“颜色+尺寸”)合并为单一维度。
3. 移动端适配
- 挑战:小屏幕下多规格选择需简洁直观。
- 解决方案:采用步骤式选择器(Stepper)或图片矩阵,减少用户操作步骤。
四、业务场景示例
- 场景1:用户购买水果
- 用户选择“车厘子”→ 选择规格“3J级/5kg礼盒装”→ 系统显示价格¥299,库存50件。
- 下单后,系统自动分配最近仓库的库存,并生成分拣任务。
- 场景2:商家管理规格
- 商家在后台为“牛肉”添加规格“部位(里脊/牛腩)+切割方式(切片/切块)”。
- 设置不同规格的进货价、售价及毛利率阈值。
五、优化方向
1. AI辅助规格推荐
- 基于用户历史购买数据,推荐高频规格组合(如“常买1kg装”)。
2. 动态定价引擎
- 根据库存、时效性(如临期商品)自动调整规格价格。
3. 规格可视化
- 通过3D模型或AR展示规格差异(如家具尺寸对比)。
六、总结
叮咚买菜的多规格商品销售系统需兼顾灵活性(支持复杂规格定义)与稳定性(高并发下的库存准确)。通过模块化设计、实时数据同步和用户友好交互,可显著提升转化率与运营效率。实际开发中,建议采用微服务架构分离商品、库存、订单等模块,并引入CI/CD流程快速迭代功能。