萬迎霜 陶利民
摘? 要: 物流行業(yè)的飛速發(fā)展,快遞數(shù)量的逐漸增加,用戶取件、寄件不便以及隱私安全等問題也隨之而來。通過分析現(xiàn)有快遞行業(yè)的發(fā)展勢(shì)態(tài),根據(jù)用戶體驗(yàn)和信息安全,設(shè)計(jì)了一款基于微信小程序和二維碼技術(shù)的快遞收發(fā)系統(tǒng)。用戶在小程序上即可完成寄件、取件操作;快遞員則摒棄傳統(tǒng)昂貴笨重的巴槍,通過小程序進(jìn)行攬件和派件,提高快遞收發(fā)效率的同時(shí)也保護(hù)了用戶的信息安全。
關(guān)鍵詞: 微信小程序; 快遞; 二維碼; OAuth; Token
中圖分類號(hào):TP311? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2020)06-42-04
Abstract: With the rapid development of the logistics industry and the increasing number of express delivery, the problems such as inconvenient parcel pick-up and post, and user privacy security also come with it. By analyzing the current development trend of the express delivery industry, based on the analysis of the development trend of the existing express industry, according to the user experience and information security, an express delivery system based on WeChat Mini Program and QR code (Quick Response Code) is designed in this paper. Users can complete the operation of posting and picking up parcels by using the small program; the courier abandons the traditional expensive and cumbersome scanning gun, but uses the small program to collect and distribute parcels, improving the efficiency of express delivery, while protecting the information security of users.
Key words: WeChat Mini Program; express delivery; QR code; OAuth; Token
0 引言
近年來,新零售行業(yè)的發(fā)展如火如荼,線上購(gòu)物這一消費(fèi)方式所占比重逐年增大,快遞的收發(fā)也成為人們?nèi)粘I钪械囊徊糠帧?jù)國(guó)家郵政局檢測(cè)數(shù)據(jù)顯示,僅2019年“雙十一”活動(dòng)當(dāng)天,全國(guó)各郵政、快遞企業(yè)共處理5.35億快件,同比增長(zhǎng)28.6%,再創(chuàng)歷史新高[1]。但所面臨的問題也隨之增多??爝f單上隨處可見的用戶信息,導(dǎo)致信息泄露的事件越來越多,對(duì)用戶隱私的保護(hù)刻不容緩。針對(duì)以上情況,本文利用微信小程序和二維碼技術(shù)開發(fā)了一款線上的快遞收發(fā)系統(tǒng),并對(duì)各個(gè)模塊和功能做了詳細(xì)介紹[2]。在保護(hù)用戶信息安全方面用二維碼面單代替?zhèn)鹘y(tǒng)的快遞單,只有快遞員掃描面單時(shí),才能獲取快遞下一階段所需的派送信息,極大的保護(hù)了用戶隱私。
1 關(guān)鍵技術(shù)
1.1 二維碼
二維碼在生活中應(yīng)用廣泛,移動(dòng)支付、社交網(wǎng)絡(luò)、防偽溯源,交通出行等等隨處可見二維碼的身影,簡(jiǎn)單的‘掃一掃讓生活的便利程度又提升了一個(gè)層次[3]。本文所用的二維碼是QRCode,全稱是QuickResponse。二維碼也稱二維條碼,和一維條形碼都是用來存儲(chǔ)數(shù)據(jù)的,但是二維碼能夠存儲(chǔ)更多的數(shù)據(jù),比如漢字、圖片、URL等,二維碼相比于一維條碼所占用的面積也大大減小,同時(shí)可以進(jìn)行加密使其安全性更高[4]。二維碼的容錯(cuò)率也比一維條碼高,一般的輕微損壞或者遮蓋不影響機(jī)器識(shí)別的結(jié)果。
1.2 微信小程序
微信小程序是基于微信的一款輕量級(jí)APP,依靠著龐大的微信用戶,自2017年1月9日上線截止至2018年年底,小程序用戶規(guī)模超6億,日活躍用戶3.5億。2018年為用戶提供了超過1000億人次的商業(yè)和政務(wù)服務(wù)[5]。微信小程序使用方便、即開即用,通過掃描一張二維碼或者推送鏈接即可打開,十分便捷,彌補(bǔ)了傳統(tǒng)APP體積龐大、安裝慢等缺點(diǎn)。小程序操作簡(jiǎn)單方便,給用戶帶來良好的體驗(yàn)[6]。
用戶打開小程序,首先要請(qǐng)求用戶的授權(quán),來獲取用戶的唯一身份認(rèn)證。微信小程序的登錄授權(quán)流程圖如圖1所示,當(dāng)用戶在小程序端同意授權(quán)后,小程序通過wx.login()請(qǐng)求拿到code發(fā)送給第三方服務(wù)器,第三方服務(wù)器拿著code、開發(fā)者的AppID和AppSecret去請(qǐng)求微信服務(wù)器。即可獲得微信服務(wù)器返回的openId和session_key。openId是用戶的唯一標(biāo)識(shí),使用openId生成token返回到小程序端,后面的每次訪問帶上token,即可知道是哪個(gè)用戶在訪問。
1.3 SSM框架
本系統(tǒng)所采用的SSM框架是Spring+SpringMVC+Mybatis,Spring是一個(gè)輕量級(jí)框架,低侵入式設(shè)計(jì),代碼污染極低,且功能強(qiáng)大[7]。Spring像一個(gè)巨大的容器,使用控制反轉(zhuǎn)(IOC)技術(shù)降低了組件之間的耦合性,支持面向切面編程(AOP),把業(yè)務(wù)邏輯與系統(tǒng)的服務(wù)分開,開發(fā)人員更能專注于應(yīng)用邏輯。SpringMVC的框架包含model業(yè)務(wù)邏輯層,view表現(xiàn)層,controller控制器層。當(dāng)視圖層接收到用戶的輸入,傳輸給控制器,控制器解析輸入并對(duì)模型對(duì)象執(zhí)行交互,將數(shù)據(jù)輸出傳遞給模型層,視圖層時(shí)刻監(jiān)聽模型層,將數(shù)據(jù)以特定格式顯示出來。三者的交互相輔相成,既能夠降低耦合,又有利于拓展。MyBatis是一種Java持久層框架[8],比JDBC擁有更高的性能。MyBatis動(dòng)態(tài)生成SQL語句,更方便SQL的維護(hù)。數(shù)據(jù)庫通過xml文件自動(dòng)映射,將數(shù)據(jù)庫表通過駝峰命名法與實(shí)體類一一對(duì)應(yīng)。SSM框架圖如圖2所示。
1.4 JWT
本系統(tǒng)采用前后端分離的設(shè)計(jì)模式,前后端通過token進(jìn)行身份認(rèn)證,JWT很好的實(shí)現(xiàn)了這個(gè)功能。JWT就是JsonWebToken,是一種基于JSON對(duì)象形式,用于通信雙方之間傳遞安全信息的聲明規(guī)范,是目前最流行的跨域身份驗(yàn)證解決方案[9]。JWT具有簡(jiǎn)潔性和自包含性,由頭部、載荷和簽名三部分構(gòu)成,并由“.”分隔。頭部是用來聲明類型和加密算法,載荷部分就是承載消息具體內(nèi)容的地方,簽名部分就是對(duì)前兩部分進(jìn)行數(shù)據(jù)簽名,防止數(shù)據(jù)被篡改。當(dāng)用戶訪問服務(wù)器時(shí),發(fā)送自己的用戶名和密碼,服務(wù)器驗(yàn)證身份后,生成一個(gè)JWTtoken返回給用戶,用戶后面每次訪問的時(shí)候,服務(wù)器都會(huì)對(duì)攜帶的token進(jìn)行校驗(yàn)。
2 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)采用C/S(客戶端/服務(wù)器)架構(gòu),前后端分離的設(shè)計(jì)模式,用戶和快遞員端采用微信小程序展示,通過wx.request()向后端服務(wù)器發(fā)送請(qǐng)求和接受返回的數(shù)據(jù)。管理員端采用Vue+ElementUI框架設(shè)計(jì),后端采用Spring+SpringMVC+MyBatis框架進(jìn)行業(yè)務(wù)處理,RBAC(Role-BasedAccessControl)進(jìn)行角色訪問權(quán)限控制,前后端通信數(shù)據(jù)格式采用JSON格式。數(shù)據(jù)庫選擇了體積小、速度快的MySql,用來存儲(chǔ)用戶、快遞員和訂單等信息。
2.1 系統(tǒng)整體功能設(shè)計(jì)
本系統(tǒng)由用戶角色、快遞員角色和管理員角色構(gòu)成??爝f員和用戶都是通過微信小程序端登錄授權(quán),確定身份。用戶登錄后,可以在線寄件、取件出庫、查件,對(duì)用戶個(gè)人資料等進(jìn)行管理操作;快遞員登錄后可以進(jìn)行攬件和派件的任務(wù),對(duì)自己資料進(jìn)行管理,查看自己任務(wù)量等。后端管理員可以對(duì)用戶信息和快遞員信息進(jìn)行管理。系統(tǒng)功能結(jié)構(gòu)圖如圖3所示。
2.2 功能分析
2.2.1 用戶功能分析
⑴ 寄件模塊:用戶使用微信登錄小程序,授權(quán)后即可下單寄件。填寫詳細(xì)寄件信息,地址可由地址簿導(dǎo)入。用戶自主選擇物流公司,或者交由系統(tǒng)根據(jù)寄件需求智能選擇物流公司。填寫完信息后即可提交訂單。下單后,生成二維碼,后臺(tái)接到訂單后會(huì)分派快遞員上門取件,待快遞員掃碼攬件成功后,用戶可選擇線上支付或線下支付,接收到快遞員發(fā)送的快遞單號(hào)即表示寄件成功。寄件完成后可以對(duì)攬件快遞員打分評(píng)價(jià)。寄件流程圖如圖4所示。
⑵ 收件模塊:當(dāng)快遞員把快遞送到驛站,會(huì)生成一個(gè)取貨碼,在小程序上即可查詢?nèi)∝洿a。點(diǎn)擊驛站也可導(dǎo)航至驛站,適用于不熟悉周圍環(huán)境的新來住戶,或者學(xué)校校區(qū)過大,設(shè)置了不同驛站,學(xué)生點(diǎn)擊驛站即可知道驛站具體位置。取件時(shí),直接掃碼出庫即可。
⑶ 掃碼查件模塊:用戶進(jìn)入查詢頁面輸入訂單號(hào),也可以掃描二維碼識(shí)別訂單號(hào)。點(diǎn)擊查詢按鈕即可顯示快遞的物流信息。在當(dāng)前查詢頁面可以看到歷史查詢記錄,通過歷史查詢記錄可直接進(jìn)入詳細(xì)物流界面。
⑷ 我的信息模塊:用戶進(jìn)入我的頁面,可以查看自己的資料,進(jìn)行實(shí)名認(rèn)證以及地址薄的管理,查看所有的歷史訂單。
2.2.2 快遞員功能分析
⑴ 攬件模塊:快遞員授權(quán)登錄,接到后臺(tái)分配的攬件任務(wù)趕往取件地點(diǎn),拿到用戶的物品后,即可掃描提前已經(jīng)打印好的二維碼,使二維碼與用戶下單物品相綁定,并將生成的快遞單號(hào)發(fā)送給用戶,后面的每次運(yùn)輸和分揀只有掃描二維碼才能獲取下一階段需要操作的動(dòng)作,保護(hù)了用戶隱私。快遞員攬件成功之后點(diǎn)擊任務(wù)完成按鈕反饋到后臺(tái)。
⑵ 派件模塊:快遞員對(duì)到達(dá)的快遞進(jìn)行分揀,通過掃碼,拿到自己派件任務(wù)所對(duì)應(yīng)的快件,檢查包裹的完整度,修改快遞訂單的狀態(tài)為正在派送中,同時(shí)系統(tǒng)獲取快遞單所含的信息,自動(dòng)跳轉(zhuǎn)到播打電話頁面或者通過微信的消息推送提醒用戶??爝f員派件流程圖如圖5所示。
⑶ 掃碼查件模塊:快遞員也有查件模塊,以應(yīng)對(duì)于出現(xiàn)問題件或者用戶找不到快遞情況。當(dāng)用戶打電話向快遞員詢問快遞信息的時(shí)候,快遞員方便及時(shí)查詢快遞信息給予反饋??爝f員查件同樣分為手動(dòng)輸入單號(hào)或者掃描識(shí)別單號(hào)兩種方式。
⑷ 快遞員信息模塊:快遞員進(jìn)入我的信息模塊做實(shí)名認(rèn)證,更改自己的頭像,姓名等資料,查看自己的評(píng)價(jià)等級(jí)、所有派件信息及攬件信息,統(tǒng)計(jì)自己的工作量。
2.2.3 管理員功能分析
管理員從后端登錄,在后臺(tái)對(duì)用戶信息以及快遞員信息進(jìn)行管理。例如:核查快遞員身份信息,給不同的快遞員分配不同的權(quán)限,可以對(duì)不合格的快遞員進(jìn)行刪除操作。當(dāng)用戶下單之后,管理員根據(jù)快遞員所管轄范圍分配合適的取件任務(wù),對(duì)于超時(shí)未取件的訂單會(huì)標(biāo)紅處理。同時(shí)管理員可以查看所有快遞訂單的詳細(xì)信息,對(duì)快遞員任務(wù)量進(jìn)行統(tǒng)計(jì)匯總操作。管理員可以條件查詢?cè)谀硞€(gè)時(shí)段或者某個(gè)地區(qū)的快遞件數(shù)總量,合理分配不同地區(qū)快遞員的數(shù)量。管理員還可以通過快遞信息看板了解最近12個(gè)月的訂單數(shù)量變化,以及各月份攬件和派件的任務(wù)量。
2.3 登錄認(rèn)證和授權(quán)
本系統(tǒng)在登錄授權(quán)信息方面采用了OAuth協(xié)議的授權(quán)方式[10]。OAuth協(xié)議可以在第三方不需要接觸用戶名和用戶密碼的情況下,即可申請(qǐng)獲得該用戶資源的授權(quán)。OAuth協(xié)議的特點(diǎn)是簡(jiǎn)單易懂,多框架支持;很安全,無需接觸到用戶隱私信息;同時(shí)也是開放的,任何服務(wù)商、開發(fā)者都可以使用。OAuth協(xié)議里有四個(gè)角色,分別是授權(quán)服務(wù)器、資源服務(wù)器、資源擁有者和客戶端。其中資源服務(wù)器和授權(quán)服務(wù)器可以是同一個(gè)服務(wù)器,也可以是不同的服務(wù)器,單獨(dú)的授權(quán)服務(wù)器可以為多個(gè)資源服務(wù)器發(fā)送token。OAuth授權(quán)的流程圖如圖6所示??蛻舳耸紫日?qǐng)求用戶的授權(quán),用戶同意后向授權(quán)服務(wù)器申請(qǐng)令牌,授權(quán)服務(wù)器對(duì)客戶端進(jìn)行認(rèn)證,確認(rèn)無誤后返回令牌,客戶端拿到令牌后即可向資源服務(wù)器申請(qǐng)資源。本系統(tǒng)里token的生成就是使用JWT方法。
3 結(jié)束語
傳統(tǒng)APP過于臃腫,微信小程序已經(jīng)成為取代手機(jī)客戶端APP的最佳選擇。本文在微信小程序和二維碼的基礎(chǔ)上,為用戶和快遞員開發(fā)了一套快遞的收發(fā)系統(tǒng),方便快遞員使用,同時(shí)能保護(hù)用戶隱私安全。解決了用戶日常取件等候時(shí)間長(zhǎng)的問題,提高了用戶的體驗(yàn)感受。快遞物流行業(yè)業(yè)務(wù)復(fù)雜,功能需求繁多,未來,希望在此基礎(chǔ)上添加更多的功能,滿足用戶和快遞員在日常生活使用中的其他需求。
參考文獻(xiàn)(References):
[1] 楊從平,秦小輝,楊麗英.我國(guó)快遞市場(chǎng)發(fā)展現(xiàn)狀分析及對(duì)策[J].物流科技,2018.41(1):68-72
[2] 和柯.基于Android的可視化快遞輔助配送系統(tǒng)研究[D].武漢大學(xué),2018.
[3] 梁榮,汪玉凱,李心池.分級(jí)安全的二維碼識(shí)別系統(tǒng)及關(guān)鍵算法設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2017.38(11): 2903-2908
[4] 張新文,李華康,楊一濤.基于二維碼技術(shù)的個(gè)人信息隱私保護(hù)物流系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2016.33(11):3455-3459
[5] 孫冰.巨頭為何爭(zhēng)奪小程序?[J].中國(guó)經(jīng)濟(jì)周刊,2019.4:79-81
[6] 何冠檜.基于微信應(yīng)用平臺(tái)下的高校智能快遞系統(tǒng)的研究[J].電子世界,2017.6:169
[7] 李洋.SSM框架在Web應(yīng)用開發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016.12:190-194
[8] 鄧笑.基于Spring Boot的校園輕博客系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].華中科技大學(xué),2018.
[9] Ben Ali I, Basly M, Ben Jemaa S, et al. JSON Web Token(JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants[J], 2015.54(6):641-644
[10] 魏成坤,劉向東,石兆軍.基于OAuth2.0的認(rèn)證授權(quán)技術(shù)研究[J].信息網(wǎng)絡(luò)安全,2016.9:6-11