談一談購物車

2022-07-16 01:24:09 字數 1964 閱讀 2004

如果你不懂歷史,恭喜你,你站在了技術前沿,學習新生的事物,沒有歷史的包袱和思維定式,你一定前途無量。

如果你和我一樣,從乙個遙遠的時代過來,那麼同樣恭喜你,你看到了歷史的變遷。

技術的飛速發展,促使你得不斷的逼迫自己學習新的事物,相信你的積澱能使你在不斷的學習中更加得心應手,對亙古不變的設計運用的爐火純青,是任何人都無法代替的。

今天要談購物車我就是站在這樣的乙個時代變遷的和系統重構的時間點上,基於現在我們現有的系統談一談我們的購物車。為什麼為什麼為什麼要重構購物車。

這個問題說起來就又是乙個不長不短,不大不小,不痛不癢的歷史問題。

我們不防這樣按實際的情況想一想,乙個商家店鋪或者倉庫賣東西,舉行或者不舉行**活動,賣商品。

按照這樣的乙個思路想下來,我們的購物車大概是可以這樣分類的,首先購物車然後倉庫或者店鋪,然後**活動,然後商品。

大概的樹形結構下來應該是:

shoppingcart

store

activity

product

這樣想的乙個結構應該是能滿足很多的使用情況的,比如:

[京東自營]

[活動無,沒有活動當然可以不顯示活動名字]

長白山礦泉水一箱 一箱 20元

嶗山白花蛇草水一箱 一箱 56元

[羊之意店鋪]

[滿100減30]

鋁膜車衣一件 一件 59元

洗車水槍一支,贈送3公尺水管 一支 38元

[馬克華菲官方***]

[買2贈1]

白色l號t恤 1件 88元

黑色l號t恤 1件 108元

[贈品]藍色l號t恤 1件 0元

這樣子是應該能滿足購物車的需求的,然後購物車商品選擇完畢後,

進入結算頁面,在結算頁面可以選擇是不是使用優惠券,減免券之類的,積分之類的,同時計算出需不需要支付郵費。

最後確認,計算最終的**,使用完優惠券,積分,郵費,等所有的金額,落庫,讓使用者支付。

這就是我想到的乙個購物車的結構了,有同事仔細檢視過京東的和**的結果,基本大體的設計是一樣的,當然會有差別,但整體思路是一樣的。

我想這些都是成熟的設計和結構,不會逃出設計人員的法眼。

結算確認後直接支付或者先生成訂單,之後再支付,這個**和京東的處理行為是不一樣,

他們的不一樣在於如果使用者同時在一單內購買了不同店鋪的商品,先不支付之後再支付,**是可以分開支付的,而京東是不能分開支付的,

**在生成訂單時制直接拆分是不同的兩個或多個訂單,而京東只有在支付後才顯示兩個或多個不同的訂單。

我想他們不一樣可能各自有各自的考量和理由。

在接下來就要談支付和拆單了,支付的問題我在之前談過乙個,拆單的問題以後在談。

今天最後的一點時間在說一說,購物車持久化時資料庫的儲存設計。

我之前的文章說過**活動的設計,結合活動的設計,大概購物車的設計也是不用存活動的資訊的,

活動資訊因為和時間關係比較緊密,實時查詢可能效果更好,活動資訊可以放記憶體或快取中查詢起來會很快,不用擔心時間效率問題。

那麼購物車的資訊可能就是如下這樣:

shoppingcart(

int id pk,

int user_id,

int goods_id,

string warehouse_code,

string sku_code,

string sku_name,

string img_url,

numberic price,

int number,

timestamp create_time,

timestamp update_time

boolean selected

)大概是這個樣子,可以看到這裡有一些反設計模式的地方,比如有些冗餘的資訊,對goods_id, warehouse_code等,這些冗餘考慮也是為了謹慎,

在沒完全想好如何相容老系統,如何做出完美的設計前,也不敢冒然不冗餘。

歡迎網友討論指正,一起**,給予指導,不吝賜教。

購物車(註冊 登入 購物 購物車 結帳)

購物車 註冊 登入 購物 購物車 結帳 shopping car dict dict money 0 def input username pwd username input username pwd input pwd return username,pwd def goods get with...

購物車原理

1.cookie n cookie儲存在客戶端,且占用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4kb,足以滿足購物車的要求,同時也減輕了伺服器的負荷 n cookie為瀏覽器所內建,使用方便。即使使用者不小心關閉了瀏覽器視窗,只要在cookie定義的有效期內,購物車中...

購物車動畫

金幣終點的x位置 cgfloat positionx 290.0f 終點x 金幣終點的y位置 cgfloat positiony 500.0f 終點y cgmutablepathref path cgpathcreatemutable 金幣的起始x位置 int fromx 20 arc4random...