李 旭,王良遇
(東南大學(xué)成賢學(xué)院,江蘇 南京 210000)
高校二手市場又稱為校園跳蚤市場,經(jīng)常在每年4月到5月份舉辦,高年級在校大學(xué)生將不用的二手學(xué)習(xí)用品、日用品,在校園指定區(qū)域進行展覽、銷售給低年級的同學(xué)。但是由于地攤式的銷售方式很容易浪費購買者的時間,且每年只有一次這樣的機會。由于疫情,為了避免因二手市場出現(xiàn)人群聚集的情況,亟須一個線上校園二手市場,隨時方便用戶進行二手交易,這樣就不需限制在特定的時間和地點進行二手交易,讓購買者用戶和出售者用戶可以有針對性交易,給二手市場用戶提供更優(yōu)越的購物體驗,最大化地減少資源浪費。同時,線上二手市場也是實現(xiàn)校園信息化不可忽略的一部分。微信在大學(xué)生生活中屬于不可或缺的通信聊天軟件,微信小程序可以無縫對接微信App,本研究使用微信小程序?qū)崿F(xiàn)二手市場平臺的研發(fā)[1]。
微信小程序不僅體現(xiàn)在小上,而且運行速度快,可以給用戶快速訪問帶來極好的體驗。同時微信小程序可以實現(xiàn)跨平臺訪問,而不是僅限制在微信中訪問,在其他App各種環(huán)境中都可以打開使用。基于微信平臺,用戶可以在微信聊天中隨時進入小程序,并在小程序和聊天中進行任意切換,不影響微信用戶聊天通信。最重要的是,微信小程序節(jié)約安裝資源,不需要安裝獨立的App。因其靈活性強,微信小程序可以直接通過微信進行分享,也可以通過線下分享,分享方式可以多樣化,且線上線下分享都十分便捷、容易推廣[2]。
當用戶找不到所要商品時,可以留下其所需要物品的求購信息,當有這類商品發(fā)布時,自動推送給需求者信息,告知已經(jīng)有其需要購買的物品上架,讓需求信息發(fā)布者第一時間知道相關(guān)信息,不用花費時間再去查找。信息推送代碼是用Springboot來實現(xiàn)的,所以在pom.xml中引入了一個三方類庫。當求購者自己進入小程序,打開通知里面的物品詳細信息,查看是否和自己求購的物品相符合。求購者發(fā)布求購信息時,發(fā)布的求購商品名稱越準確,系統(tǒng)自動檢索時,推送的商品越精準。
當發(fā)布求購信息后,如果有與之匹配的商品發(fā)布,不僅進行信息推送,同時在小程序頂端通知欄里進行循環(huán)滾動。因為通知欄是來回循環(huán)顯示,所以當水平一行文字都滾動完了,就會按照原來的方向繼續(xù)滾動,以實現(xiàn)循環(huán)滾動的效果。當只有一條通知信息,通知信息文字長度小于屏幕長度,則當?shù)谝粋€文字消失時,立刻從右邊出現(xiàn);如果只有一條通知信息,信息文字長度等于屏幕長度,則空出30個像素,再開始循環(huán)滾動;如果有兩條以上通知信息,第一條通知信息文字最后一個文字從屏幕右側(cè)滾動出以后,空出30個像素,接著滾動第二條通知信息文字;如果有多條通知信息,當最后一條滾動到左邊時,從第一條通知信息繼續(xù)開始重復(fù)滾動[3]。
數(shù)據(jù)挖掘方面,小程序通過大數(shù)據(jù)及數(shù)據(jù)挖掘的方法統(tǒng)計瀏覽、買賣最多的商品。根據(jù)瀏覽量和成交量,本研究使用協(xié)同過濾算法ItemCF,把類似商品中評分高的推薦給用戶。
設(shè)N(i) 為用戶i喜歡的物品集合,N(j) 為用戶j喜歡的物品集合,那么i和j的余弦相似度:
通過如下公式計算用戶u對一個物品j的興趣:
其中N(u)是用戶產(chǎn)生行為的商品集合,S(j,k)是與物品j相似度最高的K個商品的集合。Wij商品i和商品j的相似度,Ru,i是用戶u對商品i的喜好程度。在本例中都為1,在一些需要用戶給予評分的推薦系統(tǒng)中,則要代入用戶評分。
假設(shè)本研究要給A推薦物品,選取K=3個相似用戶,相似用戶則是:B,C,D,那么他們喜歡過并且A沒有喜歡過的物品有:c,e,那么分別計算p(A,c) 和p(A,e):
這里可以看出用戶A對c和e的喜歡程度可能是一樣的,在真實的推薦系統(tǒng)中,只要按得分排序,取前幾個物品就可以了。
從公式中可以得出結(jié)論:將要被推薦的商品與用戶歷史行為中的商品相似度很高,則這個將要被推薦的商品被推薦給用戶的可能性就越高。
根據(jù)項目需要,本研究設(shè)計了一份問卷,針對線下二手市場出售者、購買者,以及大學(xué)4個年級各200人進行調(diào)研。男女參與人數(shù)大致為6∶4,根據(jù)調(diào)研具體情況如下。
閑置物品持有情況,如圖1所示。高校學(xué)生閑置物較多的比例最高,分析其原因是排除生活用品,每學(xué)期大量學(xué)習(xí)資料、生活用品閑置,隨著年級越高,堆積越多。
圖1 閑置物品持有情況
閑置物品處理方法占比,如圖2所示。繼續(xù)閑置的比例最高,占42%的比例,這是線上二手市場可挖掘的潛在用戶,充分挖掘這部分用戶,可以提升線上二手市場的活躍度。同時,對30%丟棄的受問卷對象,也是可以開發(fā)的用戶,因為大部分物品多少還有使用價值。
圖2 閑置物品處理方法占比
二手物品價格接受占比,如圖3所示。絕大部分物品都定價在5元,這個價格的成交量最高。10元的價格占21%,調(diào)研顯示大部分是一些稍微貴重的物品、書籍。原價30%的價格占19%,其中大部分是有很大價值的物品。
圖3 二手物品價格接受占比
以上的調(diào)研數(shù)據(jù),作為本研究對項目設(shè)計和實現(xiàn)的重要數(shù)據(jù)支撐,并根據(jù)數(shù)據(jù)進行優(yōu)化項目組件,完成項目功能。
系統(tǒng)由用戶模塊和管理模塊組成。
用戶模塊由用戶發(fā)布出售物品信息模塊、物品求購模塊、物品展示模塊、求購物品展示模塊、物品詳細信息顯示模塊、用戶信息管理模塊、支付模塊構(gòu)成。
用戶發(fā)布出售物品信息模塊,包括物品名稱、物品圖片、價格、類別、新舊度、完整度、使用時間。其中,物品名稱方便購買用戶進行精確查找,如書籍名稱。類別主要是發(fā)布后在哪類區(qū)域進行展示,方便購買者用戶到指定區(qū)域進行模糊查找、對比[4]。
購買用戶在二手市場中未找到需購買的物品,可以在物品求購模塊中發(fā)布想要購買的物品的名稱以及大概的要求。
物品展示模塊根據(jù)不同類別將物品在不同模塊中顯示。每件物品只能展示一張封面圖片。其他圖片可在物品詳細信息模塊中展示。
求購物品展示模塊是對所有的求購物品信息的匯總進行展示。對每一條求購信息,系統(tǒng)每天早晚檢索兩遍數(shù)據(jù)庫中的關(guān)鍵字,如果發(fā)現(xiàn)求購物品名稱與發(fā)布的出售物品名稱有相匹配的情況時,則推送一條告知求購者的信息,并在用戶登錄小程序后,在小程序頂部通知欄循環(huán)滾動通知。
用戶信息管理模塊用于管理個人信息、發(fā)布出售信息、發(fā)布求購信息、修改發(fā)布信息、修改求購信息、查看已完成交易、刪除發(fā)布信息等。
關(guān)于用戶登錄身份的判斷,本研究是在用戶進入小程序后默認為購買者;只有用戶點擊發(fā)布信息按鈕,進行出售物品的信息發(fā)布,此時更改為出售者。而關(guān)于小程序的登錄,使用微信小程序云開發(fā)中為本研究提供的部分云函數(shù)。Login()方法實現(xiàn)小程序綁定微信號進行登錄。用戶登錄后,在模塊頂部顯示通知消息,包括系統(tǒng)消息和求購物品相匹配的通知消息。同時,小程序?qū)σ呀?jīng)交易完畢的商品進行下架刪除處理,使之不在發(fā)布的模塊中顯示,只有商品出售發(fā)布者和購買者存留買賣記錄。
支付模塊在二手市場中交易頁面中不可或缺,用戶在選中二手商品后,進行交易。本研究采用微信支付的方式,首先在App.js中初始化開發(fā)環(huán)境,在開發(fā)中創(chuàng)建云函數(shù)并上傳,方便本研究傳送相關(guān)參數(shù),然后調(diào)用wx.requestPayment實現(xiàn)支付。
管理員模塊主要是用于對數(shù)據(jù)庫、用戶信息和物品信息進行管理、及時更新相關(guān)信息,如系統(tǒng)信息、公告信息等,并對求購或發(fā)布過期的信息進行刪除處理。對嚴重失信的用戶進行凍結(jié)賬號以及反映給校方等處理,如圖4所示。
圖4 系統(tǒng)結(jié)構(gòu)
本項目使用Python的Web框架在后端平臺實現(xiàn)協(xié)同過濾ItemCF算法,提供一個API,微信小程序使用wx.request()調(diào)用這個API。
微信小程序自有的類庫涵蓋很多方面,多樣化的組件及API大大簡化了系統(tǒng)開發(fā)難度,為高校二手市場實現(xiàn)信息化提供了良好的開發(fā)環(huán)境。二手市場小程序?qū)崿F(xiàn)了電子商務(wù)系統(tǒng)的部分功能,簡化了注冊、登錄小程序的問題。微信綁定登錄實現(xiàn)了購買者和出售者的基本功能需求。信息推送、系統(tǒng)通知功能更進一步人性化處理購買者用戶時間成本,減輕用戶時時關(guān)注小程序的負擔。同時,協(xié)同過濾算法ItemCF仍有不足之處,此算法只適用于物品數(shù)量明顯小于用戶數(shù)量的場合。如果物品很多,協(xié)同過濾算法ItemCF計算物品的相似度矩陣代價很大,還有優(yōu)化空間。本項目所實現(xiàn)功能還有待進一步完善,線上二手市場還有更多的發(fā)展空間。