一、模块概述
价格管理模块是生鲜电商系统的核心功能之一,负责处理商品价格的全生命周期管理,包括定价、调价、促销、价格计算等业务场景。针对生鲜行业特点,该模块需要特别考虑价格波动频繁、多级定价、时效性等特殊需求。
二、核心功能设计
1. 基础价格管理
- 商品基础定价:支持按商品SKU设置基准价格
- 多级价格体系:
- 会员等级价(普通会员/VIP/企业客户等)
- 采购量阶梯价(达到一定数量自动降价)
- 区域差异化定价(不同配送区域不同价格)
- 价格有效期:支持设置价格生效和失效时间
2. 动态调价机制
- 市场波动响应:
- 接入第三方价格指数API自动调整
- 手动批量调价功能
- 调价规则引擎(如"当进价上涨10%时,零售价自动上调5%")
- 时效性价格:
- 每日特价时段设置
- 临期商品折扣
- 节假日促销价
3. 促销管理
- 促销活动类型:
- 满减/满折
- 直降/限时秒杀
- 买赠活动
- 第二件半价等组合促销
- 促销优先级:支持设置促销活动的优先级和叠加规则
- 预算控制:促销活动预算设置和预警
4. 价格计算引擎
- 复杂场景计算:
- 多促销叠加时的最优价格计算
- 会员折扣与促销活动的优先级处理
- 运费计算与商品价格的分离处理
- 实时价格查询:提供商品当前有效价格的快速查询接口
三、技术实现方案
1. 数据库设计
```sql
-- 商品价格主表
CREATE TABLE product_price (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_sku VARCHAR(50) NOT NULL,
base_price DECIMAL(10,2) NOT NULL,
cost_price DECIMAL(10,2),
market_price DECIMAL(10,2),
currency VARCHAR(10) DEFAULT CNY,
create_time DATETIME,
update_time DATETIME,
INDEX idx_sku (product_sku)
);
-- 价格历史表
CREATE TABLE price_history (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
price_id BIGINT NOT NULL,
old_price DECIMAL(10,2) NOT NULL,
new_price DECIMAL(10,2) NOT NULL,
change_reason VARCHAR(255),
operator VARCHAR(50),
change_time DATETIME,
INDEX idx_price_id (price_id),
INDEX idx_change_time (change_time)
);
-- 促销活动表
CREATE TABLE promotion (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
type TINYINT NOT NULL COMMENT 1-满减 2-折扣 3-直降,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
status TINYINT DEFAULT 1 COMMENT 0-禁用 1-启用,
priority INT DEFAULT 0,
budget DECIMAL(12,2),
used_amount DECIMAL(12,2) DEFAULT 0,
create_time DATETIME,
update_time DATETIME
);
-- 促销规则表
CREATE TABLE promotion_rule (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promotion_id BIGINT NOT NULL,
rule_type TINYINT NOT NULL COMMENT 1-商品 2-品类 3-品牌,
rule_value VARCHAR(100) NOT NULL,
condition_type TINYINT COMMENT 1-满足金额 2-满足数量,
condition_value DECIMAL(10,2),
discount_type TINYINT COMMENT 1-金额 2-比例,
discount_value DECIMAL(10,2),
max_discount DECIMAL(10,2),
FOREIGN KEY (promotion_id) REFERENCES promotion(id)
);
```
2. 核心类设计
```java
// 价格服务接口
public interface PriceService {
// 获取商品当前有效价格
PriceInfo getCurrentPrice(String sku, String regionCode, Long userId);
// 批量更新价格
BatchResult updatePrices(List
requests);
// 创建促销活动
PromotionInfo createPromotion(PromotionCreateRequest request);
// 计算订单总价(含促销)
OrderPrice calculateOrderPrice(OrderPriceRequest request);
}
// 价格计算上下文
public class PriceCalculationContext {
private String sku;
private Long userId;
private String regionCode;
private LocalDateTime requestTime;
private BigDecimal quantity;
// 其他上下文信息...
}
// 价格计算策略接口
public interface PriceCalculationStrategy {
BigDecimal calculate(PriceCalculationContext context);
}
```
3. 价格计算流程
1. 输入参数:SKU、用户ID、区域、数量、时间等
2. 价格查询:
- 查询基础价格
- 查询会员等级价
- 查询区域定价
- 查询批量折扣
3. 促销匹配:
- 查询当前有效促销活动
- 按优先级排序
- 检查适用条件
4. 价格计算:
- 应用最优促销组合
- 计算最终价格
- 记录价格使用日志
4. 关键技术实现
价格缓存策略
```java
// 使用Redis缓存商品价格
@Cacheable(value = "product:price", key = " sku + : + regionCode + : + userId")
public PriceInfo getCachedPrice(String sku, String regionCode, Long userId) {
// 实际查询数据库逻辑
}
// 价格变更时清除缓存
@CacheEvict(value = "product:price", key = " priceUpdate.sku + : + priceUpdate.regionCode + : + priceUpdate.userId")
public void updatePrice(PriceUpdateRequest priceUpdate) {
// 更新数据库逻辑
}
```
促销规则引擎
```java
public class PromotionRuleEngine {
public List findApplicablePromotions(PriceCalculationContext context) {
List activePromotions = promotionRepository.findActiveByTime(context.getRequestTime());
return activePromotions.stream()
.filter(promo -> isPromotionApplicable(promo, context))
.sorted(Comparator.comparingInt(Promotion::getPriority).reversed())
.map(this::convertToApplicablePromotion)
.collect(Collectors.toList());
}
private boolean isPromotionApplicable(Promotion promotion, PriceCalculationContext context) {
// 检查商品/品类/品牌匹配
// 检查数量/金额条件
// 检查用户/区域限制
// ...
}
}
```
四、生鲜行业特殊考虑
1. 价格波动处理:
- 设置价格调整阈值,超过一定比例需要审批
- 提供价格预测功能,基于历史数据和市场趋势
2. 时效性价格:
- 支持按小时级的价格调整(如早晚市不同价)
- 临期商品自动折扣机制
3. 损耗补偿定价:
- 根据预计损耗率自动调整售价
- 不同品质等级商品差异化定价
4. 供应链联动:
- 与采购系统集成,进价变动自动触发零售价调整建议
- 供应商价格协议管理
五、测试要点
1. 边界条件测试:
- 促销活动开始/结束时间边界
- 价格有效期边界
- 阶梯价格的数量边界
2. 并发测试:
- 高并发场景下的价格一致性
- 促销活动变更时的数据一致性
3. 性能测试:
- 复杂促销规则下的计算性能
- 大批量价格更新的处理能力
4. 异常场景测试:
- 促销规则冲突处理
- 价格计算异常时的降级策略
六、部署与监控
1. 监控指标:
- 价格查询响应时间
- 促销活动匹配成功率
- 价格计算错误率
2. 告警策略:
- 价格异常波动告警
- 促销活动未生效告警
- 缓存命中率过低告警
3. 日志记录:
- 价格变更历史
- 促销活动应用记录
- 价格计算过程日志
七、扩展性考虑
1. 规则引擎集成:考虑使用Drools等规则引擎实现复杂促销规则
2. 价格策略插件化:支持通过插件方式添加新的定价策略
3. 多维度价格视图:支持按供应商、品类、季节等维度分析价格
4. AI定价辅助:集成机器学习模型提供定价建议
该价格管理模块的设计充分考虑了生鲜电商的业务特点,通过灵活的价格策略、高效的计算引擎和完善的监控机制,能够满足生鲜行业价格波动频繁、促销活动复杂等特殊需求。