劉媛媛



摘要:該文根據某移動母嬰電商公司的實際需求,提出了一套適用于母嬰用品購買租賃的全新設計方案。使用SSM框架進行系統構架搭建,設計出一套基于MVC模型的母嬰用品購買租賃系統。此外,系統通過引入推薦算法,改善了用戶的體驗度,為用戶提供了一個便捷的母嬰用品租賃平臺。
關鍵詞:推薦算法;租賃;MVC;SSM
中圖分類號:TP311? ? 文獻標識碼:A
文章編號:1009-3044(2023)01-0053-05
開放科學(資源服務)標識碼(OSID) :
1 緒論
2021年8月,全面三孩生育政策正式通過,意味著中國三孩政策全面開放[1]。這一重大的政策變動將對母嬰消費市場產生了巨大的影響[2]。為了提倡共享經濟,有效節約資源,針對兒童玩具、嬰兒推車等時效性強的消費品,移動租賃平臺給消費者提供了一個租賃的渠道,解決了母嬰用品價格高、時效性短、更新快等問題[3]。本文將基于上述系統中租賃流程復雜,用戶體驗度差等問題,設計出一套租賃流程簡單,使用方便,用戶體驗度好的移動母嬰租賃App。系統中用推薦算法實現了在不同的商城基于銷量,評論數,好評數,以及搜索數的排名推薦,基于用戶的協同過濾推薦。
2 系統的需求分析
2.1 功能性需求分析
管理端分為5個角色:系統管理員、訂單管理員、商品管理員、收益管理員、推廣管理員,不同的用戶擁有不同的權限。移動端分為3個角色:游客、普通用戶和會員用戶。移動客戶端游客有注冊和瀏覽商品的權限,普通用戶可以登錄、購買商品、租賃商品、修改個人信息以及修改購物車的權限,會員用戶和普通用戶權限相同,但會員可以免押金、免租金、免運費進行商品租賃。商品查詢模塊是移動母嬰購物租賃平臺的重要組成部分。同一時間段內,該功能使用的并發量大,設計商品搜索按租賃購買類別、關鍵字、品牌、商品分類、價格范圍查詢,并且可以按熱度、價格、上架時間排序,以滿足用戶多樣的需求。
2.2 數據流圖
由圖1所示,游客注冊信息后返回注冊結果,注冊信息保存在用戶信息表,也可游客身份瀏覽商品,商品信息保存在商品表中,注冊后可進行購買和租賃,可以查看訂單信息,訂單信息保存在訂單表中,同時,管理員可以對用戶信息表,商品信息表以及訂單信息表進行CRUD操作。用戶登錄移動端可以瀏覽查詢商品,商品信息從商品表中獲得,選擇商品下單后,訂單信息記錄在訂單信息表中,同時顯示用戶訂單信息。
3 系統的總體設計
3.1 功能模塊設計
根據用戶的功能需求,基于MVC模型的母嬰租賃平臺客戶端分為系統主界面模塊、購物車模塊、訂單模塊、商品查詢模塊、會員功能模塊和個人信息模塊六個模塊。其中每個大模塊又包含若干個小模塊。平臺功能結構如圖2所示。
主界面模塊主要展示用戶進入手機App首頁所顯示的內容,有新品上架、商品分類、商城快訊以及促銷打折,每個小模塊點擊后可進入相應的詳情頁面;商品查詢模塊可以對商城中的商品進行查詢;會員功能模塊主要有會員充值、修改以及查看功能;訂單管理模塊主要功能是查看訂單,申請退租、續租、撤銷及評價相應的訂單。購物車模塊可以對購物車中商品進行編輯;個人信息模塊主要功能是查看用戶個人信息,提交反饋信息等。
3.2 數據庫設計
本系統采用MySQL數據庫,根據設計生成的部分關系模型如下:
1) 用戶管理模塊
用戶{用戶ID、手機號、微信號、QQ號、密碼、昵稱、性別、頭像、角色ID、賬戶余額、邀請碼、是否會員、狀態、創建時間}
角色{角色ID、角色名、權限ID、狀態、創建時間}
權限{權限ID、權限名、狀態、創建時間}
2) 商品管理模塊
商品{商品ID、商品名、租買類型、類別ID、租期、主圖、描述、收藏數、品牌ID、狀態、創建時間}
商品詳情{商品詳情ID、商品ID、商品規格ID、租金、押金、原價、售價、庫存、創建時間}
品牌{品牌ID、品牌名、描述、品牌圖片、創建時間}
商品類別{類別ID、類別名、父級類別、創建時間}
商品規格{規格ID、規格名、創建時間}
3) 訂單管理模塊
訂單{訂單ID、訂單編號、訂單類型、支付時間、訂單總額、配送方式、收貨人、收貨地址、聯系方式、快遞公司、快遞單號、運費、備注信息、優惠券編號、預約時間、訂單狀態、創建時間}
訂單詳情{訂單詳情ID、訂單ID、商品ID、商品類型、租期、數量、總租金、總價格、押金、商品規格ID、租期開始時間、結束時間、到期天數、狀態、創建時間}
4) 活動管理模塊
活動{活動ID、活動名、類型、圖片、描述、狀態、創建時間}
3.3 系統架構設計
本文以SSM框架進行構架設計。由圖3所示,通過PC端瀏覽器發出請求后將數據提交處理,業務層根據業務邏輯處理數據。業務層在處理數據時如果需要持久層提供數據支持則向持久層發出數據請求,持久層把業務層需要的數據返回,最后業務層處理數據將結果返回到表示層。數據結果由表示層來展示。
4 系統詳細設計與實現
4.1 整體框架實現
本系統選擇使用Tomcat+SpringMVC+Spring+MyBatis的技術路線,數據庫采用MySQL。安裝Java開發環境JDK,開發工具IntelliJ IDEA,項目管理工具Maven。在IntelliJ IDEA中構建Maven項目,配置文件pom.xml中配置本系統構架所需依賴包。系統采用Nginx+Tomcat+Redis的構架。同時使用DRUID連接池,結合了C3PO、DBCP、PROXOOL等DataBase池的優點,加入了可靠的日志監控,可以良好地監控SQL語句的執行情況[4]。
4.2 系統功能設計與實現
4.2.1 商品展示模塊的設計與實現
用戶進入商品展示頁面,可以進行相應的查詢,按關鍵字、種類、價格熱度等條件查詢,選擇用戶需要的商品。若選購,添加到購物車。若不選購,結束退出。商品展示頁面顯示商品的主圖、商品名稱、商品的租金、押金等信息,其次,在商品展示頁面提供商品的搜索功能,可以根據分類、價格、熱點、年齡等的條件搜索。點擊某個商品,進入商品詳情頁。本文對移動母嬰租賃系統移動端的功能定義在com.zlzq.pro.controller.webservice包中,后端管理系統的功能定義在com.zlzq.pro.controller包中,利用Map
如果必傳參數傳輸錯誤,則顯示Constant類中相應的錯誤提示。該接口不僅可以顯示全部商品數據,還可以顯示商品查詢數據,例如,當需要進行關鍵字查詢商品列表時,參數中多傳一個name參數,在SQL語句查詢中可以使用like關鍵字進行商品名稱模糊搜索。若搜索的關鍵字是紙尿褲,則具體SQL語句實例如下。
select * from product where name like ‘%紙尿褲%
但如果用戶搜索的關鍵字為“奶粉 白金裝”,字符串中間為空格,搜索要求為商品名中不僅含有奶粉關鍵字還要含有白金裝關鍵字,針對這個問題,本文把傳輸的name字段按空格拆分成關鍵字數組namelist再進行SQL語句拼接。具體部分SQL語句片段如下。
name like ‘%${item}%
and name like ‘%${item}%
此外,由于商品在數據表中的位置固定,故每次打開全部商品顯示數據順序一致,則會使一些商品的展現率不高,給用戶的體驗度較差,對于這個問題,解決方案為移動端每次進入商品列表時傳輸一個隨機數num,下拉分頁時,隨機數不變,但重新進入商品列表中,則生成新的隨機數,以該隨機數為種子,使用三角函數和商品主鍵id進行排序,具體實現代碼如下:
order by cos(#{num}+id)
這樣可以實現每次進入商品列表可以隨機顯示商品的功能。若按照商品種類、品牌、月齡進行搜索,采用MyBatis框架后,只用一個條件查詢方法,根據不同的查詢條件參數MyBatis組合條件查詢的核心代碼如下:
status=0
and brandid = #{brandId}
and typeid = #{typeId}
and range = #{range}
通過上述代碼可以完成商品列表展示以及商品的搜索功能,實現效果圖如圖4所示。
4.2.2 購物車模塊的設計與實現
用戶進入購物車后,可以查看該用戶購物車中存放的商品,并且可以進行相應的CRUD操作,并判斷是否確認下單,確認后可以下單,若不確認,可以繼續查看購物車并對其做相應的更改。購物車中的信息采用持久化存儲,基于數據庫MySQL進行數據存儲,相關的業務邏輯在Controller中進行處理。
用戶首先把所需要的商品加入購物車,查看購物車界面時,需要驗證用戶是否進行登錄,登錄信息在移動端本地存儲,若登錄成功,查看添加到購物車的商品信息,并且查看商品規格信息,包括商品的庫存、現價、租金等信息。用戶可以對購物車商品信息進行修改,最終把修改后的購物車信息存儲到數據庫相關表中。
為了防止超賣問題存在,在修改購物車信息時,應反復校驗庫存是否不足,尤其在修改購車車中商品的購買或租賃數量時。并且在最后下單時再校驗一次商品是否下架,防止在用戶操作購物車的期間后臺管理員下架相關商品引發訂單錯誤。
購物車頁面每種商品分為租賃和銷售兩種,租賃的商品除租金之外還要額外支付押金。對于購物車中的商品用戶可以進行修改數量、庫存,刪除購物車中的商品等操作。對于銷售和租賃的商品,用戶可以合并下單或者分別下單,刷新購物車頁面,對于商品庫存為0的有相應提示,界面強制不可以下單該商品。
4.2.3 訂單管理模塊的詳細設計與實現
訂單管理模塊是移動母嬰購物租賃平臺最重要的模塊,游客不能進行商品購買租賃下單,普通用戶和會員用戶可以進行相應的訂單管理。訂單管理模塊分為查看、退租、續租、撤銷訂單模塊。下面我們具體分析用戶下單流程。若用戶在使用移動客戶端進行商品租賃的時,有普通用戶租賃、會員租賃、商品退租、商品續租以及押金返還等操作,在商品進行租賃時,下單時會判斷是否為會員租賃,會員在會員有效期內免押金、免租金、免運費進行租賃商品,下單時如果是會員,則修改訂單總額后進行下單支付。支付成功后平臺進行統一發貨,待用戶確認收到貨后進行使用,到商品租賃期滿,用戶可以自行選擇是否續租,不續租的商品進入退租環節,由用戶發貨平臺收貨,定損后進行押金退回,用戶可選擇評價后結束。待續租的商品選擇租期后下單,重復流程后結束。
4.3 推薦算法的詳細設計與實現
本系統在完成業務功能的基礎上,加上推薦功能,能通過推薦來挖掘用戶的商品瀏覽、購買、搜索、評分、收藏等行為,分析用戶喜好,利用推薦算法加以推薦。推薦算法的詳細設計與實現包括:基于銷量、評論數、好評數、搜索數的排名推薦;基于用戶的協同過濾推薦;基于購物車商品的協同過濾推薦。
4.3.1 基于評論數、好評數、銷量、搜索數推薦的詳細設計與實現
根據評論數、好評數、銷量、搜索數等排名推薦的具體設計,是用戶作為訪客瀏覽商城時,按照評論數、好評數、銷量、搜索數四個維度,將商品推薦從數量從多到少的先后次序,為用戶進行排名,如圖5所示。
按照商品的評論數、好評數、銷量、搜索次數從大到小倒序排列,商品的信息按照排序返回,放入Map
1) 按評論數排序:
String sql=”select * from product order by discussnums+0 desc”
2) 按好評數排序:
String sql=”select * from product order by wellcomments+0 desc”
3) 按銷量排序:
String sql=”select * from product order by salenums+0 desc”
4) 按搜索數排序:
String sql=”select * from product order by searchnums+0 desc”
當移動端母嬰購物租賃系統訪問量增加,則商品的評論數、好評數、銷量、搜索量實時變化,搜索排序結果實時更新,用戶每次刷新頁面時推薦商品結果不同。
4.3.2 基于用戶協同過濾推薦的詳細設計與實現
當用戶登錄后,從users表格中取出logintimes字段判斷登入次數,若登錄次數大于100次,就會過濾給該用戶基于用戶協同的商品推薦。詳細設計基于用戶協同過濾推薦是找出與登錄用戶最相似興趣的K位用戶,把K位用戶喜歡的商品和登錄用戶沒有喜歡過的商品拿出來做推薦展示。流程如圖6所示。
首先取出登錄者在user表中的用戶偏好商品love_goods,該字段為字符串,用戶偏好的商品id用逗號隔開,對該字符串使用split方法分割成字符串數組String[] A,該數組中存放用戶偏好商品id。取出所有的非登錄者在user表中的用戶偏好商品love_goods,使用split方法分割成字符串數組String[] B,統計每個非登錄者偏好商品的數組String[] B與登錄者偏好數組String[] A的共同偏好商品的數量[5]。然后使用共同偏好商品的數量,登錄者的偏好商品的數量,非登錄者的喜好商品的數量,求出非登錄者與登錄者的余弦相似度(streamsubline) ,詳見公式(1)。
對登錄者與非登錄者的余弦相似度進行排序,調用寫好的sort方法,從大到小排出。將與登錄者相似度較大的用戶從大到小依次排出。非登錄者從大到小選擇前n個相似度,作為最接近登錄者利益的用戶,排序前3位的相似度均為非0的則取3,反之則取非0的。登錄用戶u對商品i的興趣程度,通過感興趣程度計算,詳見公式(2)。
商品篩選后,從user表中提取n個用戶的最接近u用戶興趣的商品,存入Vector對象中,然后從Vector對象中逐一提取,判斷是否存在于登錄者的偏好商品中,若不存在,保留Vector對象中該條數據,若存在,則刪除該條數據。最終返回過濾后的推薦商品Vector,移動端遍歷Vector對象則顯示基于用戶協同過濾的商品推薦數據。
5 總結
本文主要完成了母嬰租賃系統的管理端以及客戶端的設計與實現。本系統給后期模塊的拓展留下了充足的空間,當業務量發展到一定階段,由于強度大,可以分布式部署各個模塊,從而降低單臺服務器的壓力。
參考文獻:
[1] 侯翠.“營改增”對A公司融資租賃業務的影響與對策分析[D].沈陽:遼寧大學,2015.
[2] 胡先智.融資租賃業務在中國的開展與未來——淺析煤炭設備行業的融資租賃業務[D].上海:上海交通大學,2014.
[3] 郭瑞.互聯網融資租賃業務模式發展研究[D].北京:中國社會科學院研究生院,2014:65-69.
[4] 周瑩瑩.我國商業銀行融資租賃業務的風險管理研究[D].北京:北京交通大學,2012.
[5] 曹元杰.發展我國融資租賃業務的思考[J].內蒙古金融研究,2011(5):29-31.
【通聯編輯:朱寶貴】