資源簡介
1.功能需求
本系統主要涉及到3中對象:游客(未登錄)、商城注冊用戶、管理員。
游客(未登錄):可以登錄、注冊、商品查看,能在線瀏覽商城中已有的書籍。不能直接購買和添加到購物車。
商城注冊用戶:可以進行商品查看、添加商品到購物車、購物車管理、生成訂單、訂單管理、在線支付。實體書購買則需要通過添加購物車,設置收貨地址,填寫相關收貨信息,確認一切無誤后,生成訂單再在線支付,等待圖書管理員以郵遞的形式將實體書寄給用戶。
管理員:可以添加商品、商品管理、查看訂單 、榜單查看(導出)。管理員可以添加新的書籍和將出售完的書籍下架,系統還需要統計一段時間內各類書籍網絡版和實體版的出售數量,并建立榜單來吸引用戶。
2.功能分析
本系統目前設定12大功能:
1、用戶注冊 2、用戶登錄 3、管理員添加商品 4、查看商品列表 5、查看商品詳情 6、將商品添加購物車
7、查看購物車 8、修改購物車 9、生成訂單 10、訂單查看(取消) 11、在線支付 12、下載銷售榜單
1.用戶注冊
用戶需要填寫用戶名、密碼、確認密碼、昵稱、郵箱、驗證碼。需要用戶填寫一次性的驗證碼,驗證碼輸入正確,其他信息不為空,且郵箱格式輸入正確,才可以注冊,用戶點擊注冊按鈕,系統會向用戶發送激活郵件,用戶需要在限定時間內點擊激活郵件內的激活鏈接進行激活,激活成功則注冊成功,可以進行登錄操作。
2.用戶登錄
當用注冊成功后才可以進行登錄操作,如果登錄成功,判斷是否勾選了記住用戶名,系統設置Cookie保存用戶名7天;判斷是否勾選自動登錄,如果勾選了,系統設置Cookie保存用戶名和密碼7天,7天內自動登錄。如果登錄失敗,顯示用戶名或密碼錯誤。如果用戶未激活,則無法登錄成功。如果用戶名不存在,則登錄不成功。
用戶登錄成功后會有一個注銷按鈕,點擊注銷按鈕,可以注銷用戶。
3.添加商品
管理員有權限添加商品,添加商品時需要添加一個商品圖片,我們使用文件上傳。添加商品時需要輸入商品名稱、商品價格、商品類別、商品數量、商品圖片、商品描述。非管理員添加商品上傳文件會顯示權限不足。圖片添加成功后會跳轉到主頁面。
4.查看商品列表
可以以列表的形式查看所有商品的簡略信息,商品會以圖片的形式顯示,通過點擊商品名稱或者商品圖片,可以查看商品的詳細信息。也可以根據商品id查找相應商品。
5.查看商品詳情
點擊商品名稱或者商品圖片,可以查看商品的詳細信息,商品詳情頁面會顯示商品名稱、商品價格、商品類別、商品數量、商品描述、商品圖片以及添加到購物車等信息。
6.添加到購物車
本系統對購物車功能進行了簡化,沒有使用到數據庫,直接使用session存儲信息。添加商品到購物車流程:點擊添加到購物車,將商品id傳遞Servlet ,從Session中取出購物車對象,判斷商品是否已經在購物車中,如果不在,添加商品到購物車數量 1 。如果商品不在購物車中,需要根據商品 id 查詢商品所有信息,添加購物車。
7.查看購物車
當點擊查看購物車中商品時,會跳轉到一個jsp頁面,購物車是存儲在session中的,那么在jsp頁面上就可以直接得到session中的商品信息,包括商品名稱、商品單價、可購買數量、購買數量、總價等信息。在購物車頁面還可以清空購物車,刪除購物車中單項商品,刪除一項后,判斷購物車是否為空,如果為空,移除購物車對象 。在刪除商品時會有刪除確認操作,確認刪除后才可以刪除。還可以修改購買的數量, 通過JavaScript 控制購物數量修改。可以點擊 -按鈕完成商品數量修改操作,也可以直接在文本框中輸入相應數量進行修改。
8.修改購物車信息
在購物車頁面還可以清空購物車,刪除購物車中單項商品,刪除一項后,判斷購物車是否為空,如果為空,移除購物車對象 。在刪除商品時會有刪除確認操作,確認刪除后才可以刪除。還可以修改購買的數量, 通過JavaScript 控制購物數量修改。可以點擊 -按鈕完成商品數量修改操作,也可以直接在文本框中輸入相應數量進行修改。
9.生成訂單
在購物車頁面,點擊結算會出生成訂單,跳轉到訂單頁面,顯示訂單信息,需要填寫收貨地址。當訂單生成后,需要對以下的表進行操作:1.訂單表中要插入數據; 2.商品表中的商品數量要進行修改(修改商品的庫存) 3.訂單與用戶之間也存在關系,添加訂單時,也需要得到當前用戶的id。
10.訂單查看(取消)
查看訂單時,會根據用戶的權限顯示不同的信息,管理員可以查看做所有的訂單,注冊用戶只能查看當前用戶的訂單。查詢訂單基本信息時,可以查詢下單用戶昵稱和用戶名,查詢訂單項信息時,可以查詢商品的名稱和單價。訂單取消 : 刪除訂單表信息時,同時刪除訂單項信息 (訂單項信息依賴 訂單信息 ,必須先刪除訂單項)。注意事項 :1) 可以取消未支付的訂單,如果訂單已經支付,將無法取消 ;2) 管理員不能取消任何用戶未支付訂單,普通用戶只能取消 自己的未支付的訂單。
11.在線支付
本系統的支付操作,使用了在線支付操作epay第三方支付平臺,在顯示訂單頁面上,顯示的訂單信息中,包含了當前支付狀態。會顯示 "已支付" "未支付",如果是未支付,會有一個連接訪問支付頁面,并將當前訂單的id,以及當前訂單的金額傳遞到支付頁面。在支付頁面上可以選擇銀行,表單提交時,將訂單編號,金額,以及銀行進行提交。借助第三方支付工具進行支付,支付成功后,修改訂單狀態,修改訂單狀態要根據訂單編號修改。
1) 網站進行支付,根據易寶支付接口請求規范,生成易寶需要數據,將數據提交到易寶指定網址 https://www.yeepay.com/app-merchant-proxy/node
* 在提交支付請求給易寶,需要將請求中數據,使用易寶提供密鑰和算法進行加密,獲得數字簽名 hmac碼 ,將hmac碼發送給易寶
2) 易寶會連接銀行,進行支付
3) 支付后,瀏覽器會以重定向方式訪問 網站回調程序,易寶在收到銀行轉賬后,會以Socket方式通知網站
* 在瀏覽器重定向通知后,提供給用戶支付成功顯示頁面 (不要去修改訂單狀態)
* 在網站收到易寶點對點通知后,回復易寶success,修改訂單狀態
數字簽名原理:將數據 使用密鑰和算法加密后 獲得數字簽名hmac,將數據和數字簽名hmac一起發送給易寶,易寶采用同樣密鑰和算法對數據進行加密獲得數字簽名hmac,比較請求中數字簽名hmac與加密后獲得數字簽名hmac是否一致,如果一致 簽名hmac有效 (數據沒有被篡改 )
流程入口: 未支付訂單可以進行支付,管理員不允許支付
在線支付
1) pay.jsp 銀行選擇頁面
2) OnlinePayServlet 準備易寶支付參數
* 提供密鑰和算法 商家編號 真實的 將PaymentUtil 復制 utils包 , 將 merchantInfo.properties 復制 src
* responseURL 支付成功后 回調地址 ,該地址會收到 瀏覽器重定向和服務器點對點兩次通知 ,確保該地址 可以被易寶訪問 (estore項目必須要配置缺省虛擬主機)
將OnlinePayServlet準備易寶參數,傳遞JSP 確認
3) confirm.jsp 通過form的隱藏域,提交參數給易寶網址 https://www.yeepay.com/app-merchant-proxy/node
4) CallbackServlet 回調程序,收到瀏覽器重定向和服務器點對點兩個通知 ,瀏覽器重定向,顯示支付成功,不要修改訂單狀態。服務器點對點,修改訂單狀態,回復success 。
在顯示訂單的頁面上,會提供一個刪除訂單的連接。刪除訂單注意事項 :1.刪除訂單要將orders表中數據刪除---根據id刪除。2.需要刪除orderItem表中數據。 3.需要修改商品的數量 ,也就是說需要對products表進行update操作。
以上操作,都需要進行事務控制。
12.下載銷售榜單
導出銷售榜單,可以獲得商品銷售情況,統計已支付訂單項內容。榜單中包括銷售信息、銷售數量、訂單支付情況等。榜單文件可以使用 POI類庫導出為Excel。
代碼片段和文件信息
package?cn.itcast.estore.annotation;
import?java.lang.annotation.ElementType;
import?java.lang.annotation.Inherited;
import?java.lang.annotation.Retention;
import?java.lang.annotation.RetentionPolicy;
import?java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public?@interface?PrivilegeInfo?{
String?value();?//權限名稱
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-22?21:27??資料+源碼+筆記\
?????目錄???????????0??2018-10-23?21:39??資料+源碼+筆記\bookEstore\
?????文件???????59904??2018-10-14?17:01??資料+源碼+筆記\bookEstore.doc
?????文件?????????529??2014-09-27?09:38??資料+源碼+筆記\bookEstore\.classpath
?????目錄???????????0??2014-09-27?09:38??資料+源碼+筆記\bookEstore\.myeclipse\
?????文件?????????303??2018-10-23?20:26??資料+源碼+筆記\bookEstore\.myme
?????文件????????1753??2014-09-27?17:49??資料+源碼+筆記\bookEstore\.project
?????目錄???????????0??2018-10-23?20:35??資料+源碼+筆記\bookEstore\.settings\
?????文件?????????500??2014-09-27?09:38??資料+源碼+筆記\bookEstore\.settings\.jsdtscope
?????文件????????1040??2014-09-27?17:50??資料+源碼+筆記\bookEstore\.settings\com.genuitec.eclipse.j2eedt.core.prefs
?????文件?????????120??2018-10-23?20:35??資料+源碼+筆記\bookEstore\.settings\org.eclipse.core.resources.prefs
?????文件?????????629??2014-09-29?17:22??資料+源碼+筆記\bookEstore\.settings\org.eclipse.jdt.core.prefs
?????文件?????????468??2014-09-27?17:50??資料+源碼+筆記\bookEstore\.settings\org.eclipse.wst.common.component
?????文件?????????252??2014-09-27?09:38??資料+源碼+筆記\bookEstore\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件??????????49??2014-09-27?09:38??資料+源碼+筆記\bookEstore\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件???????????6??2014-09-27?09:38??資料+源碼+筆記\bookEstore\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????文件????????9231??2014-10-08?20:19??資料+源碼+筆記\bookEstore\estoresystem.sql
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\
?????文件?????????328??2014-09-27?09:39??資料+源碼+筆記\bookEstore\src\c3p0-config.xm
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\cn\
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\cn\itcast\
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\annotation\
?????文件?????????394??2018-10-23?20:27??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\annotation\PrivilegeInfo.java
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\dao\
?????文件????????1868??2018-10-23?20:27??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\dao\OrderDao.java
?????文件????????1924??2018-10-23?20:27??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\dao\OrderItemDao.java
?????文件?????????973??2018-10-23?20:28??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\dao\PrivilegeDao.java
?????文件????????2961??2018-10-23?20:28??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\dao\ProductDao.java
?????文件????????1826??2018-10-23?20:28??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\dao\UserDao.java
?????目錄???????????0??2014-09-29?21:53??資料+源碼+筆記\bookEstore\src\cn\itcast\estore\domain\
............此處省略681個文件信息
評論
共有 條評論