一、起订量设置的核心需求
1. 业务场景覆盖
- 按商品维度:不同水果(如易损品、进口品)设置差异化起订量(如车厘子5箱起订,苹果10箱起订)。
- 按客户等级:VIP客户可享受更低起订量(如普通客户10箱,VIP客户5箱)。
- 按时间段:促销期临时调整起订量(如节假日期间起订量减半)。
- 按库存动态:库存紧张时提高起订量,避免零散订单。
2. 系统灵活性要求
- 支持快速修改起订量规则,无需代码级开发。
- 与价格、库存、促销等模块联动,确保数据一致性。
- 提供多维度查询与统计(如按商品、客户、时间分析起订量效果)。
二、万象源码部署下的实现方案
1. 数据库设计优化
- 表结构扩展:
在商品表(`product`)中新增字段:
```sql
min_order_quantity INT DEFAULT 0 COMMENT 起订量,
min_order_unit VARCHAR(20) COMMENT 起订单位(箱/件/kg),
is_dynamic_min_order TINYINT(1) DEFAULT 0 COMMENT 是否动态起订量
```
- 动态规则表:
创建`dynamic_min_order_rule`表,存储时间、客户等级等条件与起订量的映射关系:
```sql
id INT PRIMARY KEY AUTO_INCREMENT,
rule_name VARCHAR(50) COMMENT 规则名称,
product_id INT COMMENT 关联商品ID,
customer_level_id INT COMMENT 客户等级ID,
start_time DATETIME COMMENT 生效开始时间,
end_time DATETIME COMMENT 生效结束时间,
min_quantity INT COMMENT 动态起订量,
status TINYINT(1) DEFAULT 1 COMMENT 是否启用
```
2. 业务逻辑实现
- 起订量计算服务:
开发独立服务(如`MinOrderQuantityService`),根据订单上下文(商品、客户、时间)动态返回起订量:
```java
public int calculateMinOrderQuantity(Long productId, Long customerId, Date orderTime) {
// 1. 查询商品基础起订量
Product product = productRepository.findById(productId);
if (product.getIsDynamicMinOrder() == 0) {
return product.getMinOrderQuantity();
}
// 2. 查询动态规则(按优先级:客户等级 > 时间段 > 默认)
List rules = dynamicRuleRepository.findByConditions(
productId, customerId, orderTime);
if (!rules.isEmpty()) {
return rules.get(0).getMinQuantity(); // 取最高优先级规则
}
return product.getMinOrderQuantity(); // 回退到基础值
}
```
- 订单校验拦截器:
在订单创建流程中添加校验逻辑,若订单数量低于计算值,则拦截并提示用户:
```java
public void validateOrderQuantity(OrderRequest request) {
int minQty = minOrderService.calculateMinOrderQuantity(
request.getProductId(),
request.getCustomerId(),
new Date());
if (request.getQuantity() < minQty) {
throw new BusinessException("起订量为" + minQty + request.getUnit() + ",当前数量不足");
}
}
```
3. 前端交互优化
- 商品详情页:
动态显示起订量规则(如“VIP客户享5箱起订,普通客户10箱起订”)。
- 购物车提示:
若用户添加数量不足,实时提示剩余需购买数量。
- 管理后台:
提供可视化规则配置界面,支持按条件筛选、批量修改起订量。
4. 万象源码部署适配
- 模块化设计:
将起订量服务封装为独立微服务,通过API与主系统交互,降低耦合度。
- 配置化支持:
利用万象的配置中心(如Nacos、Apollo),动态调整规则生效范围(如测试环境/生产环境)。
- 多环境部署:
通过Docker容器化部署,结合K8s实现灰度发布,确保规则变更不影响线上业务。
三、扩展功能建议
1. 起订量与价格联动:
当起订量满足阈值时,自动触发阶梯折扣(如“满10箱享9折”)。
2. 库存预警集成:
若库存低于起订量倍数(如库存仅剩8箱,起订量10箱),自动调整规则或提示补货。
3. 数据分析看板:
统计起订量规则对订单转化率、客单价的影响,辅助运营决策。
四、实施步骤
1. 需求分析:明确业务场景与优先级(如先实现商品维度,再扩展客户等级)。
2. 源码改造:基于万象框架扩展数据库表与业务逻辑。
3. 测试验证:通过单元测试、接口测试覆盖动态规则场景。
4. 上线监控:部署后监控系统日志与用户反馈,及时优化规则。
通过上述方案,可实现水果批发系统中起订量的灵活管理,同时利用万象源码的部署优势,确保系统扩展性与维护性。