朱心洲,胡 譽,蔣靖妍
(華東交通大學 軟件學院,南昌 330013)
由于大學校園內閑置物品交易方便、大學生的閑置物品有較高二次利用價值(如書籍、文體工具)等原因,高校閑置物品交易市場一向深受大學生的青睞,是大學校園內的一大主要活動.目前大學校園內發布閑置物品信息主要通過建立校園“跳蚤市場”QQ 群,群員在群內以聊天的形式發布信息這樣的方式去實現.這種方式受限于QQ 群的一些缺點,存在商品信息的覆蓋人數有限,很難對群內人員的身份進行安全認證、無法對閑置物品信息做一個有效的分類整合等問題[1,2].
QQ 小程序是一種無需下載安裝、即點即用、用完即走的應用程序.它依附于國民級社交軟件QQ,對大學校園內的用戶而言,QQ 更適用于校園生活的一些特定場景,因此大多高校學生使用QQ 頻率大于微信.同時,QQ 小程序可通過QQ 下拉窗口、首頁+、動態玩一玩、空間小游戲、小程序中心、搜索、掃一掃及社交通道(聊天及空間分享)這些入口輕松打開[3],使用起來十分方便.利用QQ 小程序可以一鍵將閑置物品信息分享至QQ 群、QQ 空間、QQ 好友以及微信.在提高自己閑置物品曝光度的同時,可以對小程序有一個裂變式的推廣,以此可實現快速覆蓋在校學生.利用QQ 小程序,可以有效解決現有在QQ 群內發布閑置物品信息方式下信息容易被刷掉、人員的覆蓋面有限、無法對閑置物品信息做一個有效分類整合的問題.同時,借助校園統一身份認證接口對用戶做身份的認證,可解決現有方式下QQ 群內人員魚龍混雜無安全保障的問題,以幫助高校學生獲得更好的閑置物品交易體驗,打造高校特色閑置物品信息平臺.
作為國內社交屆二把手,QQ 有著超過8 億的月活用戶,除去和微信重合的用戶,QQ 最活躍的用戶群體以95 及00 后為主,可彌補微信在人群覆蓋上的短板[4].QQ 的主要活躍用戶年齡段就證明使用QQ 的用戶大多都是在校學生.同時,QQ 小程序具備方便便捷的優點,可以直接將小程序中的內容分享至QQ 群、QQ 空間、QQ 好友進行曝光.用戶可以輕松地從QQ 群、QQ空間中點擊分享的內容進入小程序,比微信小程序更加適合于應用在校園場景,具有出色的用戶體驗.
從現有相關研究中可以看出,已上線的具有閑置物品交易功能的應用程序多以微信小程序或網站為主.這類小程序功能過于繁雜,且無法與現有的校園“跳蚤市場”QQ 群緊密結合.在大學校園內的閑置物品交易多以校內面交、當面付款這樣的背景下顯得過于功能冗余,亦無法實現閑置物品發布者和購買者的便捷聯系,以及高效的對商品信息進行曝光[5-11].
結合校園活動的特性及高校學生對校園閑置物品信息平臺的需求,高校閑置物品信息平臺的功能在包括完整的用戶功能、商品發布功能以及管理員管理功能的同時,結合現有的校園閑置物品交易方式與特色以及高校學生的使用習慣,設計完善平臺功能,滿足以下功能需求:
(1)商品信息詳情可以一鍵分享曝光,借助QQ 小程序便于分享的優勢,為用戶提供可以一鍵將商品信息分享到現有校園“跳蚤市場”QQ 群、QQ 空間以及QQ 好友的入口,提高商品的曝光率從而提高商品的成交率.
(2)提供模糊的商品搜索功能和專屬校園的多維商品分類展示,幫助尋找需求商品的用戶可以迅速的定位到自己所需的商品.同時利用舊書、電子產品、求購商品、生活用品等這一類基于校園環境下的商品分類標簽,幫助用戶可以根據類別便捷的找到自己所需的商品.
(3)閑置物品信息平臺需要有較高的安全性,利用校園統一身份認證接口對用戶做身份認證,有效解決現有方式下QQ 群內人員魚龍混雜,發布信息的真實性無法考量的問題.同時,采用前后端分離方式部署開發,前后端之間的通信采用HTTPS 協議,遵循RESTful API 設計規范,可以有效保障用戶隱私和通信之間數據傳輸安全[12,13].
(4) 為用戶提供可靠的服務,部署云服務器時采用Nginx 部署Web 服務,Nginx 支持反向代理、支持熱部署、可以高并發連接、有較高的穩定性.能夠為用戶提供7×24 小時的連續、穩定的服務[14,15].
QQ 小程序框架與微信小程序框架相同,在技術架構上可分為視圖層、邏輯層、組件、API 幾個部分.視圖層負責頁面結構、樣式和數據展示,用QML,QSS 語言編寫.邏輯層負責業務邏輯,調用API 等,基于JavaScript進行編寫.小程序開發采用MVVM 軟件架構模式(如圖1所示),極大地提高了開發效率和代碼抽象度[16].同時,QQ 小程序對常見的一些視圖層組件及邏輯層方法進行了封裝,極大的降低了開發者的開發難度,使UI風格統一美觀、提升了用戶的使用體驗[7].

圖1 QQ 小程序MVVM 架構圖
Flask 是一個使用Python 編寫的輕量級Web 應用框架,以Werkzeug 和Jinja2 為核心,具有輕巧、簡潔、擴展性強、開發成本低等優點[17].因其輕便性,Flask 框架特別適合用在小程序的開發上,可利用Flask框架生成RESTful 風格的API,如圖2所示.一套接口即可和Web 端、小程序端進行交互.同時,亦可充分保障數據的安全性[18].

圖2 Flask+MySQL 生成RESTful API 架構圖
小程序中的數據主要包括商品數據、首頁通知數據和用戶個人數據.用戶在小程序端的交互與管理人員在后臺系統中的交互是系統數據的來源.用戶通過小程序請求商品信息并向服務端發送個人信息,進行發布商品、留言、收藏、在校身份認證等操作.服務器端收到用戶的請求后,在控制層進行數據的合法性校驗及處理.并將處理結果返回至視圖層,由視圖層渲染展現給用戶.當買家用戶在相應商品底下進行留言后,服務器端會將留言的內容以小程序服務通知的形式反饋給賣家,使賣家得以及時回復.當賣家需要對商品信息進行修改時,可以對已發布的商品進行編輯、刪除操作.系統管理員可實時監控用戶行為,記錄相關操作并進行管理.
閑置物品信息平臺分為QQ 小程序用戶端和Web管理員后端,以RESTful API 為通信橋梁.通過需求調研,針對華東交通大學在校大學生對商品展示、商品發布、與商品主人的聯系方式等方面的需求制定以下功能,如圖3所示.
其中基礎功能包括:閑置物品、閑置書籍、求購信息的發布、刪除以及編輯功能、商品的收藏與取消收藏、商品的搜索與推薦商品的展示、用戶授權登錄、用戶修改個人頭像及用戶名、用戶分享小程序、聯系客服、意見反饋、商品信息的監控和統計、發布輪播圖信息、用戶使用狀態的管理等功能.
特色功能包括:用戶在校身份認證、以及通過認證狀態判斷使用權限、多維度類別展示商品信息、一鍵分享商品信息、相似商品推薦、留言及留言回復、新留言提醒、一鍵添加商品發布者或留言者為QQ 好友、給收藏商品用戶發送商品降價提醒等功能.
(1) 校園身份認證:校園身份認證功能通過使用Python 的requests 模塊模擬登錄校園教務處驗證學生的賬號密碼是否正確以實現.通過該功能可以確保使用用戶為高校師生,充分保證用戶在平臺上查看的商品信息的真實性,保障用戶不受騙.未進行校園身份認證的用戶在發布商品信息和查看商品發布人的聯系方式或進行留言時,將跳轉至校園身份認證頁,如圖4所示.在校園身份認證頁輸入教務處賬號與密碼點擊確認即可進行認證,如圖5所示.隨后賬號密碼將被傳送至教務處登錄接口,登錄成功,即可完成認證.該模塊關鍵代碼如下(Python):
s=requests.Session()
post_url='教務處登錄態驗證接口'
m=hashlib.md5()//對密碼進行md5 加密
b=password.encode(encoding='utf-8')
m.update(b)
password=m.hexdigest()
form_data={'UserName':username,'Password':password}
r=s.post(url=post_url,headers=headers,data=form_data)
if(r.text==“succcess”) return 1
else return 0

圖3 閑置物品信息平臺功能示意圖

圖4 提示認證
(2)商品推薦:基于校園閑置物品信息平臺的特性,該系統通過相似性推薦算法為用戶推薦商品.相似性推薦定義:對于新用戶A,沒有他的歷史行為數據,在他點擊了某一商品item-X 的場景下,可以將與item-X同一類別下的相似商品推薦給新用戶A[8].根據校園需求,該系統以一級標簽+二級標簽的形式制定商品類別標簽.同時,在進入小程序的首頁即顯示推薦信息,如圖6所示.該模塊核心代碼如下(Python):
rank=dict() #記錄給user 的推薦物品(沒有歷史行為的物品)
action_item=userviewdata #獲取用戶user 最近瀏覽的商品信息的類別
for item,score in action_item.type:
for j,wj in sorted(self.W[item].items(),key=lambda x:x[1],reverse=True)[0:K]:#取出與item 類別相同的物品
if j in action_item.keys():#如果該物品已被瀏覽,則不推薦
continue
rank.setdefault(j,0)
rank[j] +=score * wj #累計物品j 與item 的相似度*興趣評分,作為user 對物品j 的興趣程度
(3)商品降價提醒:當商品發布者修改商品的價格時,系統會對商品價格的變化做一個判斷,若商品降價,系統通過訂閱消息給收藏了該商品的用戶發送商品降價提醒,如圖7所示.這樣能有效的幫助用戶以便宜的價格買到商品,提高閑置物品交易平臺的成交率.
(4)一鍵添加好友:該功能利用了QQ 小程序的特性API 實現,可直接從小程序中添加對方為好友:當用戶在閑置物品信息平臺中看到自己心儀的商品時,可以點擊商品詳情頁的“添加好友”按鈕,如圖8所示.小程序會自動拉起添加賣家好友的申請頁面,如圖9所示.方便買家與賣家聯系.為小程序用戶提供出色便捷的用戶體驗.該模塊的關鍵代碼如下(JavaScript):
//拉起添加好友授權申請
qq.getSetting({
success(res) {
if (!res.authSetting['setting.addFriend']) {
qq.authorize({
scope:'setting.addFriend',
success() {
}})}}})
//添加好友按鈕
<button open-type="addFriend" open-id="{{content.openid}}">添加好友</button>

圖5 校園身份認證界面

圖6 推薦信息展示界面
(5)留言相關功能:留言相關功能包括用戶留言、新留言提醒及留言回復功能.買家用戶可以對商品進行留言,之后賣家會收到新留言提醒,并對買家用戶的留言進行回復,如圖10所示.系統借助小程序服務通知消息實現新留言及時的告知提醒.該功能適用于校園生態,使買家和賣家可以便捷的進行聯系.

圖7 關注商品降價提醒

圖8 添加好友按鈕

圖9 點擊“添加好友”按鈕后拉起的好友申請

圖10 留言功能
QQ 小程序端以商品展示模塊、商品發布模塊、用戶模塊3 個主要模塊組成,各大主要模塊又包含著其他小模塊,各模塊與云服務器通過HTTPS RESTful API 進行通信,各模塊之間具有高內聚性和低耦合性.
商品展示模塊可獲得有效的所有商品信息,并根據條件篩選后呈現給用戶,如圖11所示.

圖11 商品展示模塊
當用戶點擊某一商品時,即可查看商品的詳細信息、進行收藏、留言、添加好友等操作;發布模塊用于用戶發布閑置物品,用戶可按照舊物、舊書、求購物品進行商品的信息的發布,如圖12所示.用戶模塊可用于QQ 一鍵登錄、進行校園身份認證綁定校園信息、顯示用戶已發布及已收藏的信息,并對這些信息進行編輯(已發布信息)或刪除的操作,如圖13所示.
小程序用戶端可結合原有校園“跳蚤市場”QQ 群一同使用,當用戶在小程序內發布信息后,可一鍵分享至QQ 群中曝光,如圖14所示.同時借助了QQ 小程序的添加好友、模板消息、訂閱消息的特性,為用戶帶來了良好的閑置物品交易體驗.

圖12 商品發布模塊

圖13 用戶模塊
平臺使用騰訊云標準型S5 (4 GB 系統內存、2 核處理器、2 Mbps 帶寬)云服務器提供云服務,使用CentOS 7.6 系統部署開發環境.將圖片等靜態資源文件存入騰訊云對象存儲服務中.并備案域名申請SSL 證書部署HTTPS 服務,用于保障信息數據的安全.
截止2020年1月12日,小程序共有5182 名用戶注冊,如圖15所示.已發布物品579 件、商品總瀏覽量37766次,如圖16所示.

圖14 商品信息分享

圖15 累計用戶(數據來源:小程序助手)

圖16 商品數據統計(數據來源:后臺統計)
基于Flask 框架與QQ 小程序的校園閑置物品信息平臺可供各個高校推廣使用.該平臺可有效規范校園內的閑置物品交易,協助校學生會監管校園內的閑置物品交易市場.同時,該平臺的推廣使用可幫助在校大學生將自己的閑置物品方便的轉賣于他人或幫助在校大學生以合適的價格買到大學生活中需要的物品或書籍,有效的避免了舊物或舊書的浪費,大力提倡了在校園內落實舊物利用、環保節約的生活理念.在校園內提升學生的環保理念,使其可以從個人做起建設節約環保型社會.從而推動我國的生態文明建設,實現美麗中國.