基于QR Code 二维码的食品溯源系统的开发与设计
2021-12-07都洪韬丁润东吴芮豪许鑫崔煦晨
刘 韬,都洪韬,丁润东,吴芮豪,许鑫,崔煦晨,王 亚
(阜阳师范大学 计算机与信息工程学院,安徽 阜阳 236037)
关键字:食品溯源;云平台;QR Code;微信小程序
食品安全不仅关系人民群众的身体健康,而且对经济发展有着重大影响[1]。食品行业在生产、销售、物流等各个环节的执行标准不统一、信息不畅通,给食品溯源造成了困难[2]。但是在互联网的环境下,将食品行业和信息技术相结合,不仅可实现资源价值利用的最大化[3],也可以辅助食品溯源过程,提升对食品安全的信心和监管。随着智能手机的普及,二维码在日常生活中的应用非常广泛,在移动支付、身份识别、电子票务等领域带来了极大的便利,深受人们欢迎。将二维码技术应用在食品溯源系统中,不仅能够快速查询到食品信息和质量状况,而且实现了溯源、防伪二合一的功能,改变了传统的食品质量查询模式,避免销售人员虚构食品质量情况而误导消费者事件的发生,提高食品质量的可信度。因此设计一套食品溯源系统就有非常迫切的需求[4,5]。
1 系统需求分析
由于移动互联网的发展,人们可以很便利地获取各种信息资源。食品企业可以利用信息手段,为消费者提供食品的各种信息,达到使消费者放心购买的目的,同时也可以向消费者展示企业的风采,提高企业知名度[6,7]。本文的研究背景是基于与阜阳市尚源公司开展的产学研合作项目,通过与该食品企业深入沟通交流,对企业在食品溯源方面展开需求分析。
为了确保食品生产、销售、物流环节信息的畅通,满足企业数据管理的需求,需要搭建基于腾讯云服务器的企业云平台,将企业和食品的基本信息存放在云平台上,实现信息的互通共享。为了方便消费者使用,选择以微信平台开发设计基于二维码技术的溯源系统。消费者无需下载额外应用程序,只需要在手机上打开溯源小程序扫描二维码食品标签,即可快速便利地获取云平台中食品的销售、物流、生产等基本信息,实现对食品安全信息的及时查询及跟踪[8]。食品溯源系统为消费者提供了追溯食品信息的平台,也为企业提供展示食品及企业文化的平台,为消费者和企业之间提供了良好的沟通交流平台。
2 相关技术
2.1 前端技术
食品溯源系统分为前端界面和后端服务。前端界面使用微信小程序编程语言和开发工具进行开发。微信开发平台为用户提供了一套实用的API,方便开发者的使用,开发流程简单,文档充分。同时微信也推出了小程序开发工具,使得开发工作更加便利。利用微信开发平台搭建系统后,用户无需下载额外应用程序,方便用户使用[9-11]。
2.2 后端技术
企业云平台需要提供具有稳定性及高性能的服务。Ubuntu 操作系统有较为完善的服务平台,可以随时为开发者提供帮助。Nginx 是一个高性能的HTTP 和反向代理负载均衡Web 服务器[12]。在性能上,Nginx 支持更多的并发连接,能够达到高效的访问速度;在安装和配置上,简单灵活,并且支持热部署,无需重启服务即可升级软件版本或者修改配置[13-15]。MySQL 是关系型数据库管理系统,体积小,速度快,并且其代码开源,可以大大降低总体开发成本[16]。基于上述技术特点考虑,在腾讯云服务器上选用Ubuntu18.04 操作系统,搭建Nginx 反向代理服务器和MySQL 数据库服务,构建云平台基础环境,将后端服务部署在云平台上。
为了使溯源系统更加轻便灵活,采用Python+Flask 框架搭建后端系统,为溯源小程序提供数据支持。Flask 是Python 语言编写的Web 框架,优点是框架轻量、灵活多变,但相较于Spring Boot等Java Web 框架,其功能不够完善,还需要开发者做更多的工作[17-19]。
2.3 二维码技术
在众多二维码类型中,QR Code 作为矩阵型编码的一种,较为常见。由于其具备以下特点,该编码也得到了广泛应用[20]。第一,其存储信息灵活多样。信息格式和长度可以根据用户需求进行自定义;存储信息可以是文本、图片、音视频等多种类型。第二,其生成的二维码读取速度较快。第三,编码具有健壮性。
在图1 中,方块1、2、3 为定位区域,主要用于探测图形,实现对二维码的快速定位,提升了其读取速度;方块4 为矫正区域,主要用于图形形状矫正。即当二维码图形发生畸变的情况下,通过矫正区域,可以使得正确读取信息,以提升识别成功率。基于QR Code 的以上优势[21],本文的食品溯源系统采用了该编码技术生成食品的二维码,用来追踪其生产、物流、销售等过程。
图1 QR Code 二维码
3 系统设计
3.1 系统架构设计
食品溯源系统总体架构由客户端和服务端两部分组成,如图2 所示。
图2 系统总体架构
食品企业将数据后端系统部署在自建云平台上构建整个服务端系统为客户端提供数据支持。消费者在使用溯源系统过程中,客户端与服务端进行接口通信获取相应数据,并将数据展示给消费者。
食品溯源系统的客户端和服务端的详细架构如图3 所示。其中,为方便消费者使用,客户端使用微信小程序开发,其开发框架分为两层,分别为逻辑层和视图层,如图3(a)所示。服务端由三个部分组成:分别为Nginx 服务器、MySQL 数据库服务和后端系统,其中Nginx 服务器和MySQL数据库服务组成了云平台,如图3(b)所示。
图3 系统详细架构
图3(a)逻辑层采用JavaScript 语言开发,主要负责实现数据请求、修改等逻辑行为。图3(a)视图层由WXML 和WXSS 语言进行开发,其中WXML 负责页面编写,而WXSS 负责页面布局控制。溯源系统客户端通过MINA 架构来确保逻辑层和视图层数据同步。
图3(b)云平台由Nginx 服务器和MySQL 数据库服务组成。其中,Nginx 服务器提供反向代理服务,负责均衡负载和资源存放。而云平台中的MySQL 数据库服务负责将数据持久化。图3(b)中后端系统采用Python+Flask 框架进行构建,部署在云平台上,公开RESTful 接口地址和客户端通信。后端系统和MySQL 数据库服务通信,用来查询数据并将数据持久化。
3.2 系统模块及流程设计
食品溯源系统主要承担两个业务责任,其一,满足消费者对食品信息查询的需求;其二,满足企业宣传和推广的需求。结合面向企业和面向用户两个需求点,将溯源系统客户端划分为企业详情信息模块、食品生产信息模块、食品运输信息模块以及食品销售信息模块。而服务端为客户端提供了数据支持。系统功能模块图如图4 所示。
图4 溯源系统功能模块图
食品溯源系统流程可分为溯源数据采集及溯源系统查询信息两个部分。溯源数据的采集流程为:首先,食品生产完成后进行生产信息的采集;其次,将食品打包运输采集运输信息;最后,采集食品的销售信息。而消费者使用溯源系统的流程为:首先,消费者通过微信搜索到溯源系统小程序客户端,扫描带有二维码的食品标签;其次,客户端发送请求到服务端,当服务端接收到带有标识数据的请求后,根据食品标签去数据库中查询相关信息,然后将数据库返回的数据经过封装后返回给客户端;最后,客户端获得服务端返回的数据信息后会自动跳转进入主界面,消费者可以在客户端主界面按照需要点击相关查询按钮查看企业信息、生产信息、运输信息、销售信息。
4 系统实现
4.1 二维码标签
消费者主要通过食品企业提供的食品二维码标签,如图5 所示,获取企业详情信息、食品生产信息、食品运输信息、食品销售信息等信息。
图5 食品二维码标签
经过调研企业实际需求,确定食品标签码需要包含以下字段信息,分别为生产企业名称、品类名称、食品名称、生产日期、保质期、批次,如图5(a)所示。食品企业相关操作人员通过标签打印机打印出带有QR Code 的食品标签,如图5(b)所示。随后,将其贴在食品的外包装上,并将货物打包经过物流运输到各个销售网点进行销售。通过贴上带有QR Code 的食品标签给同一批次的食品提供了可以追溯的标识。
4.2 系统界面
消费者使用客户端扫描食品包装袋上食品二维码标签,即可进入食品溯源系统界面。其系统界面主要分为两大块,分别为溯源查询类界面和公司详情类界面,详情如图6 所示。
图6(a)是系统界面首页,提供两个入口分别为“进入溯源”和“公司详情”。公司详情页提供公司的公司简介和产品展示。溯源信息首页图6(b)展示了食品的品类、产地、产品信息、物流信息和销售信息。图6(c)是产品信息页,展示了食品的生产企业、品类名称、产品名称、生产日期、保质期和批次信息。物流信息页图6(d)展示了食品运输过程中的发货单位、发货区域、发货时间、收货单位、收货区域和收货时间信息。图6(e)是销售信息页,展示了食品的销售商和销售价格信息。
图6 溯源系统客户端界面图
5 总结
针对食品安全和监管问题,利用“互联网+食品”的模式去寻找解决方案。设计了基于QRCode食品二维码标签,开发实现了食品溯源系统,该系统由客户端和服务端组成。为方便消费者使用,采用微信小程序技术设计客户端应用。为了给客户端提供数据支持,由云平台和后端系统组成服务端。该系统兼顾了消费者和企业经营者利益,消费者使用本系统可以实现对食品信息的追溯,增强了对食品安全的信心;企业经营者使用本系统可以及时记录食品各环节的信息,提升了对食品质量的监管和企业知名度。