今天去面試,被問及了一個很好的問題.
他們也還沒有解決如何去顯示庫存的聯(lián)動問題.
顏色,版本,選擇版本可以分別選擇互相聯(lián)動,比如選擇了wifi版128G,原來選擇的金色可能就變?yōu)椴豢蛇x狀態(tài).
這其實是一個多對多的關系.用一般的數據結構很難表達的出來.
有一個比較好的辦法就是通過一個編號,把具備某種特征的物品用編號串起來.
比如
金色:A, 銀色:B, 深空灰色:C
WIFI版128G:O, WIFI版32G:P, Cellular版128G:Q, Cellular版32G:R
普通版:11,Pencil套裝版:22, 殼膜套裝版: 33
那么一個金色,WIFI版128G,普通版的ipad的編號就是AO11,
在金色,WIFI版128G,普通版的屬性后面都分別有個列表,列表中都有一個AO11的編號.
如果金色的屬性列表后面沒有AO11的編號的數據,那就說明當前金色,WIFI版128G,普通版的ipad缺貨.
為了提高計算效率,客戶端收到屬性列表的數組后,將其轉化為集合.當用戶選擇顏色中的屬性后,將其后的集合與版本和選擇版本后的所有屬性列表的集合做交集運算.有交集的就說明該商品不缺貨.
可以被選擇,否則就自動選下一個屬性,將當前的屬性的按鍵變成不可選狀態(tài).
我查看了一下某東的代碼,發(fā)現他們也是這個設計思路.
比如他們的列表就是下面這樣的.
"colorSize": [{
"title": "顏色",
"buttons": [{
"text": "金色",
"no": "1",
"skuList": ["100001478695", "100001964720", "100002866472", "100002866474", "100002866488", "100002866524", "6749532", "6805044", "6872784", "7019143", "7019899", "7086547"]
}, {
"text": "銀色",
"no": "2",
"skuList": ["100001478691", "100001964744", "100002026797", "100002866490", "100002866500", "100002866516", "6749070", "6805110", "6805332", "6806436", "7086491", "7086833"]
}, {
"text": "深空灰色",
"no": "3",
"skuList": ["100001478693", "100001964692", "100002026803", "100002866508", "100002866510", "100002866514", "6805712", "6806366", "6962865", "7019127", "7086457", "7086643"]
}]
}, {
"title": "版本",
"buttons": [{
"text": "WIFI版128G",
"no": "1",
"skuList": ["100002026797", "100002866488", "100002866508", "6805332", "6805712", "7019143", "7086457", "7086491", "7086547"]
}, {
"text": "WIFI版32G",
"no": "2",
"skuList": ["100002866514", "100002866516", "100002866524", "6749070", "6749532", "6872784", "6962865", "7086643", "7086833"]
}, {
"text": "Cellular版128G",
"no": "3",
"skuList": ["100001478693", "100001478695", "100001964744", "100002866474", "100002866490", "100002866510", "6806366", "6806436", "7019899"]
}, {
"text": "Cellular版32G",
"no": "4",
"skuList": ["100001478691", "100001964692", "100001964720", "100002026803", "100002866472", "100002866500", "6805044", "6805110", "7019127"]
}]
}, {
"title": "選擇版本",
"buttons": [{
"text": "普通版",
"no": "1",
"skuList": ["6749070", "6749532", "6805044", "6805110", "6805332", "6805712", "6806366", "6806436", "6962865", "7019127", "7019143", "7019899"]
}, {
"text": "Pencil套裝版",
"no": "3",
"skuList": ["100001478691", "100001478693", "100001478695", "100001964692", "100001964720", "100001964744", "6872784", "7086457", "7086491", "7086547", "7086643", "7086833"]
}, {
"text": "殼膜套裝版",
"no": "4",
"skuList": ["100002026797", "100002026803", "100002866472", "100002866474", "100002866488", "100002866490", "100002866500", "100002866508", "100002866510", "100002866514", "100002866516", "100002866524"]
}]
}],
"colorSizeTips": "#與其他已選項無法組成可售商品硕噩,請重選"
}