精华内容
下载资源
问答
  • SKU和SPU商品规格

    2020-08-16 20:48:29
    SQL --Goods/XinXIBiao create table ShoppingProduct ( SPid int primary key identity, SPname nvarchar(50), SPmiao nvarchar(max), SPpicture nvarchar(max), SPrice nvarchar(50) ...
    			SQL
    --Goods/XinXIBiao
    create table ShoppingProduct
    (
    	SPid			int primary key identity,
    	SPname			nvarchar(50),
    	SPmiao			nvarchar(max),
    	SPpicture		nvarchar(max),
    	SPrice			nvarchar(50)
    )
    --YanSeBiao
    create table Color
    (
    	Cid				int primary key identity,
    	Cname			nvarchar(50),
    )
    --ChiCunBiao
    create table Size
    (
    	SIid			int primary key identity,
    	SIname			nvarchar(50),
    )
    -GuanXiBiao
    create table Info
    (
    	Infoid			int primary key identity,
    	Pid				int,
    	Cid				int,
    	Szid			int,
    	Num				int,
    	Price   		decimal
    )
    --PingLunBiao
    create table Talk
    (
    	Tid				int primary key identity,
    	Tbody			nvarchar(max),
    	Pid				int
    )
    
    --XiangQing
    select * from ShoppingProduct where SPid = 1
    
    --YanSeAnNiu
    select distinct Color.Cname,Color.Cid from Info join Color on Info.Cid = Color.Cid where Pid = 1
    
    --ChiCun
    select SIname,Size.SIid from Size join Info on Info.Szid = Size.SIid where Pid = 1 and Info.Cid = 1
    
    --JiaGe
    select distinct Info.Price from Info join Color on Info.Cid = Color.Cid where Info.Cid = 1 and Info.Szid = 3
    
    --ShuLiang
    select Info.Num from Info join Size on Info.Szid = Size.SIid where Info.Cid = 1 and Info.Szid = 3
    
    --PingLun
    select Tbody from Talk where Pid = 1
    
    			API/Model
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace ZhouKaoTwo.API.Models
    {
       // public class Info
        {
            public int Infoid { get; set; }
            public int Pid { get; set; }
            public int Cid { get; set; }
            public int Szid { get; set; }
            public int Num { get; set; }
            public decimal Price { get; set; }
        }
        //public class ShoppingProduct
        {
            public int SPid { get; set; }
            public string SPname { get; set; }
            public string SPmiao { get; set; }
            public string SPpicture { get; set; }
            public string SPrice { get; set; }
    
        }
       // public class Color
        {
            public int Cid { get; set; }
            public string Cname { get; set; }
    
        }
      //  public class Size
        {
            public int SIid { get; set; }
            public string SIname { get; set; }
        }
       // public class SPpages	FenYe
        {
            public List<ShoppingProduct> ShoppingProduct { get; set; }
            public int Pages { get; set; }
        }
       // public class Talk
        {
            public int Tid { get; set; }
            public string Tbody { get; set; }
            public int Pid { get; set; }
        }
    }
    		API/C/Ceng
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using ZhouKaoTwo.API.Models;
    namespace ZhouKaoTwo.API.Controllers
    {
        public class DefaultController : ApiController
        {
            [HttpGet]
            public SPpages GetShopShow(int pageindex,int pagesize)
            {
                string sql = "select * from ShoppingProduct";
                List<ShoppingProduct> li = new List<ShoppingProduct>();
                li = DBHelper.GetList<ShoppingProduct>(sql);
                int count = li.Count();
                SPpages pag = new SPpages();
                pag.Pages = count / pagesize + (count % pagesize == 0 ? 0 : 1);
                pag.ShoppingProduct = li.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
                return pag;
            }
            [HttpGet]
            public List<ShoppingProduct> GetXShow(int pid)
            {
                string sql = $"select * from ShoppingProduct where SPid = {pid}";
                return DBHelper.GetList<ShoppingProduct>(sql);
            }
            [HttpGet]
            public List<Color> GetColorShow(int prid)
            {
                string sql = $"select distinct Color.Cname,Color.Cid from Info join Color on Info.Cid = Color.Cid where Pid = {prid}";
                return DBHelper.GetList<Color>(sql);
            }
            [HttpGet]
            public List<Size> GetSizeShow(int prid,int Coid)
            {
                string sql = $"select SIname,Size.SIid from Size join Info on Info.Szid = Size.SIid where Pid = {prid} and Info.Cid = {Coid}";
                return DBHelper.GetList<Size>(sql);
            }
            [HttpGet]
            public Info GetPriceShow(int Coid,int sizeid)
            {
                string sql = $"select distinct Info.Price from Info join Color on Info.Cid = Color.Cid where Info.Cid = {Coid} and Info.Szid = {sizeid}";
                return DBHelper.GetList<Info>(sql).FirstOrDefault();
            }
    
            [HttpGet]
            public Info GetNumShow(int Coid,int Sizid)
            {
                string sql = $"select Info.Num from Info join Size on Info.Szid = Size.SIid where Info.Cid = {Coid} and Info.Szid = {Sizid}";
                return DBHelper.GetList<Info>(sql).FirstOrDefault();
            }
            [HttpGet]
            public List<Talk> GetTalk(int prid)
            {
                string sql = $"select Tbody from Talk where Pid = {prid}";
                return DBHelper.GetList<Talk>(sql);
            }
        }
    }
    
    			MVC/C/Ceng
    	using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace ZhouKaoTwoLianXi.MVC.Controllers
    {
        public class DefaultController : Controller
        {
            // GET: Default
            public ActionResult Index()
            {
                return View();
            }
    
            public ActionResult Xshow()
            {
                return View();
            }
        }
    }
    
    
    			V/Index
    		
    @{
        ViewBag.Title = "Index";
    }
    
    <h2>Index</h2>
    <script src="~/Scripts/jquery-3.3.1.js"></script>
    <script src="~/Scripts/bootstrap.js"></script>
    <link href="~/Content/bootstrap-theme.css" rel="stylesheet" />
    <table class="table table-bordered">
        <thead>
            <tr>
                <td>BianHao</td>
                <td>ZhanShi</td>
                <td>MingChen</td>
                <td>JiaGe</td>
                <td>CaoZuo</td>
            </tr>
        </thead>
        <tbody id="bod">
            
        </tbody>
    </table>
    <div id="fen">
    
    </div>
    <script>
        GetList(1);
        function GetList(index) {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetShopShow',
                type: 'get',
                data: { pageindex: index,pagesize:3 },
                dataType: 'json',
                success: function (d) {
                    $("#bod").empty();
                    $("#fen").empty();
                    $(d.ShoppingProduct).each(function () {
                        $("#bod").append(
                            '<tr>' +
                            '<td>' + this.SPid + '</td>' +
                            '<td><img src="http://localhost:13891/img/' + this.SPpicture + '" width="60" height="120"/></td>' +
                            '<td>' + this.SPname + '</td>' +
                            '<td>' + this.SPrice + '</td>' +
                            '<td><a οnclick="Lo('+this.SPid+')">XiangQing</a></td>' +
                            '</tr>'
                        )
                    })
                    for (var i = 1; i <= d.Pages; i++) {
                        $("#fen").append(
                            '【<a οnclick="GetList(' + i + ')">' + i + '</a>】'
                        )
                    }
                }
            })
        }
    
        function Lo(id) {
            location.href = "http://localhost:13891/Default/Xshow?ID=" + id;
        }
    </script>
    
    			V/XsShow
    
    @{
        ViewBag.Title = "Xshow";
    }
    
    <h2>Xshow</h2>
    <script src="~/Scripts/jquery-3.3.1.js"></script>
    <script src="~/Scripts/bootstrap.js"></script>
    <link href="~/Content/bootstrap-theme.css" rel="stylesheet" />
    <div>
        <table id="info"></table>
    </div>
    <div>
        <label>JiaGe:</label><label id="price"></label>
    </div>
    <div><label>ShuLiang:</label><label id="num"></label></div>
    <div id="miao">
    
    </div>
    <div id="colo">
    
    </div>
    <div id="size">
        
    </div>
    <div>
        <label>PingLun:</label>
        <table id="talk"></table>
    </div>
    <script>
        var strid = parseInt(location.search.split("=")[1]);
        GxShow();
        ColorShow();
        GetTalkShow();
        function GxShow() {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetXShow',
                type: 'get',
                data: { pid: strid },
                dataType: 'json',
                success: function (d) {
                    $("#info").empty();
                    $("#miao").empty();
                    $(d).each(function () {
                        $("#info").append(
                            '<tr>' +
                            '<td>' + this.SPname + '</td>' +
                            '</tr>' +
                            '<tr>' +
                            '<td><img src="http://localhost:13891/img/' + this.SPpicture + '" width="60" height="120"/></td>' +
                            '</tr>'
                        )
                        $("#miao").append(
                            '<label>MiaoShu</label><label>' + this.SPmiao + '</label>'
                        )
                    })
                }
            })
        }
    
        function ColorShow() {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetColorShow',
                type: 'get',
                data: { prid: strid },
                dataType: 'json',
                success: function (d) {
                    $("#colo").empty();
                    $(d).each(function () {
                        $("#colo").append(
                            '<input type="button" value="' + this.Cname + '" οnclick="SizeShow(' + this.Cid + ')"/>'
                        )
                    })
                }
            })
        }
    
    
        function SizeShow(id) {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetSizeShow',
                type: 'get',
                data: { prid: strid, Coid: id },
                dataType: 'json',
                success: function (d) {
                    $("#size").empty();
                    $(d).each(function () {
                        $("#size").append(
                            '<input type="button" value="' + this.SIname + '" οnclick="GetPrice(' + this.SIid + ',' + id + ')"/>'
                        )
                    })
    
    
                }
            })
        }
    
    
        function GetPrice(id, cid) {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetPriceShow',
                type: 'get',
                data: { Coid: cid, sizeid: id },
                dataType: 'json',
                success: function (d) {
                    $("#price").empty();
                    $("#price").text(d.Price);
                    GetNum(cid, id);
                }
            })
        }
    
        function GetNum(cid, sid) {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetNumShow',
                type: 'get',
                data: { Coid: cid, Sizid: sid },
                dataType: 'json',
                success: function (d) {
                    $("#num").empty();
                    $("#num").text(d.Num);
                }
            })
        }
    
        function GetTalkShow() {
            $.ajax({
                url: 'http://localhost:4480/api/Default/GetTalk',
                type: 'get',
                data: { prid: strid },
                dataType: 'json',
                success: function (d) {
                    $("#talk").empty();
                    $(d).each(function () {
                        $("#talk").append(
                            '<tr class="table table-bordered">' +
                            '<td>' + this.Tbody + '</td>' +
                            '</tr>'
                        )
                    })
                }
            })
        }
    </script>
    
    
    
    展开全文
  • 商城sku和spu设计

    2021-04-09 11:20:45
    SPUSKU 1.1 SPUSKU概念 SPU = Standard Product Unit (标准产品单位) 概念 : SPU商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。 通俗点讲,属性值、...

    SPU与SKU

    1.1 SPU与SKU概念

    SPU = Standard Product Unit (标准产品单位)

    • 概念 : SPU 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

    • 通俗点讲,属性值、特性相同的货品就可以称为一个 SPU

      同款商品的公共属性抽取

      例如:华为P30 就是一个 SPU

    SKU=stock keeping unit( 库存量单位)

    • SKU 即库存进出计量的单位, 可以是以件、盒、托盘等为单位。

    • SKU 是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。

    • 在服装、鞋类商品中使用最多最普遍。

      例如:华为P30 红色 64G 就是一个 SKU

      某个库存单位的商品独有属性(某个商品的独有属性)

    1.2 表结构分析

    tb_spu 表 (SPU表)

    字段名称 字段含义 字段类型 字段长度 备注
    id 主键 BIGINT
    sn 货号 VARCHAR
    name SPU名 VARCHAR
    caption 副标题 VARCHAR
    brand_id 品牌ID INT
    category1_id 一级分类 INT
    category2_id 二级分类 INT
    category3_id 三级分类 INT
    template_id 模板ID INT
    freight_id 运费模板id INT
    image 图片 VARCHAR
    images 图片列表 VARCHAR
    sale_service 售后服务 VARCHAR
    introduction 介绍 TEXT
    spec_items 规格列表 VARCHAR
    para_items 参数列表 VARCHAR
    sale_num 销量 INT
    comment_num 评论数 INT
    is_marketable 是否上架 CHAR
    is_enable_spec 是否启用规格 CHAR
    is_delete 是否删除 CHAR
    status 审核状态 CHAR

    tb_sku 表(SKU商品表)

    字段名称 字段含义 字段类型 字段长度 备注
    id 商品id BIGINT
    sn 商品条码 VARCHAR
    name SKU名称 VARCHAR
    price 价格(分) INT
    num 库存数量 INT
    alert_num 库存预警数量 INT
    image 商品图片 VARCHAR
    images 商品图片列表 VARCHAR
    weight 重量(克) INT
    create_time 创建时间 DATETIME
    update_time 更新时间 DATETIME
    spu_id SPUID BIGINT
    category_id 类目ID INT
    category_name 类目名称 VARCHAR
    brand_name 品牌名称 VARCHAR
    spec 规格 VARCHAR
    sale_num 销量 INT
    comment_num 评论数 INT
    status 商品状态 1-正常,2-下架,3-删除 CHAR

    1.3 表的sql

    sku表

    DROP TABLE IF EXISTS `tb_sku`;
    CREATE TABLE `tb_sku`  (
      `id` bigint(20) NOT NULL COMMENT '商品id',
      `sn` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品条码',
      `name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'SKU名称',
      `price` int(20) NOT NULL COMMENT '价格(分)',
      `num` int(10) NOT NULL COMMENT '库存数量',
      `alert_num` int(11) NULL DEFAULT NULL COMMENT '库存预警数量',
      `image` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品图片',
      `images` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品图片列表',
      `weight` int(11) NULL DEFAULT NULL COMMENT '重量(克)',
      `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
      `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
      `spu_id` bigint(20) NULL DEFAULT NULL COMMENT 'SPUID',
      `category_id` int(10) NULL DEFAULT NULL COMMENT '类目ID',
      `category_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类目名称',
      `brand_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '品牌名称',
      `spec` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规格',
      `sale_num` int(11) NULL DEFAULT 0 COMMENT '销量',
      `comment_num` int(11) NULL DEFAULT 0 COMMENT '评论数',
      `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '商品状态 1-正常,2-下架,3-删除',
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `cid`(`category_id`) USING BTREE,
      INDEX `status`(`status`) USING BTREE,
      INDEX `updated`(`update_time`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品表' ROW_FORMAT = Dynamic;
    

    spu表

    DROP TABLE IF EXISTS `tb_spu`;
    CREATE TABLE `tb_spu`  (
      `id` bigint(20) NOT NULL COMMENT '主键',
      `sn` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '货号',
      `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'SPU名',
      `caption` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '副标题',
      `brand_id` int(11) NULL DEFAULT NULL COMMENT '品牌ID',
      `category1_id` int(20) NULL DEFAULT NULL COMMENT '一级分类',
      `category2_id` int(10) NULL DEFAULT NULL COMMENT '二级分类',
      `category3_id` int(10) NULL DEFAULT NULL COMMENT '三级分类',
      `template_id` int(20) NULL DEFAULT NULL COMMENT '模板ID',
      `freight_id` int(11) NULL DEFAULT NULL COMMENT '运费模板id',
      `image` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片',
      `images` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片列表',
      `sale_service` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '售后服务',
      `introduction` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '介绍',
      `spec_items` varchar(3000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规格列表',
      `para_items` varchar(3000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数列表',
      `sale_num` int(11) NULL DEFAULT 0 COMMENT '销量',
      `comment_num` int(11) NULL DEFAULT 0 COMMENT '评论数',
      `is_marketable` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '是否上架',
      `is_enable_spec` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '是否启用规格',
      `is_delete` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '是否删除',
      `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '审核状态',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    展开全文
  • - 掌握SPU和SKU数据结构设计思路               - 实现商品查询              - 了解商品新增的页面实现         &...
  • SPU属性:不会影响到库存价格的属性, 又叫关键属性。 举例: OPPO R17这是商品SPU:但Oppo R17只是一个名词,单纯的理解这个名词是没有意义的。 SPU是一组商品的属性组合(这个SPU属性组合...

    SPU = Standard Product Unit (标准化产品单元)

    SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

    SPU属性:不会影响到库存和价格的属性, 又叫关键属性

    举例:

    OPPO R17这是商品的SPU:但Oppo R17只是一个名词,单纯的理解这个名词是没有意义的。

    SPU是一组商品的属性组合(这个SPU属性组合名称叫做OPPO R17):

    【硬件参数】:
    CPU 型号:高通骁龙™ 670
    CPU 频率:2.0GHz
    核心数:八核
    处理器位数:64 位
    GPU 型号:Adreno™ 615
    电池容量:3500mAh(典型值)*
    【尺寸】:
    长:约 157.5mm
    宽:约 74.9mm
    厚:约 7.5mm
    重:约 182g

    毛重: 420.00 g
    产地: 中国大陆

     

    SKU=stock keeping unit(库存量单位) 

    会影响到库存和价格的属性, 又叫销售属性。指的是具体规格单品,买家购买、商家进货、供应商备货、工厂生产都是依据SKU进行的。 影响价格和库存的 属性集合, 与商品是多对一的关系,即一个商品有多个SKU

    举例:

    如流光蓝(三种颜色:流光蓝、霓光紫、霓光渐变色)+8G+128G(两种配置:8G+128G、6G+128G)。
    即OPPO R17有一个SPU、6种SKU。

    如一件M码(四个尺码:S码、M码、L码、X码)的粉色(三种颜色:粉色、黄色、黑色)Zara女士风衣,其中M码、粉色就是一组SKU的组合。

    SKU在生成时, 会根据属性生成相应的笛卡尔积,根据一组SKU可以确定商品的库存情况,那么上面的Zara女士风衣一共有4 * 3 = 12个SKU组合。

     

    本文转载自:http://www.cnblogs.com/lingyejun/

    原文讲解更清楚,在这里感谢原文博主。

    展开全文
  • Django----SKU SPU

    2020-01-06 17:37:14
    SKU SPU 一个电商系统,SPUSKU等设计的好坏,影响到后面的开发进度,以及架构的调整等。而 SPUSKU又是一个电商系统的核心,我们一起参考淘宝设计来讲清楚什么是 SPUSKUSPU,是 standard product unit,...

    一. SKU 和 SPU

    一个电商系统,SPU、SKU等设计的好坏,影响到后面的开发进度,以及架构的调整等。而 SPU、SKU又是一个电商系统的核心,我们一起参考淘宝设计来讲清楚什么是 SPU、SKU。

    SPU,是 standard product unit,标准化产品单元,是商品信息聚合的最小单位,属性值、特性相同的商品就可以成为一个SPU。在淘宝中你可能看不到 spu 这个概念,淘宝商品都拥有商品 ID(item design),其实就是 spu。不像京东,直接来个 spuId = xxx 这样的直观。

    SKU,全称 stock keeping unit,库存量单位。SKU 是用来定价和管理库存的。例如:7 Plus 有很多颜色,很多配置,每个颜色和配置的组合都会形成新的产品,这时就产生很多 SKU,SKU 在传统线下行业也是一个非常常用的概念,尤其是服装行业,同款不同尺码不同色都是独立的 SKU,需要有独立的条形码,独立的库存管理等。

    下面我们一起来看看淘宝中的 SPU 和 SKU,加深大家的认识。

    当我们在浏览器里访问:https://detail.tmall.com/item.htm?id=525248995106&skuId=4225910992958 和 https://detail.tmall.com/item.htm?id=525248995106&skuId=4225910992962 时,会看到两款不同的商品,这就是 SPU。每款商品中有不同的颜色,规格,尺寸等代表的就是 SKU。

    在这里插入图片描述

    以 https://detail.tmall.com/item.htm?id=525248995106&skuId=4225910992961 为例,当我们选择不同的颜色后,浏览器地址栏中的 skuId 就会跟着变化。选择不同的颜色,价格和库存都会跟着变化,这就是 SKU 决定了一个商品的价格和库存。

    上面的 id 就对应着一个 SPU,一个 SPU 可以有多个 SKU。SPU 用来区分品种,一般商家用来统计某个品种的销量。比如,A 商家统计 iphone 8 销量,就是 SPU 的维度来统计的。也可以从 SKU 的方向来统计,比如:A 商家统计 iphone 8 中黑色64G的销量。

    京东和淘宝还是有区别的,京东的商品详情页链接是直接挂着skuid的,url例如:

    https://item.jd.com/100008348542.html

    在这里插入图片描述

    在url的后半部分就挂着一个skuid,我们可以直接根据这个skuid 100008348542 在首页进行搜索,搜索的结果会直接跳到该商品详情页,这一点是和淘宝天猫的区别。

    在这里插入图片描述

    如果还是不理解,大家都去过超市买东西,到收银台的时候,收银员手里有一个扫码枪,她会一个一个的扫你购买的商品上条形码。这个条形码就对应一个 SKU,一个 SKU 对应一个条形码,因为每一个条形码对应一个价格和库存。

    在这里插入图片描述

    在这里插入图片描述

    二. 表结构设计以及models

    1. 表结构设计

    商品部分表结构设计.html

    在这里插入图片描述

    2. models编写

    根据之前设计好的表结构来写models.py文件

    from django.db import models
    
    
    class Catalog(models.Model):
        """
        商品类别
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        name = models.CharField(max_length=10, verbose_name='类别名称')
    
        class Meta:
            db_table = 'DDSC_GOODS_CATALOG'
            verbose_name = '商品类别'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return self.name
    
    
    class Brand(models.Model):
        """
        品牌
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        name = models.CharField(max_length=20, verbose_name='商品名称')
        logo = models.ImageField(verbose_name='Logo图片')
        first_letter = models.CharField(max_length=1, verbose_name='品牌首字母')
    
        class Meta:
            db_table = 'DDSC_BRAND'
            verbose_name = '品牌'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return self.name
    
    
    class SPU(models.Model):
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        name = models.CharField(max_length=50, verbose_name='名称')
        sales = models.IntegerField(default=0, verbose_name='商品销量')
        comments = models.IntegerField(default=0, verbose_name='评价数量')
        brand = models.ForeignKey(Brand, on_delete=models.PROTECT, verbose_name='品牌')
        catalog = models.ForeignKey(Catalog, on_delete=models.PROTECT, related_name='catalog_goods', verbose_name='商品类别')
    
        class Meta:
            db_table = 'DDSC_SPU'
            verbose_name = 'SPU'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return self.name
    
    
    class SPUSaleAttr(models.Model):
        """
        SPU销售属性表
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        SPU_id = models.ForeignKey(SPU, on_delete=models.CASCADE, verbose_name='SPU')
        sale_attr_name = models.CharField(max_length=20, verbose_name='SPU属性名称')
    
        class Meta:
            db_table = 'DDSC_SPU_SALE_ATTR'
            verbose_name = 'SPU销售属性'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return '%s' % (self.sale_attr_name)
    
    class SKU(models.Model):
        """
        SKU
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        name = models.CharField(max_length=50, verbose_name='SKU名称')
        caption = models.CharField(max_length=100, verbose_name='副标题')
        SPU_ID = models.ForeignKey(SPU, on_delete=models.CASCADE, verbose_name='商品')
        price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='单价')
        cost_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='进价')
        market_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='市场价')
        stock = models.IntegerField(default=0, verbose_name='库存')
        sales = models.IntegerField(default=0, verbose_name='销量')
        comments = models.IntegerField(default=0, verbose_name='评价数')
        is_launched = models.BooleanField(default=True, verbose_name='是否上架销售')
        default_image_url = models.ImageField(verbose_name='默认图片',default=None)
    
        class Meta:
            db_table = 'DDSC_SKU'
            verbose_name = 'SKU表'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return '%s: %s' % (self.id, self.name)
        
        
    class SaleAttrValue(models.Model):
        """
        销售属性值表
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        sale_attr_id = models.ForeignKey(SPUSaleAttr, on_delete=models.CASCADE, verbose_name='销售属性id')
        sku = models.ForeignKey(SKU, on_delete=models.CASCADE, verbose_name='sku', default='')
        sale_attr_value_name = models.CharField(max_length=20, verbose_name='销售属性值名称')
    
        class Meta:
            db_table = 'DDSC_SALE_ATTR_VALUE'
            verbose_name = '销售属性值'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return '%s - %s' % (self.sale_attr_id, self.sale_attr_value_name)
    
    
    class SKUImage(models.Model):
        """
        SKU图片
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        sku_id = models.ForeignKey(SKU, on_delete=models.CASCADE, verbose_name='sku')
        image = models.ImageField(verbose_name='图片路径')
    
        class Meta:
            db_table = 'DDSC_SKU_IMAGE'
            verbose_name = 'SKU图片'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return '%s %s' % (self.sku_id.name, self.id)
    
    
    class SPUSpec(models.Model):
        """
        SPU规格表
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        spu = models.ForeignKey(SPU, on_delete=models.CASCADE, verbose_name='SPU')
        spec_name = models.CharField(max_length=20, verbose_name='SPU规格名称')
    
        class Meta:
            db_table = 'DDSC_SPU_SPEC'
            verbose_name = 'SPU规格'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return '%s: %s' % (self.spu.name, self.spec_name)
    
    
    class SKUSpecValue(models.Model):
        """
        SKU规格属性表
        """
        create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
        update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
        sku = models.ForeignKey(SKU, on_delete=models.CASCADE, verbose_name='sku')
        spu_spec = models.ForeignKey(SPUSpec, on_delete=models.CASCADE, verbose_name='SPU规格名称')
        name = models.CharField(max_length=20, verbose_name='SKU规格名称值')
    
        class Meta:
            db_table = 'DDSC_SKU_SPEC_VALUE'
            verbose_name = 'SKU规格属性值表'
            verbose_name_plural = verbose_name
    
        def __str__(self):
            return '%s: %s: %s' % (self.sku, self.spu_spec.spec_name, self.name)
    
    展开全文
  • sku和spu的理解

    2020-05-20 10:10:33
    spu和sku都是属性值的集合 SPU 属性(不会影响到库存价格的属性, 又叫关键属性) Oppo R17这是商品SPU,但Oppo R17只是一个名词,单纯的理解这个名词是没有意义的。 Oppo R17是这个商品SPU,这里的SPU是一组商品...
  • SKU SPU的区别

    万次阅读 2018-10-09 09:20:02
    SPU(Standard Product Unit) 标准化产品单元 SPU是能够描述一个产品...SKU是用来定价管理库存的,比如说,iPhone8每个颜色配置的组合都会形成新的产品,就会产生一个SKU。 淘宝商品叫item,京东商品叫product...
  • 什么是sku和spu

    千次阅读 2019-05-04 00:00:05
    在电商项目中,我们做商品的数据处理时候,常常会遇到SPU和SKU。下面分别对两者进行简要说明。 SPU和SKU的区别: 一、什么是SPU? 1、SPU=StandardProductUnit(标准化产品单元)。 2、SPU商品信息聚合的最小...
  • 电商项目商品规格参数表设计SKU和SPU表设计 北京科技大学硕士研究生,北京...
  • SKU和SPU是所有涉及电商领域人士都需要面对的两个概念,是设计一个好的电商系统的必要前提。商系统实现了什么功能,大数情况下都是和商品模块相关联的。因此商品模块本身的实现要足够抽象、灵活、易于扩展,这样才能...
  • SKU SPU 有什么区别

    2019-08-05 09:22:48
    首先,搞清楚商品与单品的...商品特指与商家有关的商品,每个商品有一个商家编码,每个商品下面有多个颜色,款式,可以有多个SKUSPU = Standard Product Unit (标准化产品单元) SPU是 品牌 + 型号 + 关键属...
  • SKU和SPU表的设计

    2018-07-27 15:22:00
    1.什么是SKUSPU SKU:Stock Keeping Unit (库存量单位)SKU即库存进出计量的单位,可以是以件、盒、托盘等为单位,是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。在服装、鞋类...
  • 理解SKU和SPU区别

    千次阅读 2019-12-11 19:55:57
    SPU ------简称 商品 举例,例如macbook16 就是一个标准化产品单元。无论选择macbook 16 什么颜色,什么内存,什么固态,什么显卡,但是他们一定是macbook16, 从这些不同的配置中提取出相同的...
  • 电商名词sku和spu的区别

    万次阅读 2018-09-10 11:38:59
    sku 商品的库存量单位 , 代表商品的规格属性 spu 产品单位最小分割的商品 ,与商家无关 它的属性会影响价格。 在不同电商平台有着细微的区别 一、什么是SPU? 1、SPU = Standard Product Unit (标准化产品...
  • 一分钟理解sku和spu

    2019-05-10 16:32:00
    SPU商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPUSPU是一个商品编码 例如:iphone4就是一个SPU,与商家...
  • 商品SKUSPU

    千次阅读 2017-07-27 15:21:04
    spu sku 都是属性值的集合, 举个栗子 >> 一部 6S, 它身上有很多的属性值. 比如 : 毛重: 420.00 g 产地: 中国大陆 容量: 16G, 64G, 128G 颜色: 银, 白, 玫瑰金 你跑进苏宁顺电, 说想要一台 6S, 店员...
  • SPU:苹果6(商品聚合信息的最小单位),如手机->苹果手机->苹果6,苹果6就是SPUSKU:土豪金 16G 苹果6 (商品的不可再分的最小单元)。从广义上讲,类目>SPU>SKU。 按照这个理解,SPU就是俗称的“款...
  • 电商概念:SKU和SPU SPU = Standard Product Unit (标准产品单位) SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。 通俗点讲,属性值、特性相同的商品就...
  • SKU和SPU的概念与区别

    2019-08-23 15:48:35
    SPU = Standard Product Unit(标准产品单位)抽象的商品(产品表) SPU商品信息聚合的最小单位,是一组可重复,易检索的标准化信息的集合,该集合描述了一个产品的特性,通俗点讲,属性值、特性相同的商品就可以...
  • 一,在电商项目里面为了准确的描述商品的区别,我们抽象出来两个概念,Spu和Sku这两个概念。 Spu(标准产品单位 ):一组具有共同属性的商品Sku(库存量单位):SPU商品集因具体特性不同而细分的每个商品   ...
  • SPU(StandardProductUnit):是商品信息聚合的最小单位,是一组可复用、易检索标准化信息集合。 例如:iPhoneX 手机就是 SPU。一台银色、128G 内存的、支持联通网络的 iPhoneX, 就是 SKU。 ...
  • SKUSPU的小案例

    2020-05-20 11:57:44
    那么这个数据是如何显示的呢,通过观察,我们可以发现,下面的选择颜色就有幻夜黑, 选择版本就有全网通(64 128GB) , 大胆猜测一下,应该是俩张表,spu和sku(SPUSKU概念 SPU = Standard Product Unit (标准产品单位) ...
  • 通俗点讲,属性值、特性相同的商品就可以称为一个SPU。   通俗解释:就比如:一个苹果X手机,就是一个SPU商品的特性可以由多个“属性及对应的属性值对”进行描述。“属性及对应的属性值对”完全相同的商品,...
  • 商品SPU和SKU

    2019-12-09 17:10:05
    spu即标准商品单元,是描述某一个商品的特性属性集合。和商品的关系是一对一的关系,比如荣耀10手机,如图所示: 以上的参数都是荣耀10的商品特性(机身长度、宽度、厚度)等。 SKU(Stock Keeping Unit) sku就是...
  • 商品SPUSKU说明

    2020-10-02 13:32:42
    SPU和SKU SPU:Standard Product Unit (标准产品单位) ,一组具有共同属性的商品SKU:Stock Keeping Unit(库存量单位),SPU商品集因具体特性不同而细分的每个商品 小米Redmi K20Pro 就是一个商品集(SPU) ...
  • sku 商品的库存量单位 , 代表商品的规格属性spu 产品单位最小分割的商品 ,与商家无关 它的属性会影响价格。 简单的理解spu为款式 sku为件对衣服来说 spu为某一款式 sku为大中小款式 同一价格对手机来说 spu表示...
  • SPU和SKU

    2018-11-12 11:51:36
    SPU和SKU的区别 首先,搞清楚商品与单品的区别。例如,iphone是一个单品,但是在淘宝上当很多商家同时出售这个产品的时候,iphone就是一个商品了。 商品:淘宝叫item,京东叫product,商品特指与商家有关的商品,每...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 381
精华内容 152
关键字:

商品sku和spu