一、模块概述
价格管理模块是生鲜电商系统的核心功能之一,负责管理商品价格体系、促销活动、价格策略等。针对生鲜行业特点,该模块需要支持动态定价、多维度价格规则、库存联动等特性。
二、核心功能设计
1. 基础价格管理
- 商品基准价设置:支持按SKU设置标准售价、成本价、市场参考价
- 价格有效期管理:可设置价格生效和失效时间
- 价格批量导入:支持Excel模板批量上传价格信息
- 价格历史记录:自动记录价格变更历史,支持回溯查询
2. 动态定价引擎
- 规则引擎:基于时间、库存、销量、竞争对手价格等维度设置定价规则
- 算法定价:集成简单算法(如成本加成)或机器学习模型(如需求预测定价)
- 生鲜特性支持:
- 新鲜度定价(根据保质期剩余时间调整价格)
- 损耗率定价(根据预期损耗自动调整售价)
- 季节性定价(支持按季节设置价格浮动系数)
3. 促销管理
- 促销活动类型:
- 满减/满折
- 直降/限时特价
- 买赠/第二件半价
- 会员专属价
- 活动规则配置:支持按商品分类、品牌、时间段等维度设置活动
- 预算控制:设置活动总预算和单日预算限制
4. 价格策略管理
- 区域定价:支持按城市、区域设置差异化价格
- 客户群体定价:针对企业客户、会员等设置专属价格
- 批量定价:支持按采购量设置阶梯价格
- 组合定价:支持套餐商品组合定价
5. 价格监控与预警
- 价格异常检测:自动检测明显高于/低于市场价的商品
- 竞品价格监控:集成第三方数据对比竞品价格
- 预警机制:价格变动超过阈值时通知相关人员
三、技术实现方案
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) NOT NULL,
market_price DECIMAL(10,2),
currency VARCHAR(10) DEFAULT CNY,
create_time DATETIME,
update_time DATETIME,
operator VARCHAR(50)
);
-- 价格规则表
CREATE TABLE price_rule (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
rule_name VARCHAR(100) NOT NULL,
rule_type ENUM(TIME, INVENTORY, SALES, COMPETITOR) NOT NULL,
parameters TEXT,
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 ENUM(DISCOUNT, FULL_REDUCTION, GIFT) NOT NULL,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
status TINYINT DEFAULT 0,
create_by VARCHAR(50),
create_time DATETIME
);
-- 促销商品关联表
CREATE TABLE promo_product (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promo_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
discount_rate DECIMAL(5,2),
discount_amount DECIMAL(10,2),
max_discount_amount DECIMAL(10,2),
limit_quantity INT,
FOREIGN KEY (promo_id) REFERENCES promotion(id)
);
```
3. 核心类设计
```java
// 价格规则基类
public abstract class PricingRule {
protected String ruleId;
protected String ruleName;
protected Date effectiveFrom;
protected Date effectiveTo;
protected boolean isActive;
public abstract BigDecimal calculatePrice(Product product, Context context);
}
// 时间基准定价规则
public class TimeBasedPricingRule extends PricingRule {
private TimeRange timeRange;
private BigDecimal priceMultiplier;
@Override
public BigDecimal calculatePrice(Product product, Context context) {
// 实现基于时间的定价逻辑
}
}
// 库存联动定价规则
public class InventoryLinkedPricingRule extends PricingRule {
private BigDecimal basePrice;
private BigDecimal lowInventoryThreshold;
private BigDecimal lowInventoryPriceMultiplier;
@Override
public BigDecimal calculatePrice(Product product, Context context) {
// 实现基于库存的定价逻辑
}
}
// 价格计算服务
public class PriceCalculationService {
private List
pricingRules;
public BigDecimal calculateFinalPrice(Product product, OrderContext context) {
// 应用所有适用规则计算最终价格
}
}
```
三、技术实现要点
1. 定价策略实现模式
- 策略模式:将不同定价策略封装为独立策略类
- 责任链模式:按优先级顺序应用多个定价规则
- 规则引擎:对于复杂规则可使用Drools等规则引擎
2. 实时价格计算
```java
public class RealTimePriceCalculator {
public PriceQuote getPrice(Product product, Customer customer,
Location location, DateTime requestTime) {
// 1. 应用基础价格
Price basePrice = priceRepository.findBasePrice(product.getSku());
// 2. 应用区域定价
Price regionalPrice = regionalPricingService.applyRegionalPricing(
basePrice, location);
// 3. 应用会员定价
Price memberPrice = memberPricingService.applyMemberPricing(
regionalPrice, customer);
// 4. 应用促销定价
Price promoPrice = promoPricingService.applyPromotions(
memberPrice, requestTime);
// 5. 应用动态定价规则
Price dynamicPrice = dynamicPricingService.applyDynamicRules(
promoPrice, product, requestTime);
return new PriceQuote(dynamicPrice, System.currentTimeMillis());
}
}
```
3. 缓存策略
- 使用Redis缓存商品基准价格
- 实现价格版本控制,每次价格变更生成新版本号
- 客户端查询时携带版本号,服务端返回差异更新
4. 价格计算性能优化
- 预计算常用组合价格
- 实现价格计算的批处理模式
- 对高并发商品实现本地缓存
四、生鲜行业特殊处理
1. 新鲜度定价
```java
public class FreshnessPricingStrategy {
public BigDecimal adjustPrice(Product product, LocalDateTime harvestTime) {
Duration shelfLife = Duration.between(harvestTime, LocalDateTime.now());
double daysOld = shelfLife.toDays();
// 示例:每天降价2%
double depreciationRate = 0.02;
double adjustmentFactor = Math.pow(1 - depreciationRate, daysOld);
return product.getBasePrice().multiply(BigDecimal.valueOf(adjustmentFactor));
}
}
```
2. 季节性价格波动
- 建立季节性价格指数表
- 根据当前季节自动调整基础价格
- 支持手动覆盖自动调整
3. 损耗补偿定价
```java
public class ShrinkagePricing {
public BigDecimal calculateWithShrinkage(BigDecimal basePrice, double shrinkageRate) {
// 损耗率补偿定价公式:最终价格 = 基础价格 / (1 - 损耗率)
return basePrice.divide(
BigDecimal.valueOf(1 - shrinkageRate),
2,
RoundingMode.HALF_UP
);
}
}
```
五、系统集成
1. 与库存系统集成:
- 实时获取库存水平作为动态定价参数
- 低库存时自动触发涨价规则
2. 与采购系统集成:
- 根据最新采购成本调整售价
- 成本波动时自动计算建议售价
3. 与营销系统集成:
- 促销活动信息同步
- 优惠券使用对价格的影响计算
六、安全与合规考虑
1. 价格修改审计:
- 所有价格变更记录操作人、时间、变更前后值
- 支持价格变更的审批流程
2. 数据加密:
- 敏感价格数据在传输和存储时加密
- 价格计算中间结果及时清理
3. 权限控制:
- 不同角色对价格信息的访问权限
- 价格修改需要多级审批
七、测试策略
1. 单元测试:
- 测试各种定价规则的单独应用
- 测试价格计算边界条件
2. 集成测试:
- 测试多规则组合应用
- 测试与库存系统的联动
3. 性能测试:
- 测试高并发下的价格查询性能
- 测试批量价格更新的性能
4. 用户验收测试:
- 模拟真实业务场景验证功能
- 测试用户界面友好性
八、部署与监控
1. 部署方案:
- 微服务架构,独立部署价格服务
- 使用容器化技术实现弹性扩展
2. 监控指标:
- 价格计算响应时间
- 价格变更频率
- 规则触发次数
- 缓存命中率
3. 告警机制:
- 异常价格变更告警
- 规则冲突告警
- 性能下降告警
九、实施路线图
1. 第一阶段(2周):
- 基础价格管理功能
- 简单规则引擎实现
2. 第二阶段(3周):
- 动态定价引擎
- 促销活动管理
3. 第三阶段(2周):
- 生鲜特性定价(新鲜度、损耗)
- 价格历史与回溯
4. 第四阶段(1周):
- 性能优化
- 监控与告警系统
该价格管理模块设计充分考虑了生鲜行业的特殊性,通过动态定价、多维度规则和性能优化,能够满足生鲜电商对价格灵活性和系统稳定性的双重需求。