laravel电商学习系列-02 商品模块-基础

1. 前言

商品模块是电商系统的核心。本章节简单介绍商品模块的基础部分,也就是L05教程中的第五章课程传送门。
本模块功能包括:

  • 商品
  • 收藏商品

2. 功能分析

2.1 商品

2.1.1 需求分析

本课程电商系统是B2C模式的,商品管理需运营人员登录后台管理系统进行新增、编辑、上下架等操作。首先,我们先看一下商品详情、商品列表、创建商品几个操作页面效果图。通过观察我们发现,同一商品的不同属性之间库存不同、价格也不同。这里就需要引入SKU的概念。

SKU = Stock Keeping Unit(库存量单位),也可以称为『单品』。对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性中任一属性与其他商品存在不同时,可称为一个单品。

laravel电商学习系列-02 商品模块-基础_第1张图片
商品详情页-效果图
laravel电商学习系列-02 商品模块-基础_第2张图片
商品列表-效果图
laravel电商学习系列-02 商品模块-基础_第3张图片
管理后台创建商品-效果图

2.1.2 表设计

一个商品可以有多个商品SKU,因此我们设计1:m的商品表和商品SKU表来保存商品信息。其中,商品表用于保存商品的通用属性,比如商品名,总销量,总评价,控制商品是否上架等;商品SKU表保存SKU的库存,价格等SKU特有属性。

# 商品表
CREATE TABLE `products` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 商品名称
  `description` text COLLATE utf8mb4_unicode_ci NOT NULL, # 商品描述
  `image` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, #商品封面图片文件路径
  `on_sale` tinyint(1) NOT NULL DEFAULT '1', # 商品是否上架
  `rating` double(8,2) NOT NULL DEFAULT '5.00', # 商品平均评分
  `sold_count` int(10) unsigned NOT NULL DEFAULT '0', # 商品总销量
  `review_count` int(10) unsigned NOT NULL DEFAULT '0', # 商品总评价数量
  `price` decimal(10,2) NOT NULL, # 商品SKU的最低价格
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

# 商品SKU表
CREATE TABLE `product_skus` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # SKU名称
  `description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # SKU描述
  `price` decimal(10,2) NOT NULL, # SKU价格
  `stock` int(10) unsigned NOT NULL, # 库存
  `product_id` int(10) unsigned NOT NULL, # 所属商品ID
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `product_skus_product_id_foreign` (`product_id`),
  CONSTRAINT `product_skus_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2.2 收藏商品

2.2.1 需求分析

  • 用户可以收藏/取消收藏商品
  • 收藏的商品可以在收藏列表查看;

2.2.2 表设计

  • 实现逻辑
    商品收藏是用户行为,收藏的是商品。一个用户可以收藏多个商品,一个商品可以被多个用户收藏,是典型的m:n的模型关系,只需要新增一个中间表关联用户ID与商品ID,每当用户收藏/取消收藏商品时,添加/删除一条中间表记录即可。
  • 表结构
CREATE TABLE `user_favorite_products` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `user_id` int(10) unsigned NOT NULL, # 用户ID
  `product_id` int(10) unsigned NOT NULL, # 商品ID
  `created_at` timestamp NULL DEFAULT NULL, # 创建时间
  `updated_at` timestamp NULL DEFAULT NULL, # 更新时间
  PRIMARY KEY (`id`),
  KEY `user_favorite_products_user_id_foreign` (`user_id`),
  KEY `user_favorite_products_product_id_foreign` (`product_id`),
  CONSTRAINT `user_favorite_products_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE,
  CONSTRAINT `user_favorite_products_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

上一节:01 用户模块
下一节:03 商品模块-进阶 商品类目

你可能感兴趣的:(laravel电商学习系列-02 商品模块-基础)