商品id生成策略:當前時間毫秒值+兩位隨機數,不足兩位前面補零。(因爲須要不斷的導入導出,不適合自增加)java
添加商品,返回的是自定義結構(包括響應狀態,響應消息,響應數據),查詢商品表和商品描述表。redis
內容服務系統:數據庫
內容分類表:tb_content_category id,名字,是否父節點,父id。主鍵返回。 json
內容表:tb_content id,分類id,標題,副標題,url,圖片,建立時間,更新時間。跨域
首頁展現加緩存,使用hash數據類型,哈希的表名本身定義好比content,由於是固定的,單獨分離出來寫在配置文件中。瀏覽器
Key:cid緩存
Value:內容列表。須要把java對象轉換成json。(writeValueAsString)服務器
搜索用like %name%.cookie
展現商品詳情時:根據商品id查詢商品信息(tb_item)獲得一個TbItem對象,缺乏images屬性,能夠建立一個pojo繼承TbItem,添加一個getImages方法。session
展現商品數據時添加緩存,設置緩存過時時間緩解數據壓力。因爲hash不能設置某個filed的過時時間。
須要使用String類型來保存商品數據。能夠加前綴方法對象redis中的key進行歸類。ITEM_INFO:123456:BASE、ITEM_INFO:123456:DESC。value就是商品數據
若是把二維表保存到redis中:一、表名就是第一層二、主鍵是第二層三、字段名第三次
三層使用「:」分隔做爲key,value就是字段中的內容。
單點登陸:
一、可使用Session服務器,保存Session信息,使每一個節點是無狀態。須要模擬Session。單點登陸系統是使用redis模擬Session,實現Session的統一管理。
用戶表:用戶名、密碼、電話號碼,郵箱,建立時間,更新時間。
登錄以前作校驗:
參數:從url中取參數1、String param(要校驗的數據)2、Integer type(校驗的數據類型)
響應的數據:json數據。e3Result,封裝的數據校驗的結果true:成功false:失敗。
登陸的處理流程:
一、登陸頁面提交用戶名密碼。
二、登陸成功後生成token。Token至關於原來的jsessionid,字符串,可使用uuid。
三、把用戶信息保存到redis。Key就是token,value就是TbUser對象轉換成json。
四、使用String類型保存Session信息。可使用「前綴:token」爲key
五、設置key的過時時間。模擬Session的過時時間。通常半個小時。
六、把token寫入cookie中。
七、Cookie須要跨域。例如www.e3.com\sso.e3.com\order.e3.com,可使用工具類。
八、Cookie的有效期。關閉瀏覽器失效。
九、登陸成功。
在不登錄的狀況下也能夠添加購物車。把購物車信息寫入cookie。
優勢:一、不佔用服務端存儲空間二、用戶體驗好。三、代碼實現簡單。
缺點:一、cookie中保存的容量有限。最大4k 二、把購物車信息保存在cookie中,更換設備購物車信息不能同步。
一、從cookie中查詢商品列表。二、判斷商品在商品列表中是否存在。三、若是存在,商品數量相加。四、不存在,根據商品id查詢商品信息。五、把商品添加到購車列表。
六、把購車商品列表寫入cookie。
登陸狀態下,須要把購物車數據保存到服務端。須要永久保存,能夠保存到數據庫中。能夠把購物車數據保存到redis中。
二、redis使用的數據類型
a) 使用hash數據類型b) Hash的key應該是用戶id。Hash中的field是商品id,value能夠把商品信息轉換成json
應該使用攔截器實現。
一、實現一個HandlerInterceptor接口。
二、在執行handler方法以前作業務處理
三、從cookie中取token。使用CookieUtils工具類實現。
四、沒有取到token,用戶未登陸。放行
五、取到token,調用sso系統的服務,根據token查詢用戶信息。
六、沒有返回用戶信息。登陸已通過期,未登陸,放行。
七、返回用戶信息。用戶是登陸狀態。能夠把用戶對象保存到request中,在Controller中能夠經過判斷request中是否包含用戶對象,肯定是否爲登陸狀態。
訂單服務時:
一、從cookie中取token
二、若是沒有取到,沒有登陸,跳轉到sso系統的登陸頁面。攔截
三、若是取到token。判斷登陸是否過時,須要調用sso系統的服務,根據token取用戶信息
四、若是沒有取到用戶信息,登陸已通過期,從新登陸。跳轉到登陸頁面。攔截(登錄成功返回到原來的頁面可使用回調,在原頁面保存url,而後登錄成功返回到原來的url)
五、若是取到用戶信息,用戶已是登陸狀態,把用戶信息保存到request中。放行
六、判斷cookie中是否有購物車信息,若是有合併購物車
八、