ruby - PHP如何實現收貨地址以及出貨倉庫的優先倉庫選擇問題
怪我咯
怪我咯 2017-06-27 09:18:02
0
1
903

今天我來問個技術性的問題, 關於商品,收貨地址以及發貨倉庫的優先倉庫選擇問題.

如題:

  1. 用戶購買了商品A, B, C 三個商品(可以認為用戶買了n個SKU商品, 每個sku有對應的數量), 商品SKU我們用大寫: A, B, C;

  2. 收貨地址為 X ;

  3. 每個商品都對於多個倉庫, 倉庫發貨選擇最近最優(優先順序根據收貨地址配置), 如倉庫有: a, b, c, d(倉庫我們用小寫字母表示)等等;

優先邏輯:

用戶購買的商品, 選擇倉庫出貨, 包裹數越少越優(主), 包裹越近越優(次);

收貨地址為 X, X 位址對應的倉庫優先順序清單:

X => a,b,c,d

範例:

範例1. 用戶購買了1個sku(數量是3個)發送到對應的位址X:


A: 3

A這個商品對應的庫存以及數量: X位址對應的順序是: a,b,c,d

A 對應的倉庫以及庫存清單:

 a: 1
 b: 3
 c: 4
 d: 5

依照最少包裹最近倉庫原則, 結果會扣除 b倉庫存(A商品3個)發貨1個包裹.


例2. 用戶購買了2個sku發送到對應的位址X:

A: 3
B: 2

A,B這些商品對應的庫存以及數量: (X位址對應的順序是: a,b,c,d)

A 對應的倉庫以及庫存清單:

 a: 1
 b: 3
 c: 4
 d: 5

B 對應的倉庫以及庫存清單:

 a: 1
 b: 2
 c: 1
 d: 5

依照最少包裹最近倉庫原則, 結果同樣應該扣除 b 倉庫(A商品3個, B商品2個)存發貨1個包裹.


例3. 用戶購買了2個sku發送到對應的位址X:

A: 3
B: 2

A,B這些商品對應的庫存以及數量: (X位址對應的順序是: a,b,c,d)

A 對應的倉庫以及庫存清單:

 a: 3
 b: 3
 c: 1
 d: 5

B 對應的倉庫以及庫存清單:

 a: 1
 b: 1
 c: 2
 d: 1

依照最少包裹最近倉庫原則, 結果同樣應該扣除a 倉庫(A商品3個, B商品1個), 加上b 倉庫存(B商品1個), 發貨共2個包裹(a 倉和b 倉各一個)(這裡同樣做到了最好少包裹最近倉原則).


例4, 用戶購買了2個sku發送到對應的位址X:

A: 3
B: 5

A,B這些商品對應的庫存以及數量: (X位址對應的順序是: a,b,c,d)

A 對應的倉庫以及庫存清單:

 a: 2
 b: 3
 c: 4
 d: 5

B 對應的倉庫以及庫存清單:

 a: 1
 b: 1
 c: 2
 d: 5

依照最少包裹最近倉庫原則, 結果同樣應該扣除d 倉庫(A商品3個, B商品5個), 發貨共1個包裹(d倉一個), 這裡就做到了最少包裹數原則.


敢問, 大牛些這個演算法如何破?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(1)
学习ing

我是這麼想的,先把sku,數組降序,比如,3件sku,array(8,4,1);
分別得出8件,4件,3件的最優包裹方案,
然後將這三個方案的倉庫狀況,合併去重,就可以得優的方案了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板