一、需求分析
针对川味冻品行业的批发管理系统,需要实现高效的批量价格调整功能,主要满足以下场景:
- 季节性价格调整(如火锅食材冬季涨价)
- 促销活动批量调价
- 成本变动导致的批量价格更新
- 不同区域/渠道的差异化定价
二、系统架构设计
1. 数据库设计
```sql
-- 商品基础表
CREATE TABLE product (
product_id VARCHAR(32) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
category_id VARCHAR(32),
spec VARCHAR(50),
unit VARCHAR(20),
current_price DECIMAL(10,2) NOT NULL,
cost_price DECIMAL(10,2),
status TINYINT DEFAULT 1
);
-- 价格调整记录表
CREATE TABLE price_adjustment (
adjustment_id VARCHAR(32) PRIMARY KEY,
adjustment_name VARCHAR(100) NOT NULL,
adjustment_type TINYINT COMMENT 1-百分比调整 2-固定金额调整,
adjustment_value DECIMAL(10,2) NOT NULL,
is_increase BOOLEAN DEFAULT TRUE,
effective_date DATETIME NOT NULL,
expiry_date DATETIME,
created_by VARCHAR(50),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
status TINYINT DEFAULT 0 COMMENT 0-待执行 1-已执行 2-已取消
);
-- 价格调整明细表
CREATE TABLE price_adjustment_detail (
detail_id VARCHAR(32) PRIMARY KEY,
adjustment_id VARCHAR(32),
product_id VARCHAR(32),
original_price DECIMAL(10,2),
adjusted_price DECIMAL(10,2),
adjustment_amount DECIMAL(10,2),
FOREIGN KEY (adjustment_id) REFERENCES price_adjustment(adjustment_id),
FOREIGN KEY (product_id) REFERENCES product(product_id)
);
```
2. 核心功能模块
1. 批量选择模块
- 按品类筛选(如冻肉、火锅食材、川味调料等)
- 按价格区间筛选
- 按库存状态筛选
- 自定义条件组合筛选
2. 价格调整策略模块
- 统一调整(所有选中商品相同调整比例/金额)
- 分类调整(不同品类不同调整策略)
- 阶梯调整(根据原价区间设置不同调整规则)
- 公式调整(如成本价×1.3+2)
3. 执行与回滚模块
- 预览调整结果
- 执行调整(记录调整前价格)
- 调整历史查询
- 回滚指定调整
三、关键实现代码(Java示例)
```java
// 价格调整服务类
@Service
public class PriceAdjustmentService {
@Autowired
private ProductRepository productRepository;
@Autowired
private PriceAdjustmentRepository adjustmentRepository;
@Autowired
private PriceAdjustmentDetailRepository detailRepository;
@Transactional
public AdjustmentResult executeBatchPriceAdjustment(AdjustmentRequest request) {
// 1. 验证调整参数
validateAdjustmentRequest(request);
// 2. 查询符合条件的商品
List
products = productRepository.findByCriteria(
request.getCategoryIds(),
request.getMinPrice(),
request.getMaxPrice()
);
// 3. 创建调整记录
PriceAdjustment adjustment = new PriceAdjustment(
request.getAdjustmentName(),
request.getAdjustmentType(),
request.getAdjustmentValue(),
request.getIsIncrease(),
request.getEffectiveDate(),
request.getExpiryDate(),
request.getCreatedBy()
);
adjustment = adjustmentRepository.save(adjustment);
// 4. 计算调整后的价格并保存明细
List details = new ArrayList<>();
for (Product product : products) {
BigDecimal originalPrice = product.getCurrentPrice();
BigDecimal adjustedPrice = calculateAdjustedPrice(
originalPrice,
request.getAdjustmentType(),
request.getAdjustmentValue(),
request.getIsIncrease()
);
PriceAdjustmentDetail detail = new PriceAdjustmentDetail(
adjustment.getAdjustmentId(),
product.getProductId(),
originalPrice,
adjustedPrice,
adjustedPrice.subtract(originalPrice)
);
details.add(detail);
}
detailRepository.saveAll(details);
// 5. 实际更新商品价格(可选:可设置为定时任务执行)
if (request.isExecuteImmediately()) {
for (PriceAdjustmentDetail detail : details) {
productRepository.updatePrice(
detail.getProductId(),
detail.getAdjustedPrice()
);
}
adjustment.setStatus(1); // 已执行
}
adjustmentRepository.save(adjustment);
return new AdjustmentResult(adjustment, details);
}
private BigDecimal calculateAdjustedPrice(BigDecimal original, int type,
BigDecimal value, boolean isIncrease) {
if (type == 1) { // 百分比调整
BigDecimal percentage = value.divide(new BigDecimal("100"));
BigDecimal change = original.multiply(percentage);
return isIncrease ? original.add(change) : original.subtract(change);
} else { // 固定金额调整
return isIncrease ? original.add(value) : original.subtract(value);
}
}
}
```
四、前端界面设计要点
1. 调整策略选择
- 单选按钮:百分比调整/固定金额调整
- 输入框:调整值(带正负号)
- 日期选择器:生效日期和失效日期
2. 商品选择区域
- 树形品类选择器
- 价格区间滑块
- 搜索框(支持商品名称/编码)
- 已选商品列表(带删除功能)
3. 调整预览区域
- 表格展示:商品名称、规格、当前价、调整后价格、调整幅度
- 汇总信息:总商品数、总调整金额、平均调整幅度
4. 操作按钮
- 保存为草稿
- 立即执行
- 导出调整明细
五、特殊业务处理
1. 川味特色商品处理
- 对火锅食材类商品设置特殊调整规则
- 对节日性商品(如腊肉、香肠)设置季节性价格策略
2. 价格保护机制
- 设置最低/最高价格限制
- 防止价格调整后出现负毛利
- 调整幅度超过阈值时二次确认
3. 多级审批流程
- 大额价格调整需经理审批
- 跨品类调整需采购总监审批
- 审批流程配置化
六、测试要点
1. 功能测试
- 各种调整策略的正确性验证
- 边界值测试(如0%调整、100%调整)
- 异常情况处理(如库存不足商品)
2. 性能测试
- 批量调整1000+商品时的响应时间
- 并发调整测试
3. 数据一致性测试
- 调整过程中断时的数据恢复
- 调整记录与商品价格的一致性
七、部署与运维
1. 定时任务配置
- 预约调整任务的定时执行
- 调整失败的重试机制
2. 日志与监控
- 记录所有价格调整操作
- 设置价格异常变动报警
3. 回滚机制
- 支持按调整批次回滚
- 回滚时恢复商品原价
通过以上方案,可以实现川味冻品行业高效、安全、灵活的批量价格调整功能,满足冻品批发业务的特殊需求。