一、需求分析
针对川味冻品行业特点,批量价格调整功能需要满足以下核心需求:
1. 支持按品类(如火锅食材、川味调料、速冻川菜等)批量调整
2. 支持按供应商/品牌批量调整
3. 支持按季节性促销规则调整
4. 支持按库存量动态调整价格
5. 保留完整的价格调整历史记录
二、系统架构设计
1. 数据库设计
```sql
-- 价格调整记录表
CREATE TABLE price_adjustment_log (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
adjustment_name VARCHAR(100) NOT NULL COMMENT 调整名称,
adjustment_type TINYINT NOT NULL COMMENT 1-品类 2-供应商 3-库存 4-促销,
target_ids VARCHAR(1000) NOT NULL COMMENT 目标ID集合,
adjustment_rule VARCHAR(500) NOT NULL COMMENT 调整规则(如:+10%,-5元),
start_time DATETIME COMMENT 生效时间,
end_time DATETIME COMMENT 失效时间,
operator_id BIGINT NOT NULL COMMENT 操作人ID,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
status TINYINT DEFAULT 1 COMMENT 1-有效 0-失效
);
-- 价格调整明细表
CREATE TABLE price_adjustment_detail (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
log_id BIGINT NOT NULL COMMENT 关联调整记录ID,
product_id BIGINT NOT NULL COMMENT 商品ID,
original_price DECIMAL(10,2) NOT NULL COMMENT 原价,
adjusted_price DECIMAL(10,2) NOT NULL COMMENT 调整后价格,
adjustment_amount DECIMAL(10,2) NOT NULL COMMENT 调整金额,
adjustment_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
```
2. 核心功能模块
1. 批量调整规则引擎
- 支持百分比调整(如所有火锅食材价格上涨5%)
- 支持固定金额调整(如所有川味调料降价3元)
- 支持条件组合调整(如库存>100件的商品降价8%)
2. 价格计算服务
```java
public class PriceCalculator {
public BigDecimal calculateAdjustedPrice(BigDecimal originalPrice,
String adjustmentRule) {
// 解析调整规则并计算新价格
// 示例规则: "+10%" 或 "-5" 或 "set:29.9"
// 实现具体计算逻辑
}
}
```
3. 价格历史服务
```java
public interface PriceHistoryService {
// 获取商品历史价格
List
getProductPriceHistory(Long productId);
// 获取某次调整的详细记录
List getAdjustmentDetails(Long logId);
}
```
三、批量价格调整实现流程
1. 前端界面设计
- 调整类型选择(品类/供应商/库存/促销)
- 目标选择(多选框或搜索筛选)
- 调整规则配置(百分比/固定金额/条件组合)
- 生效时间设置
2. 后端处理流程
```
1. 接收前端请求参数
2. 验证参数有效性
3. 查询符合条件的商品列表
4. 计算每个商品的新价格
5. 生成价格调整记录
6. 记录调整明细
7. 返回操作结果
```
3. 关键代码实现
```java
@Transactional
public BatchPriceAdjustmentResult batchAdjustPrices(BatchPriceAdjustmentRequest request) {
// 1. 查询目标商品
List targetProducts = productService.findByCondition(request);
// 2. 创建调整记录
PriceAdjustmentLog log = new PriceAdjustmentLog();
// 设置log属性...
priceAdjustmentLogRepository.save(log);
// 3. 批量处理价格
List details = new ArrayList<>();
for (Product product : targetProducts) {
BigDecimal originalPrice = product.getPrice();
BigDecimal adjustedPrice = priceCalculator.calculate(originalPrice, request.getRule());
PriceAdjustmentDetail detail = new PriceAdjustmentDetail();
detail.setLogId(log.getId());
detail.setProductId(product.getId());
detail.setOriginalPrice(originalPrice);
detail.setAdjustedPrice(adjustedPrice);
// 其他属性设置...
details.add(detail);
// 更新商品价格(可选:可设置为异步执行)
product.setPrice(adjustedPrice);
productService.updatePrice(product);
}
// 4. 保存调整明细
priceAdjustmentDetailRepository.saveAll(details);
return new BatchPriceAdjustmentResult(log.getId(), details.size());
}
```
四、川味冻品行业特殊考虑
1. 季节性价格调整
- 针对川味火锅食材冬季涨价、夏季促销的规律
- 可预设季节性价格模板
2. 促销活动支持
- 满减活动与批量调价的协同处理
- 组合商品的价格计算逻辑
3. 区域价格差异
- 支持按区域(如川渝地区与其他地区)设置不同调整规则
4. 保质期相关调价
- 临近保质期的冻品自动降价规则
五、测试与部署
1. 测试用例
- 单品类批量调整测试
- 跨品类组合调整测试
- 大数据量性能测试(如10万+商品调整)
- 价格调整回滚测试
2. 部署方案
- 灰度发布策略,先在测试环境验证
- 重要调整设置审核流程
- 价格调整操作日志完整记录
六、扩展功能建议
1. 价格调整效果分析报表
2. 智能调价建议(基于历史销售数据)
3. 竞争对手价格监控联动
4. 移动端价格调整审批流程
通过以上方案,可以实现川味冻品系统高效、准确的批量价格调整功能,满足行业特有的业务需求。