11.20 mall4j開源商城系統

本文主要介紹基於微信小程序實現電商SKU組合算法問題 ,這也是電商業務裡比較複雜的一塊內容了。下面先看下實現的效果:

商品規格SKU算法實現 - mall4j開源商城系統

SKU點擊切換效果

後臺編輯商品時,將一些規格組合禁用,如: 金色 256G 原廠延保版 是禁用狀態的。當內存選中256G版本選中原廠延保版,那麼顏色金色就會變成 虛線邊框,表示這種組合是被禁用的,點擊了 金色後就會 變成無貨狀態,不可購買。

下面來整理下實現思路,先定義一下接下來會用到的名詞:

規格名—比如:顏色、內存、版本

規格值—比如:暗夜綠色、256G、原廠延保版

SKU—唯一確定一件商品,即 { 顏色:暗夜綠色;內存:256G;版本:原廠延保版;}

後臺接口返回的數據是一個SKU的列表json字符串 skuList:

商品規格SKU算法實現 - mall4j開源商城系統

每一個SKU對象都含有 skuId,price(價格),stocks(庫存),properties(SKU屬性值)

我們分三步走:

1、組裝SKU數據,在界面上顯示出 所有規格選項

1.1 把所有的sku對象的 properties(SKU屬性值) 放進一個數組 allProperties

商品規格SKU算法實現 - mall4j開源商城系統

下面就是對應的結果

商品規格SKU算法實現 - mall4j開源商城系統

1.2 然後我要獲得所有的規格名 放進 數組 propKeys,獲取所有的規格名下的規格值 放進 對象 skuGroup

商品規格SKU算法實現 - mall4j開源商城系統

結果如下

商品規格SKU算法實現 - mall4j開源商城系統

1.3 有了 skuGroup對象,我們就可以在界面上渲染出

商品規格SKU算法實現 - mall4j開源商城系統

結果如下

商品規格SKU算法實現 - mall4j開源商城系統

2、默認選中一個SKU,並計算其他選項的狀態,可選或者不可選(虛線邊框)

//找到和商品價格一樣的那個SKU,作為默認選中的SKU,(後臺代碼計算商品價格時,需要把所有SKU的最低價設置成商品的價格)

並組裝好三個變量: selectedProp,selectedPropObj,selectedProperteis

商品規格SKU算法實現 - mall4j開源商城系統

然後在wxml裡就可以渲染出來,默認SKU的選中狀態和其他選項的狀態

商品規格SKU算法實現 - mall4j開源商城系統

prod.wxml部分代碼。其中有wxs方法:array_contain 和 props_contain2

商品規格SKU算法實現 - mall4j開源商城系統

number.wxs 部分代碼

3、規格選項的點擊事件,計算當前SKU的信息

商品規格SKU算法實現 - mall4j開源商城系統

最後,給出開源商城系統Mall4j 項目地址,大家可以去直接參考代碼。https://gitee.com/gz-yami/mall4j

商品規格SKU算法實現 - mall4j開源商城系統


鏈接文章

https://juejin.im/post/5dc36e986fb9a04a8a53bf33


分享到:


相關文章: