一、模块概述
价格管理模块是生鲜电商系统的核心功能之一,负责处理商品定价、价格调整、促销活动、价格监控等业务逻辑。针对生鲜行业特点,该模块需支持动态定价、分时段定价、区域定价等特殊需求。
二、核心功能设计
1. 基础定价功能
- 商品基准价管理:设置商品的基础销售价格
- 成本价管理:记录采购成本、运输成本等
- 毛利率计算:自动计算当前毛利率
- 价格有效期:支持价格生效和失效时间设置
2. 动态定价策略
- 时段定价:支持不同时间段设置不同价格(如早晚市价格)
- 库存定价:根据库存量自动调整价格(如清仓促销)
- 新鲜度定价:根据商品保质期剩余时间动态调整价格
- 竞品对标:自动获取竞品价格并建议调整
3. 促销管理
- 满减活动:满X元减Y元
- 折扣活动:百分比折扣或固定金额折扣
- 买赠活动:买A送B
- 限时特价:指定时间段内的特价商品
- 会员专享价:不同会员等级不同价格
4. 区域定价
- 按城市/区域定价:不同地区设置不同价格
- 物流成本加成:根据配送距离自动计算附加费用
- 区域促销:针对特定区域开展促销活动
三、技术实现方案
1. 数据库设计
```sql
-- 商品价格主表
CREATE TABLE product_price (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_id BIGINT NOT NULL,
base_price DECIMAL(10,2) NOT NULL,
cost_price DECIMAL(10,2) NOT NULL,
market_price DECIMAL(10,2),
status TINYINT DEFAULT 1 COMMENT 1-有效 0-无效,
create_time DATETIME,
update_time DATETIME,
FOREIGN KEY (product_id) REFERENCES product(id)
);
-- 价格历史记录
CREATE TABLE price_history (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_id BIGINT NOT NULL,
price DECIMAL(10,2) NOT NULL,
price_type TINYINT NOT NULL COMMENT 1-基准价 2-促销价 3-会员价,
start_time DATETIME NOT NULL,
end_time DATETIME,
operator VARCHAR(50),
change_reason VARCHAR(200),
create_time DATETIME,
FOREIGN KEY (product_id) REFERENCES product(id)
);
-- 促销活动表
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 1-进行中 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-全店级,
condition_json TEXT COMMENT 条件JSON,
benefit_json TEXT COMMENT 优惠JSON,
priority INT DEFAULT 0 COMMENT 优先级,
FOREIGN KEY (promotion_id) REFERENCES promotion(id)
);
```
2. 核心服务实现
```java
public class PriceService {
@Autowired
private PriceRepository priceRepository;
@Autowired
private PromotionRepository promotionRepository;
/
* 获取商品当前有效价格(考虑促销)
*/
public PriceDTO getCurrentPrice(Long productId, Long userId, String regionCode) {
// 1. 获取基准价
Price basePrice = priceRepository.findActiveBasePrice(productId);
// 2. 检查适用促销
List
applicablePromos = promotionRepository.findApplicablePromotions(
productId, userId, regionCode, LocalDateTime.now());
// 3. 计算最终价格(简化逻辑,实际需更复杂计算)
PriceDTO priceDTO = new PriceDTO();
priceDTO.setBasePrice(basePrice.getPrice());
if (!applicablePromos.isEmpty()) {
// 选择最优促销(按优先级)
Promotion bestPromo = applicablePromos.get(0);
priceDTO.setFinalPrice(applyPromotion(basePrice.getPrice(), bestPromo));
priceDTO.setPromotionInfo(buildPromotionInfo(bestPromo));
} else {
priceDTO.setFinalPrice(basePrice.getPrice());
}
return priceDTO;
}
private BigDecimal applyPromotion(BigDecimal basePrice, Promotion promo) {
// 根据促销类型应用不同计算逻辑
switch (promo.getType()) {
case 1: // 满减
// 实现满减逻辑
break;
case 2: // 折扣
// 实现折扣逻辑
break;
// 其他促销类型...
}
return basePrice;
}
// 其他方法...
}
```
3. 动态定价算法实现
```java
public class DynamicPricingEngine {
/
* 根据库存和保质期计算动态价格
*/
public BigDecimal calculateDynamicPrice(Product product, Inventory inventory) {
BigDecimal basePrice = product.getBasePrice();
// 1. 库存影响因子
double inventoryFactor = calculateInventoryFactor(inventory.getQuantity(),
product.getOptimalInventoryLevel());
// 2. 保质期影响因子
double shelfLifeFactor = calculateShelfLifeFactor(product.getShelfLifeDays(),
product.getRemainingShelfLife());
// 综合计算
return basePrice.multiply(BigDecimal.valueOf(inventoryFactor))
.multiply(BigDecimal.valueOf(shelfLifeFactor))
.setScale(2, RoundingMode.HALF_UP);
}
private double calculateInventoryFactor(int currentQty, int optimalQty) {
// 库存越多,价格越低(示例逻辑)
double deviation = (double)(currentQty - optimalQty) / optimalQty;
return 1 - Math.min(0.3, Math.abs(deviation) * 0.1); // 最大折扣30%
}
private double calculateShelfLifeFactor(int totalDays, int remainingDays) {
// 剩余保质期越短,价格越低
double percentageRemaining = (double)remainingDays / totalDays;
return Math.max(0.5, percentageRemaining); // 最低5折
}
}
```
三、系统架构设计
1. 分层架构
- 表现层:提供价格管理界面(Web/APP)
- 业务逻辑层:处理价格计算、促销规则应用等
- 数据访问层:操作数据库,管理价格数据
- 集成层:与库存系统、会员系统等集成
2. 微服务架构(可选)
将价格管理模块拆分为独立微服务:
- 价格计算服务:负责实时价格计算
- 促销管理服务:管理促销活动规则
- 价格监控服务:监控竞品价格和市场波动
四、关键技术考虑
1. 高性能计算:
- 使用Redis缓存热门商品价格
- 价格计算结果缓存策略
2. 数据一致性:
- 价格变更的最终一致性保证
- 分布式锁机制防止并发修改
3. 实时性要求:
- 价格变更的实时生效
- 促销活动的准时开启/关闭
4. 审计追踪:
- 完整记录价格变更历史
- 操作日志记录
五、测试策略
1. 单元测试:
- 价格计算逻辑
- 促销规则应用
2. 集成测试:
- 与库存系统的集成
- 与会员系统的集成
3. 性能测试:
- 高并发下的价格查询
- 促销活动开始时的系统负载
4. A/B测试:
- 不同定价策略的效果对比
- 促销活动的效果评估
六、部署与运维
1. 灰度发布:
- 新价格策略先在小范围测试
- 逐步扩大应用范围
2. 监控告警:
- 价格计算异常监控
- 促销活动执行监控
3. 回滚机制:
- 价格变更错误时的快速回滚
- 促销活动异常时的终止
七、扩展功能考虑
1. 智能定价:
- 基于机器学习的需求预测
- 竞争对手价格监控自动调价
2. 价格优化:
- 动态调整价格以最大化利润
- 清仓策略自动化
3. 多渠道价格管理:
- 不同销售渠道的价格策略
- 线上线下价格协同
该价格管理模块设计充分考虑了生鲜行业的特殊性,能够支持复杂的定价策略和动态调整需求,同时保证系统的高可用性和性能。