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