laravel-shop电商

商品模块-进阶 众筹

2019-08-04  本文已影响7人  阳光的小mi

1. 前言

前面已经实现了基础的商品模块,本章节继续梳理近年间电商行业大热的众筹和秒杀。
课程传送门-众筹商品
课程传送门-秒杀商品

2. 功能分析

2.1 众筹

2.1.1 需求分析

与普通商品相比,众筹商品有如下特殊的业务逻辑:

众筹商品详情页-效果图

2.1.2 实现逻辑

众筹商品是一种新型的商品类型,它有独特的购买规则和特有属性,但它也拥有普通商品的所有属性,从购买下单到商家发货、用户评分整体的商品购买流程是一样的。因此,我们只需要在原有商品下单、退款等具体实现过程中,针对众筹商品做相应的规则校验即可。

2.1.3 表设计

众筹商品拥有非普通商品的特有属性,采用新增众筹商品表的方式来保存相关属性,众筹商品表与商品表的关联关系为一对一。
具体表结构如下:

# 众筹商品表
CREATE TABLE `crowdfunding_products` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `product_id` int(10) unsigned NOT NULL, # 对应商品表的ID
  `target_amount` decimal(10,2) NOT NULL, # 众筹目标金额
  `total_amount` decimal(10,2) NOT NULL DEFAULT '0.00', # 当前已筹金额
  `user_count` int(10) unsigned NOT NULL DEFAULT '0', # 参与众筹用户数
  `end_at` datetime NOT NULL, # 众筹结束时间
  `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'funding', # 当前众筹状态,默认众筹中
  PRIMARY KEY (`id`),
  KEY `crowdfunding_products_product_id_foreign` (`product_id`),
  CONSTRAINT `crowdfunding_products_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

# 商品表
ALTER TABLE `products` ADD `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal'; # 商品类型,默认为普通商品

2.1.4 代码借鉴

本章节众筹商品的处理是对原有普通商品的拓展,不管是从逻辑处理还是从表设计上来看,都是的。当有拓展出的新需求出现时,怎么制定合适的解决方案,这一点也是我们需要去思考和学习的。本章节学习到了以下几点:

课程中具体的考量原文如下:


众筹商品实现方案的考量
众筹商品退款操作的优化

上一节:03 商品模块-进阶 商品类目
下一节:05 购物车&订单模块

上一篇下一篇

猜你喜欢

热点阅读