一、起订量设置的核心需求
1. 业务场景覆盖
- 不同商品类型(如整箱/散装)的差异化起订量
- 客户等级差异化(VIP客户可享受更低起订量)
- 促销活动临时调整(如满减活动期间降低起订量)
- 季节性商品动态调整(如应季水果批量采购优惠)
2. 技术要求
- 实时生效的配置更新
- 多维度条件组合(商品+客户+时间)
- 与库存、价格系统的联动
二、万象源码部署方案
1. 数据库设计优化
```sql
-- 商品起订量规则表
CREATE TABLE product_min_order (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
product_id BIGINT NOT NULL COMMENT 商品ID,
customer_level_id INT DEFAULT NULL COMMENT 客户等级ID,
min_quantity DECIMAL(10,2) NOT NULL COMMENT 最小起订量,
start_time DATETIME DEFAULT NULL COMMENT 生效开始时间,
end_time DATETIME DEFAULT NULL COMMENT 生效结束时间,
is_active TINYINT(1) DEFAULT 1 COMMENT 是否启用,
priority INT DEFAULT 0 COMMENT 规则优先级,
UNIQUE KEY uk_product_level (product_id, customer_level_id, start_time)
);
-- 商品规格关联表(支持多规格起订量)
CREATE TABLE product_spec_min_order (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
spec_id BIGINT NOT NULL COMMENT 规格ID,
min_order_rules JSON COMMENT JSON格式的多规则配置
);
```
2. 规则引擎实现
```java
// 规则匹配服务示例
public class MinOrderRuleEngine {
public BigDecimal getMinOrderQuantity(Long productId, Long customerId, LocalDateTime now) {
// 1. 获取客户等级
CustomerLevel level = customerService.getLevel(customerId);
// 2. 查询所有适用规则(按优先级排序)
List
rules = repository.findActiveRules(
productId,
level != null ? level.getId() : null,
now
);
// 3. 返回最高优先级的有效规则
return rules.stream()
.filter(r -> r.getStartTime().isBefore(now) &&
(r.getEndTime() == null || r.getEndTime().isAfter(now)))
.findFirst()
.map(ProductMinOrder::getMinQuantity)
.orElse(getDefaultMinQuantity(productId));
}
}
```
3. 动态配置接口(RESTful示例)
```
POST /api/min-order/rules
{
"product_id": 1001,
"customer_level_ids": [2,3], // 适用客户等级
"min_quantity": 50,
"time_range": {
"start": "2023-08-01T00:00:00",
"end": "2023-08-31T23:59:59"
},
"priority": 10
}
```
三、关键业务逻辑实现
1. 订单校验中间件
```python
def validate_min_order(order_items, customer_id):
for item in order_items:
min_qty = rule_engine.get_min_order(
item[product_id],
customer_id,
datetime.now()
)
if item[quantity] < min_qty:
raise ValidationError(
f"商品{item[product_id]}起订量为{min_qty}"
)
```
2. 前端配置界面建议
- 可视化规则时间轴(类似日历视图)
- 批量导入/导出功能(支持Excel模板)
- 规则冲突检测(如时间重叠提醒)
四、万象源码部署优势
1. 微服务架构支持
- 将起订量服务拆分为独立模块
- 通过API网关实现服务治理
2. 动态配置中心
- 集成Nacos/Apollo实现配置热更新
- 支持灰度发布(按客户ID分批生效)
3. 多环境部署
```yaml
application-dev.yml
min-order:
rule-cache:
ttl: 300 开发环境缓存时间短
application-prod.yml
min-order:
rule-cache:
ttl: 3600 生产环境缓存1小时
```
五、扩展功能建议
1. 智能推荐系统
- 根据历史订单数据自动建议起订量
- 机器学习模型预测最佳起订阈值
2. 库存联动
- 当库存低于安全水位时自动提高起订量
- 预售商品特殊起订规则
3. 多语言支持
- 国际化配置(中英文起订量单位转换)
- 不同地区的计量单位适配(箱/斤/个)
六、实施路线图
1. 第一阶段(1周)
- 完成基础表结构设计和API开发
- 实现简单规则匹配逻辑
2. 第二阶段(2周)
- 开发管理后台配置界面
- 集成缓存机制(Redis)
3. 第三阶段(持续)
- 添加复杂规则引擎(Drools集成)
- 实现A/B测试功能
通过这种架构设计,系统可以支持每秒1000+的规则查询请求,同时保证99.99%的可用性。实际部署时建议采用分库分表策略,当商品数量超过10万时,按商品类别进行水平分库。