宋龍生 倪勝巧
摘要: 針對校園內(nèi)學生物品易丟失但不易找回的問題,設(shè)計一款失物招領(lǐng)微信小程序。校園失物招領(lǐng)微信小程序方便快捷、無需安裝、安全穩(wěn)定、快速引流,基于Spring Boot技術(shù)實現(xiàn),充分利用微信小程序的優(yōu)點,互補Web與App的優(yōu)劣,實現(xiàn)了高效率的失物招領(lǐng)。
關(guān)鍵詞: 失物招領(lǐng); 微信小程序; 校園; Spring Boot
中圖分類號:G434;TP311.52? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2021)10-86-04
Design and implementation of WeChat Mini Program for campus lost and found
Song Longsheng1, Ni Shengqiao1,2
(1. School of Information Science and Technology, Tibet University, Lhasa, Tibet 850000, China; 2. School of Computer Science, Sichuan University)
Abstract: Aiming at the problem that students' belongings are easy to lose but not easy to find in campus, a WeChat Mini Program for lost and found is designed. The campus lost and found WeChat Mini Program has the characteristics of convenience, fast, without installation, safe and stable, and fast drainage. Based on Spring Boot technology, it makes full use of the advantages of WeChat Mini Program, complements the advantages and disadvantages of web and App, solves the problem of inconvenient manual search, and improves the efficiency of campus lost and found.
Key words: lost and found; WeChat Mini Program; campus; Spring Boot
0 引言
校園內(nèi)學生丟失物品的現(xiàn)象極其常見,失物招領(lǐng)的形式也不盡相同。線下可以通過張貼尋物啟事或到學校固定的失物招領(lǐng)處掛失與尋找,線上可以通過微信朋友圈、QQ空間等網(wǎng)絡(luò)平臺的轉(zhuǎn)發(fā)來達到失物招領(lǐng)的目的。但這些失物招領(lǐng)方式常常面臨各種問題,如尋找過于分散、人工查找不便、執(zhí)行效率低、數(shù)據(jù)無法集中統(tǒng)一管理等問題,失物招領(lǐng)的效果不佳。線上校園失物招領(lǐng)的平臺如失物招領(lǐng)Lost & Found[1]、校園失物招領(lǐng)APP等,設(shè)計與開發(fā)[2]存在開發(fā)周期長、上線晚、推廣慢的問題;基于微信小程序的校園失物招領(lǐng)平臺構(gòu)建[3]、基于微信小程序的校園失物招領(lǐng)平臺的設(shè)計與實現(xiàn)[4]存在功能單一且與用戶交互性低的問題;利用微信小程序開發(fā)的大學失物招領(lǐng)平臺[5]、基于微信小程序的失物招領(lǐng)系統(tǒng)開發(fā)[6]存在開發(fā)邏輯混亂、可用性低的問題。
我們設(shè)計的校園失物招領(lǐng)微信小程序除了實現(xiàn)基本的失物招領(lǐng)功能外,還對代碼進行了優(yōu)化處理,利用AOP提高代碼的封裝及復用程度,針對在校學生增加了課程提醒功能,學生添加備忘錄和課程表便可使用該功能。在用戶體驗方面,對UI進行了美化且加入適當?shù)奶崾咎岣吲c用戶的交互性。
1 相關(guān)技術(shù)
1.1 開發(fā)與測試環(huán)境
為了便于該校園失物招領(lǐng)微信小程序的升級及更新,項目采用前后端分離的開發(fā)方式。
前端開發(fā)工具使用騰訊推出的微信開發(fā)者工具,后端采用JetBrains軟件公司的IntelliJ IDEA進行開發(fā)。開發(fā)完成后為了測試該平臺在移動端的可用性與兼容性,分別對Android和iOS兩種不同的移動端系統(tǒng)進行項目測試。開發(fā)與測試環(huán)境見表1。
1.2 Spring Boot框架
Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。它簡化了基于Spring的應(yīng)用開發(fā),通過少量的代碼就能創(chuàng)建一個獨立的、產(chǎn)品級別的Spring應(yīng)用。Spring Boot的核心思想就是約定大于配置,多數(shù)Spring Boot應(yīng)用只需要很少的 Spring 配置[7]。
1.3 MyBatis框架
MyBatis是一個Java持久化框架,它通過XML描述符或注解把對象與存儲過程或SQL語句關(guān)聯(lián)起來,映射成數(shù)據(jù)庫內(nèi)對應(yīng)的記錄。MyBatis將Java方法與SQL語句關(guān)聯(lián),與JDBC相比,MyBatis簡化了相關(guān)代碼:SQL語句在一行代碼中就能執(zhí)行。Mybatis官方給我們提供的逆向工程,也減少了我們的開發(fā)時間,使開發(fā)者可以針對數(shù)據(jù)庫單表生成所需要的代碼。
1.4 微信小程序
微信小程序,小程序的一種,英文名WeChat Mini Program,是一種不需要下載安裝即可使用的應(yīng)用。相較于App和Web,微信小程序不僅開發(fā)成本和推廣成本較低,而且能夠依據(jù)用戶需求進行個性化制作。小程序包含一個描述整體程序的App和多個描述各自頁面的page[8]。
2 項目設(shè)計與實現(xiàn)
2.1 功能模塊設(shè)計
校園失物招領(lǐng)微信小程序主要分為失物招領(lǐng)與課程提醒兩大模塊,失物招領(lǐng)模塊包括發(fā)布失物招領(lǐng)模塊、發(fā)布尋物啟事模塊、展示發(fā)布詳情模塊及用戶評論模塊,課程提醒模塊包括生成課表模塊、上課提示模塊和備忘錄模塊。項目功能模塊設(shè)計詳見圖1。
2.2 數(shù)據(jù)庫設(shè)計
本項目采用MySQL數(shù)據(jù)庫,為了保證數(shù)據(jù)庫設(shè)計的合理性和減少數(shù)據(jù)不必要的冗余,數(shù)據(jù)庫表結(jié)構(gòu)嚴格遵循MySQL三大范式[9],保證屬性的原子性、記錄的唯一性、字段的冗余性。根據(jù)圖1所示的項目功能模塊設(shè)計,在數(shù)據(jù)庫中建立4張表,各表詳細信息見表2。
2.3 接口設(shè)計
本項目后端需要設(shè)計接口為小程序前端提供數(shù)據(jù)。Swagger是全球最大的API開發(fā)框架,我們只需要按照它的規(guī)范去定義接口及接口相關(guān)信息,再通過Swagger的Swagger-ui組件就可以將controller層的方法進行可視化的展示。這樣,項目在開發(fā)新版本或者迭代更新的時候我們就只需要更新Swagger描述文件。因此,本項目后端使用Restful風格設(shè)計接口,結(jié)合Swagger用來定義接口和測試接口。
3 項目重要模塊實現(xiàn)
3.1 OSS
阿里云對象存儲服務(wù)(Object Storage Service,簡稱 OSS)是由阿里巴巴提供的一項高性價比、高性能以及高可靠性的云存儲服務(wù)。本項目的所有文件都放在阿里云OSS中已創(chuàng)建的Bucket中,具體操作步驟為:創(chuàng)建一個OSS實例ossClient、獲取想要上傳的文件并修改文件名稱、把文件按照日期進行分類、調(diào)用OSS方法進行上傳、關(guān)閉ossClient。注意:要使用阿里云OSS需要在pom.xml引入依賴com.aliyun.oss.aliyun-sdk-oss。
3.2 信息加密
為了提高用戶信息的安全性,有必要針對整個數(shù)據(jù)庫中所有需要保密的信息都進行加密,這樣,即使他人已經(jīng)得到了整個數(shù)據(jù)庫,如果他們沒有解密的算法,也無法得到原來的密碼信息。本次項目加密采用 MD5信息摘要算法對其進行加密, MD5加密的操作都是以512比特位為計算單位的[10],與Base64相比,MD5加密完全不可逆,所以它的安全性比較高。
3.3 讀取Excel課程表
在課程提醒模塊,為了實現(xiàn)生成課程表的功能,需要導入課程表并且讀取出特定班級的課程。Apache POI是Apache軟件基金會提供的開放源碼函式庫,POI提供了API讓我們可以通過Java程序來實現(xiàn)對Microsoft Office格式檔案讀和寫的功能。本項目使用POI讀取解析Excel文件,pom.xml導入org.apache.poi.poi和org.apache.poi.poi-ooxml依賴之后,接口使用二維list集合來接收執(zhí)行ExcelReader類的ExcelUtil.getReader()方法后得到的結(jié)果,并返回給前端。
3.4 小程序界面展示
用戶進入小程序并且小程序獲得微信授權(quán)之后,跳轉(zhuǎn)至首頁,如圖2。用戶可以瀏覽尋物啟事,如圖3。用戶可以發(fā)表自己的評論,如圖4。用戶收到的評論消息如圖5。用戶可以添加尋物啟事,如圖6。添加課程表如圖7。用戶可以選擇相應(yīng)的功能。
4 結(jié)束語
本文主要論述了基于Spring Boot的校園失物招領(lǐng)微信小程序的設(shè)計與實現(xiàn),介紹了各功能模塊設(shè)計、數(shù)據(jù)庫設(shè)計、接口設(shè)計等內(nèi)容。通過使用阿里云OSS對象存儲、MD5加密、POI讀取解析Excel文件等方式來提升軟件性能,達到了預期目標。但是由于能力和精力等原因,在小程序的功能設(shè)計上,還存在可以擴展的功能,需進一步完善,如:發(fā)布失物加入定位功能,結(jié)合VR技術(shù)實現(xiàn)活動現(xiàn)場導航指引功能。
參考文獻(References):
[1] 張園.失物招領(lǐng)Lost & Found[D].大連工業(yè)大學,2017.
[2] 康耀龍,張景安,馮麗露.校園失物招領(lǐng)APP的設(shè)計與開發(fā)[J].電子技術(shù)與軟件工程,2020.17:73-74
[3] 張浩田,戚玫云,呂瑞雪.基于微信小程序的校園失物招領(lǐng)平臺建構(gòu)[J].內(nèi)蒙古科技與經(jīng)濟,2019.4:80-81
[4] 鞏小芳,李敏,高萬福.基于微信小程序的校園失物招領(lǐng)平臺的設(shè)計與實現(xiàn)——以甘肅農(nóng)業(yè)大學失物招領(lǐng)平臺為例[J].農(nóng)家參謀,2020.4:285
[5] 鄭智方,黃政,張清瑞,趙磊.利用微信小程序開發(fā)的大學失物招領(lǐng)平臺[J].計算機產(chǎn)品與流通,2020.2:137
[6] 王慶月,吳宇,張?zhí)鞂?基于微信小程序的失物招領(lǐng)系統(tǒng)開發(fā)[J].電子質(zhì)量,2020.10:66-70
[7] 桂晨暉.基于SpringBoot框架對P2P借貸平臺的設(shè)計與實現(xiàn)[D].電子科技大學,2019.
[8] 微信小程序官方文檔https://developers.weixin.qq.com/miniprogram/dev/framework/structure.html
[9] 肖文娟,王加勝.基于Vue和Spring Boot的校園記錄管理Web App的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2020.37(4):25-30,88
[10] 張昊,宋杰,羅名君.基于MD5算法的分布式無線傳感器網(wǎng)絡(luò)數(shù)據(jù)安全傳輸方法研究[J].蘇州科技大學學報(自然科學版),2019.36(1):68-74