2011-09-01 48 views
3

我在瀏覽關於Play! framework的帖子,並且遇到了一些帖子,其中討論了ecommerce。因爲我是初學者,所以我想做一個練習。我寫了下面列出一些用例和一些要求。我想聽聽你的意見,希望它能拓寬我的技術智慧。當沒有用戶登錄時存儲購物車(playframework疑惑)

購物車網頁上的一些要求:

1.用戶可以將項目添加到購物車即使沒有登錄到該網站。

2.用戶在點擊checkout link後需要登錄。

3.如果該商品尚未在購物車中,則商品頁面將包含addtocart按鈕。

4.Itemdetails頁面將包含一個minicartview,顯示購物車中的物品名稱和總價。

我編碼爲ShoppingCart如下。它可以從數據庫檢索使用它的User

@Entity 
class ShoppingCart{ 
... 
    @OneToOne 
    public User user; 
} 

我考慮過一些可能的情況。

1.用戶已進入Itemdetails頁面時已登錄。

這似乎很容易,我可以使用登錄的用戶從數據庫檢索購物車。

User user = User.find("byEmail", Security.connected()).first(); 
cart = ShoppingCart.find("byUser",user); 
... 

2.目前沒有用戶登錄。

這是困擾me.How來處理呢?我怎樣才能顯示minicartview這裏Itemdetails頁?我應該在哪裏存放車?緩存是易失性。如何否則我就存放車不能被信任?我不能以dB爲單位存儲,直到用戶登錄。

如果有人可以使事情有關此方案的明確,它可以幫助我很多..

回答

2

您有幾種選擇。您可以

  1. 將購物車項目存儲在您的會話中(因爲它是一個cookie,試圖限制您存儲的數量)。當用戶登錄時,您可以將會議購物車項目與其登錄的用戶項目合併。就像亞馬遜這樣的網站而言,嘗試在用戶的計算機上存儲長時間的會話以記住登錄用戶的ID以供以後使用是有意義的。

  2. 將數據存儲在臨時用戶名的數據庫中。這與會話非常相似,但是如果未將臨時用戶數據庫錶轉換爲完整用戶,則必須有一個定期作業來清除臨時用戶數據庫表。

就個人而言,我會去的選項1.它是實現相當簡單,沒有什麼個人在Cookie(因爲它只是標識),並且是指作爲短期存儲。

+0

當你說,在會話中存儲購物車項目,你的意思是將它們存儲在緩存?因爲,我只能在會話中存儲字符串。要存儲任何Set,我只能使用緩存。但是,有問題緩存是不穩定的,並且一次放入的項目可能不會用於檢索 – jimgardener

+0

不,我的意思是會話。您可以使用JSON將您的Set設置爲字符串,也可以構造一個數字列表(以逗號分隔)並存儲該列表。 – Codemwnci

相關問題