一、需求分析
针对川味冻品行业特点,批量价格调整功能需要满足以下核心需求:
1. 支持按品类(如火锅食材、腌制肉类、速冻小吃等)批量调整
2. 支持按供应商或品牌批量调整
3. 支持按季节性促销策略批量调整
4. 支持价格调整历史追溯和回滚
5. 支持不同渠道(批发/零售/电商)差异化价格调整
二、系统架构设计
1. 数据库设计
```sql
-- 价格调整主表
CREATE TABLE price_adjustment (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
adjustment_name VARCHAR(100) NOT NULL COMMENT 调整批次名称,
adjustment_type TINYINT NOT NULL COMMENT 1-品类 2-供应商 3-品牌 4-促销,
adjustment_mode TINYINT NOT NULL COMMENT 1-百分比 2-固定金额,
adjustment_value DECIMAL(10,2) NOT NULL COMMENT 调整值,
effective_date DATE NOT NULL COMMENT 生效日期,
expiry_date DATE COMMENT 失效日期,
status TINYINT DEFAULT 0 COMMENT 0-草稿 1-已执行 2-已撤销,
operator VARCHAR(50) NOT NULL COMMENT 操作人,
create_time DATETIME NOT NULL,
update_time DATETIME NOT NULL
);
-- 价格调整明细表
CREATE TABLE price_adjustment_detail (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
adjustment_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 调整后价格,
sku_code VARCHAR(50) NOT NULL COMMENT SKU编码,
product_name VARCHAR(100) NOT NULL COMMENT 产品名称,
category_id BIGINT COMMENT 品类ID,
supplier_id BIGINT COMMENT 供应商ID,
brand_id BIGINT COMMENT 品牌ID,
FOREIGN KEY (adjustment_id) REFERENCES price_adjustment(id)
);
```
2. 核心功能模块
1. 批量选择模块
- 支持多条件组合筛选(品类、供应商、品牌、库存状态等)
- 支持Excel导入批量选择
- 支持树形结构品类选择
2. 价格调整策略引擎
```java
public interface PriceAdjustmentStrategy {
void executeAdjustment(List
products, AdjustmentParam param);
}
// 百分比调整策略
public class PercentageAdjustmentStrategy implements PriceAdjustmentStrategy {
@Override
public void executeAdjustment(List products, AdjustmentParam param) {
products.forEach(product -> {
BigDecimal newPrice = product.getPrice()
.multiply(BigDecimal.ONE.add(param.getPercentage()));
// 保存调整记录
});
}
}
```
3. 价格计算服务
```java
@Service
public class PriceCalculationService {
public BigDecimal calculateAdjustedPrice(BigDecimal originalPrice,
AdjustmentType type, BigDecimal value) {
switch(type) {
case PERCENTAGE:
return originalPrice.multiply(BigDecimal.ONE.add(value.divide(BigDecimal.valueOf(100))));
case FIXED_AMOUNT:
return originalPrice.add(value);
default:
return originalPrice;
}
}
}
```
4. 历史价格追溯
- 记录每次价格调整的完整历史
- 支持按时间点查询历史价格
- 支持价格调整回滚功能
三、关键实现技术
1. 批量处理优化
- 使用Spring Batch进行批量数据处理
- 分批次处理(如每次1000条)避免内存溢出
- 异步处理机制,避免前端长时间等待
2. 价格调整规则验证
```java
public class PriceAdjustmentValidator {
public void validate(AdjustmentParam param) {
// 验证调整比例是否在合理范围(-50%到200%)
if (param.getType() == AdjustmentType.PERCENTAGE &&
(param.getValue().compareTo(BigDecimal.valueOf(-50)) < 0 ||
param.getValue().compareTo(BigDecimal.valueOf(200)) > 0)) {
throw new BusinessException("价格调整比例超出允许范围");
}
// 验证生效日期是否合理
if (param.getEffectiveDate().before(new Date())) {
throw new BusinessException("生效日期不能早于当前日期");
}
}
}
```
3. 多级价格体系支持
- 基础价格
- 渠道价格(批发/零售/电商)
- 会员等级价格
- 促销价格
四、川味冻品行业特性实现
1. 季节性价格调整
- 预设节假日价格模板(春节、端午节等)
- 夏季冷藏品价格浮动策略
2. 辣度分级定价
- 支持按产品辣度等级设置不同价格系数
3. 套餐组合定价
- 支持火锅套餐等组合产品的批量价格调整
4. 保质期关联定价
- 临近保质期产品的自动降价策略
五、前端实现要点
1. 批量选择界面
- 左侧树形品类选择
- 右侧产品列表(支持多选)
- 顶部筛选条件(供应商、品牌等)
2. 价格调整预览
- 调整前/后价格对比表格
- 调整幅度颜色标识(红色降价/绿色涨价)
- 预计影响销售额计算
3. 操作日志
- 完整记录每次价格调整操作
- 支持按操作人、时间范围筛选
六、测试与部署
1. 测试用例
- 边界值测试(最大/最小调整比例)
- 大数据量测试(10万+产品批量调整)
- 并发测试(多用户同时调整)
2. 部署方案
- 蓝绿部署策略
- 数据库读写分离
- 关键操作事务控制
七、扩展功能建议
1. 智能调价建议
- 基于历史销售数据的调价建议
- 竞争对手价格监控自动调价
2. 价格调整审批流
- 多级审批机制
- 调整记录电子签名
3. 移动端支持
- 价格调整审批移动端处理
- 现场调价扫码操作
通过以上方案实现,可以构建一个高效、灵活且符合川味冻品行业特性的批量价格调整系统,帮助企业快速响应市场变化,提高价格管理效率。