摘要
随着生鲜电商行业不断发展,传统的线下生鲜交易方式存在着信息透明度低、商品流通速度慢、交易体验差等不足。攀枝花地区生鲜资源丰富,但是缺少地方特色专业化的电商平台,不能实现供需双方的有效对接。建立一个包含生鲜展示、交易管理以及信息发布等各个方面的综合性电商平台,对提高区域生鲜流通效率、改善用户使用体验有着现实的意义。本课题以SpringBoot框架和Vue前端技术为基础,用MySQL数据库进行开发,使用IntelliJ IDEA开发工具,设计并实现攀枝花生鲜电商平台。
系统采用前后端分离架构,后端用SpringBoot实现业务逻辑,前端用Vue进行界面渲染,数据库保存用户、商品、订单等信息。平台有三个用户角色。普通用户登录后可以在生鲜商城里浏览商品,通过筛选功能找到想要的商品,将商品加入购物车并提交订单,确认收货后可以在订单页面对已完成的订单商品进行评价,还可以查看商城资讯和通知公告。商家用户登录之后就可以对生鲜商品进行添加、设置库存和价格,同时对用户的订单配送状态进行更新。管理员可以发布并管理生鲜商城的通知公告、商城资讯等内容,也可以进行生鲜商品上架、下架的审核和操作,对所有的订单以及配送过程进行监管,保证平台正常运转。
平台运行之后,实现了生鲜商品展示、交易处理、订单跟踪、资讯发布等功能,证明了该系统可以提高信息透明度,提高交易效率。系统给攀枝花地区生鲜资源整合提供可靠的技术支持,改善了用户的购物体验,也提高了商家的管理效率。
**关键词:**生鲜电商,SpringBoot,Vue,订单管理,信息共享
Abstract
With the continuous progress of the fresh e-commerce industry, traditional offline transactions have a lot of problems in the aspects of information disclosure and commodity flow in fresh food.Panzhihuahas lots of fresh goods, yet there's no special e-commerce site for locals, so it can be tough to link up supplies with what people want. Creating an e -- commerce which sells fresh foods as well as transactions,dispersal of appropriate information will be beneficial for the growth of fresh food in different areas. On top of theSpringBootframework,Vuefront endtechonology,MySQL Database, IntelliJ IDEA development tool, it has created and implemented thePanzhihuafresh food e-commerce platform.
It'sansystem of Frontend and Backend separated structure. Back end isspringbootto deal with business logic andfront endusevuefor interface display, the database storeusers,commodity,ordersand other information. The platform is for 3 kinds of people. Logged in, regular users can go through the fresh food store and find the things they want by filtering them out, putting goods into their carts and making purchases. After receiving confirmation,they can view the items of their completed order on the order page as well as the mall and the announcement of information. Log in, merchants can add new food items, set stock levels and price information, and update the delivery status of orders placed by users in their order list. Administrator duty: Publishes and modifies announcement notifications and mall information, manages the listing andunlistingof goods within the fresh food mall, and uniformly oversees all order and delivery procedures to maintain smooth operation on the platform.
After deployment, the core function like fresh food commodity display on theplatform,transactionprocessing,ordertracking and information announcement are realized which prove that this system can make transparent info and improve transaction. It gives trustworthy technical aid to the incorporation of fresh items inPanzhihuaregion, and it does contribute positively towards enhancing customer satisfaction with shopping and making better sense of things regarding vendors.
**Key words:**Fresh E-commerce,SpringBoot, Vue, Order Management, Information Sharing
第一章 绪论
1.1 研究背景与意义
攀枝花地区生鲜资源丰富,传统交易一直依靠线下市场和电话沟通,信息传递单向滞后,买卖双方数据割裂造成供需错配,交易效率低、商品流通成本高1。电脑化初期出现的信息展示网站虽然一定程度上提高了信息获取的速度,但是内容更新迟缓、交互深度不够,商家和消费者之间不能产生有效的互动,优质的生鲜产品信息不能沉淀下来,现有的模式已经不能满足现在对于即时性、即时配送和个性化消费体验的迫切需求2。开发攀枝花生鲜电商平台把信息发布、商品交易、订单追踪和资讯服务融合起来,直接提高生鲜流通效率,减少人为信息误差,促使供需双方资源实时对接和共享,对规范区域生鲜交易流程、提高用户参与质量、培育健康社区生态有实际推动作用,也给垂直领域地方特色电商服务提供可操作的参考范例。
1.2 国内外研究现状
1.2.1 国内现状
国内生鲜电商平台发展脉络是清楚的。早期的门户时代是以资讯展示为主,编辑单向推送商品信息,用户互动形式单一,生鲜交易还没有形成闭环3。垂直社区兴起以后,以地方特色农产品为载体的论坛模式也出现了,用户开始参与到商品评价和讨论中,信息交流由单向变为双向4。进入移动互联网阶段,专业生鲜电商系统逐渐趋于完善,以综合类生鲜平台为代表的平台企业依靠自建物流、供应链体系加强交易闭环,用户对于配送时效、商品品质的要求促使平台服务水平不断提高5。近些年来,区域特色生鲜平台重视线上线下融合,把本地资源同社区团购方式结合起来,在商品溯源以及用户评价沉淀方面有所进步6。目前国内平台对于数据驱动的运营以及精准营销的探索还在继续,但是对于地方资源禀赋的深入定制还存在不足,用户生成内容的价值挖掘还有待提高7。
1.2.2 国外现状
国外生鲜电商的发展也存在着由信息展示向深度服务转变的特点。早期平台大多依靠社交媒体属性来建立用户社群,主要进行商品信息的传播以及用户的评价分享,交易功能比较弱8。之后数据驱动的实时互动系统逐渐成为主流,平台把供应链数据和用户行为分析结合起来,从而达到个性化推荐和动态定价的目的9。欧美成熟的生鲜电商是以大型为主,重视会员制和定时配送的模式,用户面广,同本地农场、社区商业融合在一起10。欧洲的垂直平台只对精品生鲜、产地直供进行专门服务,用透明化的溯源机制来赢得用户的信任11。日韩市场更加重视即时配送和密集的网点设置,把生鲜购物同本地生活服务结合起来,商业生态整合得比较充分12。
1.3 主要研究内容
本课题以攀枝花生鲜电商平台为研究对象,是面向本地生鲜供需双方提供综合在线交易服务的平台,主要包含普通用户、商家、管理员三个主要角色。普通用户可以浏览生鲜商城的商品,下单购买,查看订单信息,发表对商品的评价,也可以查看商城的资讯;商家可以添加生鲜商品,查看订单列表,修改订单配送状态,也可以对订单进行配送;管理员可以管理通知公告,管理商城资讯,管理生鲜商城商品,管理订单列表,管理订单配送流程。按照软件工程规范依次完成需求分析、总体架构设计、功能模块划分、数据库设计、系统实现和测试,采用前后端分离的B/S架构,前端使用Vue框架配合后端使用Spring Boot框架,数据存储使用MySQL数据库,最终实现商品展示、交易处理、订单追踪、信息发布等主要功能模块,努力解决传统生鲜交易信息不对称、流通效率低下的实际问题。
第二章 相关技术介绍
2.1 SpringBoot框架
SpringBoot框架是Spring生态系统对应用配置方式不断改进的结果。早期的Spring项目在开发时要写很多XML配置文件,各个模块之间的依赖关系比较繁杂。随着项目的规模越来越大,配置文件的维护成本也逐渐增大,开发者处理配置细节所花费的时间越来越多13。该框架通过引入自动配置机制解决这一问题。项目启动时框架会对类路径下的依赖库进行扫描,根据预先设定好的条件来判断是否加载某个配置类。开发者在application.properties或application.yml文件中可以覆盖默认配置项,框架将这些外部化配置与自动配置结果合并。框架自带的嵌入式Servlet容器在运行时会启动服务进程,监听指定端口接受请求。请求到达之后,Spring MVC模块按照映射规则把请求分派到对应的控制器方法上,控制器方法调用业务逻辑组件处理数据,最后将响应结果返回给客户端。框架给出的starter依赖管理机制可以简化第三方库版本协调的工作量,项目构建时继承spring-boot-starter-parent来管理依赖版本,防止出现不同库之间版本不匹配的情况。在数据访问方面,Spring Data JPA或者MyBatis这样的持久层框架可以和SpringBoot无缝对接,框架会自动配置好数据源以及事务管理器,开发者只需要设置好数据库连接参数就能实现数据访问层的初始化。
2.2 Vue框架
Vue框架是用于创建用户界面的渐进式JavaScript库。该框架的核心库主要是视图层,用依赖追踪的方式来实现响应式。在初始化阶段,框架会遍历数据对象的属性,使用Object.defineProperty方法把每一个属性都变成getter和setter的形式,从而达到对数据变化的监听。当组件渲染函数被调用的时候,渲染过程中所访问到的数据属性会被当作依赖来记录,框架会为每一个属性创建一个观察者列表。数据发生改变的时候,setter函数就会引发观察者更新机制,框架就会异步批量执行组件重新渲染的操作,从而更新真实的DOM节点。组件化开发模式下,每一个vue组件都由模板、逻辑、样式三大部分组成,模板会被编译器转译成虚拟DOM渲染函数。虚拟DOM技术在每次更新的时候只计算出新旧节点树的最小差异,把实际的DOM操作控制在必要范围内。框架内置的指令系统提供声明式的DOM操作方式,v-bind指令实现属性的动态绑定,v-on指令处理用户的交互事件,v-for指令根据数据列表生成重复结构。在路由管理上,Vue Router库和框架一起构建单页面应用,路由配置定义路径和组件之间的对应关系。浏览器URL发生变化时,路由机制会加载对应的组件并替换视图容器的内容,整个过程不会引起页面的刷新14。状态管理上,Vuex使用集中式的存储方式,所有的组件共享一个状态树,组件通过提交mutation来改变状态,通过action来进行异步操作。
2.3 MySQL数据库
MySQL数据库是关系型数据库管理系统,是由瑞典MySQL AB公司开发的。该系统采用客户端-服务器架构,服务器进程监听客户端的连接请求。客户端和服务器建立连接之后,服务器就给每一个连接分配一个线程来处理后面的查询。在查询处理阶段,解析器先对SQL语句做词法分析、语法分析,得到解析树结构。优化器根据表的统计信息、索引分布情况以及查询条件来评价不同的执行计划的代价,选择代价最低的执行计划进行执行15。执行引擎根据优化器生成的执行计划调用存储引擎接口,存储引擎负责实际的数据读写操作。InnoDB存储引擎是默认的存储引擎,采用行级锁、MVCC多版本并发控制。MVCC用每一个行数据来维护一个版本快照,读操作读取创建时间早于当前事务的版本,写操作创建新的版本,从而达到读写操作互不干扰的目的。事务提交的时候,重做日志会记录下所有的修改操作,这样即使系统出现故障,也能通过重放日志来恢复已经提交的事务。索引结构上B+树索引把数据存放在叶子节点中,非叶子节点保存键值和指向子节点的指针,树的高度保持在较低的水平,从而减少每次查询时的磁盘I/O次数。缓冲池管理机制把经常被访问的数据页、索引页存入内存中,如果缓冲池空间不够用,就用LRU算法淘汰最不常用的页面。
2.4 IntelliJ IDEA集成开发环境
IntelliJ IDEA集成开发环境由JetBrains公司开发,提供Java及多种编程语言的开发支持。IDE的代码分析引擎在后台不断地解析项目源代码,从而得到一个完整的抽象语法树和符号引用表。当开发者在编辑器里输入代码的时候,引擎依照语法树结构立刻剖析上下文,给出代码补全建议清单。补全建议按照相关性排序,常用API以及变量名称排在前面。引擎利用索引来保存类型定义、方法声明以及变量引用之间的关系,开发者用快捷键就可以直接跳转到元素的定义处或者查找所有引用该元素的位置。重构功能依靠代码结构分析,重命名操作会把所有的引用位置名称都改变,方法签名改变的时候引擎会自动调整调用处的参数传递方式。项目构建环节里,IDE自带了Maven、Gradle这些构建工具,开发者在界面里可以操作构建生命周期里的各种阶段16。调试器支持断点设置、变量监视,程序执行到断点处会暂停,开发者可以查看当前调用栈和局部变量的实时值。版本控制集成功能把Git、SVN等工具的操作整合到IDE界面中,文件差异对比视图显示修改前后代码行的变化,提交对话框允许开发者选择要提交的文件并填写提交信息。在数据库工具窗口中,开发者配置好数据库连接之后就可以直接执行SQL查询语句,查看表结构和数据内容,IDE的SQL语法高亮和自动补全功能可以给编写查询语句提供帮助。
第三章 系统分析
3.1 可行性分析
3.1.1 技术可行性
系统使用前后端分离的B/S架构,前端用Vue框架来搭建用户界面,后端用Spring Boot框架进行业务逻辑处理,数据存储使用MySQL关系型数据库。Vue框架对于单页面应用的开发有着成熟的组件化方案,Spring Boot框架给Web应用开发赋予了全面的支持,MySQL数据库可以满足中小型电商平台的数据存储要求。开发人员有以上技术栈的基本应用能力,可以做编码实现和调试。就性能而言,在本地部署下一台服务器能够满足一般的并发请求,使用索引来提高数据库的查询速度。从安全角度来讲,用参数校验和SQL预编译来防止常见的攻击。因此系统技术上是可行的。
3.1.2 操作可行性
目标用户群体包括普通消费者、本地商家、平台管理员,这三种用户都有一定的计算机操作基础。普通用户在购物场景中习惯于从商品列表浏览、购物车结算、订单追踪的路径完成交易,系统的操作流程和主流电商平台一致。商家日常经营中要管理商品信息和订单配送,将这两类操作集中展示,降低学习成本。管理员对平台的内容和订单进行统一管理,操作界面按照功能模块分块,符合后台管理系统的基本结构。上线之后系统运行状态良好,后续的维护工作由开发人员来完成,功能调整可以利用现有的代码结构来进行迭代。因此系统在操作上是可行的。
3.1.3 市场可行性
攀枝花地区的生鲜资源比较丰富,芒果、枇杷、石榴等特色农产品产量比较稳定,本地消费者对新鲜农产品的购买需求一直存在。传统的交易方式中消费者大多通过线下市场、微信群、电话等途径进行购买,信息获取渠道比较分散,供需匹配效率低。现有的线上渠道大多都是综合性的电商平台,没有专门为本地生鲜资源定制的交易系统。本系统主要面向区域生鲜资源整合,把本地特色商品集中展示出来,给消费者提供方便快捷的线上购物平台,为商家提供规范的商品发布和订单管理工具,在本地化服务方面形成差异化定位。因此系统在市场方面是可行的。
3.1.4 社会可行性
系统设计和开发符合国家有关计算机信息系统安全保护的规定,用户的个人信息只用在订单处理和配送联系上,不会向第三方提供。商品信息发布符合电子商务领域有关的管理规定,商家发布的内容要经过管理员审核之后才可以上线。系统投入使用之后,给本地生鲜产品提供线上展示窗口,促进农户和小型商户的销售渠道发展,消费者有更加方便的购买方式。平台内容管理机制对于用户的评论加以监管,阻止不合适的言论扩散。因此,系统在社会上是可行的。
3.1.5 经济可行性
项目投入主要是开发阶段人力成本,开发人员用已有的计算机设备编码、测试,不需要另外购买硬件资源。后端采用的是Spring Boot开源框架,前端使用的是Vue开源技术栈,数据库使用的是MySQL免费版本,开发工具选择的是IntelliJ IDEA社区版或者已经授权的版本,软件投入小。系统上线之后可以运行在普通的服务器或者本地主机上,日常运行成本低。系统给本地生鲜交易提供线上平台,从资源整合和交易效率提高角度具有实际的应用价值。因此该系统在经济上是可行的。
3.2 功能需求分析
UML用例图是描述系统功能需求的图形化工具,用例图用表示系统与外部参与者之间交互关系的方式,来说明系统的功能。用例图用用例来表示系统可以实现的功能,参与者是和系统交互的各种用户或者外部系统。用例图在分析、设计阶段可以使用,保证系统功能完整、正确,使开发者和客户之间有共同语言。用直观的图示,UML用例图给出了系统功能和角色之间的关系。本文将根据角色模块对系统进行需求分析。
3.2.1 用户功能
用户进入系统后可以浏览生鲜商城中展示的商品信息,将选中的商品加入购物车并完成下单操作。下单后用户可以在我的订单中查看订单状态,对已成交的商品进行评价。用户可以查看商城资讯栏目中发布的平台动态信息。用户角色用例图如下图3-1所示。
图3-1用户用例图
3.2.2 商家功能
商家登录系统后可以添加新的生鲜商品,填写商品名称、价格、库存等信息。商家在订单列表中查看用户提交的订单,根据订单状态进行配送操作并更新配送进度。商家角色用例图如图3-2所示。
图3-2商家用例图
3.2.3 管理员功能
管理员登录系统后可以对通知公告进行发布和编辑操作,管理商城资讯内容的增删改查。管理员在生鲜商城管理模块中控制商品的上架与下架状态,在订单列表中查看全部订单信息,并对订单配送流程进行统一监管。管理员角色用例图如图3-3所示。
图3-3管理员用例图
3.3 非功能需求分析
1.可用性需求
系统可用性要求系统有高可用性架构,在用户高并发的时候可以保证系统的稳定运行。系统应该具有快速恢复的特点,当发生故障的时候能够及时完成自我修复。为了使用户能够快速地使用本系统,本系统的响应速度以及延迟要保持在较低的水平上。系统应该具有负载均衡的功能,可以将多个服务器上的请求分发出去,防止出现单点故障导致整个系统瘫痪的情况。
2.可靠性需求
系统可靠性是指系统长时间工作时不能出现故障或者中断。系统要构建起完备的数据备份与恢复体系,在出现硬件故障或者其它灾难的时候,保证数据不会丢失,并且可以迅速地回到正常工作状态。系统各个服务和组件应该具有容错性,在部分组件失效的时候,可以自动切换到备用服务。
3.安全性需求
系统的安全性要求用户的个人信息、交易记录等敏感数据必须保密。系统需要对用户传送的数据采取加密方式来加以保护,从而保证传输过程中数据不会被窃取、修改。系统要实行访问控制,用户只能访问自己有权限的资源,不能让无权的用户进入系统。系统要具有身份认证的功能,防止恶意用户冒充别人的身份来操作。为了防止外部攻击,系统应该设置防火墙、入侵检测系统等安全防护手段,保证系统不被网络攻击。
第四章 系统设计
4.1 系统架构设计
系统用模块化分层的方式把前端展示、业务处理、数据存储分开。用户操作界面用Vue框架创建,页面交互的时候使用Axios库去向服务端发出异步请求。后端使用Spring Boot框架接收请求之后,控制器层解析参数,然后调用对应的service接口,服务层封装具体的业务逻辑来完成数据处理。数据持久化使用MySQL关系型数据库存储商品信息、订单记录、用户数据等主要内容,用事务来保证多表操作的一致性17。系统整体结构是由前端交互层、后端业务逻辑层、数据持久化层、本地缓存层四个部分组成,各个层次之间通过一定的接口进行交流,降低模块间耦合度。系统架构图如下图4-1所示。

图4-1系统架构图
4.2 系统结构功能设计
系统根据用户、商家、管理员这三个角色的不同,给它们提供不同的功能集。普通用户可以在生鲜商城中浏览商品、将商品加入购物车并完成下单,对已完成的订单进行评论操作,查看平台发布的商城资讯。商家对生鲜商品进行添加、管理,查看用户订单列表,更新配送状态。管理员负责发布和管理生鲜商城商品上架、下架,对下单、配送进行监控。该系统的功能结构如图4-2所示。系统功能结构图如图4-2所示。
图4-2系统功能结构图
4.3 系统流程设计
4.3.1 总体业务流程图设计
系统的总体业务流程是从用户访问平台开始的,用户浏览生鲜商城的商品信息后选择需要的商品添加到购物车,提交订单。订单产生之后系统会记录订单的状态,商家在订单列表中查看新的订单并进行配送,用户确认收货之后订单就完成了。用户可以发表自己的评论,管理员对商品信息、订单情况、内容发布进行监管。总体业务流程图4-3如下所示。

图4-3系统总体业务流程图
4.3.2 商品下单流程设计
用户登录后进入生鲜商城页面,通过分类筛选或搜索定位目标商品,查看商品详情后确认购买数量,将商品加入购物车。用户在购物车中核对商品信息与总价,选择收货地址后提交订单,系统生成订单记录并跳转至支付环节,订单状态更新为待发货。商品下单流程如图4-4所示。
图4-4商品下单流程图
4.3.3 订单配送流程设计
商家登录系统之后进入到订单列表页面,查看状态为待发货的订单,根据订单中商品信息和收货地址进行拣货打包。商家发货之后把订单的配送状况改成发货状态,并记载下发货时间及配送手段,用户可在我的订单里查看配送情形。订单配送流程图见图4-5。
图4-5订单配送流程图
4.4 数据库设计
关系型数据库用二维表结构来组织数据,用主外键关联来保证实体之间的引用完整性。规范化理论来指导表结构的设计,把重复的数据分拆到独立的表里,从而缩减冗余。本系统中的MySQL主要起到数据持久化的作用,事务机制可以保证订单的创建以及库存的减少等操作是原子的,索引的设计可以加快商品查询和订单检索的速度。数据一致性依靠外键约束和业务层校验一起保证18。
4.4.2 数据库表设计
数据库表设计就是根据业务需求来确定数据库表的结构、字段类型和关系。通过规范化的设计,保证数据的完整性、一致性、效率,避免冗余的数据,为后续的数据查询、存储、维护提供清晰的结构。以下是系统的数据库表设计展示。商品表主要是用来存储生鲜商品的基本信息。主要包括商品id、商品名称、价格、库存等字段。如表4-1所示。
表4-1商品表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 商品id | int | 11 | 是 | 是 | 商品唯一标识 |
| 2 | 商品名称 | varchar | 125 | 否 | 否 | 商品标题 |
| 3 | 价格 | double | - | 是 | 否 | 销售价格 |
| 4 | 库存 | int | 11 | 是 | 否 | 商品库存数量 |
| 5 | 商家id | int | 11 | 否 | 否 | 所属商家标识 |
订单表主要是用来记录用户提交的购买信息。主要包括订单id、订单号、用户id、商品id、数量、总价、订单状态等字段。如表4-2所示。
表4-2订单表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 订单id | int | 11 | 是 | 是 | 订单唯一标识 |
| 2 | 订单号 | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | 用户id | int | 11 | 是 | 否 | 下单用户标识 |
| 4 | 商品id | int | 11 | 是 | 否 | 购买商品标识 |
| 5 | 数量 | int | 11 | 是 | 否 | 购买数量 |
| 6 | 总价 | double | - | 是 | 否 | 订单总金额 |
| 7 | 订单状态 | varchar | 16 | 是 | 否 | 订单当前状态 |
用户表主要是用来存储系统用户的账户信息。主要包括用户id、用户名、密码、手机号、用户类型等字段。如表4-3所示。
表4-3用户表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 用户id | int | 11 | 是 | 是 | 用户唯一标识 |
| 2 | 用户名 | varchar | 16 | 是 | 否 | 登录账号 |
| 3 | 密码 | varchar | 64 | 是 | 否 | 登录密码 |
| 4 | 手机号 | varchar | 11 | 否 | 否 | 联系方式 |
| 5 | 用户类型 | smallint | - | 是 | 否 | 用户身份类别 |
商家表主要是用来存储商家用户的详细信息。主要包括商家id、商家姓名、店铺名称、商家电话、用户id等字段。如表4-4所示。
表4-4商家表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 商家id | int | 11 | 是 | 是 | 商家唯一标识 |
| 2 | 商家姓名 | varchar | 64 | 否 | 否 | 联系人姓名 |
| 3 | 店铺名称 | varchar | 64 | 否 | 否 | 店铺名称 |
| 4 | 商家电话 | varchar | 16 | 否 | 否 | 联系电话 |
| 5 | 用户id | int | 11 | 是 | 否 | 关联账户标识 |
收货地址表主要是用来存储用户的收货信息。主要包括地址id、用户id、收货人、手机号、地址等字段。如表4-5所示。
表4-5收货地址表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 地址id | int | 11 | 是 | 是 | 地址唯一标识 |
| 2 | 用户id | int | 11 | 是 | 否 | 所属用户标识 |
| 3 | 收货人 | varchar | 32 | 否 | 否 | 收件人姓名 |
| 4 | 手机号 | varchar | 13 | 否 | 否 | 联系电话 |
| 5 | 地址 | varchar | 255 | 是 | 否 | 详细地址 |
购物车表主要是用来暂存用户待购买的商品。主要包括购物车id、用户id、商品id、数量、规格等字段。如表4-6所示。
表4-6购物车表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 购物车id | int | 11 | 是 | 是 | 购物车记录标识 |
| 2 | 用户id | int | 11 | 是 | 否 | 所属用户标识 |
| 3 | 商品id | int | 11 | 是 | 否 | 添加商品标识 |
| 4 | 数量 | int | 11 | 是 | 否 | 购买数量 |
| 5 | 规格 | varchar | 64 | 否 | 否 | 商品规格选项 |
评论表主要是用来存储用户对商品的评价内容。主要包括评论id、用户id、商品id、内容、评分等字段。如表4-7所示。
表4-7评论表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 评论id | int | 11 | 是 | 是 | 评论唯一标识 |
| 2 | 用户id | int | 11 | 是 | 是 | 评论用户标识 |
| 3 | 商品id | int | 11 | 是 | 否 | 被评商品标识 |
| 4 | 内容 | longtext | - | 否 | 否 | 评论正文 |
| 5 | 评分 | int | 11 | 是 | 否 | 评分等级 |
物流配送表主要是用来记录订单的发货与签收信息。主要包括物流id、订单号、配送状态、发货日期、签收状态等字段。如表4-8所示。
表4-8物流配送表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 物流id | int | 11 | 是 | 是 | 物流记录标识 |
| 2 | 订单号 | varchar | 64 | 否 | 否 | 关联订单编号 |
| 3 | 配送状态 | varchar | 64 | 否 | 否 | 当前配送进度 |
| 4 | 发货日期 | date | - | 否 | 否 | 发货时间 |
| 5 | 签收状态 | varchar | 64 | 否 | 否 | 收货确认状态 |
商城资讯表主要是用来存储平台发布的资讯内容。主要包括资讯id、标题、内容、创建时间等字段。如表4-9所示。
表4-9商城资讯表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 资讯id | int | 11 | 是 | 是 | 资讯唯一标识 |
| 2 | 标题 | varchar | 125 | 是 | 否 | 资讯标题 |
| 3 | 内容 | longtext | - | 否 | 否 | 资讯正文 |
| 4 | 创建时间 | timestamp | - | 是 | 否 | 发布时间 |
通知公告表主要是用来存储管理员发布的公告信息。主要包括公告id、标题、内容、创建时间等字段。如表4-10所示。
表4-10通知公告表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 公告id | int | 11 | 是 | 是 | 公告唯一标识 |
| 2 | 标题 | varchar | 125 | 是 | 否 | 公告标题 |
| 3 | 内容 | longtext | - | 否 | 否 | 公告正文 |
| 4 | 创建时间 | timestamp | - | 是 | 否 | 发布时间 |
第五章 系统实现
5.1 用户功能实现
5.1.1 生鲜商城功能实现
用户访问生鲜商城页面时,前端请求被GoodsController的getGoodsList方法接收。该方法调用GoodsService查询数据库中的商品信息,将查询结果封装为响应数据返回前端,前端通过Vue框架渲染商品列表。生鲜商城界面如图5-1所示。
图5-1生鲜商城界面
核心代码实现如下:
@GetMapping("/list")
public ResultgetGoodsList(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
PageInfo<Goods>goodsPage=goodsService.getGoodsPage(page, size);
returnResult.success(goodsPage);
}
5.1.2 下单商品功能实现
用户提交订单时,OrderController的createOrder方法处理请求。该方法接收订单参数后调用OrderService的createOrder方法,在事务中完成订单生成与库存扣减操作,最终返回订单创建结果。下单商品界面如图5-2所示。
图5-2下单商品界面
核心代码实现如下:
@PostMapping("/create")
public ResultcreateOrder(@RequestBodyOrderRequestorderRequest) {
LongorderId=orderService.createOrder(orderRequest);
returnResult.success(orderId);
}
5.1.3 评论商品功能实现
用户发表商品评论时,CommentController的addComment方法接收评论内容与商品信息。该方法调用CommentService保存评论记录,同时更新对应商品的评论计数,完成后返回操作成功状态。评论商品界面如图5-3所示。
图5-3评论商品界面
核心代码实现如下:
@PostMapping("/add")
public ResultaddComment(@RequestBody Comment comment) {
booleansuccess =commentService.saveComment(comment);
returnsuccess ?Result.success() :Result.error("评论失败");
}
5.1.4 我的订单功能实现
用户查看个人订单时,OrderController的getUserOrders方法根据当前登录用户标识查询订单列表。该方法调用OrderService从数据库中检索用户相关订单记录,按创建时间倒序排列后返回前端展示。我的订单界面如图5-4所示。
图5-4我的订单界面
核心代码实现如下:
@GetMapping("/my")
public ResultgetUserOrders(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
PageInfo<Order> orders =orderService.getOrdersByUserId(CurrentUser.getId(), page, size);
returnResult.success(orders);
}
5.1.5 商城资讯功能实现
用户查阅平台资讯时,ArticleController的getArticleList方法响应请求。该方法调用ArticleService从数据库中分页查询资讯列表,返回资讯标题、发布时间及内容摘要信息。商城资讯界面如图5-5所示。
图5-5商城资讯界面
核心代码实现如下:
@GetMapping("/list")
public ResultgetArticleList(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
PageInfo<Article> articles =articleService.getArticlePage(page, size);
returnResult.success(articles);
}
5.3 管理员功能实现
5.3.1 通知公告功能实现
管理员发布通知公告时,NoticeController的addNotice方法接收公告内容。该方法调用NoticeService将公告信息保存至数据库,公告状态设置为已发布,完成后返回成功响应。管理通知公告界面如图5-9所示。
图5-9管理通知公告界面
核心代码实现如下:
@PostMapping("/add")
public ResultaddNotice(@RequestBody Notice notice) {
notice.setCreateTime(newDate());
noticeService.save(notice);
returnResult.success();
}
5.3.2 管理商城资讯功能实现
管理员管理商城资讯时,ArticleController的updateArticle方法接收资讯修改内容。该方法调用ArticleService执行资讯更新操作,同时记录修改时间,返回更新结果。管理商城资讯界面如图5-10所示。
图5-10管理商城资讯界面
核心代码实现如下:
@PutMapping("/update")
public ResultupdateArticle(@RequestBody Article article) {
article.setUpdateTime(newDate());
articleService.updateById(article);
returnResult.success();
}
5.3.3 管理生鲜商城功能实现
管理员管理生鲜商城商品时,GoodsController的updateStatus方法接收商品标识与上下架状态。该方法调用GoodsService修改商品上架状态,审核通过的商品方可展示在前端。管理生鲜商城界面如图5-11所示。
图5-11管理生鲜商城界面
核心代码实现如下:
@PutMapping("/status")
public ResultupdateStatus(@RequestParam LonggoodsId,
@RequestParam Integer status) {
goodsService.updateStatus(goodsId, status);
returnResult.success();
}
5.3.4 管理订单列表功能实现
管理员查看全部订单时,OrderController的getAllOrders方法接收分页参数。该方法调用OrderService从数据库中查询所有订单记录,按创建时间倒序排列返回。管理订单列表界面如图5-12所示。
图5-12管理订单列表界面
核心代码实现如下:
@GetMapping("/all")
public ResultgetAllOrders(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
PageInfo<Order> orders =orderService.getAllOrders(page, size);
returnResult.success(orders);
}
第六章 系统测试
6.1 测试目的
系统测试就是对攀枝花生鲜电商平台的各项功能进行检验,看系统在正常和异常的输入条件下能否稳定运行,数据是否一致。测试过程涉及用户端、商家端和管理员端主要业务操作,重点放在商品浏览、订单流转、配送管理、内容发布等重要环节的业务逻辑是否正确上,保证系统可以正确地处理交易流程中状态变化以及数据同步。
6.2 测试方法
使用黑盒测试为主的方法,按照系统的功能需求来设计测试用例,对每一个主要模块进行功能上的检验。模拟真实的用户操作场景,分别从普通用户、商家、管理员这三个角色的角度进行操作,输入正常的测试数据和异常的测试数据来检验系统的响应机制。测试用例包括商品信息展示、订单产生与流转、评价发表、商品经营、订单配送、内容操控等业务流程,用对比预期结果与实际结果的方式来考察功能是否完备20。
6.3 测试内容
生鲜商城测试主要验证商品信息的展示完整性与筛选功能的准确性,测试目标在于确保用户能够正确浏览商品列表并获取商品详情。生鲜商城测试如表6-1所示。
表6-1生鲜商城测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 生鲜商城 | 商品列表展示 | 进入生鲜商城页面 | 正常显示商品列表 | 符合预期 | 测试成功 |
| 生鲜商城 | 商品详情查看 | 点击商品进入详情页 | 显示完整商品信息 | 符合预期 | 测试成功 |
| 生鲜商城 | 分类筛选 | 选择商品分类进行筛选 | 显示对应分类商品 | 符合预期 | 测试成功 |
下单商品测试主要验证订单生成过程中商品库存扣减的准确性与订单状态变更的正确性,确保交易流程能够完整执行。下单商品测试如表6-2所示。
表6-2下单商品测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 下单商品 | 正常下单 | 选择商品并提交订单 | 生成订单记录 | 符合预期 | 测试成功 |
| 下单商品 | 库存不足下单 | 提交超出库存数量的订单 | 提示库存不足 | 符合预期 | 测试成功 |
| 下单商品 | 未登录下单 | 未登录状态下提交订单 | 跳转登录页面 | 符合预期 | 测试成功 |
评论商品测试主要验证用户购买完成后对商品发表评价的功能是否完整,以及评价内容在商品页面的展示效果。评论商品测试如表6-3所示。
表6-3评论商品测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 评论商品 | 发表评价 | 填写评价内容并提交 | 评价成功保存 | 符合预期 | 测试成功 |
| 评论商品 | 评价展示 | 查看商品详情页 | 显示已发表评价 | 符合预期 | 测试成功 |
| 评论商品 | 空内容提交 | 不填写评价内容直接提交 | 提示输入内容 | 符合预期 | 测试成功 |
添加生鲜商品测试主要验证商家发布商品时信息录入的完整性与商品上架前审核流程的正确执行。添加生鲜商品测试如表6-4所示。
表6-4添加生鲜商品测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 添加生鲜商品 | 正常添加商品 | 填写商品信息并提交 | 商品进入待审核 | 符合预期 | 测试成功 |
| 添加生鲜商品 | 必填项缺失 | 未填写必填信息提交 | 提示信息不完整 | 符合预期 | 测试成功 |
| 添加生鲜商品 | 重复商品名称 | 提交已存在商品名称 | 提示商品已存在 | 符合预期 | 测试成功 |
订单列表测试主要验证商家端订单信息的准确展示与订单状态筛选功能的有效性,确保商家能够及时处理用户订单。订单列表测试如表6-5所示。
表6-5订单列表测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 订单列表 | 订单列表展示 | 进入订单列表页面 | 显示所有订单记录 | 符合预期 | 测试成功 |
| 订单列表 | 状态筛选 | 选择订单状态进行筛选 | 显示对应状态订单 | 符合预期 | 测试成功 |
| 订单列表 | 订单详情查看 | 点击查看订单详情 | 显示完整订单信息 | 符合预期 | 测试成功 |
订单配送测试主要验证商家更新订单配送状态时流程的正确性,以及用户端能够同步获取配送进度信息。订单配送测试如表6-6所示。
表6-6订单配送测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 订单配送 | 更新配送状态 | 选择订单并更新配送状态 | 状态变更成功 | 符合预期 | 测试成功 |
| 订单配送 | 用户端状态同步 | 查看我的订单页面 | 显示更新后配送状态 | 符合预期 | 测试成功 |
| 订单配送 | 状态逆向操作 | 已发货订单退回待发货 | 操作被拒绝 | 符合预期 | 测试成功 |
管理订单配送测试主要验证管理员对平台所有订单的配送流程进行监管与干预的功能完整性,确保异常订单能够及时处理。管理订单配送测试如表6-7所示。
表6-7管理订单配送测试用例表
| 模块名称 | 测试内容 | 操作 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|---|
| 管理订单配送 | 查看所有订单 | 进入订单管理页面 | 显示全部订单记录 | 符合预期 | 测试成功 |
| 管理订单配送 | 干预配送状态 | 对异常订单修改配送状态 | 状态修改成功 | 符合预期 | 测试成功 |
| 管理订单配送 | 订单检索 | 按订单号搜索订单 | 显示目标订单 | 符合预期 | 测试成功 |
测试结论
攀枝花地区生鲜资源丰富但是传统的交易方式存在着信息不对称、流通效率低下的问题,创建专业的线上电商平台有利于整合本地资源、提高供需对接的效率。本文主要研究的是攀枝花生鲜电商平台,解决线下交易商品信息传递慢、订单处理不及时、配送跟踪难等问题。系统以Spring Boot为底层技术,Vue为前端技术为基础,采用前后端分离的架构方式,用MySQL数据库进行数据的存储,实现生鲜商品展示、在线交易、订单管理、配送追踪、资讯发布等功能,满足了设计的要求。
研究工作依照软件工程规范,从需求分析阶段确定普通用户、商家、管理员这三种角色的功能范围,然后进入系统设计环节,完成功能结构的划分以及数据库的创建,最后在编码实现阶段,依照B/S架构构建起完整的业务逻辑。前端采用Vue搭建交互界面,后端用Spring Boot处理业务请求以及数据传递,数据库设计根据规范要求保证数据唯一。系统实现了普通用户生鲜浏览、订单提交、商家商品管理、订单配送、管理员内容审核、业务监管等六种主要功能,三个角色的业务流程构成完整的业务闭环,可以满足区域生鲜电商的基本运营需求。
由于开发周期和自身能力所限,在系统的某些功能上还存在着不足。支付环节使用模拟的方式进行处理,没有和真实的第三方支付接口对接。物流配送模块只实现状态更新的功能,并没有路径规划以及实时定位追踪的能力。数据分析层面只做基础的统计工作,并没有加入用户行为分析或者销售趋势预测等深层次的挖掘功能。系统部署在本地环境里,并没有对高并发的情况做压力测试以及性能改善工作。
后续工作可以从几个方面进行改善,对接微信支付或者支付宝接口完成交易闭环、用地图服务API实现配送路径可视化与实时追踪。根据用户的过去订单数据来创建推荐算法,从而提高商品展示的个性化程度。将系统迁移到云服务器上,使用容器化的方式进行部署,可以提高服务的稳定性、扩展性。该平台给攀枝花地区生鲜资源线上整合提供可行的技术方案,有利于地方农产品的流通,可以改善用户的购物体验
总结
攀枝花地区生鲜农产品资源丰富,但是传统的交易方式一直依靠线下市场和零散的沟通,存在着信息传播滞后、供需匹配效率低、交易流程不规范等问题。创建专业的线上电商平台可以整合本地生鲜资源,提高商品的流通速度和用户的购物体验。本课题以攀枝花生鲜电商平台为研究对象,使用Spring Boot和Vue前后端分离架构,用MySQL数据库进行系统的设计,实现了生鲜商品展示、在线下单、订单跟踪、商品评论、资讯发布、配送管理等功能,达到了预期的设计目的。
研究工作按照软件工程规范流程依次进行。需求分析阶段确定出普通用户、商家、管理员这三种角色的功能范围以及交互方式。系统设计阶段完成总体架构规划、功能模块划分和数据库建模,用B/S架构实现跨平台访问,数据库设计按照规范化原则保证数据的一致性。编码阶段采用Spring Boot搭建后端业务逻辑,用Vue框架完成前端界面渲染,三类角色在平台上的业务协同由界面协同、数据交互协同、系统协同三个部分组成,普通用户可以完成商品浏览、下单操作,商家可以完成商品发布、订单配送,管理员可以进行内容审核、业务监管,各个模块之间通过明确的接口调用来实现数据流转。系统测试阶段对核心功能进行检验,保证运行稳定。
由于开发周期以及个人能力所限,在系统的某些功能实现上还存在着不足。支付环节采取模拟的方式处理,没有对接真实的第三方支付接口,交易过程还没有形成完整的闭环。物流配送模块只完成了状态的变化,没有实现实时路径规划和位置跟踪。数据分析层面只做基础的统计展示,并没有加入用户行为分析、销售趋势预测等深层次的挖掘功能。系统部署在本地开发环境当中,并没有对高并发访问情况下的性能展开测试以及改良。
后续的工作可以从各个方面进行改进。支付模块可以对接微信支付或者支付宝接口,完善交易闭环,提高用户的信任度。配送功能可以采用地图服务API进行配送路径的可视化和实时的位置跟踪。从数据层面出发,可以依靠用户的过去订单以及浏览记录来创建推荐算法,从而提高商品展示的个性化程度。系统可以迁移到云服务器,用容器化的方式部署,从而提高系统的稳定性、可扩展性。该平台给攀枝花地区生鲜资源线上整合提供可行的技术方案,对促进地方农产品流通、改善用户购物体验有实际的应用价值
参考文献
1 AymanU ,AkashA TM ,AkhterT ,et al.BanglaEcomReviewCorpus: A dataset for e-commerce product review sentiment analysisJ.Datain Brief,2026,66112663-112663.
2 曹晨.豆包开启AI购物内测电商平台加码"一句话购物"N.证券时报,2026-03-20(A05).
3 何嘉扬,李权格.种业新品种在人工智能电商平台的营销机制与推广策略J.分子植物育种,2026,24(06):2083-2088.
4 潘帅.电商平台"二选一"行为的《反不正当竞争法》规制探析J.中国价格监管与反垄断,2026,(03):30-32.
5 公衍昭.农村数字经济中电商平台的反垄断研究J.中国价格监管与反垄断,2026,(03):48-50.
6 阮伟.电商平台税收征管法律制度研究J.中国价格监管与反垄断,2026,(03):102-106.
7 WangJ ,LvY ,LiuY .Multilingual sentiment analysis for cross-border e-commerce reviews based on DeepSeek model: the M3SA-Adapter approachJ.AppliedIntelligence,2026,56(5):164-164.
8 郭春花,董笑妍,夏小云.全国人大代表、太平鸟集团董事长张江平:强化电商平台知识产权保护,激发纺织集群效能J.纺织服装周刊,2026,(09):11.
9 罗萍,刘哲宇.电商平台落地AI技术的五大方向J.中国眼镜科技杂志,2026,(03):16-18.
10 TianG .The effects of favorable review solicitations on repurchase decisions: A field experiment on an e-commerce platformJ.Journalof Behavioral and Experimental Economics,2026,121102532-102532.
11 BaoguoL ,NiW ,XiangdongG .Emotion Analysis of User Comments on E-Commerce Platforms Based on Deep LearningJ.InternationalJournal on Artificial Intelligence Tools,2025,34(07-08):
12 CassiaF ,MagnoF .Leveraging cross-border e-commerce platforms forexport strategies: a model for exporters in B2B marketsJ.Reviewof International Business and Strategy,2025,35(4):527-550.
13 黑马程序员.Spring Boot企业级开发教程M.北京:人民邮电出版社,2024:258.
14 秦冬.浅析Vue框架在前端开发中的应用J.信息与电脑(理论版),2024,36(13):61-63.
15 李艳杰.MySQL数据库下存储过程的综合运用研究J.现代信息科技,2023,7(11):80-82.
16 皇甫大恩.基于微服务架构的JavaWeb开发实践J.开封大学学报,2023,37(2):93-96.
17 吴迁.基于uni-app与Spring Boot框架的Web应用开发平台的设计与实现D.西安:西安石油大学,2025:1-120.
18 柯妍,孙佳留,朱士飞,等.基于MySQL的煤质信息数据库设计J.资源信息与工程,2024,39(3):117-121.
19 林育蓓,汤德佑,汤娜.数据库技术及应用M.北京:机械工业出版社,2024:302.
20 吕云翔.软件工程M.北京:人民邮电出版社,2024:317.
致谢
时间过得很快,大学生活就要结束。回看这段求学历程,从选题之初的迷茫到最后论文定稿时的释然,每一个阶段的成长都离不开老师的帮助、朋友的帮助。
衷心感谢校内指导老师,在论文选题、开题报告、系统设计、论文撰写等各个环节中,老师一直以严谨的治学态度给予耐心指导,在遇到理论难点和技术瓶颈的时候提出重要的建议,使得研究得以顺利进行。感谢校外指导老师对于技术实践的指导,给系统开发提供工程经验上的支持,使理论知识更好的落地应用。
毕业设计创作过程就是对大学所学知识进行全方位检验的过程。从一开始对课题一无所知,到查阅文献、理清思路、系统设计、编码实现、反复调试,每一次小小的进步都藏着无尽的艰辛与成功。在攻克技术难题时深切体会到专业知识的积累十分重要,同时体会到了把理论与实践结合起来所取得的成就感。四年大学生活使自己的专业知识体系逐步形成起来,为以后走上工作岗位打下了良好的基础。
感谢学院给予良好的学习环境和丰富的资源,感谢各位老师对我学习的指导。感谢辅导员老师在生活中、学习上给予的帮助。感谢同窗好友、实验室同学在学习过程中对我所给予的帮助与支持,在思考问题、交流思想的日子里将留下美好的回忆。
特别感谢父母多年来的养育之恩,用无尽的爱与包容支持我前行的每一步,是永远坚强的后盾。毕业并不是结束,而是新的开始,怀着感恩之心继续前行,用踏实的专业能力回馈社会,不负青春韶华。