一、水果商城促销折扣系统设计
1. 核心促销类型
- 满减活动:满X元减Y元(如满100减20)
- 折扣优惠:按比例折扣(如8折、9折)
- 第二件半价:针对特定商品或品类
- 买赠活动:买X送Y(如买5斤苹果送1斤)
- 限时秒杀:特定时间段超低折扣
- 会员专享价:针对不同会员等级设置差异化价格
2. 促销规则引擎设计
```mermaid
graph TD
A[促销活动] --> B[活动类型]
A --> C[适用范围]
A --> D[时间规则]
A --> E[用户规则]
B --> B1[满减]
B --> B2[折扣]
B --> B3[买赠]
C --> C1[全店]
C --> C2[分类]
C --> C3[单品]
D --> D1[固定时段]
D --> D2[周期性]
E --> E1[全用户]
E --> E2[会员等级]
E --> E3[新用户]
```
3. 促销叠加策略
- 可配置促销活动是否可叠加使用
- 设置优先级规则(如会员折扣优先于满减)
- 防止过度优惠的阈值设置
二、万象源码部署方案
1. 源码架构特点
- 模块化设计:促销模块独立可扩展
- 多终端支持:PC/H5/小程序/APP全覆盖
- 高并发处理:针对秒杀场景优化
- 分布式架构:支持水平扩展
2. 部署环境要求
| 组件 | 推荐配置 |
|------------|------------------------------|
| 操作系统 | CentOS 7.6+ / Ubuntu 20.04+ |
| Web服务器 | Nginx 1.18+ |
| 应用服务器 | Tomcat 9.0+ / Jetty 9.4+ |
| 数据库 | MySQL 8.0+ / MariaDB 10.5+ |
| 缓存 | Redis 6.0+ |
| 搜索 | Elasticsearch 7.10+ |
| 消息队列 | RabbitMQ 3.8+ / Kafka 2.6+ |
3. 多样化部署方案
方案一:标准部署(中小规模)
```
单服务器架构:
Nginx + Tomcat + MySQL + Redis
```
方案二:分布式部署(中大规模)
```
负载均衡层:
Nginx集群
应用服务层:
多台Tomcat应用服务器
数据服务层:
MySQL主从集群
Redis集群
Elasticsearch集群
消息队列:
RabbitMQ集群
```
方案三:容器化部署(微服务架构)
```
使用Docker + Kubernetes部署:
- 促销服务微服务
- 商品服务微服务
- 订单服务微服务
- 用户服务微服务
- 配置中心
- 服务网关
```
三、促销系统实现要点
1. 数据库设计关键表
```sql
-- 促销活动表
CREATE TABLE promotion (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
type TINYINT NOT NULL COMMENT 1-满减 2-折扣 3-买赠,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
status TINYINT DEFAULT 1 COMMENT 1-启用 0-禁用,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 促销规则表
CREATE TABLE promotion_rule (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promotion_id BIGINT NOT NULL,
rule_type TINYINT NOT NULL COMMENT 1-金额条件 2-数量条件,
threshold DECIMAL(10,2) COMMENT 满足条件值,
discount_type TINYINT COMMENT 1-减金额 2-折扣率,
discount_value DECIMAL(10,2) COMMENT 减金额值或折扣率,
gift_sku_id BIGINT COMMENT 赠品SKU ID,
FOREIGN KEY (promotion_id) REFERENCES promotion(id)
);
-- 促销商品关联表
CREATE TABLE promotion_goods (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
promotion_id BIGINT NOT NULL,
sku_id BIGINT NOT NULL,
is_main TINYINT DEFAULT 1 COMMENT 1-主商品 0-赠品,
FOREIGN KEY (promotion_id) REFERENCES promotion(id)
);
```
2. 促销计算核心逻辑
```java
public BigDecimal calculatePromotionPrice(OrderItem item, List
promotions) {
BigDecimal finalPrice = item.getPrice();
// 按优先级应用促销
for (Promotion promo : promotions) {
if (isPromotionApplicable(item, promo)) {
switch (promo.getType()) {
case PROMOTION_TYPE_FULL_REDUCTION:
// 满减计算
if (item.getSubtotal().compareTo(promo.getThreshold()) >= 0) {
finalPrice = item.getSubtotal().subtract(promo.getDiscountValue());
}
break;
case PROMOTION_TYPE_DISCOUNT:
// 折扣计算
finalPrice = item.getPrice().multiply(promo.getDiscountRate());
break;
case PROMOTION_TYPE_BUY_GIVE:
// 买赠逻辑(价格不变,增加赠品)
addGiftItem(item, promo);
break;
}
}
}
return finalPrice.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : finalPrice;
}
```
四、部署优化建议
1. 缓存策略:
- 促销规则缓存(Redis)
- 商品价格缓存
- 用户可参与促销缓存
2. 异步处理:
- 促销活动变更通知(消息队列)
- 促销效果统计(异步任务)
3. 监控告警:
- 促销活动访问量监控
- 促销计算耗时监控
- 库存预警
4. AB测试:
- 不同促销策略效果对比
- 用户分组测试
五、扩展功能建议
1. 社交裂变促销:
- 拼团优惠
- 分享得券
- 邀请奖励
2. 游戏化促销:
- 抽奖活动
- 签到领券
- 水果连连看等互动游戏
3. 数据驱动:
- 促销效果分析看板
- 用户购买行为预测
- 智能促销推荐
通过以上方案,可以构建一个灵活、高效、可扩展的水果商城促销系统,满足多样化营销需求。