摘 要
随着全球科技的迅猛发展,电子商务日益成为人们生活中不可或缺的一部分。在乡村振兴的大背景下,借助互联网技术推动农产品的线上销售,已成为促进农村经济发展的重要路径。然而,传统的农产品销售渠道面临流通不畅、信息不对称等问题,制约了农产品的市场竞争力。因此,开发一个高效的农产品销售系统具有重要意义。本研究旨在开发一个乡村振兴农产品销售系统,帮助农民扩大销售渠道,提升收入。
功能设计上,系统包括三个主要用户角色:管理员、商家用户和买家用户。管理员负责管理系统用户、公告信息及商城运营,通过数据统计图进行销售分析。商家用户可以管理产品信息、订单状态及售后服务,提升运营效率。买家用户则享有便捷的购物体验,包括浏览产品、管理订单、申请售后服务及与其他用户互动交流。
技术方案方面,系统采用Spring Boot框架实现高效快速的开发,利用其简化配置和模块化设计特点,确保系统的扩展性和稳定性。MySQL数据库用于存储和管理大规模用户数据及交易信息,提供可靠的数据支持。前端使用现代化技术构建友好的用户界面,提升用户体验。
预期打造一个功能齐全、操作简便的在线销售平台,促进农产品的市场流通。系统通过优化销售流程和用户体验,提高乡村农产品的市场竞争力。该平台有望成为连接乡村与市场的桥梁,为城乡融合发展贡献力量。
Abstract
With the rapid development of global technology, e-commerce has become an indispensable part of people's lives. In the context of rural revitalization, promoting online sales of agricultural products through Internet technology has become an important path to promote rural economic development. However, traditional agricultural product sales channels face problems such as poor circulation and information asymmetry, which restrict the market competitiveness of agricultural products. Therefore, developing an efficient agricultural product sales system is of great significance. This study aims to develop a rural revitalization agricultural product sales system to help farmers expand their sales channels and increase their income.
In terms of functional design, the system includes three main user roles: administrator, merchant user, and buyer user. Administrators are responsible for managing system users, announcement information, and mall operations, and conducting sales analysis through data analysis charts. Merchant users can manage product information, order status, and after-sales service to improve operational efficiency. Buyer users enjoy a convenient shopping experience, including browsing products, managing orders, applying for after-sales service, and interacting with other users.
In terms of technical solutions, the system adopts the Spring Boot framework to achieve efficient and fast development, utilizing its simplified configuration and modular design features to ensure the scalability and stability of the system. MySQL database is used to store and manage large-scale user data and transaction information, providing reliable data support. The front-end uses modern technology to build a user-friendly interface and enhance the user experience.
Expected to create a fully functional and easy-to-use online sales platform to promote the market circulation of agricultural products. The system improves the market competitiveness of rural agricultural products by optimizing sales processes and user experience. This platform is expected to become a bridge connecting rural areas and markets, contributing to the integrated development of urban and rural areas.
Keywords: rural revitalization, agricultural product sales system; Java language; Spring Boot framework; MySQL database
目 录
1绪论
1.1课题研究背景及意义
近年来,随着国家推进乡村振兴战略,农村经济发展和农民增收成为社会关注的重点。传统的农产品销售模式面临许多挑战,如信息不对称、销售渠道狭窄以及市场竞争力不足。这些问题限制了农产品的市场流通和农村经济的发展。借助信息技术和电子商务平台,能够有效突破这些瓶颈,实现农产品的高效流通和交易。本研究的背景在于利用现代信息技术,搭建一个高效的农产品销售系统,使农民能够直接接触更广泛的市场资源,提升销售能力。通过在线平台,农民可以更便捷地展示和销售产品,减少中间环节,提高销售利润。此外,消费者也能更轻松地获取高质量的农产品,缩短了城乡之间的供应链。
乡村振兴农产品销售系统的研究意义在于,它不仅是一种技术创新,更是一种商业模式的创新,为乡村经济注入活力。通过优化销售渠道和信息对接,系统可以提高农产品的市场知名度和竞争力,帮助农民增加收入。同时,系统的数据分析功能还能为决策提供支持,帮助农民根据市场需求调整生产策略。在更广泛的层面上,该研究有助于推动城乡融合发展,实现资源的优化配置,促进乡村经济的可持续发展。这一平台将成为连接乡村与城市市场的重要桥梁,为实现乡村振兴和农民致富提供有力支持。
1.2国内外发展现状分析
在国内,随着政策支持力度的加大,农产品电商呈现快速发展的态势。政府通过实施多项政策,鼓励和推动电商在农村地区的普及,如建立农村电商示范县、提供物流和信息化基础设施支持等。同时,电商巨头纷纷参与农村市场,通过设立专属平台和频道,帮助农产品拓展销售渠道。近年来,"直播带货"和短视频平台的崛起,为农产品销售开辟了新的路径,直接连接生产者和消费者,极大地提高了销售效率。此外,各地也在积极探索品牌化路径,通过打造地方特色农产品品牌,提高市场竞争力。然而,国内农产品电商发展仍面临诸多挑战。物流成本高、配送不及时、信息化水平参差不齐等问题依然存在,特别是在偏远地区,这些问题更加突出。此外,农产品标准化程度低、质量安全监管难度大,也影响着消费者的信任和市场的进一步拓展。
国际上,农产品电商市场也在不断成熟和完善。以欧美地区为例,这些市场发展较为成熟,消费者对线上购物的接受度高,电商平台种类丰富,服务质量高。许多国家通过应用先进技术,如大数据、物联网和区块链,来优化农业生产和供应链管理,实现精准农业和高效流通。消费者对食品安全、产品溯源和可持续性的关注,推动了有机和绿色农产品的需求增长。此外,国际市场上,品牌化和高附加值是农产品电商的重要发展方向。企业不仅注重产品质量,还通过品牌故事和文化内涵提升产品价值。然而,跨境电商的快速发展也带来了物流、关税、数据安全等方面的挑战,需要国际间的合作和进一步的制度完善。
综上所述,国内外农产品电商都在快速发展,但各有特色和挑战。国内市场凭借政策支持和创新模式快速崛起,正在逐步完善基础设施和提升标准化水平。国外市场则在技术应用和品牌化方面具有显著优势,提供了许多值得借鉴的经验。未来,国内可以通过借鉴国际经验,结合自身资源和市场需求,进一步推动农产品电商的高质量发展。这包括加强物流和信息化基础设施建设,提高产品标准化和质量监管水平,以及推动品牌化发展,提升产品附加值。通过这些努力,农产品电商将在乡村振兴和经济增长中发挥更大作用,助力城乡融合发展。
1.3主要研究内容
本研究主要内容包括以下几个方面:
(1)需求分析:深入分析乡村农产品销售的现状与痛点。通过调研,明确用户需求与系统功能定位,确保系统能够有效解决信息不对称、销售渠道狭窄等问题。
(2)技术方案设计:系统采用Java语言及Spring Boot框架,利用其高效开发和简化配置的优势,确保系统的稳定性与可拓展性。MySQL数据库用于提供可靠的数据存储与管理,支持大规模用户和交易信息的处理。
(3)功能设计:系统分为三大用户角色。管理员可进行用户管理、公告发布及数据分析;商家用户可管理产品信息、订单及售后服务;买家用户享有产品浏览、订单管理及售后申请等功能,提供全面的购物体验。
(4)数据库设计:基于需求分析,设计合理的数据库结构。包括用户信息、产品详情、订单记录等多个模块,确保数据的完整性和一致性。数据库设计需支持高并发访问与快速检索,以提高系统响应速度。
2相关技术简介
2.1 Java语言
乡村振兴农产品销售系统采用了Java语言作为后端开发的核心技术。Java语言因其跨平台特性和高度灵活性而备受青睐,使系统能够在不同操作系统上稳定运行,并为未来功能的拓展提供可靠的技术支持。同时,采用Spring Boot框架简化了配置,提升了开发效率和系统的稳定性。Java的选择确保了平台具有良好的可扩展性和稳定性,在为乡村振兴农产品销售系统提供技术支持的同时,也为用户提供畅顺的体验。
2.2 SpringBoot 框架
Spring Boot,作为Spring生态系统中一颗璀璨的明星,以其“约定优于配置”的核心理念,极大地简化了Java应用的开发、部署与管理流程。它并非是对Spring框架的颠覆,而是在其基础上进行了深度封装与优化,旨在快速搭建独立的、生产级别的Spring应用。Spring Boot通过自动配置功能,减少了大量繁琐的配置工作,让开发者能够更加专注于业务逻辑的实现。同时,它集成了众多常用库,如数据库连接池、缓存、消息队列等,为系统开发提供了一站式的解决方案。此外,Spring Boot还支持多种部署方式,无论是传统的WAR包部署,还是现代的容器化部署,都能轻松应对。因此,选择Spring Boot作为乡村振兴农产品销售系统的开发框架,不仅能够提升开发效率,还能确保系统的稳定性和可维护性。
2.3 Vue框架
Vue框架,作为一款风靡前端的JavaScript框架,以其渐进式、组件化的设计理念,为开发者构建高效、灵活的Web界面提供了强大支持。Vue不仅轻量且易于上手,其核心库专注于视图层,能够轻松地将Vue集成到现有项目中,实现前后端分离的现代Web应用开发。其响应式的数据绑定和组件系统,能够高效地管理界面状态和用户交互,同时Vue丰富的生态系统也提供了众多插件和工具,进一步提升了开发效率和应用的性能。在乡村振兴农产品销售系统中引入Vue作为前端框架,不仅可以优化用户界面的渲染和交互体验,还能通过前后端分离的架构提升系统的可维护性和可扩展性,是构建现代、高效乡村振兴农产品销售系统的理想选择。
2.4 MySQL数据库
MySQL数据库,作为开源关系型数据库管理系统的佼佼者,以其高性能、可靠性、易用性和灵活性,在全球范围内被广泛应用于各类企业级应用中。MySQL采用SQL(结构化查询语言)作为数据操作的标准语言,支持复杂的查询、数据更新、索引优化等功能,确保数据的高效存取和完整性。其强大的事务处理能力,为业务逻辑的原子性、一致性、隔离性和持久性提供了坚实保障。此外,MySQL还具备高度的可配置性和可扩展性,通过优化存储引擎、调整配置参数等手段,可以轻松应对高并发、大数据量的应用场景。在乡村振兴农产品销售系统中,MySQL作为后端数据存储的核心,不仅为系统提供了稳定可靠的数据支持,还通过其丰富的数据操作功能,助力系统实现复杂的业务逻辑和高效的数据管理。
3系统需求分析
3.1系统功能需求分析
乡村振兴农产品销售系统提供丰富功能:管理员可通过后台首页进行销售数据分析,管理用户与公告,优化产品及订单流程。商家用户能高效管理产品分类、订单及售后,提高运营效率。买家用户享受便捷购物体验,浏览产品、管理订单和申请售后,实时查看公告和配送进度,并可通过聊天中心与其他用户互动,全面提升购物体验。
3.1.1 买家用户功能
- 首页:浏览推荐商品和最新活动,获取购物灵感。
- 公告信息:查看平台重要公告和优惠信息,参与活动。
- 聊天中心:添加好友进行聊天,与商家和其他买家交流,获取产品建议和评价。
- 农产品浏览:按分类和搜索关键词浏览产品,查看详细信息、用户评价、和产品评分。
- 商城管理:
我的购物车:管理待购买商品,支持批量结算和优惠券使用。
我的订单:查看订单详情和状态,支持订单追踪。申请售后服务,提交售后申请,描述问题和期望的解决方案。
- 个人中心:
个人首页:查看和编辑个人信息、账户安全设置。
订单配送:实时查看订单配送进度,确保收货时间。
收藏管理:管理喜欢的产品,便于下次购买。
3.1.2 商家用户功能
- 后台首页:提供销售数据和趋势分析,帮助商家优化经营策略。
- 商城管理:
农产品管理:上架、下架和编辑产品信息,确保产品吸引力。
分类列表管理:合理分类产品,方便用户浏览。
订单列表管理:查看订单详情,支持按状态快速筛选。
订单配送管理:确认发货信息,跟踪物流状态。
订单售后管理:及时响应售后请求,与客户沟通解决方案。
3.1.3 管理员功能
- 后台首页:
商品销售金额统计图:实时展示各阶段的销售金额,帮助管理员分析销售趋势和制定策略。
商品销售数量统计图:展示各产品的销量,便于识别畅销和滞销产品。
- 系统用户管理:
管理员管理:添加、编辑、删除管理员账户,分配权限,确保平台安全。
商家用户管理:审核、激活或停用商家账户,维护平台秩序。
买家用户管理:管理用户信息,处理异常账户。
- 轮播图管理:管理和更新首页轮播图,确保内容新颖,提升用户体验。
- 公告信息管理:发布重要通知和活动信息,确保用户获取最新动态。
- 商城管理:
农产品管理:审核和优化商家发布的产品,确保产品信息准确。
分类列表管理:定期更新产品分类,提升用户的搜索效率。
订单列表管理:全局查看订单情况,支持订单查询和统计。
订单配送管理:监控订单物流,协调配送资源。
订单售后管理:处理售后申请,协助解决用户问题,提升满意度。
3.2系统非功能性分析
在研究乡村振兴农产品销售系统时,非功能性需求分析是一个重要的部分。非功能性需求主要关注的是系统如何运行,而不是它具体完成什么功能。这些需求包括性能、可用性、安全性、可维护性、可扩展性、易用性等方面。以下是一个关于乡村振兴农产品销售系统非功能性需求分析的概要。
性能需求:系统需确保快速响应和高吞吐量,以支持大量用户同时访问,即使在高峰时段也能保持流畅的操作体验,避免因延迟或卡顿影响用户体验。
可用性:安系统必须具备高可用性,采用冗余部署、负载均衡等策略,确保即使部分组件故障也能迅速恢复服务,减少服务中断时间,保障用户业务的连续性。
安全性:鉴于系统处理用户敏感信息,如个人信息、申请信息等,必须实施严格的安全措施,包括数据加密、访问控制、防攻击机制等,以保护用户数据免受未授权访问或泄露。
可维护性:系统设计应注重可维护性,采用模块化、标准化的架构,提供详尽的开发文档和用户手册,确保系统易于理解和维护,降低长期运维成本。
可扩展性:随着业务的发展,系统可能需要扩展功能或提升性能。因此,系统需具备灵活的可扩展性,能够轻松添加新模块、优化性能,以应对未来增长的需求。
易用性:用户界面应直观易用,符合用户习惯,提供清晰的导航和友好的操作反馈,帮助用户快速上手并高效完成任务,提升整体用户满意度。
3.3系统可行性分析
通过乡村振兴农产品销售系统的可行性分析,从技术可行性、经济可行性、操作可行性以及社会可行性四个维度进行深入探讨,以确保系统的开发与应用具有坚实的可行性基础。
3.3.1技术可行性
SpringBoot作为目前流行的Java企业级应用开发框架,以其“约定优于配置”的原则,极大地简化了开发流程,降低了技术门槛。前端采用Vue框架,不仅提升了用户界面的交互体验,也实现了前后端分离的现代Web架构。MySQL数据库作为后端数据存储,以其高性能和稳定性为系统提供了可靠的数据支持。综上所述,从技术角度来看,该系统的开发具备高度可行性。
3.3.2经济可行性
考虑到SpringBoot、Vue、及MySQL等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著提升系统管理的效率和用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。
3.3.3操作可行性
系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。
3.3.4社会可行性
乡村振兴农产品销售系统在社会可行性上具备良好基础。政策支持乡村振兴与数字经济发展,为项目提供了保障。互联网普及提升了农村信息化水平,促进了农产品电商成长。消费者对绿色、有机产品的需求增加,为市场拓展创造了机会。社会各界对电商的接受度提高,各类培训提升了农民的数字技能和市场意识。项目契合社会发展趋势,展现出广阔的应用前景。
从技术、经济、操作和社会四个维度来看,乡村振兴农产品销售系统的开发均具备高度的可行性。
3.4系统用例分析
乡村振兴农产品销售系统用例分析主要从买家用户、商家用户、管理员这些实体展开描述。
3.4.1买家用户用例分析
买家用户在农产品电商平台的用例分析包括以下几个方面:首先,用户注册和登录,确保身份验证和信息安全。其次,买家可浏览平台上丰富的农产品信息,通过搜索和筛选功能找到所需商品。接着,用户可将商品添加至购物车,进行在线支付,享受便捷的购物体验。购买后,买家可查看订单状态,并在收到商品后进行评价反馈。详细用例图如图3-1所示。

图3-1买家用户用例图
3.4.2商家用户用例分析
商家用户在平台上进行产品发布和管理。首先,商家注册并创建店铺,上传产品信息和图片。然后,使用平台工具管理库存和订单,优化产品展示。商家还可以查看用户反馈,处理售后申请。平台提供的这些功能帮助商家提升效率,扩大市场覆盖,增强竞争力。详细用例图如图3-2所示。

图3-2商家用户用例图
3.4.3管理员用例分析
管理员在平台上的用例分析包括以下几个方面:首先,管理员负责用户账户管理,包括审核商家注册信息,确保资料合规。其次,管理员需要监控平台的内容和商品安全,及时处理违规信息。管理员还负责维护平台的正常运行,解决技术问题,优化用户体验。此外,管理员需分析平台数据,生成报告,为决策提供支持。通过这些职能,管理员确保平台的安全性、可靠性和用户满意度。详细用例图如图3-3所示。

图3-3管理员用例图
4系统设计
4.1系统总体设计思路
乡村振兴农产品销售系统采用Browser/Server结构,(浏览器/服务器)和基于Web服务前后台交互的模式,是一个适用于Windows体系环境下的模型结构。只要用户有符合程序运行的硬件系统,并连上互联网,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示:

图4-1系统工作原理图
其最终前后台交互原理如图4-2所示。

图4-2前后台交互原理
具体交互流程为:浏览器中执行具体操作,操作命令将生成一个do方法。该方法使得浏览器能够访问后台中的Controller层,Controller层由于业务上的需要执行进而访问Service层。Service层收到指令后将会去调用内部DAO层的接口。接口将会和MyBatis层下的一个SQL语句相对接。对接好之后进而访问MySql数据库。更新底层数据,然后将数据同步回MyBatis层,同步变化后的数据将通过DAO层接口,Service层和后台Controller层,直观反映到浏览器页面上。
4.2系统结构设计
乡村振兴农产品销售系统的整体结构设计如图4-3所示。

图4-3整体功能结构设计图
4.3系统功能设计
4.3.1用户登录流程
当用户进入登录页面时,当其在浏览器执行具体操作的时候,后端会同步显示,如图4-4所示。

图4-4登录流程图
4.3.2农产品购买操作流程
农产品购买流程始于用户登录或注册账户。随后,用户通过搜索和分类功能浏览商品,查看详情信息如价格、评价和规格,并选择所需产品。选定商品后,将其加入购物车,用户可选择继续购物或直接结算。在结算页面,确认订单信息后选择支付方式完成付款。支付成功后,用户会收到订单确认信息,并可在账户中查看订单状态。商品送达后,用户确认收货,并在平台上留下评价反馈,以帮助平台改进服务和其他用户做出购买决策。该流程旨在提供便捷、安全的购物体验。操作流程如图4-5所示。

图4-5系统操作流程图
4.4系统核心代码设计
乡村振兴农产品销售系统的核心代码设计如下:
4.4.1用户注册
注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.4.2用户登录
登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
4.4.3修改密码
修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如下所示。
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
int count = service.selectBaseCount(service.count(query, service.readConfig(request)));
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
4.4.4修改数据
修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下所示。
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
4.4.5删除数据
删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
4.4.6获取数据
通过请求的参数获取列表数据,代码如下所示。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
4.4.7图片上传
通过请求的参数获取列表数据,代码如下所示。
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
4.5数据库设计
4.5.1数据库设计原则
乡村振兴农产品销售系统在进行数据库设计时,考虑到个人能力与数据库选择,选择了数据库Mysql。以下将使用E-R展示数据库中设计的实体及主要的字段和类型及数据库的描述。
4.5.2数据库实体
通过建立乡村振兴农产品销售系统的E-R模型图。以此来设计详细的数据库资料实体,以下为具体图例:
(1)买家用户实体图如下图所示;

图4-6买家用户实体图
(2)农产品信息实体图如下图所示;

图4-7农产品信息实体图
(3)订单信息实体E-R图如下图所示;

图4-8订单信息实体E-R图
(4)数据库实体E-R图如下图所示:

图4-9数据库E-R图
4.5.3数据库表设计
以下为本系统开发过程中所使用的数据表如下所示:
表access_token (登陆访问时长)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
| 2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
| 3 | info | text | 65535 | 0 | Y | N | ||
| 4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | address_id | int | 10 | 0 | N | Y | 收货地址: | |
| 2 | name | varchar | 32 | 0 | Y | N | 姓名: | |
| 3 | phone | varchar | 13 | 0 | Y | N | 手机: | |
| 4 | postcode | varchar | 8 | 0 | Y | N | 邮编: | |
| 5 | address | varchar | 255 | 0 | N | N | 地址: | |
| 6 | user_id | mediumint | 8 | 0 | N | N | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 9 | default | bit | 1 | 0 | N | N | 0 | 默认判断 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | agriculture_products_id | int | 10 | 0 | N | Y | 农产品ID | |
| 2 | product_specifications | varchar | 64 | 0 | Y | N | 产品规格 | |
| 3 | merchant_users | int | 10 | 0 | Y | N | 0 | 商家用户 |
| 4 | merchant_name | varchar | 64 | 0 | Y | N | 商家名称 | |
| 5 | contact_number | varchar | 16 | 0 | Y | N | 联系号码 | |
| 6 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
| 7 | cart_title | varchar | 125 | 0 | Y | N | 标题:[0,125]用于产品html的标签中 | |
| 8 | cart_img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
| 9 | cart_description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
| 10 | cart_price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
| 11 | cart_price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
| 12 | cart_inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
| 13 | cart_type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
| 14 | cart_content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
| 15 | cart_img_1 | text | 65535 | 0 | Y | N | 主图1: | |
| 16 | cart_img_2 | text | 65535 | 0 | Y | N | 主图2: | |
| 17 | cart_img_3 | text | 65535 | 0 | Y | N | 主图3: | |
| 18 | cart_img_4 | text | 65535 | 0 | Y | N | 主图4: | |
| 19 | cart_img_5 | text | 65535 | 0 | Y | N | 主图5: | |
| 20 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 21 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
| 2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
| 3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
| 4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
| 5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
| 6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
| 7 | position | varchar | 32 | 0 | Y | N | 位置: | |
| 8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
| 9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
| 10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
| 11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
| 12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
| 13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
| 14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
| 15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
| 16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
| 17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
| 18 | option | text | 65535 | 0 | Y | N | 配置: | |
| 19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | buyer_user_id | int | 10 | 0 | N | Y | 买家用户ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 3 | phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
| 4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | cart_id | int | 10 | 0 | N | Y | 购物车ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 标题: | |
| 3 | img | varchar | 255 | 0 | N | N | 0 | 图片: |
| 4 | user_id | int | 10 | 0 | N | N | 0 | 用户ID: |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | state | int | 10 | 0 | N | N | 0 | 状态:使用中,已失效 |
| 8 | price | double | 9 | 2 | N | N | 0.00 | 单价: |
| 9 | price_ago | double | 9 | 2 | N | N | 0.00 | 原价: |
| 10 | price_count | double | 11 | 2 | N | N | 0.00 | 总价: |
| 11 | num | int | 10 | 0 | N | N | 1 | 数量: |
| 12 | goods_id | mediumint | 8 | 0 | N | N | 商品id:[0,8388607] | |
| 13 | type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
| 14 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | code_token_id | int | 10 | 0 | N | Y | ||
| 2 | token | varchar | 255 | 0 | Y | N | ||
| 3 | code | varchar | 255 | 0 | Y | N | 验证码 | |
| 4 | expire_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 失效时间 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
| 3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 6 | title | varchar | 255 | 0 | Y | N | 标题: | |
| 7 | img | varchar | 255 | 0 | Y | N | 封面: | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
| 3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
| 4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
| 5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
| 6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | goods_id | mediumint | 8 | 0 | N | Y | 产品id:[0,8388607] | |
| 2 | title | varchar | 125 | 0 | Y | N | 标题:[0,125]用于产品和html的<title>标签中 | |
| 3 | img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
| 5 | price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
| 6 | price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
| 7 | sales | int | 10 | 0 | N | N | 0 | 销量:[0,1000000000] |
| 8 | inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
| 9 | type | varchar | 64 | 0 | N | N | 商品分类: | |
| 10 | hits | int | 10 | 0 | N | N | 0 | 点击量:[0,1000000000]访问这篇产品的人次 |
| 11 | content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
| 12 | img_1 | text | 65535 | 0 | Y | N | 主图1: | |
| 13 | img_2 | text | 65535 | 0 | Y | N | 主图2: | |
| 14 | img_3 | text | 65535 | 0 | Y | N | 主图3: | |
| 15 | img_4 | text | 65535 | 0 | Y | N | 主图4: | |
| 16 | img_5 | text | 65535 | 0 | Y | N | 主图5: | |
| 17 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 19 | customize_field | text | 65535 | 0 | Y | N | 自定义字段 | |
| 20 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 21 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 22 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 23 | user_id | int | 10 | 0 | Y | N | 0 | 添加人 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | int | 10 | 0 | N | Y | 商品分类ID: | |
| 2 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 3 | name | varchar | 255 | 0 | Y | N | 商品名称: | |
| 4 | desc | varchar | 255 | 0 | Y | N | 描述: | |
| 5 | icon | varchar | 255 | 0 | Y | N | 图标: | |
| 6 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 7 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | logistics_delivery_id | int | 10 | 0 | N | Y | 物流配送ID | |
| 2 | order_number | varchar | 64 | 0 | Y | N | 订单号 | |
| 3 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 4 | purchase_quantity | varchar | 64 | 0 | Y | N | 购买数量 | |
| 5 | total_transaction_amount | double | 11 | 2 | Y | N | 0.00 | 交易总额 |
| 6 | the_date_of_issuance | date | 10 | 0 | Y | N | 发货日期 | |
| 7 | delivery_number | varchar | 30 | 0 | Y | N | 配送订单 | |
| 8 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
| 9 | shipping_address | varchar | 64 | 0 | Y | N | 收货地址 | |
| 10 | delivery_status | varchar | 64 | 0 | Y | N | 配送状态 | |
| 11 | signing_status | varchar | 64 | 0 | Y | N | 签收状态 | |
| 12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
| 13 | contact_name | varchar | 255 | 0 | Y | N | 联系人名字 | |
| 14 | merchant_id | int | 10 | 0 | Y | N | 商家id | |
| 15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | merchant_users_id | int | 10 | 0 | N | Y | 商家用户ID | |
| 2 | merchant_name | varchar | 64 | 0 | N | N | 商家名称 | |
| 3 | contact_number | varchar | 16 | 0 | N | N | 联系号码 | |
| 4 | business_license | varchar | 255 | 0 | Y | N | 营业执照 | |
| 5 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
| 6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
| 2 | title | varchar | 125 | 0 | N | N | 标题: | |
| 3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
| 4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | order_id | int | 10 | 0 | N | Y | 订单ID: | |
| 2 | order_number | varchar | 64 | 0 | Y | N | 订单号: | |
| 3 | goods_id | mediumint | 8 | 0 | N | N | 商品id:[0,8388607] | |
| 4 | title | varchar | 255 | 0 | Y | N | 商品标题: | |
| 5 | img | varchar | 255 | 0 | Y | N | 商品图片: | |
| 6 | price | double | 10 | 2 | N | N | 0.00 | 价格: |
| 7 | price_ago | double | 10 | 2 | N | N | 0.00 | 原价: |
| 8 | num | int | 10 | 0 | N | N | 1 | 数量: |
| 9 | price_count | double | 8 | 2 | N | N | 0.00 | 总价: |
| 10 | norms | varchar | 255 | 0 | Y | N | 规格: | |
| 11 | type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
| 12 | contact_name | varchar | 32 | 0 | Y | N | 联系人姓名: | |
| 13 | contact_email | varchar | 125 | 0 | Y | N | 联系人邮箱: | |
| 14 | contact_phone | varchar | 11 | 0 | Y | N | 联系人手机: | |
| 15 | contact_address | varchar | 255 | 0 | Y | N | 收件地址: | |
| 16 | postal_code | varchar | 9 | 0 | Y | N | 邮政编码: | |
| 17 | user_id | int | 10 | 0 | N | N | 0 | 买家ID: |
| 18 | merchant_id | mediumint | 8 | 0 | N | N | 0 | 商家ID: |
| 19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 21 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
| 22 | state | varchar | 16 | 0 | N | N | 待付款 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
| 23 | remark | text | 65535 | 0 | Y | N | 订单备注 | |
| 24 | delivery_state | varchar | 16 | 0 | Y | N | 未配送 | 发货状态:未配送,已配送 |
| 25 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 折扣 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | order_after_sale_id | int | 10 | 0 | N | Y | 订单售后id | |
| 2 | order_id | int | 10 | 0 | N | N | 订单ID | |
| 3 | order_number | varchar | 64 | 0 | Y | N | 订单号 | |
| 4 | goods_id | mediumint | 8 | 0 | N | N | 商品id:[0,8388607] | |
| 5 | title | varchar | 255 | 0 | Y | N | 商品标题 | |
| 6 | price | double | 10 | 2 | N | N | 0.00 | 价格 |
| 7 | price_ago | double | 10 | 2 | N | N | 0.00 | 原价 |
| 8 | num | int | 10 | 0 | N | N | 1 | 数量 |
| 9 | price_count | double | 8 | 2 | N | N | 0.00 | 总价 |
| 10 | user_id | int | 10 | 0 | N | N | 0 | 买家ID |
| 11 | merchant_id | mediumint | 8 | 0 | N | N | 0 | 商家ID |
| 12 | state | varchar | 16 | 0 | N | N | 待付款 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
| 13 | after_state | varchar | 16 | 0 | Y | N | 未审核 | 售后状态:未审核,未通过,已通过 |
| 14 | after_state_reply | varchar | 255 | 0 | Y | N | 售后回复 | |
| 15 | type | varchar | 255 | 0 | Y | N | 售后类型 | |
| 16 | content_desc | varchar | 255 | 0 | Y | N | 售后内容 | |
| 17 | imgs | varchar | 1000 | 0 | Y | N | 售后凭证 | |
| 18 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 19 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 标题: | |
| 3 | content | varchar | 255 | 0 | Y | N | 内容: | |
| 4 | url | varchar | 255 | 0 | Y | N | 链接: | |
| 5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
| 6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
| 2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
| 3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
| 4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
| 5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
| 6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
| 7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
| 8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
| 4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
| 5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
| 6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
| 8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| 10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
| 11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_chat_friend_id | int | 10 | 0 | N | Y | id | |
| 2 | user_id | int | 10 | 0 | N | N | 用户id | |
| 3 | friend_user_id | int | 10 | 0 | N | N | 用户好友id | |
| 4 | friend_user_name | varchar | 255 | 0 | Y | N | 好友名称 | |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_chat_group_id | int | 10 | 0 | N | Y | id | |
| 2 | group_id | int | 10 | 0 | Y | N | 群聊id | |
| 3 | group_name | varchar | 255 | 0 | Y | N | 群聊名称 | |
| 4 | user_id | int | 10 | 0 | Y | N | 用户id | |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_chat_read_id | varchar | 255 | 0 | N | Y | id | |
| 2 | user_id | int | 10 | 0 | Y | N | 接收人id | |
| 3 | send_user_id | int | 10 | 0 | Y | N | 发送人id | |
| 4 | group_id | int | 10 | 0 | Y | N | 群聊id | |
| 5 | type | int | 10 | 0 | Y | N | 类型1-点对点消息,2-群聊消息 | |
| 6 | create_time | timestamp | 19 | 0 | Y | N | CURRENT_TIMESTAMP | 时间 |
| 7 | message | text | 65535 | 0 | Y | N | 消息 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
| 3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
| 9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5系统实现
5.1买家用户功能实现
5.1.1前台首页
首页展示精选推荐和热销榜单,方便浏览。用户可通过搜索栏快速查找商品,分类导航帮助按类别浏览。个性化推荐基于用户历史,智能推送相关产品。界面设计简洁,确保快速加载。此外,首页显示最新促销和优惠信息,提升用户购物体验和满意度。如下图所示。

图5-1首页界面图
5.1.2用户注册
用户注册流程简便快捷,用户通过填写基本信息和设置登录凭证完成注册,确保账户安全。注册成功后,用户可以个性化设置个人偏好和通知选项,提升平台使用体验。注册信息将被安全地存储和管理,保障用户隐私和数据安全。如下图所示。

图5-2用户注册界面图
5.1.3用户登录
用户通过输入注册时设置的用户名和密码进行登录,系统将验证用户身份。若信息正确,用户将成功进入个人中心,访问各项功能。如果输入错误,系统会提示用户重新输入,提供找回密码的选项以帮助用户恢复账户访问。此外,平台支持记住密码功能,方便用户下次快速登录,提升用户体验和便捷性。如下图所示。

图5-3用户登录界面图
5.1.4聊天中心
聊天中心是买家与客服或卖家沟通的重要平台。用户可以即时发送消息,询问产品详情、订单状态或解决售后问题。聊天界面简洁直观,支持文字、图片和表情符号交流,提升互动体验。系统提供快捷回复功能,帮助用户快速获取常见问题的解答。同时,聊天记录保存,便于后续查询和服务跟进,确保用户问题得到及时解决和满意反馈。如下图所示。

图5-4聊天中心界面图
5.1.5农产品
用户可以通过平台查看农产品的详细信息,包括描述、价格、评价和图片。使用搜索功能或分类导航,用户能快速找到所需产品。选定商品后,点击购买按钮,将其加入购物车。确认订单信息后,选择支付方式完成付款。平台确保交易安全,并提供订单跟踪功能,让用户实时查看物流状态,享受便捷的购物体验。如下图所示。

图5-5农产品查看界面图

图5-6下单界面图
5.1.6个人中心
个人中心为用户提供便捷管理功能。个人首页展示用户信息和个性化推荐。订单配送模块让用户查看订单状态和物流信息,确保及时跟进。收藏夹功能方便用户保存喜爱的产品,便于后续购买。界面简洁直观,操作简单,提高用户管理个人信息和购物的便捷性。整体设计旨在提升用户体验和满意度。如下图所示。

图5-7配送信息查看界面图

图5-8收藏夹面图
5.2商家用户功能实现
5.2.1农产品管理
商家用户在平台上可以高效管理农产品。通过产品管理界面,商家可以添加、编辑和删除商品信息,包括名称、价格、库存和描述。上传高清图片,吸引买家关注。简洁的操作流程确保商家轻松管理店铺。如下图所示。

图5-9添加农产品界面
5.2.2订单管理
商家通过平台进行高效的订单管理,确保流程顺畅。系统自动汇总订单,支持批量处理和状态更新,方便跟踪每笔交易。商家可以查看详细的订单信息,包括商品、数量和客户数据。通过与库存系统集成,确保及时配货和发货。平台提供数据分析功能,帮助商家优化销售策略,提高运营效率和客户满意度。如下图所示。

图5-10订单管理界面
5.2.3订单售后
商家通过平台高效处理订单售后申请,确保客户满意。收到申请后,商家查看详细信息,快速评估问题。根据具体情况,商家可选择退换货、补偿或提供技术支持。平台提供标准化流程和模板,帮助商家高效回应。同时,保持与客户沟通,及时更新处理进展。妥善解决售后问题,提升服务质量和客户忠诚度。如下图所示。

图5-11订单售后处理界面
5.3管理员功能实现
5.3.1用户管理
管理员可以查看和编辑平台的所有用户信息,包括注册信息、权限设置和账户状态。通过后台管理界面,管理员可以对用户账户进行有效的监控和维护,确保平台的安全性和用户信息的保密性。如下图所示。

图5-12用户管理界面
5.3.2公告信息管理
管理员通过平台管理公告信息,确保及时传达重要消息。可以创建、编辑和发布公告,设置发布时间和可见范围。支持分类管理,让用户更便捷地查找相关信息。通过公告分析功能,管理员可查看阅读量和反馈,优化信息发布策略。简洁的界面和操作流程,确保公告管理的高效性和准确性,提高信息传递的有效性。如下图所示。

图5-13公告信息管理界面
5.3.3商城管理
管理员通过商城管理系统高效管理农产品和订单流程。农产品模块允许添加和更新产品信息,包括名称、价格、库存和描述,确保产品信息准确。分类列表功能帮助整理和优化产品分类,方便用户浏览和搜索。订单列表模块提供订单详情,支持状态更新和批量处理,确保订单处理高效。订单配送管理确保物流信息准确,实时更新运输状态,提高客户满意度。订单售后模块帮助快速响应退换货申请和客户反馈,提供多种解决方案,提升服务质量。通过数据分析功能,管理员可以优化运营策略,提高商城整体效率和客户体验。如下图所示。

图5-14商城管理界面
6系统测试
6.1系统测试目标
为了保证乡村振兴农产品销售系统的质量,使其能够稳定的运行,并排除其可能存在的未知隐患。解除软件可能存在的故障,理清楚测试与纠错的关系,如下图所示。

图6-1测试与纠错信息流程
6.2系统功能测试
通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。以下是详细的测试表:
表6-1用户注册登录测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 用户注册 | 输入正确的用户名和密码 | 注册成功,提示注册完成 |
| TC002 | 用户注册 | 输入已存在的用户名 | 注册失败,提示用户名已存在 |
| TC003 | 用户注册 | 输入格式错误的邮箱地址 | 注册失败,提示邮箱格式错误 |
| TC004 | 用户注册 | 不输入密码 | 注册失败,提示密码不能为空 |
| TC005 | 用户注册 | 输入弱密码(如123456) | 注册失败,提示密码强度不足 |
表6-2用户登录测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 用户登录 | 输入正确的用户名和密码 | 登录成功,进入主页 |
| TC002 | 用户登录 | 输入错误的用户名 | 登录失败,提示用户名不存在 |
| TC003 | 用户登录 | 输入错误的密码 | 登录失败,提示密码错误 |
| TC004 | 用户登录 | 未输入用户名或密码 | 登录失败,提示用户名或密码不能为空 |
| TC005 | 用户登录 | 多次输入错误密码 | 登录失败,提示账户已被锁定 |
表6-3农产品信息查看测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 农产品信息查看 | 查看所有农产品列表 | 显示所有农产品信息 |
| TC002 | 农产品信息查看 | 搜索特定农产品 | 显示相关农产品信息 |
| TC003 | 农产品信息查看 | 按分类查看农产品 | 显示分类下的农产品信息 |
| TC004 | 农产品信息查看 | 查看农产品详情 | 显示详细的产品信息 |
表6-4提交订单测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 提交订单 | 添加商品至购物车并提交订单 | 订单提交成功,显示订单详情 |
| TC002 | 提交订单 | 提交订单时未选择地址 | 订单提交失败,提示选择地址 |
| TC003 | 提交订单 | 使用优惠券提交订单 | 订单提交成功,显示折扣金额 |
| TC004 | 提交订单 | 库存不足时提交订单 | 订单提交失败,提示库存不足 |
表6-5申请售后测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 申请售后 | 提交退货申请 | 申请成功,等待审核 |
| TC002 | 申请售后 | 提交换货申请 | 申请成功,等待处理 |
| TC003 | 申请售后 | 在非售后期申请 | 申请失败,提示售后期限已过 |
| TC004 | 申请售后 | 未选择退换货原因提交申请 | 申请失败,提示选择原因 |
6.3测试结果总结
在本次测试中,我们详细验证了用户注册、用户登录、农产品信息查看、提交订单和申请售后五个模块。用户注册涵盖正常注册、用户名重复等场景,确保注册流程稳健。用户登录测试了正确登录和错误输入,保障账户访问安全。农产品信息查看模块的浏览、搜索及分类功能表现良好,用户可轻松获取信息。提交订单模块从购物车到确认流程顺畅,确保订单顺利提交。申请售后模块测试了退换货申请及期限限制,系统能有效处理请求,提高满意度。整体而言,各模块功能符合预期,为用户提供了优质体验。后续将根据测试结果进行优化,提升系统性能和用户满意度。
结 论
本文通过构建一个基于Java语言、Spring Boot框架和MySQL数据库的乡村振兴农产品销售系统,成功实现了优化乡村农产品销售渠道的目标。该系统有效解决了传统销售过程中信息不对称和渠道受限的问题,提升了农产品的市场竞争力。通过详尽的需求分析,系统功能设计涵盖了管理员、商家用户和买家用户三大角色,为各类用户提供了全面的解决方案。管理员能够高效管理平台运营,商家用户获得了便捷的产品管理与订单处理工具,而买家用户可享受无缝的购物体验。技术方案的实施确保了系统的稳定性和可扩展性,数据库设计支持大规模数据管理,提高了系统的响应速度和可靠性。整体而言,系统不仅为乡村农产品销售提供了坚实的技术支持,还为乡村经济的发展注入了新的活力。
通过乡村振兴农产品销售系统的设计和开发,我们验证了信息技术在推动乡村振兴中的重要作用,未来还将继续优化功能和用户体验,为实现城乡融合发展贡献力量。
参考文献
[1]王玉魁,李峰,乔彦超,杨森,张译文.基于Springboot与Vue框架的仓储管理系统设计与实现[J].河南科技,2024,51(18):29-33.
[2]Yuanrun Zhu.Contract Management System Based on SpringBoot and Vue[J].Advances in Computer, Signals and Systems,2024,8(5):
[3]李金忠,胡志明,陈建钢,陈涵轩,左左.基于SpringBoot和Uni-App框架的自习室平台的设计与实现[J].河北水利电力学院学报,2024,34(02):77-82.
[4]凌勇,李金忠,黄启华,王勤宇,秦嘉超.基于SpringBoot和Vue框架的高校统战工作服务信息管理系统的设计与实现[J].广东轻工职业技术学院学报,2024,23(02):16-23.
[5]王培培.基于SpringBoot的网上商城管理系统设计与实现[J].现代计算机,2024,30(07):117-120.
[6]郭甲天,陈婷,向阳.一种基于SpringBoot框架校园宿舍管理系统的设计与实现[J].电脑知识与技术,2024,20(07):37-40.
[7]吴昊,张丹.基于SpringBoot框架的大学生网上兼职系统设计与实现[J].电脑知识与技术,2023,19(35):68-72.
[8]Yu Yang.Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
[9]陈小燕,朱映辉,余晓春.基于SpringBoot+Vue的好农物商城的设计与实现[J].电脑知识与技术,2022,18(22):37-39.
[10]李宜镓.基于SpringBoot的电商秒杀系统的设计与实现[D].西安电子科技大学,2022.
[11]田松涛,段元梅.基于SpringBoot的线上商城平台设计[J].无线互联科技,2022,19(01):56-57.
[12]陈晗.基于RESTful的网上商城的设计与实现[D].首都经济贸易大学,2021.
[13]Fuyuan Cheng.Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J].Advances in Educational Technology and Psychology,2021,5(2):
[14]Guanhong Chen,Jiangming Xu.Design and implementation of efficient Learning platform based on SpringBoot Framework[J].Journal of Electronics and Information Science,2020,6(1):
[15]Jian Chen,Chen Jian,Pan Hailan.Design of Man Hour Management Information System on SpringBoot Framework[J].Journal of Physics: Conference Series,2020,1646(1):012136-.
致 谢
在本论文的撰写和系统开发过程中,我深刻体会到个人独立完成一项系统开发工作的挑战与成就感。首先,我要感谢我的导师,在整个研究和开发过程中给予了我无私的指导与建议。无论是在技术细节还是研究思路上,他都为我提供了宝贵的方向性指导,帮助我克服了许多难题。虽然整个开发过程是由我独立完成的,但导师的意见使我在遇到瓶颈时有了清晰的解决思路。
在开发过程中,我经历了从系统需求分析、架构设计到功能实现的完整过程。这不仅锻炼了我的编码能力,也让我在项目管理、时间安排和问题解决等方面有了长足的进步。我独立完成了系统的每一行代码,并通过反复测试和优化确保了系统的稳定性和性能。在遇到技术难题时,我通过查阅大量文献、技术文档和社区讨论,自主解决了各类问题,这个过程让我更加理解了技术的深度与广度。
同时,我也要感谢我的家人和朋友,他们在开发的整个过程中给予了我莫大的支持和鼓励,成为我坚持完成这项工作的动力。正是在这些力量的支持下,我才能独立完成这项系统开发并顺利完成论文的撰写。
1046

被折叠的 条评论
为什么被折叠?



