基于微信小程序和二维码的快递收发系统研究与设计
2020-06-30万迎霜陶利民
万迎霜 陶利民
摘 要: 物流行业的飞速发展,快递数量的逐渐增加,用户取件、寄件不便以及隐私安全等问题也随之而来。通过分析现有快递行业的发展势态,根据用户体验和信息安全,设计了一款基于微信小程序和二维码技术的快递收发系统。用户在小程序上即可完成寄件、取件操作;快递员则摒弃传统昂贵笨重的巴枪,通过小程序进行揽件和派件,提高快递收发效率的同时也保护了用户的信息安全。
关键词: 微信小程序; 快递; 二维码; OAuth; Token
中图分类号:TP311 文献标识码:A 文章编号: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 引言
近年来,新零售行业的发展如火如荼,线上购物这一消费方式所占比重逐年增大,快递的收发也成为人们日常生活中的一部分。据国家邮政局检测数据显示,仅2019年“双十一”活动当天,全国各邮政、快递企业共处理5.35亿快件,同比增长28.6%,再创历史新高[1]。但所面临的问题也随之增多。快递单上随处可见的用户信息,导致信息泄露的事件越来越多,对用户隐私的保护刻不容缓。针对以上情况,本文利用微信小程序和二维码技术开发了一款线上的快递收发系统,并对各个模块和功能做了详细介绍[2]。在保护用户信息安全方面用二维码面单代替传统的快递单,只有快递员扫描面单时,才能获取快递下一阶段所需的派送信息,极大的保护了用户隐私。
1 关键技术
1.1 二维码
二维码在生活中应用广泛,移动支付、社交网络、防伪溯源,交通出行等等随处可见二维码的身影,简单的‘扫一扫让生活的便利程度又提升了一个层次[3]。本文所用的二维码是QRCode,全称是QuickResponse。二维码也称二维条码,和一维条形码都是用来存储数据的,但是二维码能够存储更多的数据,比如汉字、图片、URL等,二维码相比于一维条码所占用的面积也大大减小,同时可以进行加密使其安全性更高[4]。二维码的容错率也比一维条码高,一般的轻微损坏或者遮盖不影响机器识别的结果。
1.2 微信小程序
微信小程序是基于微信的一款轻量级APP,依靠着庞大的微信用户,自2017年1月9日上线截止至2018年年底,小程序用户规模超6亿,日活跃用户3.5亿。2018年为用户提供了超过1000亿人次的商业和政务服务[5]。微信小程序使用方便、即开即用,通过扫描一张二维码或者推送链接即可打开,十分便捷,弥补了传统APP体积庞大、安装慢等缺点。小程序操作简单方便,给用户带来良好的体验[6]。
用户打开小程序,首先要请求用户的授权,来获取用户的唯一身份认证。微信小程序的登录授权流程图如图1所示,当用户在小程序端同意授权后,小程序通过wx.login()请求拿到code发送给第三方服务器,第三方服务器拿着code、开发者的AppID和AppSecret去請求微信服务器。即可获得微信服务器返回的openId和session_key。openId是用户的唯一标识,使用openId生成token返回到小程序端,后面的每次访问带上token,即可知道是哪个用户在访问。
1.3 SSM框架
本系统所采用的SSM框架是Spring+SpringMVC+Mybatis,Spring是一个轻量级框架,低侵入式设计,代码污染极低,且功能强大[7]。Spring像一个巨大的容器,使用控制反转(IOC)技术降低了组件之间的耦合性,支持面向切面编程(AOP),把业务逻辑与系统的服务分开,开发人员更能专注于应用逻辑。SpringMVC的框架包含model业务逻辑层,view表现层,controller控制器层。当视图层接收到用户的输入,传输给控制器,控制器解析输入并对模型对象执行交互,将数据输出传递给模型层,视图层时刻监听模型层,将数据以特定格式显示出来。三者的交互相辅相成,既能够降低耦合,又有利于拓展。MyBatis是一种Java持久层框架[8],比JDBC拥有更高的性能。MyBatis动态生成SQL语句,更方便SQL的维护。数据库通过xml文件自动映射,将数据库表通过驼峰命名法与实体类一一对应。SSM框架图如图2所示。
1.4 JWT
本系统采用前后端分离的设计模式,前后端通过token进行身份认证,JWT很好的实现了这个功能。JWT就是JsonWebToken,是一种基于JSON对象形式,用于通信双方之间传递安全信息的声明规范,是目前最流行的跨域身份验证解决方案[9]。JWT具有简洁性和自包含性,由头部、载荷和签名三部分构成,并由“.”分隔。头部是用来声明类型和加密算法,载荷部分就是承载消息具体内容的地方,签名部分就是对前两部分进行数据签名,防止数据被篡改。当用户访问服务器时,发送自己的用户名和密码,服务器验证身份后,生成一个JWTtoken返回给用户,用户后面每次访问的时候,服务器都会对携带的token进行校验。
2 系统的设计与实现
本系统采用C/S(客户端/服务器)架构,前后端分离的设计模式,用户和快递员端采用微信小程序展示,通过wx.request()向后端服务器发送请求和接受返回的数据。管理员端采用Vue+ElementUI框架设计,后端采用Spring+SpringMVC+MyBatis框架进行业务处理,RBAC(Role-BasedAccessControl)进行角色访问权限控制,前后端通信数据格式采用JSON格式。数据库选择了体积小、速度快的MySql,用來存储用户、快递员和订单等信息。
2.1 系统整体功能设计
本系统由用户角色、快递员角色和管理员角色构成。快递员和用户都是通过微信小程序端登录授权,确定身份。用户登录后,可以在线寄件、取件出库、查件,对用户个人资料等进行管理操作;快递员登录后可以进行揽件和派件的任务,对自己资料进行管理,查看自己任务量等。后端管理员可以对用户信息和快递员信息进行管理。系统功能结构图如图3所示。
2.2 功能分析
2.2.1 用户功能分析
⑴ 寄件模块:用户使用微信登录小程序,授权后即可下单寄件。填写详细寄件信息,地址可由地址簿导入。用户自主选择物流公司,或者交由系统根据寄件需求智能选择物流公司。填写完信息后即可提交订单。下单后,生成二维码,后台接到订单后会分派快递员上门取件,待快递员扫码揽件成功后,用户可选择线上支付或线下支付,接收到快递员发送的快递单号即表示寄件成功。寄件完成后可以对揽件快递员打分评价。寄件流程图如图4所示。
⑵ 收件模块:当快递员把快递送到驿站,会生成一个取货码,在小程序上即可查询取货码。点击驿站也可导航至驿站,适用于不熟悉周围环境的新来住户,或者学校校区过大,设置了不同驿站,学生点击驿站即可知道驿站具体位置。取件时,直接扫码出库即可。
⑶ 扫码查件模块:用户进入查询页面输入订单号,也可以扫描二维码识别订单号。点击查询按钮即可显示快递的物流信息。在当前查询页面可以看到历史查询记录,通过历史查询记录可直接进入详细物流界面。
⑷ 我的信息模块:用户进入我的页面,可以查看自己的资料,进行实名认证以及地址薄的管理,查看所有的历史订单。
2.2.2 快递员功能分析
⑴ 揽件模块:快递员授权登录,接到后台分配的揽件任务赶往取件地点,拿到用户的物品后,即可扫描提前已经打印好的二维码,使二维码与用户下单物品相绑定,并将生成的快递单号发送给用户,后面的每次运输和分拣只有扫描二维码才能获取下一阶段需要操作的动作,保护了用户隐私。快递员揽件成功之后点击任务完成按钮反馈到后台。
⑵ 派件模块:快递员对到达的快递进行分拣,通过扫码,拿到自己派件任务所对应的快件,检查包裹的完整度,修改快递订单的状态为正在派送中,同时系统获取快递单所含的信息,自动跳转到播打电话页面或者通过微信的消息推送提醒用户。快递员派件流程图如图5所示。
⑶ 扫码查件模块:快递员也有查件模块,以应对于出现问题件或者用户找不到快递情况。当用户打电话向快递员询问快递信息的时候,快递员方便及时查询快递信息给予反馈。快递员查件同样分为手动输入单号或者扫描识别单号两种方式。
⑷ 快递员信息模块:快递员进入我的信息模块做实名认证,更改自己的头像,姓名等资料,查看自己的评价等级、所有派件信息及揽件信息,统计自己的工作量。
2.2.3 管理员功能分析
管理员从后端登录,在后台对用户信息以及快递员信息进行管理。例如:核查快递员身份信息,给不同的快递员分配不同的权限,可以对不合格的快递员进行删除操作。当用户下单之后,管理员根据快递员所管辖范围分配合适的取件任务,对于超时未取件的订单会标红处理。同时管理员可以查看所有快递订单的详细信息,对快递员任务量进行统计汇总操作。管理员可以条件查询在某个时段或者某个地区的快递件数总量,合理分配不同地区快递员的数量。管理员还可以通过快递信息看板了解最近12个月的订单数量变化,以及各月份揽件和派件的任务量。
2.3 登录认证和授权
本系统在登录授权信息方面采用了OAuth协议的授权方式[10]。OAuth协议可以在第三方不需要接触用户名和用户密码的情况下,即可申请获得该用户资源的授权。OAuth协议的特点是简单易懂,多框架支持;很安全,无需接触到用户隐私信息;同时也是开放的,任何服务商、开发者都可以使用。OAuth协议里有四个角色,分别是授权服务器、资源服务器、资源拥有者和客户端。其中资源服务器和授权服务器可以是同一个服务器,也可以是不同的服务器,单独的授权服务器可以为多个资源服务器发送token。OAuth授权的流程图如图6所示。客户端首先请求用户的授权,用户同意后向授权服务器申请令牌,授权服务器对客户端进行认证,确认无误后返回令牌,客户端拿到令牌后即可向资源服务器申请资源。本系统里token的生成就是使用JWT方法。
3 结束语
传统APP过于臃肿,微信小程序已经成为取代手机客户端APP的最佳选择。本文在微信小程序和二维码的基础上,为用户和快递员开发了一套快递的收发系统,方便快递员使用,同时能保护用户隐私安全。解决了用户日常取件等候时间长的问题,提高了用户的体验感受。快递物流行业业务复杂,功能需求繁多,未来,希望在此基础上添加更多的功能,满足用户和快递员在日常生活使用中的其他需求。
参考文献(References):
[1] 杨从平,秦小辉,杨丽英.我国快递市场发展现状分析及对策[J].物流科技,2018.41(1):68-72
[2] 和柯.基于Android的可视化快递辅助配送系统研究[D].武汉大学,2018.
[3] 梁荣,汪玉凯,李心池.分级安全的二维码识别系统及关键算法设计[J].计算机工程与设计,2017.38(11): 2903-2908
[4] 张新文,李华康,杨一涛.基于二维码技术的个人信息隐私保护物流系统[J].计算机应用研究,2016.33(11):3455-3459
[5] 孙冰.巨头为何争夺小程序?[J].中国经济周刊,2019.4:79-81
[6] 何冠桧.基于微信应用平台下的高校智能快递系统的研究[J].电子世界,2017.6:169
[7] 李洋.SSM框架在Web应用开发中的设计与实现[J].计算机技术与发展,2016.12:190-194
[8] 邓笑.基于Spring Boot的校园轻博客系统的设计与实现[D].华中科技大学,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的认证授权技术研究[J].信息网络安全,2016.9:6-11