電商領域Sku屬性選擇問題解決方案

2021-10-06 13:32:35 字數 1805 閱讀 6904

sku:可以直接售賣的商品

spu:同一類具有統一特性的商品集合

example:

spu: 華為 mate 30 pro 5g

sku:

- 華為 mate 30 pro 5g 黑色 6g 256g

- 華為 mate 30 pro 5g 銀色 6g 256g

- 華為 mate 30 pro 5g 黑色 8g 256g

- 華為 mate 30 pro 5g 銀色 8g 256g

- 華為 mate 30 pro 5g 黑色 8g 512g

- 華為 mate 30 pro 5g 銀色 8g 512g

電商領域,對於同一類別的商品,需要在前端進行展示。則會面臨一些屬性選擇的問題。

即我需要根據當前選擇的屬性,確定其他的屬性是不是可選的。如果不可選,則將剩餘屬性置灰。同時,可以根據實際情況,決定是不是展示預計庫存。

我們將所有屬性資料返回前端的時候,前端頁面應該做如下展示 (屬性選擇器)

實際電商頁面:

假設我們有如下庫存

顏色記憶體大小

儲存容量

庫存量黑色

6256

1000黑色6

5121000黑色6

1281000銀色8

25680銀色8

51280銀色8

12880銀色6

25680銀色6

51280銀色6

12880紅色8

51210

進入商品詳情頁的時候,必須是乙個具體的sku,此時,才能做到屬性選擇器的屬性有意義。

屬性選擇器的屬性可以選擇,也可以取消選擇,然後根據資料集,展示其餘屬性的可選性。

如不存在對應屬性鏈上的商品或者該屬性鏈對應的商品無庫存,此時這些屬性應該置灰、不可選。

方案一:前端實現屬性的選擇;屬性選擇過程,與後端無互動。

方案二:每次選擇了屬性,與後端進行互動,獲取其餘屬性的可選性(由商品庫存+有無商品決定)。

此處以方案二來進行分析和解決。前端實現,可以稍作修改實現。

第一步,通過sku資訊確定當前sku所屬的spu資訊

第二步,通過spu資訊獲取spu下掛載的所有sku的屬性項。

第三部,根據當前sku或者引數傳入的屬性選擇,標識出當前的已選,構建所有可能的sku屬性選擇集合,同時,標識其可選與不可選。

入參:

class

param

class

label

返回值

class

labelmap

class

labeldetail

構建屬性map

首先拿每個sku屬性的冪集(排除空集)

比如對於 黑色-6-256這個來說,他的屬性冪集為:

[,,,,,,]

此時如果選擇了黑色,則有:,,這些一定可選。對應這個spu下,其他的屬性則是不可選的。這種可選的屬性,需要返回到前端。用於標識。

當前僅當所有的屬性都有值被選中的時候,方可展示最終的預計庫存,其他情況無意義,且展示庫存僅為預計庫存,只有在下單的時候才會以商品id(skuid)來校驗最終的實際庫存。

Django migrate報錯問題解決方案

python3 manage.py makemigrations 生成資料庫遷移檔案 python3 manage.py migrate 遷移資料庫 簡簡單單兩條命令就完成了django的資料庫遷移 但是今天一天的時間都耽誤在這了,一點都不誇張的那種,早上去公司討論需求之後,研究了一下需要更改一下資...

vue axios post 404 問題解決方法

1.在main.js 入口檔案配置 172.20.10.7是我要掉的介面電腦的ip位址 import axios from axios axios.defaults.baseurl 設定乙個類似base url的請求路徑 global.axios axios 設定乙個全域性axios便於呼叫2.然後...

ubuntu mysql遠端連線問題解決方法

今天在配置opennebula 3.8的時候,當執行one start啟動時,報不能連線資料庫的錯誤,但是在shell下輸入mysql uroot p是可以登入的,所以問題應該是mysql不允許root使用者遠端 登入的問題,於是通過輸入下面命令 grant all privileges on to...