師溫馨
(廈門大學,福建廈門,361005)
隨著計算機技術的發展,生活水平的不斷提高,人們已經不會僅僅滿足于在商場內購買商品而越來越多地希望可以在網絡上看到并獲得更多的貨物,電子商務網站就在這樣的環境下孕育而生了。電子商務購物網站能夠充分迎合大家的需求,為店鋪管理員、顧客提供最方便的平臺實現安全交易。它為顧客提供更多的購物選擇,使店鋪管理員可以在全國范圍內銷售產品,更符合大家的生活習慣,其快捷方便贏得了每一個人的喜愛。
Struts2 框架是一個基于Web 的MVC 設計模式實現框架,結構清晰,簡單、方便、易用, 加上Apache 組織對此開源項目的支持,是一個很好的輕量級應用。Struts 2 以Web Work 為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與Servlet API 完全脫離開。Struts2 通過Action 的調用完成界面跳轉時的動作處理,使得界面與動作分離,降低了代碼的耦合度。選用struts2 框架是開發電子商務購物網站的一個合適的選擇。
Hibernate 實現了Java 對象和表之間的映射。它還提供了數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL 和JDBC 處理數據的時間。Hibernate 的目標是對開發者通常的數據持久化相關的編程任務,解放其中的95%。Hibernate 避免直接使用sql 導致的代碼混亂繁雜。同時,使用大量的sql 語句,編譯時不知對錯,測試時也很難覆蓋全面,而Hibernate 完美地解決了這一點。使用Hibernate 可以使我們通過針對類的屬性進行操作改變數據庫中的值而不用直接更改數據庫底部的值。
Spr ing 貫穿表現層、業務層、持久層,在各方面都表現出較優良的特性,同時其具有高度開放性,使得我們可以根據需要選擇僅運用Spr ing 框架的某些部分。Spr ing 對POJO 之間依賴關系的管理由Ioc 容器負責,容器根據配置文件將依賴注入指定的對象中,這不僅提高了組件之間的解耦,還使得Spr ing 框架管理的任何對象都很容易支持AOP。雖然在廣義上看,st ruts 中的攔截器與AOP 工作原理相同,但是Spr ing AOP 基于Ioc 基礎,采用動態代理,同時具備對事務、日志等的集中式處理,具有更好的復用性。如果我們只是單純使用St ruts,那么各個模塊的交叉關注點處將存在許多代碼冗余,這對后期維護是不利的。Spr ing AOP 則只需將處理aspect的代碼注入主程序,大大降低了后期維護的復雜度。所以選擇Spr ing 框架,實現依賴注入,適合開發電子商務購物網站。
基于SSH 框架的電子商務購物網站主要包括以下模塊。
網站管理員包括普通網站管理員和超級網站管理員。網站管理員,有刪除、更改、增加用戶資料的權限;可以審核店鋪申請,管理已經通過審核的店鋪,包括增加一個賣家管轄的店鋪、更改店鋪資料、關閉該店鋪;可以更改店鋪的類別,包括增加一個新的類別或者刪除一個已有的類別,同時指定擁有該類別的店鋪頁面的默認風格;可以在操作頁面加入網站的界面風格選擇,同時增加店鋪某一類別的界面風格的選擇;也要實現對廣告位的管理,包括申請廣告位的店鋪的選擇,店鋪打折信息的實時發布以及在對應的時間與時段廣告位的正確發布;超級管理員擁有普通網站管理員的管理權限以及可以選擇查看普通網站管理員所做的所有操作。
店鋪管理員包括店鋪賣家、店鋪經理與店鋪客服人員。對于所有的店鋪管理員來說,均可以刪除、更改、增加商品。
店鋪賣家與店鋪經理可實現對商品的增加、刪除、上架、下架等處理。只有上架的產品才可以被網站用戶看到并加入購物車;可以設定增加的商品的描述信;以增加、刪除、修改店鋪的顯示目錄,同時制定的目錄可以有子目錄。店鋪經理擁有店鋪賣家與店鋪客服人員的權限以及可以選擇查看店鋪賣家與店鋪客服人員所做的所有操作。
店鋪包括三種店鋪:綜合體店鋪、精品館和精品店。每種店鋪擁有的商品數量限制,商品上傳圖片大小以及指定店鋪風格均不同。綜合體店鋪可以允許其他店鋪加盟該店鋪,為加盟店鋪增加廣告位,并管理自己和加盟店鋪的頁面風格。
用戶可以在任意界面進行登錄和注冊,如果用戶沒有登錄,不允許用戶查看購物車以及進行之后的操作;可以通過首頁目錄或者廣告位進入賣家界面進行選購商品;還可以在首頁切換自己希望擁有的網站界面風格;用戶可以通過搜索關鍵字查找相關的商品并進行查看。在進行選擇商品加入購物車完畢之后,可以支付自己的訂單。在商品到達之后,用戶可以選擇退貨或進行對商品的評價。
Ad Info 類:描述每一個廣告位的信息,其中包括:id(Integer);ad_number(Integer); real_storeInfo(StoreInfo);image_url(String);apply_time(Date);price(Double);apply_people_name(String);email(String);credit_card_number(String);telephone_number(String);status(Str ing);date_string(String);apply_time_long(Integer);discount(Double);final_time(Date)。
ApplyAdInfo 類:描述正在等待申請的每一個廣告位的信息,其中包括:id(Integer);ad_id(Integer);storeInfo(StoreInfo);image_url(String);apply_time(Date);apply_people_name(String);ema i l(S tring);c redit_card_number(String);telephone_number(String)。
StoreInfo類:描述每一個店鋪的信息;其中包括:id(Integer);store_name(String);goods_number(Integer);open_time(Date);status(String);total_price(Dou ble);reason(String);seller(Seller);store_type(StoreType);ad_status(String)。
DiscountCategory 類:描述每一種廣告位打包信息,其中包括:id(Integer);pr ice(Double);discount_l ist(Li st
User 類:描述所有用戶的信息,其中包括id(Integer),username(String),password(String),regist_time(Date),last_login(Date)。
Seller 類:描述所有店鋪管理員信息,繼承User類。 其 中 包 括:seller_credit(Integer);phone_number(String);email_address(String);image_url(String);real_name(String);sex(String);address(String);education(String);storeInfo(StoreInfo);id_card_number(String);category(String)。
Manager 類:描述所有網站管理員信息,繼承User 類。其中 包 括:birthday(Date);phone_number(String);email_address(String);image_url(String);real_name(String);sex(String);address(String);education(String)。
Customer 類:描述所有顧客信息,繼承User 類。其中包 括: birthday(Date);phone_number(String);email_address(String);image_url(String);real_name(Strin g);sex(String);address(String);education(String);o ccupation(String);status(String);remainMoney(Doub le)。
廣告位是根據不同時間以及不同時間段來進行收費的。打包的套餐會將不同價位的廣告位打包進行銷售,將價格略貴以及價格便宜的打包至一起,用更優惠的價格售出。如果售出的廣告位除了打包套餐中的廣告位剩余的廣告位數量不小于3 的話,則將這些剩余的廣告位總價格乘以0.8,最終的所有套餐總價格與剩余的廣告位總價格之和即為店鋪管理員應付的價格。
根據用戶選擇的廣告位獲得多個廣告位id,根據廣告位id 分別獲得廣告位實例(即類AdInfo 的實例),從而獲得各個廣告位的價格。找出所有可能組成的套餐組合,計算各個組合的價格,再循環比較所有的組合價格,得到最低價,通知店鋪管理員最優組合的套餐類別以及其余無法打包進入套餐的廣告位,告知店鋪管理員價格明細及最終價格,如果店鋪管理員同意繼續申請,則繼續廣告位申請操作,店鋪廣告位進入申請等待狀態。具體算法如下。
用List> apply_discount_list 記錄所有的廣告位組合的店鋪id 序列。在對List
> 的循環遍歷中嵌套兩次循環遍歷。在最外層的循環遍歷中,依次對每一個DiscountCategory 進行遍歷。在循環中,依次進行兩次循環遍歷,第一次循環遍歷記錄所有出現廣告位組合的DiscountCategory 的id,第二次遍歷從第一次出現廣告位組合的DiscountCategory 的id 開始遍歷,逐步尋找記錄所有的套餐組合。計算所有可能的廣告位打包的情況并分別計算出廣告位的價錢,最優組合(價格最低的組合)即為店鋪管理員最終選擇的組合。
訂單優惠包括店鋪優惠和全網優惠。全網優惠是指顧客購買的商品金額大于一定數值時進行打折或者是免運費等優惠活動。店鋪優惠是指店鋪內的部分商品進行打包套餐銷售或者是部分商品進行打折銷售,優惠活動由賣家管理員進行操作。
在結算訂單時,根據顧客購買的商品按照不同的店鋪進行分類。先分別根據不同店鋪的優惠條件計算顧客在不同店鋪中購買商品的總金額,再將其加和用于判斷是否符合全網優惠的條件以及參與全網優惠后的商品價格。
在計算一個店鋪的所有商品的優惠價格時,分別對該店鋪與購買商品相關的優惠政策進行遍歷,找出所有的可能情況后進行價格計算比較,價格最低的方法即為顧客在該店鋪購買商品的最終價格。
電子商務購物網站已經越來越受到大家的青睞并逐漸成為許多人購物的主流方式。它使人們能夠避免旅途的勞累、時間的擁擠而充分根據自己的情況進行更大范圍地、更廉價的購物選擇。電子商務購物網站的便捷將會讓它受到越來越多人的喜愛,此次開發的電子商務購物平臺也正是為了迎合大眾的需求。
[1] 孫鑫編.Java Web 開發詳解[M]. 北京:電子工業出版社,2006,169-296.
[2] 李剛. 輕量級J2EE 企業應用實戰[M] 北京:電子工業出版社,2007,344-786