一、需求分析
组合套餐销售是美团买菜提升客单价和用户购买体验的重要功能,主要需求包括:
1. 套餐创建与管理:支持商家创建自定义组合套餐
2. 智能推荐:根据用户购买习惯推荐相关套餐
3. 价格计算:自动计算套餐总价与单品总价对比
4. 库存管理:套餐与单品库存联动
5. 展示优化:在APP/小程序中突出展示套餐信息
二、系统架构设计
1. 核心模块
```
组合套餐系统
├── 套餐管理模块
├── 价格计算引擎
├── 库存联动服务
├── 推荐算法服务
└── 用户界面组件
```
2. 数据库设计
套餐表(combo_package)
```
id (主键)
name (套餐名称)
description (描述)
original_price (原价)
discount_price (折扣价)
start_time (开始时间)
end_time (结束时间)
status (状态)
```
套餐商品关系表(combo_items)
```
id (主键)
combo_id (套餐ID)
item_id (商品ID)
quantity (数量)
```
用户购买记录表(user_combo_orders)
```
id (主键)
user_id (用户ID)
combo_id (套餐ID)
order_time (购买时间)
```
三、关键功能实现
1. 套餐创建与管理
```java
// 套餐创建示例
public ComboPackage createCombo(String name, List
items,
BigDecimal originalPrice, BigDecimal discountPrice) {
// 验证商品库存
for(ComboItem item : items) {
if(!inventoryService.checkStock(item.getItemId(), item.getQuantity())) {
throw new BusinessException("商品库存不足");
}
}
// 创建套餐
ComboPackage combo = new ComboPackage();
combo.setName(name);
combo.setOriginalPrice(originalPrice);
combo.setDiscountPrice(discountPrice);
// 其他字段设置...
// 保存套餐
comboRepository.save(combo);
// 保存套餐商品关系
for(ComboItem item : items) {
ComboItemRelation relation = new ComboItemRelation();
relation.setComboId(combo.getId());
relation.setItemId(item.getItemId());
relation.setQuantity(item.getQuantity());
comboItemRelationRepository.save(relation);
}
return combo;
}
```
2. 智能价格计算
```python
def calculate_combo_price(combo_id):
获取套餐信息
combo = combo_repository.find_by_id(combo_id)
获取套餐内商品及价格
items = combo_item_relation_repository.find_by_combo_id(combo_id)
total_original = 0
for item in items:
product = product_repository.find_by_id(item.item_id)
total_original += product.price * item.quantity
计算折扣
discount_rate = 1 - (combo.discount_price / total_original)
return {
original_price: total_original,
discount_price: combo.discount_price,
discount_rate: discount_rate,
saved_amount: total_original - combo.discount_price
}
```
3. 库存联动处理
```java
// 套餐购买时的库存处理
public boolean processComboPurchase(Long comboId, int quantity) {
ComboPackage combo = comboRepository.findById(comboId)
.orElseThrow(() -> new BusinessException("套餐不存在"));
// 获取套餐内所有商品
List items = comboItemRelationRepository.findByComboId(comboId);
// 检查所有商品库存
for(ComboItemRelation item : items) {
boolean hasStock = inventoryService.checkStock(
item.getItemId(),
item.getQuantity() * quantity
);
if(!hasStock) {
throw new BusinessException(
String.format("商品%s库存不足", item.getItemId())
);
}
}
// 扣减库存(事务处理)
for(ComboItemRelation item : items) {
inventoryService.reduceStock(
item.getItemId(),
item.getQuantity() * quantity
);
}
return true;
}
```
4. 推荐算法实现
```python
def recommend_combos(user_id):
获取用户历史购买记录
history = order_repository.get_user_purchase_history(user_id)
分析用户偏好
preferences = analyze_preferences(history)
获取符合用户偏好的套餐
combos = combo_repository.find_by_preferences(preferences)
计算推荐分数(考虑购买频率、相关性等)
scored_combos = []
for combo in combos:
score = calculate_recommendation_score(combo, history)
scored_combos.append((combo, score))
按分数排序返回
return sorted(scored_combos, key=lambda x: x[1], reverse=True)[:5]
```
四、前端展示方案
1. 套餐卡片设计
```html
{{combo.name}}
{{combo.description}}
¥{{combo.originalPrice.toFixed(2)}}
¥{{combo.discountPrice.toFixed(2)}}
省{{((1-combo.discountPrice/combo.originalPrice)*100).toFixed(0)}}%
```
2. 套餐详情页
包含:
- 套餐包含商品清单
- 营养信息(如适用)
- 用户评价
- 推荐搭配商品
五、测试要点
1. 功能测试:
- 套餐创建、编辑、删除
- 价格计算准确性
- 库存联动正确性
2. 性能测试:
- 高并发下套餐查询性能
- 库存扣减的原子性
3. 用户体验测试:
- 套餐展示清晰度
- 购买流程顺畅性
六、部署与监控
1. 部署方案:
- 套餐服务独立部署,与主站通过API交互
- 使用CDN加速套餐图片加载
2. 监控指标:
- 套餐创建/购买成功率
- 套餐库存预警
- 用户点击率与转化率
七、优化方向
1. 动态定价策略:根据库存和销售数据自动调整套餐价格
2. 智能套餐生成:基于销售数据自动推荐组合方案
3. 增强现实(AR)展示:通过AR技术展示套餐内容物
通过以上方案,美团买菜可以实现高效、灵活的组合套餐销售功能,提升用户购买体验和平台销售额。