大二課設之圖書購物系統-邏輯實現

由於時間緊張,修改之前項目,技術:jsp+springboot+mybatis_plus
項目使用的MVC三層:Controller,service,mapper

主頁面:

用戶體驗流程:
登錄商城後,進入主頁面,顯示最新和熱門的圖書。
代碼邏輯:
在controller中調用service方法,將查到的圖書封裝到request域中,跳轉到主頁面然後顯示。
Service調用controller
Mapper中查詢圖書。

驗證碼模塊:

用戶體驗邏輯:用戶在註冊和登錄時需要輸入驗證碼,驗證碼對了才能進行下一個
代碼邏輯:
用jsp繪製一個驗證碼,然後把驗證碼的值放入session域中。
在登錄和註冊的controller中,需要把用戶輸入的驗證碼和jsp繪製的驗證碼進行判斷,如果相同,則通過,不同則報錯返回。
客戶端如果看不清驗證碼,可以點擊刷新邏輯:在有驗證碼的標籤或一個超鏈接中添加事件(加入js方法名)在點擊圖片或超鏈接時觸發事件(也就是執行該js方法)方法內容獲取驗證碼圖片的文本節點給文本節點的src屬性設置值,在訪問的路徑後面加一個參數,值爲當前時間.

註冊模塊:

用戶體驗流程:
註冊界面-輸入信息和驗證碼後點擊註冊
代碼邏輯:
Controller中獲得數據,調用service方法,成功跳轉到註冊成功頁面。失敗跳轉到註冊頁面,顯示失敗信息。
Service中進行驗證碼校驗,沒有問題,調用mapper方法插入數據。
Mapper中插入用戶數據。

登錄模塊:

用戶體驗流程登錄頁面-填寫表單登錄數據-點擊登錄按鈕-到主頁面
代碼邏輯:
在controller中獲得數據,將用戶信息放入session域中。調用service方法,成功跳轉到登錄成功頁面。失敗跳轉到登錄頁面,顯示失敗信息。
Service中進行用戶名密碼驗證,驗證碼判斷驗證
Mapper中根據用戶名密碼查詢數據

分類顯示模塊:

用戶體驗流程:
用戶進入主頁面後,顯示不同的分類,點擊不同的分類,顯示不同的圖書信息
代碼邏輯:
前臺用了ajax,通過json傳輸數據。調用後臺的controller方法
Controller中,調用service方法,把數據的結果返回主頁面。
Service調用mapper
Mapper中查詢所有分類
Mapper中根據分類id查詢所有圖書
圖書分頁顯示模塊:
用戶體驗:用戶查詢的圖書信息是分頁的
代碼邏輯:
設置一個PageBean
裏面的屬性
數據集合list
當前頁數
數據總數量
每頁顯示的數量
總頁數
其中總頁數等於
總數量%每頁顯示的數量==0?總數量/每頁顯示的數量:總數量/每頁顯示的數量+1;

jsp:
需要顯示第一頁,最後一頁,總頁數
判斷是否爲第一頁,如果爲第一頁,則沒有上一頁這個選項
判斷是否爲最後一頁,如果有最後一頁,則沒有下一頁這個選項

Controller:
1.獲取傳入的頁數
2…通過查詢數據庫獲取pageBean
3.將查到的pageBean放入request域中
4.轉發到顯示頁面

Service
獲取傳入的頁數
調用mapper中的方法,查詢出數據集合list
封裝pageBean對象
返回pageBean對象

Mapper
查詢有關數據。
用到sql語句的limit字段((當前頁數-1)*每頁顯示的數量,每頁顯示的數量);

購物車模塊:

用戶體驗流程
用戶登錄後,進入每個圖書的具體信息頁面,點擊加入購物車,然後可以點擊我的購物車進行查看,可以在購物車中刪除一個條目,也可以清空整個購物車。

購物車是放在session中的,所以還要在每個用戶剛開始登錄的時候就創建一個購物車,然後放入session域中。

cart和cartitem實體類的創建
cartietm中的屬性爲book類和count數量
方法:
小計:用數量乘以書的單價
cart中有個map集合,key爲book的bid,value爲cartitem
cart中的方法;
添加:如果進來的cartitem在購物車中已經有了,那麼只須要增加訂單數量
如果沒有,則map.put(key);
清空:map.clean();
移除一個購物項:map.remove(key);

邏輯代碼:
用戶進入圖書具體信息頁面後,點擊添加到購物車;跳轉到controller中
添加方法:
通過傳入的bid和count獲取book對象和購買的產品數量
從session中取出cart對象
創建一個cartitem對象
封裝cartitem對象
把cartiemt對象封裝到cart中
返回到購物車頁面

購物車的刪除購物項目和清空購物車都是直接調用controller 中對應的方法,
先在session中獲取cart,然後調用cart類中對應的方法

訂單模塊:

用戶體驗流程:用戶在購物車頁面,點擊購買後,進入訂單詳細頁面。在主頁面用戶可以點擊我的訂單查看該用戶所有的訂單,進入訂單列表頁面後,可以對訂單進行訂單的刪除,進入付款頁面,以及訂單的狀態修改。
代碼邏輯:
查詢我的訂單:
訂單中包含了很多的訂單項,每個訂單都包含很多訂單項
Controller調用service方法查詢訂單
Service中嗲用mapper的方法,然後封裝訂單的所有信息,然後返回給controller
Mapper中關聯查詢orderitem表和book表,結果放入一個List集合中。
Mapper中查詢order表。

修改訂單:

Controller獲取訂單信息調用service方法修改訂單
Service調用mapper
Mapper中根據訂單id修改訂單

訂單的刪除
沒有真的刪除,而且在數據庫加了一個deleted字段,邏輯刪除。默認給deleted字段賦值爲0。
如果用戶點擊了刪除訂單,則只需要改deleted字段的狀態爲1.
查詢訂單時加條件where deleted=0;

文件上傳模塊:

注意:表單類型需要設置
method=“post”
enctype=“multipart/form-data”
Controller中直接使用SpringMVC封裝好的MultipartFile
需要獲得文件的名字
設置上傳路徑
如果上傳的服務器路徑的文件夾沒有,需要創建
調用封裝好的file.transferTo(“路徑+文件名”)方法上傳

過濾器和攔截器模塊
項目用了過濾器和攔截器,攔截器是用在前臺用戶點擊圖書購物的時候,如果沒有登錄,則會提示去登錄。過濾器用在了後臺管理主頁面,如果後臺管理員沒有登錄,則不允許訪問後臺的jsp。
代碼邏輯:
1.在springboot的@configuratio配置類中實現WebMvcConfigurer接口
2.分別添加過濾器和攔截器的@bean
3.在過濾器和攔截器類中實現邏輯:
在session域中獲取相應的值,如果沒有,則說明沒有登錄過,便過濾/攔截。並跳轉登錄頁面。如果有,則放行。

過濾器可以過濾頁面和controller類,攔截器只能攔截controller。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章