一、模块概述 价格管理模块是生鲜电商系统的核心功能之一,负责处理商品定价、促销活动、价格调整、成本核算等业务逻辑。针对生鲜行业特点,该模块需要支持动态定价、多维度价格策略、库存联动等功能。 二、核心功能设计 1.基础价格管理 -商品基准价设置:支持按品类、供应商、规格等维
一、模块概述
价格管理模块是生鲜电商系统的核心功能之一,负责处理商品定价、促销活动、价格调整、成本核算等业务逻辑。针对生鲜行业特点,该模块需要支持动态定价、多维度价格策略、库存联动等功能。
二、核心功能设计
1. 基础价格管理
- 商品基准价设置:支持按品类、供应商、规格等维度设置基础价格
- 多级价格体系:
- 采购价(成本价)
- 批发价(不同采购量对应不同价格)
- 零售价(面向终端消费者)
- 会员价(不同会员等级对应不同折扣)
- 价格有效期管理:支持设置价格生效和失效时间
2. 动态定价机制
- 时间维度定价:
- 早市/晚市不同价格
- 节假日特殊定价
- 库存联动定价:
- 临期商品自动降价
- 库存积压预警降价
- 市场行情定价:
- 对接第三方价格指数API
- 竞争对手价格监控与自动调价
3. 促销活动管理
- 满减活动:满X元减Y元
- 折扣活动:全场X折或指定商品X折
- 买赠活动:买A送B或买X件送Y件
- 秒杀活动:限时特价商品
- 组合套餐:多商品组合优惠定价
4. 价格计算引擎
- 复杂价格计算逻辑:
```java
public BigDecimal calculateFinalPrice(OrderItem item, Customer customer,
Date orderTime, Inventory inventory) {
// 1. 获取基准价
BigDecimal basePrice = item.getBasePrice();
// 2. 应用会员折扣
BigDecimal memberDiscount = customer.getMemberLevel().getDiscount();
// 3. 检查促销活动
Promotion promotion = promotionService.getActivePromotion(item, orderTime);
// 4. 考虑库存状态
if(inventory.getDaysRemaining() < 3) {
// 临期商品额外折扣
basePrice = basePrice.multiply(new BigDecimal("0.8"));
}
// 5. 综合计算最终价格
BigDecimal finalPrice = basePrice;
if(promotion != null) {
finalPrice = promotion.applyDiscount(finalPrice);
}
finalPrice = finalPrice.multiply(memberDiscount);
return finalPrice.setScale(2, RoundingMode.HALF_UP);
}
```
5. 价格历史与审计
- 价格变更记录:记录每次价格调整的操作人、时间、变更前后值
- 价格审批流程:重要价格变更需经过审批
- 价格对比分析:支持历史价格趋势分析
三、技术实现方案
1. 数据库设计
```sql
CREATE TABLE product_price (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_id BIGINT NOT NULL,
price_type ENUM(BASE, WHOLESALE, RETAIL, MEMBER) NOT NULL,
member_level_id BIGINT, -- 仅会员价使用
amount DECIMAL(10,2) NOT NULL,
min_quantity INT DEFAULT 1, -- 批发价最小购买量
start_time DATETIME,
end_time DATETIME,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY (product_id) REFERENCES products(id),
FOREIGN KEY (member_level_id) REFERENCES member_levels(id)
);
CREATE TABLE promotions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
promotion_type ENUM(DISCOUNT, FULL_REDUCTION, BUY_GIFT, SECKILL) NOT NULL,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
status ENUM(DRAFT, ACTIVE, EXPIRED) NOT NULL DEFAULT DRAFT,
created_by BIGINT NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
);
CREATE TABLE promotion_rules (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promotion_id BIGINT NOT NULL,
rule_type ENUM(PRODUCT, CATEGORY, ALL) NOT NULL,
target_id BIGINT, -- 产品ID或品类ID
discount_rate DECIMAL(5,2), -- 折扣率
reduction_amount DECIMAL(10,2), -- 减额
gift_product_id BIGINT, -- 买赠商品ID
min_quantity INT, -- 满减或买赠的最小数量
min_amount DECIMAL(10,2), -- 满减的最小金额
FOREIGN KEY (promotion_id) REFERENCES promotions(id),
FOREIGN KEY (gift_product_id) REFERENCES products(id)
);
```
2. 核心类设计
```java
// 价格服务接口
public interface PriceService {
// 获取商品当前有效价格
PriceInfo getCurrentPrice(Long productId, Integer quantity, Long customerId);
// 计算订单项最终价格
OrderItemPrice calculateOrderItemPrice(OrderItem item, Customer customer);
// 创建或更新价格
PriceInfo savePrice(PriceCreateRequest request);
// 获取价格变更历史
List
getPriceHistory(Long productId);
}
// 价格实体类
public class PriceInfo {
private Long id;
private Long productId;
private BigDecimal basePrice;
private BigDecimal wholesalePrice;
private BigDecimal retailPrice;
private BigDecimal memberPrice;
private Date effectiveFrom;
private Date effectiveTo;
// getters & setters
}
// 促销规则引擎
public class PromotionEngine {
public List applyPromotions(List items, Customer customer, Date orderTime) {
// 实现促销规则匹配和计算逻辑
}
}
```
3. 价格计算流程
1. 用户发起价格查询请求
2. 系统检查商品基础价格
3. 应用会员折扣(如果有)
4. 检查当前生效的促销活动
5. 考虑库存状态对价格的影响
6. 综合计算最终价格
7. 返回价格信息并记录查询日志
四、生鲜行业特殊考虑
1. 损耗成本计算:将生鲜损耗率纳入成本计算
2. 季节性定价:支持按季节自动调整价格
3. 品质分级定价:不同品质等级对应不同价格
4. 产地直供定价:支持产地价格直接映射到销售端
5. 预售定价策略:支持预售商品特殊定价逻辑
五、性能优化方案
1. 价格缓存:使用Redis缓存热门商品价格
2. 异步计算:复杂价格计算采用异步方式
3. 批量查询优化:支持批量获取多个商品价格
4. 预计算服务:夜间批量预计算次日价格
六、测试用例示例
1. 基础价格测试:
- 验证不同会员等级获取正确价格
- 验证批发价在不同采购量下的正确性
2. 促销活动测试:
- 验证满减活动是否正确应用
- 验证买赠活动是否正确添加赠品
- 验证促销活动时间范围外的商品不享受优惠
3. 动态定价测试:
- 验证临期商品自动降价逻辑
- 验证库存积压预警降价功能
4. 边界条件测试:
- 价格为0或负数的处理
- 促销活动重叠时的优先级处理
- 大量商品同时价格变更的性能测试
七、部署与监控
1. 监控指标:
- 价格计算响应时间
- 价格查询QPS
- 促销活动参与率
- 价格变更频率
2. 告警规则:
- 价格计算超时告警
- 异常价格变更告警
- 促销活动未生效告警
该价格管理模块设计充分考虑了生鲜行业的特殊需求,通过灵活的价格策略和动态定价机制,能够帮助美菜生鲜实现精细化运营,提升利润空间和客户满意度。