1 绪论
1.1 研究背景
农产品质量安全问题同消费者的健康以及农业产业的可持续发展息息相关。在传统的农产品流通模式之下,生产者、加工者、销售者各自记录自己的信息,造成信息孤岛的出现,使消费者很难得到真实的、可靠的农产品来源信息。一旦发生质量安全问题,查找问题源头要消耗大量的人力物力,追溯效率低。区块链技术在计算机安全软件开发中起到信息追溯的作用,给软件开发提供技术支持[1]。考虑零售商公平关切的双渠道供应链复合区块链策略研究,又为区块链在供应链领域应用开拓了新的领域[2]。数字供应链下的区块链技术采纳的三方演化博弈分析,给出了各个参与主体在溯源系统中行为特征的分析。从以上研究可以看出,信息技术正在改变农产品流通方式,创建农产品溯源系统已经成为农产品流通行业发展的必然趋势。
1.2 研究意义
本文所设计并实现的农产品溯源信息管理系统有诸多现实意义。系统以统一的信息平台为纽带,将农户、企业、消费者三者联系起来,农户上传产品信息,企业审核把关,消费者查询产品溯源信息[3]。这就形成了一个完整的闭环信息流,保证农产品信息的准确真实,又可以降低企业的人工审核成本。系统自带的点赞、收藏、评论功能提高了用户的互动性,给优质农产品提供展示平台。管理员对产品类型、轮播图、用户角色进行统一管理,保证系统正常运转。该系统不仅可以服务一个企业,它的设计思想也可以推广到各种农产品交易平台、农业合作社、地方特色农产品推广项目中,给农业信息化建设提供参考方案。系统使用成熟的技术架构,运行稳定,维护简单,在中小规模的农业经营主体中具有一定的应用价值。
1.3 国内外研究现状
国内农产品溯源研究是从概念的引入到技术的应用发展起来的。早期的研究主要集中在溯源系统是否有必要、是否可行上,随着互联网技术的发展,学者们也开始对具体的实现途径进行研究。近些年来,区块链、物联网这些新技术同传统农业深度交融,溯源系统由原来的单方面信息记载转变成了智能化、可视化的模式。研究热点有溯源信息采集技术、数据存储方案、溯源信息查询效率优化、溯源信息真实性保障机制等各个方面。
吴以清对区块链技术在计算机安全软件开发方面的应用模式进行了研究,提出使用分布式账本加智能合约的方式来创建一个软件的开发方案,给农产品溯源系统的建立提供防篡改、可追踪的参考[4]。单俊昊、董守波、朱绪昶把区块链防伪存证技术运用到危化品安全生产全流程溯源里,多节点共识验证机制给农产品溯源系统食品安全保障给予参照[5]。汤长安、高鹏针对双渠道供应链下复合区块链策略应用效果展开研究,得出不同渠道间信息协同的重要意义,给本系统设计农户与企业信息对接模块提供一些思路[6]。康博涵、周剑桥、张烜通利用三方演化博弈模型来剖析数字供应链里区块链技术采纳行为,得出结论认为利益平衡是技术落地的前提,从而给出本系统设立合理审核和权限的建议[7]。聂丹宁、史曙生、刘耀荣创建了以区块链为基础的学生脊柱健康信息系统,其模型构建方法可以迁移到农产品溯源领域,给系统数据模型的设计提供思路[8]。国内的研究成果在技术可行性的验证以及理论模型的建立上比较丰富,但是针对中小农户的轻量化应用还存在着开发的空间。本系统以降低使用门槛、简化操作流程为宗旨,把农产品溯源技术真正应用到一线生产中。
国外农产品溯源研究开始得比较早,已经形成了比较成熟的科技体系和应用模式。研究重点由原来的建立基础的信息记录,转变为智能的标签系统以及可持续供应链管理。学者们对溯源系统在食品安全保障、供应链效率提高、消费者信任的建立等各方面的作用进行了研究。智能标签系统对于生鲜农产品供应链的应用研究发现,采用多种参数的标签可以提高信息采集的效率和准确性,该思路也指引本系统在设计产品信息字段的时候考虑完整性以及简洁性[9]。区块链技术在可持续供应链中应用的研究,重视技术提供方在系统落地过程中所起的战略性作用,说明本研究在系统推广阶段要考虑到配套服务的支持[10]。区块链协同再制造供应链中价格竞争和碳减排技术合作的研究,发现供应链的参与者之间存在着什么样的合作关系,给本系统的设计企业与农户信息共享模块提供理论依据[11]。发展中国家食品供应链社会可持续性多层次驱动因素研究显示,食品安全管理系统的中心作用,认为系统的设计要符合当地的实际情况和使用者的能力水平[12]。国外的研究重视技术落地的效果以及系统的可持续运行机制,给本系统的设计操作流程、用户培训方案等提供重要的借鉴。本系统借鉴国外研究重视用户中心的设计理念,联系国内农业生产实际状况,创建出契合中小农户需求的技术方案。
1.4 研究内容
本文根据农产品溯源信息管理的实际需要,用Spring Boot框架设计并实现了一个农产品溯源信息管理系统。从农产品生产流通环节的信息记录和查询痛点入手,分析农户、企业、管理员这三个用户在溯源场景中具体的使用需求,农户需要便捷的产品信息录入和查看功能,企业需要对产品信息进行审核把关,管理员需要对系统基础数据进行维护和用户的权限管理。根据需求分析结果来确定系统的总体架构,采用前后端分离的方式,后端使用Spring Boot框架实现业务逻辑以及数据交互,前端使用Vue.js搭建用户界面,并且利用MySQL数据库来保存业务数据。系统实现阶段主要是实现产品信息添加、产品审核、产品查询、角色管理、产品类型管理、轮播图管理等功能。测试环节检验系统的功能是否完整、运行是否稳定,保证各个模块按照预期的工作。本研究主要针对业务逻辑的实现以及用户体验的改善展开论述,并没有对大数据量并发处理或者分布式部署方案进行讨论。最终提交可运行的农产品溯源信息管理系统原型、数据库设计文档、系统测试报告、完整的论文。按照软件工程的方法,从需求分析、系统设计、编码实现、系统测试的顺序来完成。
2 系统分析
2.1 系统概述
农产品溯源信息管理系统是为农产品生产、流通环节提供信息管理服务的信息系统。系统采用B/S(浏览器/服务器)模式的设计,用户使用浏览器就可以访问使用,不需要安装其他的客户端软件。后端使用Spring Boot框架进行业务逻辑处理、数据校验、文件存储以及接口响应,前端用Vue.js框架来完成数据展示、表单交互和页面路由的功能,MySQL数据库作为数据持久化层,保存用户信息、产品记录、审核状态等主要的业务数据。系统分为农户用户、企业用户、管理员三类角色,农户可以添加产品信息、查看审核进度,企业可以审核产品、把关审核,管理员可以维护用户权限和系统基础设置。产品信息从农户录入、企业审核、用户查询这三个环节组成完整的流转链路。系统自带点赞、收藏、评论功能来提高用户的参与度,产品查询列表可以按照名称或者类型进行筛选,使消费者可以快速找到想要的产品。整体设计重视操作方便和数据安全,给农产品溯源赋予可靠的信息化支持。
2.2 可行性分析
2.2.1 技术可行性
Spring Boot框架以及Vue.js框架都已经发展了很多年[13],社区活跃、文档齐全、技术体系成熟稳定。Spring Boot 提供了完善的 Web 开发支持,内置了数据访问、事务管理、安全控制等功能模块,可以满足农产品溯源信息管理系统业务需求。Vue.js轻量高效,和后端通过HTTP接口交互,数据流转清楚[14]。MySQL数据库是目前业界最常用的关系型数据库,对于本系统数据的存储和查询工作来说已经足够[15]。前后端分离架构把界面展示和业务逻辑分开,减少模块之间的耦合度。开发环境使用IntelliJ IDEA与Visual Studio Code,均为主流开发工具,支持调试、版本控制、自动构建等功能。现有的技术条件完全可以支持本系统的设计和使用。
2.2.2 经济可行性
系统基于开源技术栈构建,Spring Boot、Vue.js、MySQL均为免费使用,无需支付软件授权费用[16]。开发工具有社区版、教育版,可以免费获取。系统运行环境可以选用轻量级云服务器,初期配置要求不高,月租费用可控。农产品生产经营主体依靠系统来完成信息化管理,削减人工记载和纸质文档传递的成本,企业审核产品信息由线下变为线上,节约了沟通的时间和差旅的费用。消费者查询产品信息不需要另外付费,系统运行不会给用户带来经济上的负担。就长期运行而言,系统维护工作量小,一个技术人员可以同时管理多个系统。整体投入产出比处于合理区间。
2.2.3 操作可行性
系统界面设计简单明了、易用性好,所有的功能模块都清楚地表明了它们的作用,操作流程也符合用户的日常使用习惯。农户用户登录之后可以直接看到产品信息添加入口,填写表单时字段分组清楚,质检报告可以点击上传。企业用户在审核产品信息的时候,在列表页上显示待审核的条目,在弹窗里提供通过、不通过的选择,可以填写审核回复。管理员管理产品类型和用户角色的时候,表格显示已有的数据,操作按钮和列表项相对应。所有的用户都不需要专业的计算机知识,经过简单的引导就可以完成主要的操作。系统采用浏览器运行方式,用户不需要下载任何附加的软件,只要有一个网络连接就可以使用。操作流程的设计考虑到了农业从业者可接受的程度。
2.2.4 法律可行性
农产品溯源信息管理系统在运行过程中包含用户信息采集、产品内容发布这两个主要的法律约束环节。系统搜集农户用户的姓名、年龄、联系方式以及企业用户的名称、地址等个人信息,存储和使用这些信息要遵照《中华人民共和国个人信息保护法》相关规定。系统的设计采用用户账户和业务信息分存的方法,密码字段用加密的方式存入数据库来防止信息泄露。在发布产品信息之前设置企业审核环节,对农户上传的质检报告、产品描述等进行把关,防止虚假或者违规的信息流传。系统记录的溯源信息可以成为农产品质量纠纷的参考依据,信息的真实性是由多方共同保证的。轮播图和公告内容由管理员统一设置,不能有不良信息的传播途径。整体设计符合目前法律法规对于信息系统运行的基本要求。
2.3 需求分析
2.3.1 功能需求
农户角色功能需求。农户用户登录系统之后可以进行产品信息查看和产品信息添加的操作。产品查看模块显示产品查询列表,农户可以按照产品名称或者产品类型进行搜索,对感兴趣的农产品进行点赞或者收藏。产品信息查看模块用列表的形式展示出农户自己添加的产品,每一项产品都有产品编号、名称、类型、地区、质检报告、审核状态等内容,农户可以点击查看详情。产品信息添加模块有表单填写界面,农户可以填写产品编号、名称、类型、地区、封面图片、质检报告、溯源详情,提交之后信息进入待审核状态。
图3-1 农户用户用例图
农户用户可以通过该系统查看农产品信息并点赞收藏自己感兴趣的农产品。系统显示产品查询列表,可以按照产品名称、产品类型进行筛选。农户用户可以查看自己添加的产品信息列表,每条产品记录包含产品编号、名称、类型、地区、质检报告等信息,可以点击详情按钮查看完整的商品信息。农户用户填写产品编号、名称、类型、地区、封面图片、质检报告文件、溯源详情等信息,提交之后产品信息进入待审核状态。
企业角色功能需求。企业用户登录系统之后,就可以对产品信息进行管理以及审核。产品信息管理模块显示所有待审核和已审核的产品列表,列表项包括产品编号、产品名称、产品类型、产品地区、产品农户信息、产品企业信息、产品审核状态等信息,可以按照产品名称、产品类型、审核状态进行筛选。产品审核模块对未审核的产品进行操作,审核人员可以查看产品的详细信息,选择审核通过或者不通过,填写审核回复后提交。产品查询管理模块有产品查询列表,企业用户可以查看产品点赞数、收藏数、评论数,点击查看评论来了解用户的反馈。
图3-2 企业用户用例图
企业用户通过产品信息管理功能可以查看所有的产品记录,根据产品名称、产品类型、审核状态等条件筛选出需要审核的产品,然后对多条产品进行批量审核。产品审核功能显示待审核产品的详细信息,企业用户查看产品填写的内容之后做出审核决定,审核通过的产品进入已发布状态,审核未通过的需要填写审核回复说明原因。产品查询管理功能会显示产品列表,每条产品记录都带有点赞数、收藏数、评论数的统计,企业用户可以点击查看评论内容,了解消费者对于产品的反馈意见。
管理员角色的功能需求。管理员有系统的最高权限,可以对角色进行管理、产品类型进行管理、产品信息进行管理、产品查询进行管理以及轮播图进行管理。角色管理模块中包括农户用户、企业用户和普通用户列表,可以对这些用户进行信息查询、审核状态修改以及用户删除等操作。产品类型管理功能添加或者删除产品类型,系统默认茶叶、乳制品、中药材、蜂蜜、花卉、坚果等类型。产品信息管理模块对所有的产品进行统一的管理,可以审核产品、发布产品、删除违规产品。产品查询管理功能可以实现全局产品列表、产品详情以及用户评论的查看。轮播图管理模块对系统首页轮播图片进行配置,设置图片的标题以及跳转链接。

图3-3 管理员用例图
管理员利用角色管理功能来维护系统中所有的用户信息,可以按照农户姓名或者审核状态来查询用户的记录,并且可以对用户进行批量审核或者删除的操作,新增农户用户的时候需要填写基本信息。产品类型管理功能显示产品类型列表,管理员可以新增或者删除产品类型,系统默认有多个常用的类型供选择。产品信息管理功能显示全部产品的数据,管理员可以筛选出不同的审核状态的产品,选择多条记录进行批量审核,对违规产品执行删除操作。产品查询管理具有全局搜索功能,管理员可以按照产品名称或者产品类型来查找产品,查看产品的详细信息以及用户的评价。轮播图管理功能配置首页轮播图片,上传图片、设置标题和跳转链接,调整轮播图显示顺序。
2.3.2 性能需求
系统在多用户并发访问时需要保持稳定的响应能力。产品查询列表加载时间<3秒,图片、文件上传操作反馈时间<5秒。系统可以支持五十个以上的用户同时在线进行操作,核心业务操作比如产品提交、审核通过等的事务处理成功率不低于百分之九十九点五。数据库连接池的容量要保持在合理的范围之内,防止因为连接过多造成请求排队等待的情况出现。前端页面使用懒加载技术,只加载需要的组件资源,减少首屏渲染时间。文件上传大小限制为十兆字节,超过限制时提示用户压缩后重新上传。系统日志保存重要的操作轨迹,方便对问题进行追踪以及性能的分析。缓存机制用在经常被查询的产品类型数据上,减少数据库的访问量。
2.3.3 环境需求
硬件需求
服务器端推荐配置为四核处理器、八GB内存、一百GB磁盘空间,用于部署Spring Boot应用与MySQL数据库[17]。磁盘读写速度影响文件上传下载体验,建议使用固态硬盘存储质检报告与轮播图片。客户端计算机需配备网络适配器,屏幕分辨率不低于一千三百六十六乘七百六十八像素,确保页面完整显示。移动设备访问时需支持触摸操作与屏幕自适应。
软件需求
服务器操作系统选用Linux或Windows Server均可,安装Java运行环境版本十一或以上。MySQL数据库版本要求五点七或八点零,字符集设置为utf8mb4。客户端浏览器推荐使用Chrome八十八以上版本、Firefox九十以上版本或Edge同核最新版本,需启用JavaScript与Cookie支持。文件上传依赖浏览器对HTML5特性的完整支持,图片预览功能需现代浏览器内核。
3.1 系统总体设计
3.1 系统总体设计
3.1.1 功能模块设计
系统按照用户角色将用户分为农户用户、企业用户、管理员这三个功能组。农户用户功能模块包含产品查看、产品信息查看、产品信息添加这三个子功能,农户可以在系统中查看农产品、浏览自己添加的产品、提交新产品信息。企业用户功能模块包含产品信息管理、产品审核、产品查询管理,企业对农户提交的产品信息进行审核把关,查看产品查询统计数据。管理员功能模块包括角色管理、产品类型管理、产品信息管理、产品查询管理、轮播图管理,管理员对系统的基础数据以及用户权限进行管理,保证系统的正常运行。三个角色的功能互相衔接,农户提交信息,企业审核把关,管理员全局管理,形成完整的农产品信息流转闭环。该系统的功能模块如图4-2所示。
图4-2 系统功能模块图
3.1.1 功能模块说明
农产品溯源信息管理系统按照用户角色把功能模块分为三个主要模块。农户用户功能模块包含产品查看、产品信息查看、产品信息添加三个子模块,产品查看模块提供产品查询列表展示和搜索筛选功能,支持用户对产品进行点赞和收藏操作,产品信息查看模块以列表的形式展示农户自己提交的所有产品记录,每条记录包含产品编号、名称、类型、审核状态等基本信息,点击详情可以浏览完整的商品内容和审核回复,产品信息添加模块通过表单收集产品编号、名称、类型、产地、封面图片、质检报告文件、溯源详情文本,提交后产品进入待审核状态。企业用户功能模块包含产品信息管理、产品审核、产品查询管理,产品信息管理模块显示所有待审核和已审核的产品列表,可以按照产品名称、类型、审核状态等进行筛选,产品审核模块对未审核的产品进行审核弹窗,审核人员查看产品详细信息后选择通过或者不通过,并填写审核回复,产品查询管理模块展示已发布的商品列表,每一条商品后面都有点赞数、收藏数、评论数的统计,可以查看用户的评论内容。管理员功能模块包含角色管理、产品类型管理、产品信息管理、产品查询管理、轮播图管理,角色管理模块维护农户用户、企业用户、普通用户列表,支持用户信息查询、审核状态修改和用户删除操作,产品类型管理模块新增或者删除产品类型,保证产品分类数据完整,产品信息管理模块对所有的产品进行统一管理,可以审核产品、发布产品、删除违规产品,产品查询管理模块提供全局产品列表和评论监控,轮播图模块配置系统首页轮播图片和跳转链接。三个角色的功能模块互相联系,形成完整的、完整的从产品信息到产品销售的流转闭环。
3.2 系统数据库的分析与设计
3.2.1 数据库的概念结构设计
农产品溯源信息管理系统概念模型设计的核心就是理清楚用户、产品、审核这三个业务之间的关系。农户和企业都是产品信息的提供者,都和产品记录之间用外键连接。产品必须经过企业的审核才能正式发布,审核状态和审核回复字段用来记录审核的过程结果。用户账户信息和各个业务表分离开来,用用户ID关联具体的业务角色。既保证了数据的规范性,又可以为以后添加新的用户类型做准备。实体之间的联系方式有三种,即一对一、一对多和多对多,一个农户可以添加多个产品,一个企业可以审核多个产品,一个产品有一个审核结果。E-R图属于概念模型的表达方式[18],用以表现实体以及它们之间的联系,给后续的逻辑模型设计赋予基本的参照。全局E-R模型如图4-8所示。
图4-8 全局ER图
根据系统分析,系统的主要实体有用户账户、农户用户、企业用户、普通用户、产品信息、产品查询、产品类型、评论、收藏、点赞,各个各个实体具体的属性如下图所示。
图4-9 用户账户实体属性图
图4-10 农户用户实体属性图
图4-11 企业用户实体属性图
图4-12 普通用户实体属性图
图4-13 产品信息实体属性图
图4-14 产品查询实体属性图
图4-15 产品类型实体属性图
图4-16 评论实体属性图
图4-17 收藏实体属性图
图4-18 点赞实体属性图
3.2.2 数据库的逻辑结构设计
数据库逻辑设计把概念模型转化成具体的表结构[19],给每一个实体创建对应的表,确定字段类型、长度和约束条件。逻辑设计遵守第三范式准则,削减数据冗余,保证数据更新一致。主键使用自增整数类型来保证每一条记录都有唯一的标识。外键字段关联到其他表的主键,用数据库约束来保证参照完整性。审核状态字段用字符串类型存储状态值,可以方便地添加新的状态类型。时间字段用timestamp类型记录操作发生时刻。索引针对查询频繁的字段建立,提升数据检索效率。数据库的字符集选择utf8mb4,可以存储各种特殊字符和表情符号。
3.2.3 数据库表的结构设计
用户账户表主要是用来存储系统所有用户的登录认证信息。主要包括用户ID、用户名、昵称、手机号码等字段。如表4-1所示。
表4-1 用户账户表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 用户ID | int | 11 | 主键 |
| 2 | 用户名 | varchar | 16 | 登录账号 |
| 3 | 昵称 | varchar | 16 | 显示名称 |
| 4 | 密码 | varchar | 64 | 加密存储 |
| 5 | 手机号码 | varchar | 11 | 联系方式 |
| 6 | 邮箱 | varchar | 64 | 电子邮箱 |
| 7 | 账户状态 | smallint | 6 | 1可用2异常3冻结4注销 |
| 8 | 用户组 | varchar | 32 | 角色标识 |
| 9 | 上次登录时间 | timestamp | - | 最近登录时刻 |
| 10 | 创建时间 | timestamp | - | 记录生成时间 |
农户用户表主要是用来存储农户角色的详细信息。主要包括农户用户ID、农户姓名、农户年龄、审核状态等字段。如表4-2所示。
表4-2 农户用户表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 农户用户ID | int | 11 | 主键 |
| 2 | 农户姓名 | varchar | 64 | 真实姓名 |
| 3 | 农户年龄 | varchar | 64 | 年龄数值 |
| 4 | 农户性别 | varchar | 64 | 性别信息 |
| 5 | 审核状态 | varchar | 16 | 是否通过审核 |
| 6 | 用户ID | int | 11 | 关联用户账户 |
| 7 | 创建时间 | datetime | - | 记录生成时间 |
| 8 | 更新时间 | timestamp | - | 最后修改时间 |
企业用户表主要是用来存储企业角色的详细信息。主要包括企业用户ID、企业名称、企业地址、手机号码等字段。如表4-3所示。
表4-3 企业用户表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 企业用户ID | int | 11 | 主键 |
| 2 | 企业名称 | varchar | 64 | 公司全称 |
| 3 | 企业地址 | varchar | 64 | 经营地址 |
| 4 | 负责人员 | varchar | 64 | 联系人姓名 |
| 5 | 手机号码 | varchar | 16 | 联系电话 |
| 6 | 审核状态 | varchar | 16 | 是否通过审核 |
| 7 | 用户ID | int | 11 | 关联用户账户 |
| 8 | 创建时间 | datetime | - | 记录生成时间 |
普通用户表主要是用来存储普通消费者的详细信息。主要包括普通用户ID、用户姓名、用户年龄、审核状态等字段。如表4-4所示。
表4-4 普通用户表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 普通用户ID | int | 11 | 主键 |
| 2 | 用户姓名 | varchar | 64 | 真实姓名 |
| 3 | 用户年龄 | varchar | 64 | 年龄数值 |
| 4 | 用户性别 | varchar | 64 | 性别信息 |
| 5 | 审核状态 | varchar | 16 | 是否通过审核 |
| 6 | 用户ID | int | 11 | 关联用户账户 |
| 7 | 创建时间 | datetime | - | 记录生成时间 |
产品信息表主要是用来存储农户或企业提交的农产品原始信息。主要包括产品信息ID、产品编号、产品名称、产品类型等字段。如表4-5所示。
表4-5 产品信息表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 产品信息ID | int | 11 | 主键 |
| 2 | 产品编号 | varchar | 64 | 唯一标识 |
| 3 | 产品名称 | varchar | 64 | 产品名称 |
| 4 | 产品类型 | varchar | 64 | 所属分类 |
| 5 | 产品地区 | varchar | 64 | 产地信息 |
| 6 | 封面图片 | varchar | 255 | 图片路径 |
| 7 | 质检报告 | varchar | 255 | 文件路径 |
| 8 | 审核状态 | varchar | 16 | 未审核/已通过/未通过 |
| 9 | 审核回复 | varchar | 255 | 未通过原因 |
| 10 | 创建时间 | datetime | - | 记录生成时间 |
产品查询表主要是用来存储发布后供用户查询的产品信息。主要包括产品查询ID、产品编号、产品名称、点赞数等字段。如表4-6所示。
表4-6 产品查询表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 产品查询ID | int | 11 | 主键 |
| 2 | 产品编号 | varchar | 64 | 唯一标识 |
| 3 | 产品名称 | varchar | 64 | 产品名称 |
| 4 | 产品类型 | varchar | 64 | 所属分类 |
| 5 | 产品地区 | varchar | 64 | 产地信息 |
| 6 | 封面图片 | varchar | 255 | 图片路径 |
| 7 | 点赞数 | int | 11 | 累计点赞 |
| 8 | 收藏数 | int | 11 | 累计收藏 |
| 9 | 评论数 | int | 11 | 累计评论 |
| 10 | 创建时间 | datetime | - | 记录生成时间 |
产品类型表主要是用来存储系统支持的产品分类信息。主要包括产品类型ID、产品类型等字段。如表4-7所示。
表4-7 产品类型表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 产品类型ID | int | 11 | 主键 |
| 2 | 产品类型 | varchar | 64 | 分类名称 |
| 3 | 创建时间 | datetime | - | 记录生成时间 |
| 4 | 更新时间 | timestamp | - | 最后修改时间 |
评论表主要是用来存储用户对产品的评价内容。主要包括评论ID、评论人ID、内容、昵称等字段。如表4-8所示。
表4-8 评论表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 评论ID | int | 11 | 主键 |
| 2 | 评论人ID | int | 11 | 用户标识 |
| 3 | 内容 | longtext | 65535 | 评论文本 |
| 4 | 昵称 | varchar | 255 | 显示名称 |
| 5 | 来源表 | varchar | 255 | 关联表名 |
| 6 | 来源字段 | varchar | 255 | 关联字段 |
| 7 | 来源ID | int | 11 | 关联记录 |
| 8 | 创建时间 | timestamp | - | 评论时刻 |
收藏表主要是用来存储用户收藏的产品记录。主要包括收藏ID、收藏人ID、来源表、来源字段等字段。如表4-9所示。
表4-9 收藏表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 收藏ID | int | 11 | 主键 |
| 2 | 收藏人ID | int | 11 | 用户标识 |
| 3 | 来源表 | varchar | 255 | 关联表名 |
| 4 | 来源字段 | varchar | 255 | 关联字段 |
| 5 | 来源ID | int | 11 | 关联记录 |
| 6 | 标题 | varchar | 255 | 产品名称 |
| 7 | 封面 | varchar | 255 | 产品图片 |
| 8 | 创建时间 | timestamp | - | 收藏时刻 |
点赞表主要是用来存储用户点赞的操作记录。主要包括点赞ID、点赞人、来源表、来源字段等字段。如表4-10所示。
表4-10 点赞表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 点赞ID | int | 11 | 主键 |
| 2 | 点赞人 | int | 11 | 用户标识 |
| 3 | 来源表 | varchar | 255 | 关联表名 |
| 4 | 来源字段 | varchar | 255 | 关联字段 |
| 5 | 来源ID | int | 11 | 关联记录 |
| 6 | 点赞状态 | tinyint | 4 | 1点赞0取消 |
| 7 | 创建时间 | timestamp | - | 点赞时刻 |
4 系统详细设计
4.1 产品信息添加流程设计
农户用户添加产品信息时,首先填写产品表单,录入产品编号、名称、类型、产地、封面图片、质检报告及溯源详情。系统前端对必填项进行校验,校验通过后发送请求至后端接口。后端接收请求后创建产品记录,初始审核状态设置为未审核,保存数据至数据库。操作完成后系统返回提交结果,前端跳转至产品信息列表页,新添加的产品显示在列表中并标注待审核状态。该流程中前端校验减少无效请求,后端事务确保数据完整写入。产品信息添加流程图如图4-3所示。

图4-3 产品信息添加流程图
4.2 企业审核产品流程设计
企业用户进入产品信息管理列表,筛选待审核产品。点击审核按钮弹出审核窗口,查看产品详细信息与农户上传的质检报告。企业根据产品信息质量决定审核结果,选择通过则产品状态更新为已通过,选择未通过需填写审核回复说明原因。提交审核结果后系统更新数据库记录,产品状态变更,农户可在产品信息查看模块看到审核状态与回复内容。该流程确保每件产品都经过企业把关,审核回复功能帮助农户了解未通过原因。企业审核产品流程图如图4-4所示。

图4-4 企业审核产品流程图
4.3 产品类型管理流程设计
管理员进入产品类型管理页面,系统加载现有产品类型列表。管理员可执行新增类型或删除类型操作。新增类型时填写产品类型名称,系统检查类型是否已存在,若不存在则插入新记录至数据库。删除类型时系统检查该类型是否被产品信息引用,若有关联产品则禁止删除并提示管理员先处理相关产品。操作完成后页面刷新显示更新后的类型列表。该流程保障产品类型数据的完整性与一致性,避免出现无关联的冗余类型。产品类型管理流程图如图4-5所示。

图4-5 产品类型管理流程图
4.4 轮播图配置流程设计
管理员进入轮播图管理页面,系统显示当前已配置的轮播图列表。管理员可上传新图片,填写图片标题与跳转链接,上传成功后图片显示在列表末尾。管理员可调整轮播图显示顺序,拖动图片至目标位置后保存排序结果。删除轮播图时系统弹出确认框,确认后从数据库移除图片记录并删除存储文件。配置完成后首页轮播区域按最新设置展示图片。该流程支持灵活配置首页展示内容,无需修改代码即可更新宣传信息。轮播图配置流程图如图4-6所示。

图4-6 轮播图配置流程图
4.5 用户审核流程设计
管理员进入角色管理模块,选择农户用户列表或企业用户列表。系统展示所有注册用户,标注审核状态。管理员点击详情查看用户完整信息,根据用户提交资料判断是否符合审核标准。审核通过时更新用户状态为已通过,拒绝时填写拒绝原因并更新状态为未通过。已通过用户可正常使用系统功能,未通过用户登录后会看到审核未通过的提示信息。该流程控制用户访问权限,确保只有审核通过的用户能够发布产品信息。用户审核流程图如图4-7所示。

图4-7 用户审核流程图
5 系统实现
5.1 农户角色功能实现
5.1.1 产品查看
产品查看功能主要是对已发布的农产品信息进行列表展示与筛选。用户进入产品查看页面,系统加载产品查询列表,每条记录展示产品名称、封面图片、点赞数、收藏数。用户可在搜索框输入产品名称关键词,系统向后端发送请求返回匹配结果。下拉选择产品类型时,前端触发类型筛选请求,列表更新为对应分类产品。用户对感兴趣的产品点击点赞按钮,图标状态切换并更新点赞计数。点击收藏按钮将产品加入个人收藏列表。产品查看界面如图5-1所示。
图5-1 产品查看界面
5.1.2 产品信息查看
产品信息查看功能是对农户自己提交的产品进行管理、跟踪。农户在产品信息列表页上可以查看到自己的所有过去的提交的产品信息,即产品编号、产品名称、产品类型、产品审核状态、产品创建时间等。每一条记录旁都有一个详情按钮,点击该按钮之后就跳转到了产品的全部信息页面,该页面显示了产品封面图片、质检报告下载地址、产品溯源详情以及审核回复内容。农户可以下载已经上传的质检报告文件,核对审核回复了解未通过的原因。顶部有查询和重置的两个按钮,产品名称选择后进行查询。产品信息查看界面如图5-2所示。
图5-2 产品信息查看界面
5.1.3 产品信息添加
产品信息添加功能主要是给农户提供新产品录入界面。农户进入添加页面后,表单有产品编号、产品名称、产品类型下拉选择、产品地区输入框、封面图片上传、质检报告上传、溯源详情文本编辑器。产品编号系统会自动生成,农户可以自行更改。图片上传组件支持预览,文件上传之后返回存储路径填入对应的字段。溯源详情用富文本编辑器,农户可以插入图片和文字说明。填写完毕后点击提交按钮,前端校验必填项,通过后发送请求到后端创建产品记录,初始审核状态设为未审核。产品信息添加界面如图5-3所示。
图5-3 产品信息添加界面
5.2 企业角色功能实现
5.3.3 产品信息管理
产品信息管理功能就是对权限范围内所有产品的列表展示以及操作。企业用户进入到管理页面之后,系统就会自动加载所有的产品信息记录,以列表的形式展示出来,每个列表项都会包含产品编号、名称、类型、地区、农户用户、企业用户、审核状态、创建时间这八个部分。顶部为查询区,可以输入产品名称或者选择产品类型和审核状态组合筛选。列表支持全选和批量操作,企业选择多条记录之后点击批量审核按钮进入批量处理模式。每条记录右边有详情和审核按钮,点击审核会直接进入该产品的审核窗口。产品信息管理界面如图5-4所示。
图5-4 产品信息管理界面
5.2.2 产品审核
产品审核功能主要是对未审核产品进行内容审查与状态更新。企业用户进入审核页面,系统筛选所有待审核产品展示。点击某条记录的审核按钮弹出审核弹窗,弹窗内展示产品详细信息,包括产品编号、名称、类型、地区、封面图片、质检报告下载链接、溯源详情。企业用户查阅产品内容后选择审核状态,通过则直接提交,未通过需在审核回复输入框填写原因。提交后后端更新产品审核状态与审核回复字段,产品从待审核列表移除。产品审核界面如图5-5所示。
编辑 图5-5 产品审核界面
5.3.4 产品查询管理
产品查询管理功能主要是查看已发布产品的互动数据与用户反馈。企业用户进入查询列表页,系统展示所有已通过审核的产品,每条记录附带点赞数、收藏数、评论数统计信息。点击查看评论按钮弹出评论列表弹窗,展示该产品收到的所有用户评论内容、评论人昵称、评论时间。企业用户可了解消费者对产品的评价倾向,作为后续产品优化的参考依据。列表顶部提供查询框,按产品名称快速定位目标产品。产品查询管理界面如图5-6所示。
图5-6 产品查询管理界面
5.3 管理员角色功能实现
5.3.1 角色管理
角色管理功能是对系统中各个用户进行统一的管理。管理员进入角色管理页面,点击农户用户标签页,可以分页显示所有的农户用户记录。列表项包含用户ID、用户名、昵称、农户姓名、年龄、性别、审核状态、创建时间。顶部给出查询条件,可以按照农户姓名或者审核状态进行筛选。每条记录右边有一个详情按钮,点击详情按钮会弹出一个页面来显示用户的全部信息,并可以对审核状态进行修改。列表可以实现全选删除以及批量审核功能,管理员可以对多个需要审核的用户进行批量审核。新增农户用户按钮打开添加表单,输入基本信息后创建新用户。角色管理界面如图5-7所示。
图5-7 角色管理界面
5.3.2 产品类型管理
产品类型管理功能就是对系统可以使用的各种产品进行分类。管理员进入类型管理页面,系统以列表的形式显示出所有的已经配置好的产品类型,也就是类型名称、创建时间、更新时间。右侧每个记录后面都有一个详情按钮,点击之后会弹出类型名称的编辑界面。新增类型输入框在列表的上边,输入类型名称之后点击添加按钮,系统对名称是否唯一进行检查之后,把新的类型添加到数据库中。删除类型时弹出确认框,确认后系统检查该类型是否被产品信息引用,未被引用则执行删除操作,被引用则提示禁止删除。产品类型管理界面如下图5-8所示。
图5-8 产品类型管理界面
5.3.3 产品信息管理
产品信息管理功能是管理员视角的产品全量控制。管理员登录产品信息管理页面之后,系统就会自动呈现所有的产品信息记录,不会被审核状态所限制。列表显示产品编号、产品名称、产品类型、产品地区、产品农户用户、产品企业用户、产品审核状态。管理员可以筛选出某一状态的产品,对违规产品进行删除。审核通过的优质产品可以点击发布按钮进行推荐置顶。批量审核功能可以对多条待审核的产品进行同时处理,从而提高操作的效率。列表顶部有一个重置按钮,可以删除筛选条件以重新搜索。产品信息管理界面如图5-9所示。
图5-9 产品信息管理界面
5.3.4 产品查询管理
产品查询管理功能主要从管理员角度对产品查询的数据进行监控。管理员进入产品查询列表页,显示所有的已发布产品的查询记录,包括产品编号、名称、类型、地区、农户用户、企业用户。每条记录右侧有详情和查看评论两个按钮。管理员点击详情可以查看产品的全部信息,点击查看评论监控用户的反馈内容。系统没有审核状态筛选的功能,因为产品查询表只包含已经通过的产品。管理员可以根据产品名称或者产品类型进行全局搜索,找到所需要的产品。产品查询管理界面如图5-10所示。
图5-10 产品查询管理界面
5.3.5 轮播图管理
轮播图管理功能主要是配置系统首页的轮播展示内容。管理员进入轮播图管理页面,系统展示当前所有轮播图记录,包括标题、链接、图片预览。列表支持拖拽调整显示顺序,拖动图片至目标位置后点击保存排序,前端发送排序请求更新数据库显示顺序字段。新增轮播图时上传图片文件,填写标题与跳转链接,提交后新图片出现在列表末尾。删除轮播图时系统弹出确认提示,确认后删除图片记录并移除存储文件。轮播图管理界面如图5-11所示。
图5-11 轮播图管理界面
6 系统测试
6.1 测试目的
系统测试是检验农产品溯源信息管理系统是否符合设计规格说明书所规定的要求,即功能和性能。测试过程主要对各个角色的核心功能是否完整、准确进行验证,即农户是否可以添加产品并查看审核结果,企业是否可以对待审核的产品进行正确的审核操作,管理员是否可以管理系统的基础数据。测试边界情况下的输入校验,检验系统对于空值、超长文本、特殊字符的处理能力[20]。跨模块数据流转测试保证产品信息从农户提交、企业审核、用户查询的链条畅通,审核状态的改变会立即显示在相应的列表里。对系统进行系统的测试,找出系统的缺陷和逻辑上的漏洞,给系统的上线运行提供质量保证。
6.2 测试方法
系统用黑盒测试和白盒测试相结合的方式。黑盒测试是检验软件的功能是否达到了预期的效果,测试人员根据需求文档来制定测试用例,并通过用户界面的输入来检验输出的结果是否符合实际情况。白盒测试重视内部逻辑结构,对核心业务模块展开单元测试,检验各个方法在分支条件下执行的途径。测试过程按照先单元测试后集成测试的顺序进行,保证各个模块独立正确之后再组合测试模块间的交互。浏览器兼容性测试用Chrome、Firefox、Edge等主流浏览器进行,看界面渲染和交互功能是否一致。响应式布局测试,在不同的屏幕尺寸下查看页面元素的显示效果。测试结果记录到测试用例表里,缺陷用项目管理工具跟踪直到修复为止。
6.3 测试环境
农产品溯源信息管理系统测试环境分为服务器端部署环境与客户端测试设备两部分。服务器端部署环境配置如表6-1所示,客户端测试设备信息如表6-2所示。
表6-1 服务器端部署环境信息表
| 环境 | 版本 |
|---|---|
| 操作系统 | Ubuntu 20.04.6 LTS |
| 处理器 | Intel Xeon Platinum 8259CL @ 2.50GHz |
| 内存 | 8GB |
| 磁盘 | 100GB SSD |
| MySQL数据库 | 8.0.32 |
| Spring Boot版本 | 2.7.10 |
| JDK版本 | 11.0.18 |
| Node.js版本 | 16.20.0 |
| npm版本 | 8.19.4 |
| Maven版本 | 3.8.7 |
表6-2 客户端测试设备信息表
| 设备类型 | 浏览器 | 版本 | 分辨率 |
|---|---|---|---|
| 台式机 | Chrome | 122.0.6261.95 | 1920×1080 |
| 笔记本 | Microsoft Edge | 135.0.3179.73 | 1366×768 |
| 笔记本 | Firefox | 123.0 | 1920×1080 |
| 手机 | Chrome移动版 | 122.0.6261.64 | 375×812 |
6.4 测试用例与结果
农户产品添加功能测试如表6-1所示。
表6-1 农户产品添加功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 表单必填项校验 | 不填写产品名称提交表单 | 提示产品名称不能为空 | 符合预期 |
| 文件上传功能 | 点击上传质检报告选择PDF文件 | 文件上传成功显示文件名 | 符合预期 |
| 产品编号重复校验 | 输入已存在的产品编号提交 | 提示产品编号已存在 | 符合预期 |
| 正常提交产品 | 填写完整信息后提交 | 产品进入待审核列表 | 符合预期 |
企业产品审核功能测试如表6-2所示。
表6-2 企业产品审核功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 待审核产品筛选 | 选择审核状态为未审核 | 列表只显示待审核产品 | 符合预期 |
| 审核通过操作 | 查看产品后点击通过 | 产品状态更新为已通过 | 符合预期 |
| 审核不通过操作 | 选择不通过并填写回复 | 产品状态更新为未通过 | 符合预期 |
| 批量审核功能 | 选择多条产品批量通过 | 所有选中产品状态变更 | 符合预期 |
管理员产品类型管理功能测试如表6-3所示。
表6-3 管理员产品类型管理功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 新增产品类型 | 输入新类型名称点击添加 | 列表中出现新类型记录 | 符合预期 |
| 重复类型校验 | 添加已存在的类型名称 | 提示类型已存在 | 符合预期 |
| 删除未被引用类型 | 选择未使用的类型删除 | 类型记录从列表移除 | 符合预期 |
| 删除被引用类型 | 选择已关联产品的类型删除 | 提示禁止删除 | 符合预期 |
轮播图配置功能测试如表6-4所示。
表6-4 轮播图配置功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 图片上传 | 选择图片文件上传 | 图片预览显示在列表 | 符合预期 |
| 链接配置 | 填写完整URL保存 | 点击轮播图跳转正确页面 | 符合预期 |
| 顺序调整 | 拖动图片改变位置保存 | 首页轮播按新顺序展示 | 符合预期 |
| 图片删除 | 点击删除按钮确认 | 图片从列表与存储移除 | 符合预期 |
用户角色管理功能测试如表6-5所示。
表6-5 用户角色管理功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 用户查询 | 输入农户姓名搜索 | 列表显示匹配用户 | 符合预期 |
| 审核状态筛选 | 选择已通过状态 | 列表只显示已通过用户 | 符合预期 |
| 单个用户审核 | 修改用户状态为通过 | 用户状态更新 | 符合预期 |
| 批量用户审核 | 选择多个用户批量通过 | 所有选中用户状态变更 | 符合预期 |
6.5 测试结论
系统完成所有的预定测试用例。农户产品添加功能用必填项校验、文件上传、编号重复检测等测试场景来保证数据的合法提交。企业产品审核功能在单个审核和批量审核模式下都能正确更新产品的状态,筛选条件可以准确地找到需要审核的产品。管理员产品类型管理功能对新增、删除操作做完整性约束,被引用的类型不能删除,保证数据参照关系不被破坏。轮播图配置功能可以对图片进行上传、链接设置、顺序调整和删除,首页展示效果与配置内容保持一致。用户角色管理功能根据查询条件、筛选状态、批量审核操作等方式来管理用户,用户权限发生变化的时候,权限控制就会立即生效。测试过程中发现的界面适配问题已经修复,全部功能回归测试通过。系统在主流浏览器下运行正常,各个模块响应时间满足要求,数据交互正确无误,主要业务流程全部完成。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/vx_Biye_Design/article/details/166252893




