优质农产品资源数据库小程序功能设计书
第1章 需求说明
1.1 可行性分析
1.1.1 技术可行性研究
本系统采用前后端分离的开发模式,通过RESTFul接口实现高效稳定的数据交互。前端以Vue框架为基础,结合ElementUI提供多样化的UI组件,为用户界面设计提供了高度定制化的支持,同时借助Apache Echarts,将优质农产品资源的地理分布、统计数据等内容以动态图表直观呈现,极大提升了数据展示的视觉效果和用户体验。
后端开发采用Java语言构建,基于SpringBoot框架搭建模块化和高性能的服务体系。SpringBoot的快速开发特性与自动配置机制有效降低了开发复杂度,通过Spring Security实现了细粒度的权限控制,保证了系统的安全性。数据库交互层使用MybatisPlus,与Mysql数据库无缝衔接,支持复杂数据的高效存储和检索,同时提供代码自动生成功能,优化了开发效率。
Mysql数据库支持多种数据类型和存储引擎,增加了系统数据存储的灵活性,通过限制访问和加密数据等操作保障了系统数据的安全性,提供多种索引类型和查询优化功能,提升了数据查询效率,为高并发场景提供了良好支持,适用于处理大规模数据,确保系统在复杂数据规模下的稳定性和可靠性。
地图功能通过调用电子地图API,全面实现农产品资源的地理位置信息展示和导航功能,为用户提供精准的地图定位和路径规划,增强了平台的实用性。在项目部署方面,采用Docker容器化技术,实现系统的快速部署、版本更新以及跨环境迁移,确保系统的高稳定性与可扩展性。
在开发过程中,前后端联调使用Postman工具测试接口,确保数据交互的准确性与稳定性。Swagger自动生成API文档,为接口管理和功能验证提供了直观工具,显著提高了开发效率与文档质量。同时,通过Git实现版本管理和团队协作开发,支持多分支开发模式,确保代码版本的可追溯性和安全性。
整个平台的开发逻辑以功能实现为核心,充分考虑了数据的采集、处理、存储和展示需求,从架构设计到技术选型均体现了高效性与实用性,为农产品资源的数字化保护和管理提供了技术支撑,能够切实满足项目预期目标。
1.1.2 社会可行性研究
随着社会经济的稳步发展和人民生活水平的持续提高,公众对精神文化生活的需求日益增长,特别是在追求文化多样性与传统价值传承方面表现尤为突出。优质农产品资源数据项目应运而生,旨在通过数字化手段实现农业资源的保护与传播,满足社会各界对传统农业文化深入了解的需求。项目系统设计简便易用,功能清晰,能够高效采集并准确存储各类农产品资源的数据,包括地理位置、现状图片和详细描述等,同时通过可视化手段直观展示这些信息,提升了公众的理解和参与感。结合当前社会上已有的文化资源管理系统的成功经验,该项目在社会层面展现出高度的可行性,不仅能有效促进文化遗产的保护与合理利用,更能助力乡村振兴战略的实施,为农业文化与现代社会融合发展提供全新契机。
1.2 用户需求分析
根据授予的权限不同,本系统存在三类用户角色:普通用户、管理员和数据录入员。下面将对这三类用户进行详细说明。
1.2.1 普通用户
微信用户进行授权登录后就是本系统的普通用户,用例图见图3-1。普通用户的功能用例说明如下:(1)普通用户成功登录后可对个人信息进行编辑和修改,在专门的反馈入口处,填写对平台的意见和建议。(2)在资讯板块,用户可自由浏览各类资讯信息,在资讯最下方的评论区发表评论,对于感兴趣的资讯可以点击收藏,收藏的各类资讯以列表进行展示。(3)在首页置顶公告栏,用户可以获取由管理员发布的最新公告信息。(4)用户授权位置信息之后,系统自动定位并展示各地市的农产品资源板块布局,用户可查看不同区域的资源概况和资源详细信息。(5)用户也可以查看重要农产品类别目录,按照类别或专题进行资源筛选和查找。系统提供多种检索方式,包括模糊搜索、自定义搜索以及热门信息搜索等。

图3-1 普通用户用例图
1.2.2 管理员
管理员为负责管理系统的角色,用例图见图3-2。管理员不仅拥有用户的所有权限,还具有数据管理的权限,可以管理所有模块的数据。其中包括资讯管理模块、用户管理模块、资源管理模块、公告管理模块、意见管理模块、数据统计分析模块等,对大部分数据的操作权限包括新增、修改、查询和删除,对于部分数据还拥有启用、禁用功能。管理员的功能用例说明如下:(1)管理员通过资讯管理模块实现浏览资源列表、修改资源信息、公布资源信息、删除废弃资源、禁用/启用资源的功能。(2)用户管理模块实现查询、修改用户信息和权限分配的功能。资源管理模块实现发布、隐藏、修改、删除资讯的功能。(3)公告管理模块实现撰写、查询、删除、发布、隐藏公告的功能。(4)意见管理模块实现浏览、回复意见和查询意见分类的功能。(5)数据统计分析模块可以统计系统被访问的次数和系统内的资源数量。

图3-2 管理员用例图
1.2.3 数据录入员
数据录入员是专门负责录入农产品资源数据和资讯数据的人员,拥有在后台资源管理模块和资讯管理模块中录入数据和浏览数据的权限,用例图见图3-3。数据录入员的功能用例说明如下:(1)数据录入员在录入农产品资源数据的过程中需要根据系统提示填写农产品资源基本信息(如名称、类型、地理位置等)、详细描述、其他信息,可上传图片、视频及附件等,系统校验通过则信息存入数据库且前端更新,校验不通过按提示修改。(2)数据录入员还可以录入资讯信息,录入后的信息由管理员审核后发布。

图3-3 数据录入员用例图
1.3 功能需求
1.3.1 用户模块
在本系统中,用户信息管理依托于用户注册登录机制。用户完成注册登录后,他们的数据才能在数据库中被保存、查询和修改。以下是对三类用户操作权限的详细描述:
(1)管理员拥有所有权限,可以通过后台用户管理模块查看用户信息,并进行角色权限授权等操作。这有助于实现对用户信息的有效管理,确保系统用户体系的有序性和安全性。
(2)普通用户可以通过微信的一键授权登录按钮,利用微信个人信息快速完成登录流程。登录成功后,普通用户可以进行一些自主操作,如修改登录名、更换用户头像等,或者进行注销操作,以及申请更高权限,以满足个性化需求。
(3)数据录入员负责将农产品资源信息准确地录入系统并撰写资讯。他们具备一定的数据管理和验证权限,可确保数据的准确性和完整性。数据录入员在完成数据录入后,可以进行数据的浏览,以提高数据质量。
所有用户在注册登录后,都具备一些共同的操作权限,例如查看和编辑个人资料。然而,不同角色的用户根据其权限级别,可以执行不同的操作。管理员拥有最高权限,可以管理所有用户信息和系统设置;普通用户则主要进行个人资料的管理和操作;数据录入员则专注于数据的录入。
1.3.2 资讯模块
管理员承担着资讯内容的管理与发布职责,定期整理并发布涵盖新闻动态、知识科普等方面的最新消息。数据录入员负责将资讯信息录入系统,等待管理员审核,审核通过后发布在前台资讯板块。对于每一篇编辑完成的资讯,管理员有权决定直接发布至前台展示页面,使信息即时呈现给用户;也可选择先隐藏,待审核流程确认无误后再发布,确保资讯的准确性与可靠性,避免错误或不当信息的传播。在小程序前台的资讯板块,普通用户可自由浏览已经发布的各类资讯信息,通过滑动屏幕、点击标题等操作查看详情,获取丰富的知识和信息。当查看具体某条资讯时,用户可在资讯页面最下方的评论区发表评论,表达自己的观点、想法、疑问或补充相关信息,与其他用户进行互动交流。若用户对某篇文章感兴趣,还能够将其收藏至 “我的收藏” 列表,方便日后回顾查阅,同时支持分享功能,用户可将喜欢的资讯通过多种方式分享给其他用户或外部平台,扩大资讯的传播范围,提升农产品资源信息的影响力。
1.3.3 可视化地图模块
地图模块作为本系统的重要组成部分,其核心功能是通过可视化手段,精准且直观地向用户展示各类农产品资源的地理分布信息,进而为用户提供高效、便捷的地理位置查询以及精准的导航服务。当用户授权位置信息后,系统可以自动定位并以地图形式展示其所在位置周边的农产品资源板块布局。用户也可通过缩放地图、切换城市等操作查看不同区域的资源概况,直观了解各地资源分布特点。当用户点击某一感兴趣的资源后,系统将进入资源的详情介绍页面,精确呈现资源的各类信息以及与用户当前位置的精确相对方位和距离等详细地理属性。在管理员操作层面,管理员拥有对资源的管理权限,能够进行新增或修改操作。当管理员完成此类操作后,系统将自动触发更新机制,确保电子地图上对应的资源位置信息能够即时、准确地跟随变化,从而保证地图信息的实时性和准确性,为用户提供可靠的地理数据参考。
1.3.4 公告和反馈模块
本系统具备公告与反馈两大关键功能,旨在优化系统管理与用户体验,进一步完善系统生态。在公告功能方面,管理员拥有发布最新公告、清理废弃公告以及查看公告详情的操作权限,以此确保公告信息的及时性与准确性。在小程序首页的置顶栏位置,系统可以展示由管理员发布的最新公告信息,如平台更新通知、重要活动预告、政策法规解读等,用户无需进行额外操作,登录首页即可自动获取公告内容,让用户能够及时获取系统动态。反馈功能为用户与管理员搭建了沟通桥梁。用户可在专门的反馈入口处,填写对平台的意见、建议、使用过程中遇到的问题等内容,提交后系统将记录反馈信息以及管理员的回复状态,并及时通知平台管理人员进行查看和处理,以便不断优化平台功能和用户体验。管理员在后台可查看所有用户反馈,并进行针对性回复,系统提供未回复和已回复的反馈列表分类展示,有助于管理员清晰梳理反馈信息。
1.3.5 数据统计分析模块
本系统集成了数据统计分析模块,该模块具备统计用户访问数据以及现有资源总量的功能。其中,用户访问量分析功能聚焦于对用户与小程序交互行为的监测与统计,全面记录用户的访问频率、时长以及所涉及的页面等关键指标。通过对这些数据的系统性分析,能够清晰地勾勒出用户的访问习惯、兴趣偏好以及在系统内的行为路径,进而为后续的系统优化、功能改进以及内容推送策略制定提供精准的方向指引,以提升用户体验和系统的吸引力。而资源总量分析功能则运用可视化图表技术,将现有资源的数量特征以及分布态势直观、系统地呈现出来。这种可视化展示方式能够帮助管理员一目了然地把握资源的整体概况,使其能够精准地洞察资源的分布规律和数量变化趋势,为资源的高效管理、合理调配以及针对性补充提供科学依据,确保资源的充分利用和有效整合。
1.3.6 资源检索模块
资源检索模块旨在为用户提供一种高效、便捷的方式,帮助用户根据个性化检索需求,快速定位并获取感兴趣的农产品资源信息。基于科学合理的分类体系,该模块首先将丰富多样的资源划分为几大主类,如传统农业种植类、特色农业类等。用户能够从宏观层面依据主类对资源信息进行初步的浏览、筛选,快速定位到大致感兴趣的资源方向。在此基础上,模块进一步结合地域与文化特色进行专题分类整合,例如按照不同省份、地区划分并展示当地特有资源,从而满足用户对特定地域或文化背景下资源的深入探索需求。用户还可以在搜索栏输入关键词,如资源名称、类别名称、地域名称或相关特征描述等进行个性化搜索,模块将自动匹配并筛选出符合条件的资源信息列表,同时支持模糊搜索,有效应对用户在记忆或描述资源信息时的不确定性。基于大数据用户行为分析,模块可以根据用户的兴趣点进行个性化推荐,引导用户快速发现当前关注度较高或感兴趣的资源类别。
1.4 非功能性需求分
1.4.1 性能需求
系统的首要性能需求是交互流畅。具体来说系统应在用户点击后迅速启动,并在极短的时间内完成主页面和后续页面的加载,同时确保页面切换和数据加载过程流畅无阻,无明显的延迟或卡顿现象。此外,系统还应优化资源消耗,降低内存和CPU占用,以减少对设备性能的影响,并保持良好的稳定性和可靠性,确保用户体验的连续性和一致性。另外,为优化用户等待时的体验,可以在加载过程中使用加载进度条或动画效果,提升整体交互感受和用户满意度。通过这些措施,为用户提供一个高效、流畅且可靠的系统使用体验。
1.4.2 安全性需求
为了保障系统和数据的安全性,需从多方面采取措施,以全面提升系统的安全性。首先是数据的安全,系统需要定期备份数据库以及加密隐私信息。例如,用户密码在放入数据库前必须经过加密,防止非法用户窃取用户地理信息。其次,为防止未经授权的用户访问系统,每位用户都拥有唯一的账户,并在访问系统时需要输入正确的用户名和密码以进行身份验证。第三,为防止非特权用户使用系统,应该严格检查用户的访问权限,确保只有具备必要权限的角色才能执行相应的操作。第四,系统将实现日志功能,记录所有关键操作和系统事件,以便于问题追踪和安全审计。这包括但不限于用户登录、数据访问、系统配置更改等。并且,定期备份数据库,并确保备份数据的安全性。最后,系统要实施数据库访问控制和加密措施,防止未经授权的访问和数据泄露,还要定期进行系统安全审计,检查系统漏洞和潜在的安全威胁,并及时应用安全补丁和更新。
1.4.3 易用性和可视化需求
为了方便用户使用,系统的界面应该直观、清晰对用户友好,操作必须简洁明了,以便用户能够迅速了解系统。同时提供一些必要的提示和帮助文档引导用户使用系统,优化用户交互流程,减少不必要的步骤,提高操作效率。建立有效的用户反馈机制,及时响应用户的问题和建议,不断改进用户体验。系统界面和操作流程应适应不同用户的需求,包括不同技术水平和不同使用习惯的用户。
1.4.4 扩展性需求
在快速变化的技术环境和不断演变的用户需求背景下,系统设计需要充分考虑其未来的扩展性,避免因未来一个需求功能的增加或者修改而要重新开发或者对现有结构和代码进行大规模改动。本项目旨在构建一个灵活的、可扩展的农产品资源数据库,以适应未来可能的功能的增加和技术的升级。为此,我们将采用模块化设计,最大程度上确保系统的各个模块如用户信息管理、资讯模块、地图模块等可以独立更新和扩展而不会影响其他模块的稳定性和性能。此外,我们将通过定义清晰的API接口和数据交换格式,使开发系统时能够轻松集成新的功能和服务,如增加新的数据分析工具、扩展地图功能或集成社交媒体平台,以增强用户互动和内容分享,同时也不需要大幅度改变现有系统的结构。最后,系统的设计架构将支持云服务的弹性扩展,以应对用户数量的增长和数据量的扩大,确保系统的高性能和可用性。通过这些措施,我们能够以最小的代价,快速响应市场变化和用户需求,保持系统的长期竞争力。
1.4.5 健壮性需求
为了确保系统的稳定性和可靠性,我们将在设计和开发过程中采取一系列措施来增强系统的健壮性。首先,系统将实施严格的输入验证机制确保所有用户输入都符合预定格式和业务规则,从而防止非法输入和潜在的安全威胁。其次,系统将具备异常处理能力,能够在遇到错误时流畅地、及时地、正确地恢复,保证业务流程的连续性。此外,系统将实现日志记录功能,用于详细记录操作历史和系统事件,以便于问题追踪和事后分析。系统还将定期进行压力测试和安全审计,以识别和修复可能的脆弱点。通过这些措施,我们能够确保系统在面对各种异常情况和攻击时,仍能保持稳定运行,并提供准确的错误信息给用户,使用户能够理解问题所在并采取相应的补救措施。最终,我们的目标是构建一个既能够承受高负载,又能够抵御各种攻击的健壮系统,为用户提供一个安全、可靠的农产品资源平台。
第2章 系统的构架设计
2.1 系统层次结构设计
本系统依据需求分析,采用分层架构模式,主要划分为表现层、应用层、服务层和数据存储层,各层相对独立且协同工作,共同支撑系统的整体功能实现,其层次结构关系如下:
(1) 表现层:作为系统直接面向用户的前端界面,专注于信息展示与用户交互功能的实现。用户可通过此层级执行各类操作,如查询、浏览及输入等。该层级的主要职责是以直观形式向用户展示数据,并接收用户的操作指令。它不涉及业务逻辑处理及数据的深度加工,其核心功能在于提供良好的用户体验,确保用户与系统之间的信息交流顺畅无阻。
(2) 应用层:作为前后端分离架构中的关键衔接部分,承担着系统功能调度的职责。当表现层捕捉到用户操作后,会向应用层发起请求,应用层接收请求后,迅速调用服务层接口,将用户请求传递给服务层进行处理,并等待服务层返回处理结果,随后将结果按照既定格式反馈至表现层。应用层自身并不包含实际的业务逻辑,其主要任务是协调前后端的数据交互,确保系统响应的及时性和准确性。
(3) 服务层:专注于处理系统的业务逻辑和数据库的基本操作,是系统功能实现的核心支撑层。当接收到应用层传递的用户请求数据后,服务层依据预设的业务规则进行数据处理和逻辑运算,包括数据的查询、更新、插入、删除等数据库操作,以及复杂业务逻辑的判断和执行,最终将处理结果返回给应用层,为系统的稳定运行和业务功能的实现提供有力保障。
(4)数据存储层:与数据库紧密相连,负责构建数据的持久化存储机制。系统运行过程中所产生和使用的各类数据,均在此层进行存储和管理,同时完成对数据模型的定义与封装,确保数据的完整性、一致性和安全性,为其他各层提供可靠的数据支持。
系统层次构架图如图4-1所示,通过各层之间清晰明确的分工协作,实现了系统的高效运行和功能的有序整合,为满足用户需求和业务发展提供了坚实的技术基础。

图4-1 系统层次架构图
2.2 系统功能模块设计

图4-2 系统功能模块图
根据系统功能的需求分析,设计本系统的功能模块见图4-2。整个系统按展示方式分为小程序前台和数据管理后台两个部分。小程序前台主要功能模块包括:引导页、资源目录、资讯、地图、公告栏、个人中心。数据管理后台主要功能模块包括:资讯管理、用户管理、资源管理、意见管理、公告管理、数据统计分析。关于各个模块的功能说明见表4-1。
表4-1 系统功能说明
功能模块 | 主要功能 |
引导页 资源目录
资讯 地图 公告栏 个人中心 资讯管理 用户管理 资源管理 意见管理 公告管理 数据统计分析 | 作为小程序体验入口,并展示平台介绍和精选农产品名录等 用户可以进行自定义字段查询、按分类查询、按专题查询和模糊查询资源信息,也可以根据展示的热门条目进行查询资源信息 展示资讯列表,并可对资讯进行搜索、评论、收藏和分享 在地图上定位当前位置,对周边资源分布可视化,点击具体资源后展示资源详情介绍,用户还可以按地点自行搜索资源 在首页置顶栏展示最新公告 包含账号的登录和注销,修改个人信息,展示我的收藏、评论和意见反馈等功能 对资讯进行发布和隐藏以及新增/删除/修改/查询操作 对用户权限进行分配以及新增/删除/修改/查询操作 对资源进行启用和禁用以及新增/删除/修改/查询操作 根据分类和时间展示意见,可对意见进行查询、删除和回复操作 对公告进行发布和隐藏以及新增/删除/修改/查询操作 展示访问量分析图表、资源量统计分布图表 |
2.3 功能设计
2.3.1 总体功能设计
前台和后台所使用的页面是不相同的,普通用户、管理员和数据录入员都可以进行前台操作,而后台需要管理员或数据录入员的权限才可以进行操作,所以需要进行登录操作,辨别用户的权限。
(a)进入前台的流程 |
(b)进入后台的流程 |
图4-3 总体功能设计
从小程序前台进入系统首先会进入引导页,点击体验入口则会跳转至小程序首页,然后用户可以使用微信一键授权登录。登录成功后,用户可以根据所需的功能作进行相对应的操作(见图4-3(a))。用户可以浏览资讯、在资源目录惊醒检索、浏览电子地图、查看公告和查看个人信息等操作。从后台进入系统,需要进行管理员或数据录入员验证,验证通过后就会进入管理后台首页,然后管理员和数据录入员根据所需的功能进行相对应的操作(见图4-3(b))。管理员和数据录入员均可进入后台管理系统,管理员可以对所有模块进行操作,而数据录入员只拥有录入资源和资讯信息的权限。
2.3.2 登录注册模块
用户授权登录:对于初次使用本小程序的用户,需经历微信授权登录流程。用户点击登录按钮后,小程序将向微信平台发起授权请求,此请求涵盖获取用户基本信息的权限。微信平台在用户确认授权后,将相关数据返回给小程序。小程序系统接收并处理这些数据,完成用户信息的录入操作,同时在界面上给予用户 “登录成功” 的明确提示,随后自动跳转至首页界面。已在本小程序完成注册的用户,再次登录时,只需在登录页面直接点击登录按钮。小程序系统将依据用户此前注册所记录的账号信息进行验证,验证通过后,系统迅速识别用户身份,直接跳转至首页。具体流程见图4-4。

图4-4 授权登录处理流程
2.3.3 可视化地图模块
用户开启电子地图浏览时,系统自动发出定位请求,获取用户当前的地理位置信息。用户确认定位后,系统基于用户所在位置,在地图上精准展示当前地点附近的农产品信息标识。这些标识以直观的图标形式呈现,清晰标注出各个农产品资源的大致位置,方便用户快速浏览和识别。用户通过缩放地图,可以实现不同程度的展示效果。当地图比例尺较大的时候,农产品信息可视化为特色图像标识和所属范围标识,当比例尺较小的时候,会展示出该位置周围环境信息,并且在旁边展示该地农产品信息的简述。用户点击地图上的农产品信息标识后,页面将自动跳转至对应的资源详情页面。在此页面,系统以丰富的图文形式展示该农产品资源的所有详细信息,包括但不限于农产品资源的名称、类别、文化价值、地理坐标、保护现状等,使用户能够全面深入地了解该资源的具体情况。除了查看附近农产品信息外,用户还可通过系统提供的搜索功能,输入感兴趣的农产品地点名称或关键词进行查询。系统接收到查询请求后,迅速在后台数据库中进行检索,并将多条相似查询结果以列表的形式展示在搜索框下方,用户点击目标结果就可以通过可视化的方式在地图上展示。展示内容包括该农产品地点的准确位置、分布范围、周边地理环境以及与其他相关地点的相对位置关系等,方便用户直观了解其地理位置和周边情况,具体流程见图4-5。

图4-5 地图农产品信息查询流程
2.3.4 反馈模块
在用户端,普通用户登录后进入 “个人中心” 界面,在此界面中能够找到 “意见反馈” 功能入口,点击该入口后,页面将跳转至专门的反馈界面。在反馈界面,用户可详细填写包括对系统功能的改进建议、资源内容的纠错或补充、使用过程中遇到的问题及期望的解决方式等各类反馈信息,信息填写完成后,点击 “提交” 按钮,系统将对提交的内容进行完整性校验,并将其成功存储至反馈数据库。提交成功的瞬间,当前页面会即时生成清晰明确的提交记录,方便用户后续追溯查询。对于已提交的建议,系统会通过特定标识进行标注,直观地显示该建议是否已得到管理员的回复,让用户随时了解其反馈的处理进度和状态。
在管理员端,管理员在反馈信息管理模块,能够按照时间顺序、反馈类型、用户活跃度等多种筛选条件查看近期用户提交的反馈信息。针对这些反馈,管理员可根据实际情况选择在线上直接回复用户,详细解答用户的疑问、告知问题的解决方案或接受用户的合理建议;对于部分较为复杂或需要进一步沟通核实的反馈,管理员还可通过电话回访的方式与用户深入交流,确保用户的每一条反馈都能得到认真对待和妥善处理。具体流程见图4-6。

图4-6 用户提交反馈和反馈回复流程
2.3.5 资讯模块
普通用户登录小程序后,能够轻松访问前台的资讯板块,在此处浏览各类丰富的资讯信息。在阅读每一篇资讯时,用户可以在位于资讯下方的评论区发表自己的见解、观点、疑问或补充信息,与其他用户进行互动交流,用户对每篇文章的评论都会记录在“我的评论”中,在我的评论中可以回复其他网友。当用户遇到感兴趣的资讯时,可通过点击 “收藏” 按钮将其保存至个人专属的 “我的收藏” 列表中,以便后续随时回顾查阅。同时,用户还能够利用系统提供的分享功能,将有价值的资讯通过多种渠道分享给他人,扩大信息的传播范围。在 “我的收藏” 列表中,已收藏的资讯将以清晰、有序的方式展示,用户可以对这些收藏进行管理操作,如删除不再感兴趣的资讯、对收藏进行分类整理等,方便用户快速、准确地查找所需资讯。
管理员和数据录入员则通过登录后台的资讯信息管理模块来执行资讯相关的操作。在该模块中,数据录入员具备撰写资讯的权限,可利用系统提供的编辑工具,编写包括标题、正文、图片、视频等多种元素的资讯内容,以丰富资讯的呈现形式和信息含量。数据录入员撰写完成后的资讯初始状态为未发布,管理员在对资讯内容进行审核和确认无误后,点击 “发布” 按钮,该资讯将即时展示在小程序前台的资讯板块中,供普通用户浏览查看。具体流程见图4-7。

图4-7 浏览资讯和发布资讯流程
2.3.6 公告模块
普通用户登录小程序后,在首页的置顶区域能够便捷地查看到由管理员发布的最新公告信息。这些公告内容涵盖系统更新通知、功能调整说明、农产品相关活动预告、重要政策法规解读以及平台运营的关键信息等,确保用户能够及时了解系统的动态变化和重要事项。管理员通过登录专门的公告管理模块来执行与公告相关的操作。在该模块中,管理员拥有发布公告的权限,能够利用文本编辑、图片上传、链接嵌入等功能,精心撰写内容丰富、格式规范的公告信息,以清晰准确地向用户传达关键信息。同时,为了保持公告栏信息的时效性和整洁性,管理员对于已经过时或者不再具有现实意义的公告执行隐藏操作。隐藏后的公告将不再显示在普通用户的可见区域,但会在后台留存记录,以备后续查询和审计。具体流程见图4-8。

图4-8 用户查看公告和管理员发布公告流程
2.3.7 资源检索模块
资源检索功能集成于资源目录模块,旨在为用户提供多样化且高效的农产品信息查询途径,以满足用户对不同类型农产品资源的精准与便捷获取需求。用户在使用该功能时,既可以依据资源目录模块预先设定的分类体系和专题分类体系,对农产品信息进行定向筛选与查找。同时,系统在搜索栏为用户提供了多种灵活的查找方式,包括:(1)模糊查找功能允许用户输入部分关键词或模糊描述,系统将通过智能算法匹配相关的农产品资源信息即便用户对资源的具体名称或细节把握不准确,也能够广泛地搜索到可能相关的内容;(2)自定义查找则支持用户根据系统设定的多个条件组合,进行精准的个性化信息检索;(3)热门查找功能基于大数据分析用户的搜索频率和关注度,将当前最受用户关注的农产品资源类型和关键词呈现出来,方便用户快速发现热门和趋势性的资源信息。
在后台,数据录入员通过登录资源管理模块,负责将新的农产品资源信息准确录入系统。一旦管理员完成审核通过并提交,系统将自动触发前台资源目录数据的更新机制,确保用户在前台能够及时获取到最新、最全的农产品资源信息,保持信息的及时性和完整性。具体流程见图4-9。

图4-9 用户检索资源和数据录入员录入资源数据流程
2.4 数据库设计
2.4.1 数据库概念结构设计
数据库的概念结构设计采用实体—联系(E-R)模型设计方法,利用概念模型对现实世界进行抽象,将需求分析得到的用户需求抽象为信息结构。本系统的实体之间的关系简单描述如下:
本系统由前台展示与后台管理两个关键部分构成,两者相辅相成,共同服务于用户与系统的数据交互需求。
前台作为系统面向普通用户的窗口,聚焦于各类功能的直观呈现。普通用户可在前台自由浏览丰富多样的信息资源,同时能够轻松地对个人信息进行个性化修改,将心仪的一系列资讯纳入收藏列表以便后续快速访问,针对每一条资讯发表一条或多条个人见解与评论,并且可通过留言反馈功能向平台传达意见与建议。普通用户可以在地图可视化界面浏览资源布局,查询当前区域内多个资源详情。
后台则是系统的核心管理区域,由管理员和数据录入员进行操作,管理员在本系统中拥有至高权限,能够在后台菜单栏所涵盖的多个功能模块中,对整个系统的数据库进行全面且精准的操作。具体而言,在用户管理方面,一个管理员能够同时管理多个用户账号,依据用户的不同需求和角色定位,为其灵活分配相应的权限级别;在信息发布与管理领域,管理员具备强大的信息操控能力,能够发布多条涵盖不同领域和主题的资讯信息,为用户提供丰富的知识与动态更新,还能及时发布多条重要的公告信息,确保用户及时了解系统的关键动态与重要通知。数据录入员拥有资讯数据和资源数据录入的权限,可将多条精心整理的农产品信息和资讯信息录入系统数据库。录入的数据经过管理员审核,审核通过后即可展示在前台。图4-10是系统的E-R联系图。

图4-10 系统E-R联系图
2.4.2 数据库逻辑结构设计
概念结构设计完成后,根据所得出的成果物进行逻辑结构的设计,将概念结构设计的E-R图转化为相应的数据模型。本平台数据库中建有如下表:用户表(user)、管理员表(admin)、数据录入员(data_input_operator)、资源表(resource)、资讯表(information)、收藏表(favorite)、反馈表(feekback)、资源类别表(resource_category)、评论表(comment)、公告表(notice)、精选资源名录表(selected_resource_directory)、资源视图表(resource_view)、资源和精选名录关联表(resource_ref_selected_directory)等。如表4-2至4-14所示。
(1)用户表(user)主要存放普通用户数据,记录每个用户的个性信息。主要属性有用户账号(account)、用户密码(password)、用户名(user_name)等属性,如表4-2所示。
表4-2 用户表(user)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id自增 | |
2 | user_name | varchar | 32 | Y | 用户名 | |
3 | password | varchar | 64 | Y | 密码 | |
4 | avatar | varchar | 255 | N | 用户头像地址 | |
5 | gender | varchar | 2 | N | 性别 | |
6 | permission | varchar | 10 | Y | 用户权限(增删查改权限) | |
7 8 | phone status | varchar int | 50 | N Y | 手机号码 账号状态(0禁用 1启用) | |
9 | created_time | datetime | Y | 创建时间 | ||
10 | update_time | datetime | Y | 最后修改时间 | ||
11 | create_user | bigint | 外键 | N | 创建人id | |
12 | update_user | bigint | 外键 | N | 最后修改人 |
(2)管理员表(admin)用来记录管理员的信息,主要属性包括管理员个人信息,与普通用户的信息相似, 如表4-3所示。
表4-3 管理员表(admin)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id自增 | |
2 | user_name | varchar | 32 | Y | 用户名 | |
3 | password | varchar | 64 | Y | 密码 | |
4 | avatar | varchar | 255 | N | 用户头像地址 | |
5 | gender | varchar | 2 | N | 性别 | |
6 7 | phone status | varchar int | 50 | N Y | 手机号码 账号状态(0禁用 1启用) | |
8 | created_time | datetime | Y | 创建时间 | ||
9 | update_time | datetime | Y | 最后修改时间 |
(3)资源表(resource)包含农产品的录入数据,主要属性包括资源名称(name)、所属类别(category_name)、管辖区域(area)、地址(address)和简介(introduction)等, 如表4-4所示。
表4-4 资源表(resource)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | name | varchar | 100 |
| Y | 资源名称 |
3 | category_name | varchar | 100 | 外键 | Y | 类别包括九大类 |
4 | picture | varchar | 255 |
| N | 资源图片地址 |
5 | area | varchar | 50 |
| Y | 管辖区域包括广东省所有市、县、区 |
6 | introduction | longtext |
| Y | 资源简介内容 | |
7 | created_by | bigint | 外键 | Y | 创建人id | |
8 | created_time | datetime |
| Y | 创建时间 | |
9 | updated_by | bigint | 外键 | Y | 修改人id | |
10 | updated_time | datetime |
| N | 修改时间 |
(4)资讯表(information)包含所有最新资讯信息,是对于最新的研究进展的描述,主要属性有资讯标题(title)、类别名称(category_name)、内容(content)等,如表4-5所示。
表4-5 资讯表(information)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | title | varchar | 50 | Y | 资讯标题 | |
3 | category_name | varchar | 10 | Y | 类型名称 | |
4 | picture | varchar | 255 | N | 资讯图片地址 | |
5 | content | longtext | Y | 资讯内容 | ||
6 | click_num | int | Y | 点击量 | ||
7 | favorite_num | int | N | 收藏量 | ||
8 | created_by | bigint | 外键 | Y | 创建人id | |
9 | created_time | datetime | Y | 创建时间 | ||
10 | updated_by | bigint | 外键 | Y | 修改人id | |
11 | updated_time | datetime | Y | 修改时间 | ||
12 | status | char | 1 | Y | 状态(1正常 0禁用 ) | |
13 | publish_time | datatime | N | 发布时间 | ||
14 | source | varchar | 50 | Y | 资讯来源 | |
15 | author_information | varchar | 100 | Y | 作者信息 |
(5)收藏表(favorite)是存放资讯收藏标题和收藏人等相关信息的表,主要属性有收藏的标题(title)、收藏资讯的id(information_id)、封面图片地址(picture)、收藏人id(created_by)、收藏时间(created_time)等,如表4-6所示。
表4-6 收藏表(favorite)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | title | varchar | 50 | Y | 收藏资讯的标题 | |
3 | information_id | bigint | 外键 | Y | 收藏资讯的id | |
4 | picture | varchar | 255 | N | 封面图片地址 | |
5 | created_by | bigint | 外键 | Y | 收藏人id | |
6 | created_time | datetime | Y | 收藏时间 | ||
7 | category | varchar | 10 | N | 资讯类别 |
(6)评论表(comment)是存放用户对资讯评论相关信息的表,主要属性有主键 id(id)、关联资讯表id(information_fid)、评论人id(created_by)、评论时间(created_time)、评论内容(content)等,如表4-7所示。
表4-7 评论表(comment)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | information_id | bigint | Y | 关联资讯的id | ||
3 | created_by | bigint | 外键 | Y | 评论人id | |
4 | created_time | datetime | Y | 评论时间 | ||
5 | content | varchar | 255 | N | 评论内容 | |
6 | username | varchar | 50 | Y | 评论用户名 | |
7 | avatar | varchar | 255 | Y | 用户头像地址 |
(7)反馈表(feedback)是存放用户反馈信息的表,主要属性有主键 id(id)、关联表id(refid)、提交人id(created_by)、提交时间(created_time)、内容(content)等,如表4-8所示。
表4-8 反馈表(feedback)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | user_id | bigint | 外键 | Y | 提交人的id | |
3 | reply_id | bigint | 外键 | Y | 回复人id | |
4 | created_time | datetime | Y | 反馈时间 | ||
5 | content | varchar | 255 | Y | 反馈内容 | |
6 | reply | varchar | 255 | Y | 回复内容 | |
7 | reply_time | datetime | Y | 回复时间 | ||
8 | type | varchar | 10 | Y | 反馈类型 |
(8)资源分类表(resource_category)是保存资源分类的表,管理员可以添加新的资源分类,主要属性有主键 id(id)、分类描述(description)、分类名称(category_name)等,如表4-9所示。
表4-9 资源分类表(category)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | description | varchar | 200 | Y | 分类说明 | |
3 | category_name | varchar | 200 | Y | 分类名称 | |
4 | created_time | datetime | Y | 创建时间 | ||
5 | create_user | bigint | 外键 | Y | 创建人id | |
6 | status | varchar | 1 | Y | 分类状态(0正常 1禁用) |
(9)公告表(notice)包含所有公告信息,主要属性有公告标题(title)、内容(content)、创建人id等,如表4-10所示。
表4-10 公告表(notice)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | title | varchar | 50 | Y | 公告标题 | |
3 | picture | varchar | 255 | N | 公告图片地址 | |
4 | content | longtext | Y | 公告内容 | ||
5 | file | varchar | 255 | N | 公告文件 | |
6 | created_by | bigint | 外键 | Y | 创建人id | |
7 | created_time | datetime | Y | 创建时间 | ||
8 | updated_by | bigint | 外键 | N | 修改人id | |
9 | updated_time | datetime | N | 最后修改时间 | ||
10 | status | char | 1 | Y | 状态(1正常 0禁用 ) | |
11 | publish_time | datatime | N | 发布时间 |
(10)精选资源名录表(selected_resource_directory)包含精选资源的目录,主要属性有目录名(direction_name)、名录简介(description)等,如表4-11所示。
表4-11 精选资源名录表(selected_resource_directory)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id | |
2 | direction_name | varchar | 20 | Y | 名录名称 | |
3 | description | varchar | 255 | Y | 名录简介 | |
4 | created_user | bigint | Y | 创建人id | ||
5 | created_time | datetime | Y | 创建时间 | ||
6 | updated_user | bigint | Y | 最近修改人id | ||
7 | updated_time | datetime | Y | 最后修改时间 |
(11)数据录入员表(data_input_operator)包含所有数据录入员信息,主要属性有用户名(user_name )、密码(password )、手机号码(phone)等,如表4-12所示。
表4-12 数据录入员表(data_input_operator)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id自增 | |
2 | user_name | varchar | 32 | Y | 用户名 | |
3 | password | varchar | 64 | Y | 密码 | |
4 | avatar | varchar | 255 | N | 用户头像地址 | |
5 | gender | char | 1 | N | 性别 | |
7 8 | phone status | varchar int | 50 | N Y | 手机号码 账号状态(0禁用 1启用) | |
9 | created_time | datetime | Y | 创建时间 | ||
10 | update_time | datetime | Y | 最后修改时间 | ||
11 | create_user | bigint | 外键 | Y | 创建人id | |
12 | update_user | bigint | 外键 | Y | 最后修改人 |
(12)资源视图表(resource_view)包含对资源可视化图的描述,主要属性有资源名称(resource_name)、地理信息经度(longitude)和纬度(latitude)等,如表4-13所示。
表4-13 资源视图表(resource_view)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id自增 | |
2 | resource_id | bigint | 外键 | Y | 关联资源表的id | |
3 | resource_name | varchar | 20 | Y | 资源名称 | |
4 | latitude | double | Y | 纬度 | ||
5 | longitude | double | Y | 经度 | ||
6 | picture | varchar | 255 | Y | 资源图标 | |
7 | brief_description | varchar | 200 | Y | 简述预览 | |
8 | link | varchar | 255 | Y | 跳转链接 | |
9 | scale | double | Y | 比例尺大小 |
(13)资源和精选名录关联表(resource_ref_selected_directory)记录着资源与名录的对应关系,主要属性名录id(direction_id)、资源id(resource_id)、名录名称(direction_name)等,如表4-14所示。
表4-14 资源和精选名录关联表(resource_ref_selected_directory)
| 编号 | 名称 | 数据类型 | 长度 | 约束 | 非空 | 说明 |
1 | id | bigint | 主键 | Y | 主键id自增 | |
2 | resource_id | bigint | 外键 | Y | 关联资源表的id | |
3 | resource_name | varchar | 20 | Y | 资源名称 | |
4 | direction_id | bigint | Y | 名录id | ||
5 | direction_name | varchar | 20 | Y | 名录名称 | |
6 | picture | varchar | 255 | Y | 名录图标 | |
7 | brief_description | varchar | 200 | Y | 名录简述 |
第3章 相关技术说明
3.1 相关技术支持
本项目综合运用多种技术,实现了丰富的功能和良好的用户体验,以下是实现整体项目的技术描述。
- 整体架构:采用前后端分离的架构模式,前后端通过RESTFul接口进行高效交互,确保数据传输的流畅性和稳定性,提升系统的响应速度和可扩展性。
- 后端技术:
- 开发语言与框架:主要采用Java语言进行开发,以SpringBoot框架为基础搭建稳固的后端架构。SpringBoot的快速开发特性和内置的各种组件,如自动配置、起步依赖等,大大提高了开发效率,减少了繁琐的配置工作,使后端开发更加专注于业务逻辑的实现。
- 数据库交互:后端与Mysql数据库交互采用MybatisPlus这一ORM技术。MybatisPlus在Mybatis的基础上进行了增强,提供了更加简洁易用的 CRUD操作方法和丰富的查询条件构造器,能够方便地进行数据库的增删改查操作,同时支持代码生成器,进一步提升了开发效率,确保数据的高效存储和读取,为农产品相关数据的管理提供了有力支持。
- 权限管理:利用Spring Security来控制权限下放,确保小程序的安全性Spring Security提供了强大的认证和授权机制,能够对用户的身份进行验证,并根据用户的角色和权限来控制其对不同资源的访问,有效防止非法访问和数据泄露,保护农产品信息的安全。
- 项目管理与依赖:使用Maven管理项目版本依赖,方便管理项目中所使用的各种第三方库和组件。通过在pom.xml文件中配置依赖关系,Maven能够自动下载所需的依赖包,并解决依赖冲突问题,确保项目的依赖环境稳定可靠,提高项目的可维护性和可扩展性。
- 前端技术:
- 开发框架与组件库:前端以Vue搭建基础框架,Vue的响应式数据绑定和组件化开发理念,使得前端开发更加高效和灵活。通过ElementUI添加丰富的视图组件,ElementUI提供了一系列美观且实用的UI组件,如按钮、表单、表格、导航栏等,能够快速构建出美观、易用的用户界面,提升用户体验,更好地展示农产品的相关信息和内容。
- 数据可视化:通过apache echarts引入表格视图,将农产品的一些数据以直观、清晰的图表形式展示给用户,如遗产分布地域的统计图表、不同类型产品的数量对比图表等,帮助用户更直观地理解和分析数据,增强数据的可视化效果和信息传达能力。
- 代码版本控制:利用Git实现代码版本控制,方便团队成员之间的协作开发。Git允许开发人员对代码的修改进行记录和管理,能够轻松地进行代码的分支管理、合并操作,追溯代码的历史版本,确保代码的安全性和可维护性,为前端开发的协同工作提供了坚实的基础。
- 地图集成:地图集成调用电子地图的api实现,能够在小程序中展示农产品的地理位置信息,用户可以通过地图直观地查看产品的分布情况,并进行导航等操作,增强了小程序的实用性和功能性,为用户提供了更加便捷的服务。
- 项目部署与存储:
- 项目部署:项目部署利用Docker容器化技术打包jar包,Docker可以将应用及其依赖环境打包成一个独立的容器,实现了应用的快速部署和迁移,提高了项目的部署效率和灵活性,同时也便于在不同的环境中进行部署和运行,确保小程序的稳定运行。开发协作与测试:
- 在系统功能模块开发过程中,前端开发人员使用Postman与后端联调,Postman可以方便地模拟前端发送各种HTTP请求,帮助前端开发人员快速验证与后端接口的交互是否正常,提高联调效率,确保前后端数据传输的准确性和稳定性。
- 后端开发人员使用Swagger测试接口,Swagger能够自动生成详细的API 文档,并提供接口测试的界面,方便后端开发人员对接口进行功能测试和参数验证,确保接口的正确性和可靠性,提高后端开发的质量和效率。
本项目的相关技术支持如表5-1所示。
表5-1 相关技术表
技术类别 | 技术名称 | 应用场景/功能模块 | 具体作用 |
编程语言 | Java | 整个后端系统开发 | 核心业务逻辑的实现,包括数据处理、API开发和后台服务的搭建。 |
数据库技术 | MySQL | 数据库设计与实现 | 结构化数据存储和检索,支持项目素材的存储和查询。 |
后端框架 | Spring Boot | RESTful API服务开发 | 提供各类数据接口,供前端和其他系统调用,实现功能模块化和接口标准化。 |
Spring MVC | Web应用后端逻辑 | 管理用户请求和响应处理,确保高效的请求响应。 | |
ORM技术 | Mybatis-plus | 数据库操作简化 | 通过对象关系映射简化数据库的操作,使得数据库访问更加高效可维护。 |
前端技术 | HTML/CSS/JavaScript | 基础Web页面开发 | 构建用户界面,确保页面的静态结构、布局和基本交互。 |
Vue.js | 动态和交互式UI开发 | 构建复杂的交互式用户界面,提高用户体验。 | |
ElementUI | UI工具 | 为 Vue.js 开发者提供丰富的预设计 UI 组件,可快速搭建界面。 | |
apache echarts | 图表工具 | 将数据以多种直观图表展示,提供丰富图表类型,满足不同场景需求。 | |
地图集成 | 电子地图 | 地图功能实现 | 实现电子地图显示功能,支持地图交互、地理信息展示、路径规划等。 |
容器技术 | Docker | 应用容器化部署 | 打包和部署应用程序,确保环境一致性,提高部署效率和灵活性。 |
版本控制 系统 | Git | 源代码管理与协同开发 | 管理代码版本,支持多人协作开发和变更追踪。 |
测试工具 | junit | 测试工具 | 方便开发人员编写和运行可重复的单元测试用例。 |
postman | 接口测试工具 | 方便开发人员设计、调试和测试 API,支持多种请求方式,能高效进行接口测试并生成测试报告。 | |
Swagger | 后端接口测试工具 | 方便开发人员进行接口的设计、调试和测试,同时也为前后端开发人员提供统一的接口文档。 | |
安全与权限管理 | Spring Security | 认证与授权管理 | 提供用户登录认证、权限分配和访问控制,确保系统安全性。 |
构建工具 | Maven | 项目构建工具 | 用于自动化构建、依赖管理、项目管理与协作、保障代码质量与测试以及支持项目持续集成与部署的工具。 |
