一、功能概述 组合套餐销售是美团买菜系统中重要的营销功能,允许商家将多个商品打包销售,提供优惠价格吸引顾客购买,同时提高客单价和商品周转率。 二、系统架构设计 1.数据库设计 套餐表(combo_package) ``` -package_id(主键) -pac
一、功能概述
组合套餐销售是美团买菜系统中重要的营销功能,允许商家将多个商品打包销售,提供优惠价格吸引顾客购买,同时提高客单价和商品周转率。
二、系统架构设计
1. 数据库设计
套餐表(combo_package)
```
- package_id (主键)
- package_name (套餐名称)
- description (描述)
- original_price (原价总和)
- discount_price (套餐价)
- start_time (开始时间)
- end_time (结束时间)
- status (状态:上架/下架)
- create_time (创建时间)
- update_time (更新时间)
```
套餐商品关联表(combo_package_items)
```
- id (主键)
- package_id (外键)
- product_id (商品ID)
- quantity (数量)
- sort_order (排序)
```
用户购买套餐记录表(user_combo_orders)
```
- order_id (主键)
- user_id (用户ID)
- package_id (套餐ID)
- order_amount (订单金额)
- pay_amount (实付金额)
- pay_status (支付状态)
- create_time (创建时间)
- delivery_time (配送时间)
```
2. 后端服务设计
核心模块:
1. 套餐管理服务:套餐的CRUD操作
2. 商品关联服务:管理套餐与商品的关联关系
3. 价格计算服务:计算套餐原价和优惠价
4. 库存管理服务:处理套餐商品的库存
5. 订单服务:处理套餐订单创建和支付
API接口示例:
```
创建套餐
POST /api/combo/create
获取套餐详情
GET /api/combo/{package_id}
获取可用套餐列表
GET /api/combo/list?category=xxx&status=1
创建套餐订单
POST /api/order/create-combo
```
三、核心功能实现
1. 套餐创建流程
1. 商家在后台选择"创建组合套餐"
2. 填写套餐基本信息(名称、描述、时间范围等)
3. 从商品库中选择要包含的商品
4. 设置每个商品的数量
5. 系统自动计算原价总和和优惠价
6. 商家确认并提交审核
7. 审核通过后套餐上架
2. 价格计算逻辑
```python
def calculate_package_price(package_id):
获取套餐商品列表
items = get_package_items(package_id)
original_total = 0
for item in items:
product = get_product_info(item[product_id])
original_total += product[price] * item[quantity]
获取套餐设置的优惠价
package = get_package_info(package_id)
discount_price = package[discount_price]
return {
original_price: original_total,
discount_price: discount_price,
saved_amount: original_total - discount_price
}
```
3. 库存处理逻辑
```python
def reserve_package_inventory(package_id, quantity):
items = get_package_items(package_id)
success = True
for item in items:
product_id = item[product_id]
required_qty = item[quantity] * quantity
检查并预留库存
if not reserve_product_inventory(product_id, required_qty):
success = False
break
if not success:
回滚已预留的库存
rollback_package_inventory(package_id, quantity)
return success
```
4. 前端展示逻辑
套餐卡片组件:
```jsx
function ComboCard({ package }) {
const originalPrice = calculateOriginalPrice(package.items);
const savedAmount = originalPrice - package.discount_price;
return (
{package.name} ¥{package.discount_price} ¥{originalPrice} 省¥{savedAmount}
{package.items.map(item => (
{item.product_name} × {item.quantity}
))}
addToCart(package.id)}>加入购物车 );
}
```
四、关键技术挑战与解决方案
1. 库存同步问题
挑战:组合套餐涉及多个商品库存,需要保证原子性操作
解决方案:
- 使用分布式锁确保库存操作的原子性
- 采用预扣库存机制,下单时预留库存,支付成功后确认扣减
- 设置库存超时释放机制(如15分钟未支付则释放库存)
2. 价格计算准确性
挑战:商品价格可能变动,如何保证套餐价正确
解决方案:
- 套餐创建时记录商品快照价格
- 或设置套餐价可手动调整,不随商品价格自动变化
- 每日定时任务检查并更新套餐原价显示
3. 套餐与单品混合购买
挑战:用户可能同时购买套餐和单品
解决方案:
- 购物车设计支持套餐和单品混合
- 订单拆分处理:将套餐拆分为多个子订单对应各商品
- 库存检查时同时检查套餐和单品的库存
五、测试用例示例
1. 正常流程测试:
- 创建包含3个商品的套餐
- 用户购买套餐并支付成功
- 验证各商品库存正确扣减
- 验证订单金额计算正确
2. 异常流程测试:
- 购买时某个商品库存不足
- 支付超时后库存是否正确释放
- 套餐过期后是否不再展示
3. 边界条件测试:
- 套餐包含0个商品(应阻止创建)
- 套餐价格为0或负数(应阻止创建)
- 超大数量商品组合(检查系统限制)
六、部署与监控
1. 部署方案:
- 套餐服务作为独立微服务部署
- 使用容器化技术(Docker)便于扩展
- 数据库分表设计(套餐表和订单表按时间分表)
2. 监控指标:
- 套餐创建成功率
- 库存冲突率
- 套餐购买转化率
- 价格计算耗时
七、优化方向
1. 智能推荐:基于用户购买历史推荐相关套餐
2. 动态定价:根据库存和销售情况自动调整套餐价格
3. 套餐分析:分析哪些商品组合最受欢迎
4. AB测试:测试不同套餐设计对销售的影响
通过以上设计和实现,美团买菜系统可以有效地支持组合套餐销售功能,提升用户体验和商家销售业绩。