電商,產品的設計思路

閱讀只需要三分鐘,轉載請注明出處。

api.product.dotnet.sdao

商品庫微服務 接口設計說明

  • 文檔介紹###

    商品庫微服務是一個是一個用于提供商品管理微服務,
    不關注庫存
    所有管理功能通過REST api對外接口實現。以下是關于接口
    設計思路.


  • 設計思路概要描述###

    商品庫微服務的功能主要包括:

    • 分類 的CRUD
    • 容器 的CRUD
    • SPUSKU 的CRUD
    • Properties 的CRUD
    • Template 屬性模板的CRUD
    • 以下的均以京東為例:
    Option Description url
    分類 是一個樹狀形式的分類展示,攜帶有scope.scope有web,app,全球購,商品庫等等 京東首頁
    容器 container,顯示的空間 This link 京東 的分類為例,二級分類下的列表,有多個列表用于顯示的塊,一個列表是一個container。
    SPU 是售賣的商品,每個商品都有很多的屬性,所有的商品都具備有相同的屬性集就存在SPU表內 京東商品展示頁
    SKU 商品.不同商品編號的商品。
    Properties 基本屬性集
    Template 模板屬性集.

  • 設計思路詳細描述###

    • 分類表
    字段:
    {
     Id:"分類編號"
     scope:"作用域",
     name:"名稱",
     displayName:"顯示名稱",
     parentId:"父類編號",
     order:"排序"
     ...
    }
    

    eg:

    |分類1:scope=商品庫分類|
    
    +------電腦
    +----------整機
    +----------筆電
    +----------配件
    +------手機
    +----------功能機
    +----------智能機
    
    |分類2:scope=APP_UI_Category|
    
    +------首頁
    +----------推薦
    +----------特色
    +----------筆電
    +----------配件
    +------促銷 
    +----------限時特惠
    +----------團購
         
    |分類2:scope=Web|
    +------首頁
    +----------推薦
    +----------熱銷
    +----------時令
    +----------數碼
    +------會員
    +----------特惠
    +----------團購
    
>---
>>* **SPU表**
> 
>     字段:
>     {
>      Id:"SpuId"
>      name:"名稱",
>      displayName:"顯示名稱",
>      brand:"品牌",
>      defaultCate_Id:"默認分類Id"
>      ...
>     } 
> 是售賣的商品,每個商品都有很多的屬性,所有的商品都具備有相同的屬性集就存在SPU表內,比如說Iphone,共同屬性有**Id,Name,displayName,brand(品牌),defaultId(默認分類編號**):手機》智能。共有的屬性(確定所有商品都會有的屬性)就放在SPU表中作為它的字段,不關注庫存。

>* 什么是**默認分類**?
>>>比如說:Ipone是屬于[3C](https://baike.baidu.com/item/3C%E4%BA%A7%E5%93%81/10865989),手機屬于移動電話,相當于類目。

>* 容器相當于分類?
>>>容器也是分類,但是不是此分類非彼分類。這里容器的概念是方便UI展示的。請參考Container表
>
>拋開分類不管,我們只管屬性,SPU是所有商品共有的屬性:brand,name.....,SKU是一個商品下變化的屬性。從程序的角度思考,可以把SPU看成是一個abstract,SKU是它的實現類。SKU{Id,name,displayName,商品編號=Id,外部編號(每一個商品都有一個69碼),Spu_Id}。


>---
>>* **Container表**
> 
>     {
>      Id:'1'//編號。
>      categoryId:"1",//特色推薦分類
>      categoryName:"特色推薦"
>      container_count:"4"http://特色推薦下的容器數量
>      container_Id:[1,2,3,4]//包含的容器編號。
>      jsons:'自定義存儲json的內容'
>     } 
>     
> 
>     容器表:
>     {
>      Id:'1'//容器編號
>      toples:{title,sub_title,cover,price,link,Id:"可以是文章的,可以是商品的"}//點擊點
>      categoryId:[1,2,3,4,5] //可以屬于多個分類
>     }  
>     
>假如現在要做一個在APP上展示的一個 推薦 產品。如果現在是沒有容器這個概念,用來設計的話,需要把 **容器_name**:推薦 作為屬性存儲。現在我們單獨做出一張表來作為容器。容器表有一個**Id**,也有一個**默認顯示元素數量**的字段,比如說,我們在一個頁面上只展示4個元素塊。而不同的列表顯示的是不同的。記住,它是一個塊的概念。當我們的后臺管理人員把**商品入庫后**,它手動操作把某一個**入庫的商品加入到容器里面**進來。所有這個表也有一個**productId**。每次讀取容器的時候就可以查詢該容器下的Product。容器它也有一categoryId。

>* 已經存在Category表了,現在容器也有一個categoryId,它是屬于Category的嗎?
>>>不是,Category是一個Scope下的分類,而我們已經把容器單獨抽取出來作為一個表。所以不一樣。容器是用來展示的塊。比如說一個二級分類(Category表)下有一個推薦分類(Category表)頁,推薦的展示頁中有一個塊屬于**”特色推薦“**塊,是用于展示的塊。而Category表沒有展示的概念,是在后臺存儲的。比如說在上面寫的Category分類表,以分類2為例子:**|分類2:scope=APP_UI_Category|**下面有一個首頁,首頁下邊有一個推薦分類。以此為例,假如我們想在推薦分類下展示產品,這個時候我們并不知道該推薦下有哪些產品,APP首頁推薦下的產品 與 Web 端 首頁 推薦下的產品可能不一樣 ,所以我們把Container單獨作為一個表。
>
>>>**每個分類(Category表)下有多個容器塊或者一個容器塊。容器是最小化的,分類(Category是用于劃分的),容器是用來展示的,因為我們在UI下是對顯示數量有控制的,容器是沒有類目這個結構,它是被分類(Category)包含的。它只對自己容器里邊的內容進行界定,比如說items_count(容器數量),默認放4個,還有items(容器集合),還有自定義存儲json的內容(這是一個動態的內容,交給前端處理的,比如說樣式,我希望容器的第一條信息加粗顯示等等。一個分類包含多個容器,一個容器item下包含若干元素(tople),這個元素就是一個點擊點,用tople表示(點擊的意思),比如說,商品,可以是一個點擊點,一篇文章,一個視頻都是一個tople,tople由后臺自動或者非自動或者人工,把商品的屬性添加到這里來,一個tople下有title,sub_title,cover,price,link,Id)**
>
>* 一般瀏覽京東的時候,瀏覽一個推薦分類下的”精選3折起“塊(容器一),”男子精選“塊(容器二),”女子精選“塊(容器三),當我點擊進去”精選3折起“(容器一)的時候不是有多個商品展示嗎?有如下產品(以[adidas](https://shop.m.jd.com/?shopId=58463)為例),會看到多個不同的產品,如下:
>     
>     {
>     
>       "男子跑步鞋¥499 <del>¥899</del>(帶封面,點擊可跳轉)"
>       
>       "男子訓練鞋¥499 <del>¥799</del>(帶封面,點擊可跳轉)"
>       
>       "男女經典鞋¥289 <del>¥869</del>(帶封面,點擊可跳轉)"
>       
>       ......
>       
>     }
>     
>   回歸到問題,一個tople下不是應該是對應多個產品嗎?怎么字段是       title,sub_title,cover,price,link,Id  ?
>>>   因為這也屬于一個商品的共性,容器是用來展示的,tople也是用來展示商品的,因為我們做的是電商平臺,所以這里就有展示商品這里針對任何商品,這里展示商品都需要有title,sub_tile,cover(封面,只放一張圖),price,link,Id. 所以這么設計,就是這個道理。這里不會調加所有”3折起的產品“,這個tople只是一個簡化的版本。當我們點擊了,就會跳轉到商品詳情頁。[男子跑步鞋¥499 <del>¥899</del>(帶封面,點擊可跳轉)](https://item.m.jd.com/product/10618699195.html),這個時候我們才到商品下去加載商品的東西,什么顏色,尺碼等等屬性。 **這個Id存放的有可能是文章的Id,skuId等等。**
>
>>>**容器和tople都是用來前端展示的東西**


>---
>>* **SKU表**
> 
>是SPU的擴展,SKU可能有N個分類。所以沒法寫分類Id,但是SPU表下有一個defaultCate_Id(默認分類編號),所以商品入庫的時候用的是SPU表下的defaultCate_Id。
>
>     字段:
>     {
>      Id:"skuId"
>      name:"屬性名稱",
>      displayname:"",
>      商品編碼:"=Id",
>      外部編碼:"69碼",
>      spu_id:""
>      ...
>     }

>---
>>* **Properties表**
> 
>     字段:
>     {
>      Id:"PropertieId"
>      external_Id:"外部Id",
>      spu_or_sku:"type,spu有屬性,sku也有屬性.",
>      name:"屬性名",
>      value:"屬性值",
>      unit:"單位"
>      ...
>     }
>**比如說:**
>
>>| Id | external_Id |spu_or_sku|name|value|unit|
>>| ---| ----------- |----------|----|-----|----|
>>|10  |   1   |  spu | cpu型號  | x5    |    |
>>|11  |   1   |  spu | color   | red    |    |
>>|12  |   1   |  spu | weight  | 500    |  g   |
>>|13  |   1   |  sku | 內存   |   32  |  g  |
>>|14  |   1   |  sku | color  |黑色     |    |
>>|15  |   1   |  sku | bundle_Items  |5,3(都是sku)     |    |

>
>**這張表以后有可能數據量大的時候需要分庫。**
>如果是共有的就寫spu,如果是私有的話,就寫sku。sku是spu的擴展。spu的屬性是重復的屬性,sku的是擴展的,所以brand就不需要要了,spu只管非變量的,變量的它不管。
>
> 顯示的時候,先查找該商品的spuId以及skuId,然后在進行查詢展示。其他的就歸前端去展示。
> 
>入庫的時候,可以選擇模板,也可以自己添加。
>
>---
>>* **Template表**
>
>每個人不可能把商品的屬性都記得住。所以需要提供一個Template表。模板是由運營人員來寫的。手機分類下是一個模板,電腦分類下是一個模板,其它分類下面也是一個模板。所以添加產品的時候有一個分類Id.當我們添加產品的時候,選擇了分類后,就會加載默認模板,name就代表屬性,以及是否必填項,value就是自己填寫的。比如說你賣電腦,就需要把CPU寫到規格去。模板的作用就是輔助商品入庫的。為了盡量讓name不需要自己寫而出現這個表的。
> 
>     字段:
>     {
>      Id:"模板編號"
>      name:"屬性名稱",
>      IsRequired:"是否必填",
>      categoryId:"分類Id,商品入庫的時候需要填寫categoryId"
>      ...
>     }

  • 難點區分###

    SPU,SKU,Template,Properties之間的關系

    例子:你去一個超市,要買一個Iphone,當你跟服務員說:我要買一個Iphone,這個時候
    服務員會問你,你要Iphone 6還是 Iphone 6 plus,還是 Iphone 5 還是 Iphone 7等等,會把所有型號問你一遍。
    Ipone是代表一個產品的總稱,或者可以說是品牌。Iphone 6 plus 可以看做一個商品,進行銷售的商品。

    SPU 就代表Iphone 6,Iphone 6 plus, Iphone 5,Iphone 7。有一個共同的屬性:品牌。
    品牌是所有商品共有的特性。

    Properties:添加完一個Iphone 7后,就添加 屬于 SPU 的 Properties,這里填寫的是
    Iphone 7 的共同屬性:{weight:xxxg}。而SPU表 填寫的是 所有商品(Ipone,電腦,衣服,酒etc.)的共同屬性,而color是 Iphone 7這個商品的動態屬性:紅色,黑色等等。{sku:1,color:紅色;sku:1,color:黑色;}所以這個不同的屬性是填寫屬于Iphone 7的 SKU 的

    SKU 就代表Iphone 6,Iphone 6 plus, Iphone 5,Iphone 7。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,250評論 6 530
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,923評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,041評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,475評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,253評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,801評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,882評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,023評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,530評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,494評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,639評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,177評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,890評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,289評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,552評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,242評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,626評論 2 370

推薦閱讀更多精彩內容