taotao訂單系統
需要注意的地方:
1、下訂單功能一定要使用關係型資料庫,因為其設計到錢,而noSql資料庫相比來說丟失資料的風險更大。
但是檢視訂單列表、檢視訂單詳情等功能則可以使用redis快取來提高效率,因為其不涉及到錢的操作,只是展示給客戶看。
2、訂單系統還要注意,不能重複提交,比如使用者下完訂單後,如果點瀏覽器的後退功能,不能讓使用者再次退回到下單前的頁面等。
3、其實還有個功能,是修改訂單狀態。
剛下單是下單未付款狀態,付完款是 未發貨狀態,然後是發貨狀態,簽收完成狀態。
4、訂單表的id生成策略
訂單表的主鍵 id 不能用自增長,因為商城系統中訂單實際上是會非常多的,資料量超大,後面很大可能要分表或者分庫,而自增主鍵一般只能用在一個表中。
5、建立訂單時的,Controller層資料的接收方式,以及測試時用 RESTClient是如何傳送json格式資料的
強制使用者登入的目的就是要根據使用者id查詢使用者的收貨地址,以便拼接使用者訂單。
前臺表單,後臺springMVC的Controller接收時要注意,spirngMVC的引數接收方式。
首先,我們後臺用一個大物件來接收所有資料。其中 paymentType等是大物件的直接屬性。
而orderItems是大物件中的一個屬性,這個屬性是一個物件集合List,而後臺要使用LIst接收引數,前臺要寫成 1大屬性名,2大屬性集合中某一個元素的在集合中的角標,3集合中某一個元素的屬性即:orderItems[3].itemId 這種格式。
大物件中還有一個屬性是一個物件,而前臺提交時,要寫成4大物件的屬性名,5大物件中屬性所表示物件的屬性 這種格式。
這個用於接收訂單的大物件就是我們之前根據訂單建立介面文件建立的訂單物件。
返回值:返回一個jsp頁面
如果Portal專案中出現異常,前臺返回友好的錯誤頁面,後臺在
如果後臺訂單專案新增訂單成功並返回了,但是這時前臺專案portal專案報錯了,那麼就會造成後臺資料庫中新增進來多條訂單,但是前臺因為報錯,卻不知道,所以這時可以,在前臺新增訂單報錯時,捕獲,然後用拿到的訂單號再呼叫一個服務去後臺刪除資料庫中剛剛新增的訂單。
後端order專案程式碼:
Controller: