一、模块概述
价格管理模块是生鲜电商系统的核心功能之一,负责管理商品的价格策略、促销活动、价格计算和展示等业务逻辑。针对生鲜行业特点,该模块需支持动态定价、分级定价、促销定价等复杂场景。
二、核心功能设计
1. 基础价格管理
- 商品基准价设置:支持按商品SKU设置基准采购价、销售价
- 价格有效期管理:可设置价格生效和失效时间
- 价格批量导入:支持Excel模板批量上传价格信息
- 价格历史记录:自动记录价格变更历史,支持回溯查询
2. 动态定价策略
- 成本加成定价:根据采购成本+固定/浮动利润率自动计算售价
- 市场参考定价:对接第三方数据源获取市场参考价
- 智能调价引擎:
- 基于库存水平的自动调价
- 基于保质期的阶梯降价
- 基于竞争对手价格的动态调整
3. 分级定价体系
- 客户等级定价:为不同等级客户(VIP/普通/批发)设置不同价格
- 区域定价:按配送区域设置差异化价格
- 渠道定价:为不同销售渠道(APP/小程序/PC)设置独立价格
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,
market_price DECIMAL(10,2),
cost_price DECIMAL(10,2),
currency VARCHAR(10) DEFAULT CNY,
status TINYINT DEFAULT 1 COMMENT 1-有效 0-无效,
create_time DATETIME,
update_time DATETIME,
UNIQUE KEY uk_sku (product_sku)
);
-- 价格策略表
CREATE TABLE price_strategy (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
strategy_name VARCHAR(100) NOT NULL,
strategy_type TINYINT NOT NULL COMMENT 1-成本加成 2-市场参考 3-智能调价,
params TEXT COMMENT JSON格式策略参数,
status TINYINT DEFAULT 1,
create_time DATETIME,
update_time DATETIME
);
-- 促销活动表
CREATE TABLE promotion (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promo_name VARCHAR(100) NOT NULL,
promo_type TINYINT NOT NULL COMMENT 1-满减 2-折扣 3-特价,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
status TINYINT DEFAULT 0 COMMENT 0-草稿 1-上线 2-下线,
priority INT DEFAULT 0,
create_time DATETIME,
update_time DATETIME
);
-- 促销规则表
CREATE TABLE promo_rule (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promo_id BIGINT NOT NULL,
rule_type TINYINT NOT NULL COMMENT 1-商品范围 2-客户范围 3-区域范围,
rule_condition TEXT COMMENT JSON格式条件,
benefit_type TINYINT NOT NULL COMMENT 1-金额 2-折扣率 3-赠品,
benefit_value DECIMAL(10,2) NOT NULL,
FOREIGN KEY (promo_id) REFERENCES promotion(id)
);
```
2. 核心类设计(Java示例)
```java
// 价格计算服务接口
public interface PriceCalculationService {
/
* 计算商品最终售价
* @param sku 商品SKU
* @param customerId 客户ID
* @param regionCode 区域编码
* @param quantity 购买数量
* @param channel 销售渠道
* @return 计算后的价格信息
*/
PriceCalculationResult calculatePrice(String sku, Long customerId,
String regionCode, int quantity,
String channel);
/
* 获取商品当前有效价格
*/
ProductPrice getCurrentPrice(String sku);
}
// 价格计算结果
public class PriceCalculationResult {
private BigDecimal finalPrice;
private BigDecimal originalPrice;
private BigDecimal discountAmount;
private String promoInfo;
private Date validUntil;
// getters and setters
}
// 价格策略执行器
public abstract class PriceStrategyExecutor {
public abstract BigDecimal execute(PriceStrategyContext context);
protected boolean isEligible(PriceStrategyContext context) {
// 实现策略适用条件判断
}
}
// 具体策略实现示例
public class CostPlusStrategyExecutor extends PriceStrategyExecutor {
@Override
public BigDecimal execute(PriceStrategyContext context) {
BigDecimal cost = context.getCostPrice();
BigDecimal markupRate = context.getStrategyParam("markup_rate");
return cost.multiply(BigDecimal.ONE.add(markupRate));
}
}
```
3. 价格计算流程
```
开始
│
├─ 获取商品基准价
│
├─ 应用分级定价规则(客户等级/区域/渠道)
│
├─ 检查适用促销活动(按优先级排序)
│ ├─ 满减/满折计算
│ ├─ 限时特价应用
│ └─ 组合优惠计算
│
├─ 应用动态定价策略(如有)
│ ├─ 库存水平调整
│ ├─ 保质期阶梯降价
│ └─ 市场竞争调整
│
├─ 最终价格验证(不低于成本价等业务规则)
│
└─ 返回计算结果
```
四、关键业务规则实现
1. 促销优先级处理
```java
public class PromotionPriorityResolver {
public List
resolvePriority(List promotions) {
// 1. 按手动设置的优先级排序
// 2. 同优先级按创建时间倒序
// 3. 排除相互冲突的促销
return promotions.stream()
.sorted(Comparator.comparingInt(Promotion::getPriority)
.thenComparing(Promotion::getCreateTime, Comparator.reverseOrder()))
.filter(this::checkConflict)
.collect(Collectors.toList());
}
private boolean checkConflict(Promotion promo) {
// 实现促销冲突检测逻辑
}
}
```
2. 动态价格计算
```java
public class DynamicPriceCalculator {
public BigDecimal calculateDynamicPrice(Product product,
Inventory inventory,
MarketData marketData) {
BigDecimal basePrice = product.getBasePrice();
// 库存影响因子
double inventoryFactor = calculateInventoryFactor(inventory);
// 市场波动因子
double marketFactor = calculateMarketFactor(marketData);
// 保质期因子(生鲜特有)
double shelfLifeFactor = calculateShelfLifeFactor(product);
return basePrice.multiply(BigDecimal.valueOf(
1 + inventoryFactor + marketFactor + shelfLifeFactor
)).setScale(2, RoundingMode.HALF_UP);
}
}
```
五、系统集成考虑
1. 与采购系统集成:获取最新采购成本作为定价基础
2. 与库存系统集成:实时获取库存水平影响定价
3. 与营销系统集成:同步促销活动信息
4. 与财务系统集成:提供价格变更审计日志
5. 与报表系统集成:提供价格分析数据
六、测试要点
1. 边界值测试:
- 价格精度处理(如0.99元与1.00元)
- 极值测试(最大/最小价格)
2. 组合测试:
- 多个促销活动叠加效果
- 分级定价与动态定价组合
3. 性能测试:
- 高并发场景下的价格计算响应时间
- 大批量价格更新时的系统稳定性
4. 异常测试:
- 无效价格输入处理
- 促销规则冲突检测
七、部署与运维
1. 灰度发布策略:
- 先在测试环境验证价格计算逻辑
- 逐步放开到部分用户/区域
2. 监控指标:
- 价格计算成功率
- 平均计算耗时
- 促销活动参与率
3. 应急方案:
- 价格计算服务降级策略
- 手动价格覆盖机制
该价格管理模块设计充分考虑了生鲜行业的特殊性,通过灵活的策略配置和动态计算能力,可满足生鲜电商复杂多变的定价需求。实际开发时需根据具体业务场景进行调整和优化。