摘要
随着互联网和移动互联网技术的迅猛发展,电子商务平台已成为人们进行日常购物的主要渠道之一。本论文旨在设计和实现一款基于 Spring Boot 后端框架与 Vue 前端框架的日用品购物平台,以提供用户友好的购物体验和高效的管理功能。
本文介绍了电子商务平台的发展现状和相关技术背景,重点分析了 Spring Boot 和 Vue 框架的特点和优势。接着,论文阐述了平台的整体架构设计,包括前端界面设计、后端数据处理、用户身份认证、商品管理和订单处理等关键功能模块的设计思路。在实现过程中,本文充分利用 Spring Boot 框架提供的便捷开发工具和 Vue 框架灵活的界面展示能力,完成了用户注册登录、商品浏览、购物车管理、订单结算等功能的开发。同时,为平台添加了用户评价和推荐系统,提升了用户粘性和购物体验。通过实际测试和性能优化,验证了平台的稳定性和响应速度,展示了平台在日用品购物领域的应用前景和市场潜力。
综上所述,本研究以 Spring Boot 和 Vue 为基础,成功设计并实现了一款功能全面、操作简便的日用品购物平台,为电子商务行业的发展提供了新的思路和方法。
关键词:电子商务平台;Spring Boot;Vue;日用品购物平台
1 绪论
1.1 选题背景与意义
日用品是人们生活中必不可少的消费品,其购买对于日常生活至关重要。随着生活水平的提高和消费观念的变化,目前市场上涌现了许多日用品购物平台,如淘宝、京东、拼多多等。这些平台为消费者提供了便利的购物方式,使他们能够快速、方便地购买到所需的日用品。
然而,随着互联网和移动技术的不断发展,日用品购物平台也面临着许多挑战和机遇。消费者对于商品质量、价格、服务等方面的要求越来越高,日用品购物平台需要不断提升自身的服务水平和竞争力,以吸引更多的消费者并保持竞争优势。
研究日用品购物平台的意义在于深入了解消费者在日用品购物过程中的需求和行为,探讨日用品购物平台对消费者、商家和整个市场的影响。通过研究,可以为日用品购物平台提供改进和优化建议,提升消费者体验,促进消费升级,推动商业发展。此外,研究日用品购物平台还可以为相关领域的学术研究提供新的视角和研究方法,推动学术交流和合作。同时,对于企业和政府部门来说,通过研究日用品购物平台可以更好地了解市场发展趋势和消费者需求,制定更加科学合理的经营和政策措施,促进经济增长和社会稳定。
因此,研究日用品购物平台具有重要的理论和实践意义,对于促进消费市场的健康发展和推动社会经济的持续增长都具有积极的作用。
1.2 国内外研究现状
随着互联网技术的不断发展和普及,电子商务已经成为人们日常生活中不可或缺的一部分。日用品购物平台作为电子商务领域的一个重要分支,在过去几年里得到了快速的发展。这种平台为消费者提供了一种便捷的购物方式,使他们可以轻松地在家中购买到日常所需的各种产品,从食品、家居用品到个人护理产品等。
国内外的研究现状显示,日用品购物平台在好几个方面都受到了广泛关注和研究。首先是针对消费者的行为研究,许多学者和研究人员关注消费者在日用品购物平台上的行为模式和决策过程。他们研究消费者的购买偏好、购物习惯、购物动机以及对不同品牌和产品的态度。这些研究有助于电商平台了解消费者的需求,制定更加精准的营销策略和服务方案。
其次,日用品购物平台涉及大量的商品供应和配送环节,因此供应链管理对于其运营至关重要。研究人员关注如何优化日用品供应链,降低成本、提高效率,以及如何应对供应链中的各种挑战,如库存管理、配送速度等问题。用户体验也是日用品购物平台成功的关键因素之一。研究人员通过用户调研和实验,探讨不同界面设计、功能布局对用户体验的影响,以及如何通过优化界面设计来提升用户的购物满意度和忠诚度。
此外,日用品购物平台积累了大量的用户数据,包括购买记录、浏览行为、评价反馈等。通过对这些数据的分析和挖掘,可以帮助平台预测用户需求、个性化推荐产品、优化定价策略等,从而提升销售额和用户满意度。日用品购物平台的兴起不仅对消费者和企业产生影响,还对社会和环境产生一定的影响。研究人员关注日用品购物平台对传统零售业的影响、对就业市场的影响,以及如何推动平台的可持续发展,减少资源浪费和环境污染。
综上所述,日用品购物平台作为电子商务领域的一个重要分支,受到了广泛的关注和研究。未来,随着科技的不断进步和消费需求的不断变化,相关研究将继续深入,为日用品购物平台的发展和优化提供更多有益的启示和支持。
1.3 论文结构与章节安排
本文共分为七章,章节内容安排如下:
第一章:引言。此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。
第二章:系统需求分析。章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。
第三章:系统概要设计。主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。
第四章:系统实现。根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试
第六章:总结。
2 日用品购物平台分析
系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。
2.1 可行性分析
可行性分析是系统分析的第一步,通过可行性分析我们可以得出系统是不是值得开发,如果系统的开发是不可信的,那么就没有必要再进行下面的操作,对于本日用品购物平台在可行性方面进行了技术、经济以及操作的分析。
2.1.1 技术可行性分析
日用品购物平台的设计与实现是一个基于 Web 的交易、管理平台,我们在实现这个系统所采用的技术方案是基于 Java 语言,采用的是比较流行的 Vue 和 SpringBoot 框架以及 MySQL 数据库,在大学的学习中这几门课程都已经学过,而且自己也用这些技术开发过小的项目,在平时的课程设计以及作业也经常用到 Java 和 MySQL,在技术上实现自己的自主开发是可行的。
2.1.2 经济可行性分析
在经济可行性方面,日用品购物平台所需的开发软件和工具,如 IDEA、Tomcat 和 MySQL 等,都是免费且开源的,无需额外费用。此外,这些工具易于获取和操作,降低了开发成本。而且,随着日用品购物平台的运营和发展,可以通过广告推广、会员服务等方式实现收益,增加项目的经济可行性。
2.1.3 操作可行性分析
在操作可行性方面,我们参考了其他成功案例,并对用户界面和功能进行了系统分析。通过以人为本的设计原则,简化了操作流程,使得具备基本计算机知识的用户能够轻松上手。同时,我们也提供了清晰的用户指南和帮助文档,以支持用户的操作和使用。
2.2 系统功能分析
2.2.1 功能性分析
日用品购物平台我划分为了普通用户模块、商家用户模块和管理员模块这三大部分。
普通用户模块: (1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现商品信息购买等操作,就必须有这个系统的账号,如果没有账号的话,可以注册用户进行相关的操作,同时用户还可以通过'我的'这个按钮对个人信息以及操作的信息进行管控。 (2)查看日用品购物平台的首页信息:日用品购物平台的首页信息包含了首页、公告信息、商品资讯、商品信息、商城管理等。 (3)公告信息:当用户点击'公告信息'这一菜单按钮,会显示管理员在后台发布的所有的公告信息,可以查看详情。 (4)商品资讯:当用户点击'商品资讯'这一菜单按钮,会显示管理员在后台发布的所有的商品资讯,可以查看详情,进行收藏、点赞、评论等。 (5)商品信息:用户点击'商品信息'进入到商品信息页面,可以搜索浏览商品详细信息,并支持加购、立即购买、点赞、收藏和购买评论等操作。 (6)商城管理:用户在此模块可以对我的订单、我的购物车和我的地址进行管理。 (7)我的账户:在前台点击'我的'下面的'我的账户'可以对个人资料 + 密码修改进行管控。 (8)个人中心:普通用户点击右上角的'用户名',然后点击'个人中心'可对个人首页、商品评价、订单配送和自己收藏的信息进行管理。
商家用户模块: (1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现商品信息发布等操作,就必须有这个系统的账号,如果没有账号的话,可以注册用户进行相关的操作,同时用户还可以通过'我的'这个按钮对个人信息以及操作的信息进行管控。 (2)查看日用品购物平台的首页信息:日用品购物平台的首页信息包含了首页、公告信息、商品资讯、商品信息、商城管理等。 (3)我的账户:在前台点击'我的'下面的'我的账户'可以对个人资料 + 密码修改进行管控。 (4)个人中心:商家用户点击'个人中心'可对个人首页、商品信息、商品评价、订单配送和自己收藏的信息进行管理。
管理员管理模块: (1)登录:管理员在后台可以输入用户名 + 密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。 (2)系统用户:管理员可以对日用品购物平台中的管理员、商家用户和普通用户账户信息进行增删改查。 (3)商品标签管理:管理员点击'商品标签管理'菜单可以对商品的标签进行增删改查。 (4)商品评价管理:管理员点击'商品评价管理'可以对前台所有用户提交的商品评价信息进行管理。 (5)系统管理:管理员点击'系统管理'菜单可以对首页展示的轮播图进行管理。 (6)公告信息管理:管理员点击'公告信息管理'菜单可以查看到系统中的所有公告信息信息,对已经存在的公告信息,管理员可以修改,也可以添加新的公告信息或者删除公告信息。 (7)资源管理:管理员可以对日用品购物平台前台展示的商品资讯以及商品资讯所属的分类进行管控。 (8)商城管理:管理员点击商城管理可以对商品信息、分类列表、订单列表、订单配送等模块信息进行添加和管理。
2.2.2 非功能性分析
非功能性分析旨在评估日用品购物平台的非功能需求和性能要求。通过对性能、可靠性、安全性、可用性和扩展性等方面进行评估,确保平台能够满足用户和系统运行的要求。具体如下表格中:
表 2-1 日用品购物平台非功能需求表
| 非功能性要求 | 说明 |
|---|---|
| 性能 | 评估响应时间、并发用户数、吞吐量等指标,以确保平台稳定高效地运行。 |
| 可靠性 | 评估系统的稳定性、容错能力和数据完整性,保障系统在故障情况下正常运行。 |
| 安全性 | 评估用户身份认证、数据加密和访问控制等,保护用户信息和交易的安全。 |
| 可用性 | 评估系统的稳定性、故障处理能力和用户界面友好性,提供良好的用户体验。 |
| 扩展性 | 评估系统的可扩展性和灵活性,以便根据需求进行功能扩展和升级。 |
2.3 系统用例分析
日用品购物平台的完整 UML 用例图分别是图 2-1、2-2 和 2-3。
图 2-1 就是普通用户角色的用例展示。

图 2-1 日用品购物平台普通用户角色用例图
图 2-2 就是商家用户角色的用例展示。

图 2-2 日用品购物平台商家用户角色用例图
图 2-3 就是管理员角色的用例展示。

图 2-3 日用品购物平台管理员角色用例图
2.4 系统流程分析
2.4.1 数据流程
日用品购物平台主要的目的就是实现对商品信息的在线购买交易,图 2-4 就是系统的数据流图。

图 2-4 商品信息购买操作展开图
2.4.2 业务流程
分析完日用品购物平台的数据流,接下来我们来看系统的业务流程,图 2-5 就是业务流程图:

图 2-5 业务流程图
2.5 本章小结
本章主要通过对日用品购物平台的可行性分析、功能需求分析、系统用例分析、系统流程分析,确定整个日用品购物平台要实现的功能。同时也为日用品购物平台的代码实现和测试提供了标准。
3 日用品购物平台总体设计
本章主要讨论的内容包括日用品购物平台的功能模块设计、数据库系统设计。
3.1 系统功能模块设计
通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。日用品购物平台根据前面章节的需求分析得出,其总体设计模块图如图 3-1 所示。

图 3-1 日用品购物平台功能模块图
3.2 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.2.1 数据库概念结构设计
在数据库概念模型设计的时候,一般都采用 E-R 实体图进行展示,在实体图中可以展示出数据库表中的所有字段名称。下面是整个日用品购物平台中主要的数据库表总 E-R 实体关系图。

图 3-2 日用品购物平台总 E-R 关系图
3.2.2 数据库逻辑结构设计
通过上一小节中日用品购物平台中总 E-R 关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表 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 | 用户编号: |
表 address (收货地址:)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 默认判断 |
表 article (文章:用于内容管理系统的文章)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | article_id | mediumint | 8 | 0 | N | Y | 文章 id:[0,8388607] | |
| 2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125] 用于文章和 html 的 title 标签中 | |
| 3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000] 用来搜索指定类型的文章 |
| 4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000] 访问这篇文章的人次 |
| 5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255] 文章的出处 | |
| 9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255] 用于跳转到发布该文章的网站 | |
| 10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255] 用于标注文章所属相关内容,多个标签用空格隔开 | |
| 11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
| 12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
| 13 | description | text | 65535 | 0 | Y | N | 文章描述 |
表 article_type (文章分类)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类 ID:[0,10000] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] 决定分类显示的先后顺序 |
| 3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类 ID:[0,32767] |
| 5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255] 描述该分类的作用 | |
| 6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
| 7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255] 如果该分类是跳转到其他网站的情况下,就在该 URL 上设置 | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表 auth (用户权限管理)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间: |
表 cart (购物车)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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] 用于产品规格描述 |
表 collect (收藏)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间: |
表 comment (评论)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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: |
表 goods (商品信息)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 添加人 |
表 goods_type (商品类型)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间: |
表 hits (用户点击)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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: |
表 logistics_delivery (物流配送)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间 |
表 merchant_users (商家用户)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | merchant_users_id | int | 10 | 0 | N | Y | 商家用户 ID | |
| 2 | merchant_name | varchar | 64 | 0 | Y | N | 商家姓名 | |
| 3 | store_name | varchar | 64 | 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 | 更新时间 |
表 notice (公告)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间: |
表 order (订单)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 32 | 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 | 折扣 |
表 praise (点赞)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 已取消 |
表 product_evaluation (商品评价)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | product_evaluation_id | int | 10 | 0 | N | Y | 商品评价 ID | |
| 2 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
| 3 | merchant_users | int | 10 | 0 | Y | N | 0 | 商家用户 |
| 4 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
| 5 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 6 | product_specifications | varchar | 64 | 0 | Y | N | 商品规格 | |
| 7 | ordering_users | int | 10 | 0 | Y | N | 0 | 下单用户 |
| 8 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 9 | purchase_quantity | varchar | 64 | 0 | Y | N | 购买数量 | |
| 10 | evaluation_score | varchar | 64 | 0 | Y | N | 评价分数 | |
| 11 | evaluation_content | text | 65535 | 0 | Y | N | 评价内容 | |
| 12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表 product_information (商品信息)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | product_information_id | int | 10 | 0 | N | Y | 商品信息 ID | |
| 2 | merchant_users | int | 10 | 0 | Y | N | 0 | 商家用户 |
| 3 | merchant_name | varchar | 64 | 0 | Y | N | 商家姓名 | |
| 4 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
| 5 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 6 | product_labels | varchar | 64 | 0 | Y | N | 商品标签 | |
| 7 | product_brand | varchar | 64 | 0 | Y | N | 商品品牌 | |
| 8 | product_specifications | varchar | 64 | 0 | Y | N | 商品规格 | |
| 9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
| 10 | cart_title | varchar | 125 | 0 | Y | N | 标题:[0,125] 用于产品 html 的标签中 | |
| 11 | cart_img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
| 12 | cart_description | varchar | 255 | 0 | Y | N | 描述:[0,255] 用于产品规格描述 | |
| 13 | cart_price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
| 14 | cart_price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
| 15 | cart_inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
| 16 | cart_type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
| 17 | cart_content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
| 18 | cart_img_1 | text | 65535 | 0 | Y | N | 主图 1: | |
| 19 | cart_img_2 | text | 65535 | 0 | Y | N | 主图 2: | |
| 20 | cart_img_3 | text | 65535 | 0 | Y | N | 主图 3: | |
| 21 | cart_img_4 | text | 65535 | 0 | Y | N | 主图 4: | |
| 22 | cart_img_5 | text | 65535 | 0 | Y | N | 主图 5: | |
| 23 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 24 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表 product_labels (商品标签)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | product_labels_id | int | 10 | 0 | N | Y | 商品标签 ID | |
| 2 | product_labels | varchar | 64 | 0 | Y | N | 商品标签 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表 regular_users (普通用户)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户 ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
| 4 | product_labels | varchar | 64 | 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 | 更新时间 |
表 slides (轮播图)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间: |
表 upload (文件上传)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 文件类型 |
表 user (用户账户:用于保存用户登录信息)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用户 ID:[0,8388607] 用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1 可用 |
| 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 未认证 |
| 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 未认证 |
| 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 | 创建时间: |
| 15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
| 16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表 user_group (用户组:用于用户前端身份和鉴权)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 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 | 更新时间: |
3.3 本章小结
整个日用品购物平台的需求分析主要对系统总体架构以及功能模块的设计,通过建立 E-R 模型和数据库逻辑系统设计完成了数据库系统设计。
4 日用品购物平台详细设计与实现
日用品购物平台的详细设计与实现主要是根据前面的日用品购物平台的需求分析和日用品购物平台的总体设计来设计页面并实现业务逻辑。主要从日用品购物平台界面实现、业务逻辑实现这两部分进行介绍。
4.1 前台用户功能模块
4.1.1 前台首页界面
当进入日用品购物平台的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,其主界面展示如下图 4-1 所示。

图 4-1 前台首页界面图
4.1.2 用户注册界面
日用品购物平台的游客和普通用户时可以进行注册登录,当用户右上角'注册'按钮的时候,当填写上自己的账号 + 密码 + 确认密码 + 昵称 + 邮箱 + 手机号等后再点击'注册'按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用户注册界面展示如下图 4-2 所示。

图 4-2 注册界面图
注册关键代码如下所示。
/**
* 注册
* @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.1.3 用户登录界面
日用品购物平台中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当普通用户输入完整的自己的账户名和密码信息并点击'登录'按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名 + 密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到日用品购物平台的首页中;否则将会提示相应错误信息,用户登录界面如下图 4-3 所示。

图 4-3 用户登录界面图
登录的逻辑代码如下所示。
/**
* 登录
* @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.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储 Token 到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
4.1.4 商品资讯界面
当访客点击日用品购物平台中导航栏上的'商品资讯'后将会进入到该'商品资讯'列表的界面,然后选择想要看的商品资讯,点击进入到详细界面,在详细界面可以收藏 + 赞 + 评论等操作。商品资讯界面如下图 4-4 所示。

图 4-4 商品资讯界面图
4.1.5 商品信息界面
游客只能查看商品信息的商品,不能进行任何购买、评论操作,普通用户可以选择自己需要的商品,加入购物车、立即购买、收藏、评论。
加入购物车流程图如图 4-5 所示。

图 4-5 加入购物车流程图
购买工作流程图如图 4-6 所示。

图 4-6 购买工作流程图
商品信息详情展示页面如图 4-7 所示。

图 4-7 商品信息详情展示界面图
查询单个商品数据关键代码如下所示。
@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-8 所示。

图 4-8 我的购物车界面图
添加至购物车关键代码如下所示。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
4.1.6 个人中心界面
当用户点击右上角'我的'这个按钮,会出现子菜单,普通用户点击'个人中心'可以对个人首页、商品评价、订单配送和自己收藏的信息进行设置管理。普通用户个人中心管理如下图 4-9 所示。

图 4-9 普通用户个人中心管理界面图
商家用户点击'个人中心'可以对个人首页、商品信息、商品评价、订单配送和自己收藏的信息进行设置管理。商家可以发布商品信息,管控普通用户的商品评价信息,对普通用户提交的订单进行配送发货。商家用户个人中心管理如下图 4-10 所示。

图 4-10 商家用户个人中心管理界面图
4.2 后台功能模块
4.2.1 系统用户界面
日用品购物平台中的后台管理员在'系统用户'这一菜单中可以对注册的普通用户、商家用户以及管理员人员进行管控。界面如下图 4-11 所示。

图 4-11 系统用户管理界面图
修改用户信息关键代码如下:
@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.2.2 系统管理界面
日用品购物平台中的管理人员在'系统管理'这一菜单下是可以对日用品购物平台内展示的轮播图进行添加修改的。系统管理界面如下图 4-12 所示。

图 4-12 系统管理界面图
4.2.3 资源管理界面
管理员点击'资源管理'可以对前台展示的商品资讯以及资讯所属分类进行管理,商品资讯管理的界面如下图 4-13 所示。

图 4-13 商品资讯管理界面图
删除商品资讯关键代码如下所示。
@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.2.4 商品信息界面
管理员拥有对商城管理中的商品信息商品进行添加、修改、删除、管理评论的功能,商品信息管理界面如下图 4-14 所示。

图 4-14 商品信息管理界面图
商品信息列表关键代码如下所示。
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
4.2.5 分类列表界面
管理员拥有对商品的分类增删改查的功能,分类列表界面如下图 4-15 所示。

图 4-15 分类列表界面图
添加分类信息关键代码如下所示。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
4.2.6 订单列表界面
管理员拥有对所有订单的查询、删除的功能。可以对订单进行配送操作。订单列表界面如下图 4-16 所示。

图 4-16 订单列表界面图
5 系统评估与测试
系统开发的最后一个步骤就是系统测试,系统测试也是整个系统十分重要的一个环节,测试的好坏关系到产品的发展。客户对软件的质量、性能和可靠性等需求就要通过测试来实现。测试过程要必须遵循严谨性、完善性、规范性的原则,测试的主要目的就是看看在系统运行中,是否会出现 bug,然后对出现的 bug 进行调试,直到程序完美运行。但是软件的测试只能尽可能的减少 bug,理论上来说是无法达到消除 bug。但是 bug 越少,系统出错的几率就越低,用户使用起来也更方便、更安全。
近年来,软件包含测试从现在的检验当中来看,系统接近预期目标可能出现的问题,并对这些错误做出相应的修正,假如我们不进行早期的测试错误就会延续下去,最后所做出的成品就会有很大的困难。
5.1 系统测试意义
随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以我们必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。
图 5-1 就是纠错测试流程。

图 5-1 测试与纠错信息流程
5.2 系统测试方法
具体测试方法包括:黑盒测试和白盒测试。
黑盒测试又被人们称作为功能测试,通常是在程序的接口来做一些测试的方法,它一般包括对程序的功能和使用的方法来做出一些数据的接受和输出,同时还可以做出正确的输出信息,并保证与外部信息的完整性。
白盒测试通常被人们称作为结构测试,在整个程序的结构和处理当中它是由程序当中的逻辑测试和检验程序来完成一些正确的工作。
具体的功能测试它是包括:系统的适用性、准确性、安全性等功能测试。
5.3 系统测试用例
表 5-1 用户注册测试用例
| 测试编号 | 测试内容 | 预期结果 |
|---|---|---|
| TC-001 | 输入有效信息 | 注册成功,跳转到登录页面 |
| TC-002 | 输入已存在账号 | 显示账号已存在的提示信息 |
| TC-003 | 输入无效信息 | 显示注册失败的提示信息,要求重新输入有效信息 |
表 5-2 用户登录测试用例
| 测试编号 | 测试内容 | 预期结果 |
|---|---|---|
| TC-004 | 输入正确的账号密码 | 登录成功,跳转到个人主页 |
| TC-005 | 输入错误的账号密码 | 显示登录失败的提示信息,要求重新输入正确的账号密码 |
表 5-3 修改密码测试用例
| 测试编号 | 测试内容 | 预期结果 |
|---|---|---|
| TC-006 | 输入有效密码 | 密码修改成功,显示修改成功的提示信息 |
| TC-007 | 输入无效密码 | 显示密码无效的提示信息,要求重新输入有效密码 |
| TC-008 | 输入错误原密码 | 显示原密码错误的提示信息,要求重新输入正确原密码 |
表 5-4 收货地址添加测试用例
| 测试编号 | 测试内容 | 预期结果 |
|---|---|---|
| TC-009 | 输入有效的收货地址信息 | 收货地址添加成功,显示添加成功的提示信息 |
| TC-010 | 输入无效的收货地址信息 | 显示添加失败的提示信息,要求重新输入有效信息 |
表 5-5 查看商品信息测试用例
| 测试编号 | 测试内容 | 预期结果 |
|---|---|---|
| TC-014 | 点击查看商品信息 | 显示商品信息页面,展示相关的商品名称、价格、图片等内容 |
| TC-015 | 选择其他分类 | 显示所选分类下的相关商品信息等内容 |
| TC-016 | 无可用商品信息 | 显示暂无商品信息的提示信息,提醒用户重新选择分类 |
5.4 系统测试结果
综上所述,日用品购物平台在功能测试中表现良好,通过了所有测试用例。系统提供的用户注册、登录、修改密码、收货地址、查看商品信息等主要功能都能正常运行,并能够给出预期的提示信息和结果。然而,为了确保系统的全面稳定性和质量,仍建议进行更多的综合性测试,包括性能测试、安全性测试和用户体验测试等,以进一步验证和改进系统的功能和性能。
结论
本研究设计并实现了基于 SpringBoot+Vue 的日用品购物平台的设计与实现。通过对系统进行功能测试和评估,得出以下结论:该系统在功能上经过验证,用户注册、登录、购物车、商品购买、收货地址和商品资讯管理等功能都能正常运行;技术上具备稳定性和可扩展性,Spring Boot 框架简化开发,前端 Vue 设计界面灵活,MySQL 数据库支持数据存储与查询;从经济角度看,Java 和 MySQL 均为免费且开源;操作上易用性好,日用品购物平台界面简洁明了,Spring Boot 和 Vue 的自动化部署与 MySQL 的管理工具提供便捷操作。
综上所述,日用品购物平台在功能、技术、经济和操作上均具有优势。该系统在提高用户购买商城便捷性的同时,也为商家提供了一种在线销售的渠道,促进了日用品行业的发展。未来可以进一步扩展功能和优化性能,以满足用户需求并提供更好的用户体验。
参考文献
[1] Asaithambi S ,Ravi L ,Devarajan M , et al.Enhancing enterprises trust mechanism through integrating blockchain technology into e-commerce platform for SMEs[J].Egyptian Informatics Journal,2024,25100444-.
[2] Wang L ,Zhang S R ,Zhang X C .Live streaming E-commerce platform characteristics: Influencing consumer value co-creation and co-destruction behavior[J].Acta Psychologica,2024,243104163-.
[3] 江幼彬。基于'互联网 +'的电子商务配送平台设计 [J].中国储运,2024,(01):116-117.
[4] 贾慧文。网络营销策略在电子商务平台上的实施与效果评估 [J].上海商业,2023,(12):39-41.
[5] 龙芳,吴勇灵。微信小程序购物系统的设计与实现 [J].现代信息科技,2023,7(23):25-30.
[6] 张耕问,钱昕彤,崔坤鹏。一个基于微信小程序的海外拼团购物平台的设计 [J].电脑知识与技术,2023,19(33):29-31.
[7] 李婷。物联网背景下物流电子商务平台的建设分析 [J].商场现代化,2023,(22):28-30.
[8] 白琢,赵祎。拼多多电商平台营销策略研究 [J].市场瞭望,2023,(15):30-32.
[9] 许苑莉。网络购物消费者知情权研究 [D].北方工业大学,2023.000873.
[10] 张琦。基于质量功能展开的电商平台产品推荐排序问题研究 [D].江南大学,2023.002209.
[11] 毛吉源。网络直播购物特征对消费者购买意愿影响研究 [D].四川师范大学,2023.000038.
[12] 刘维佳。社区式购物平台发展现状及前景分析 [J].产业创新研究,2023,(07):68-70.
[13] 周超,赵思雅,王天玥。基于 SICAS 模型的线上购物平台品牌营销策略研究 [J].淮南师范学院学报,2023,25(02):88-93.
[14] 陈小燕,朱映辉,余晓春。基于 SpringBoot+Vue 的好农物商城的设计与实现 [J].电脑知识与技术,2022,18(22):37-39.
[15] 魏冉。新媒体运营下电商购物环境现状和成因分析——基于消费者视角 [J].内蒙古科技与经济,2022,(12):60-61.
[16] 徐德华,张心怡。基于网络购物平台的在线评论研究综述 [J].情报探索,2022,(05):118-124.
[17] Chen G ,Xu J .Design and implementation of efficient Learning platform based on SpringBoot Framework[J].Journal of Electronics and Information Science,2020,6(1):
[18] 陈倩怡,何军.Vue+Springboot+MyBatis 技术应用解析 [J].电脑编程技巧与维护,2020,(01):14-15+28.
[19] 李曼。京东商城跨境经营的'社区购物'新模式研究 [D].江苏大学,2020.DOI:10.27170/d.cnki.gjsuu.2020.000514.
[20] 贾志勇。基于 SpringBoot 的下沉市场交易平台的设计与实现 [D].安徽大学,2020.DOI:10.26917/d.cnki.ganhu.2020.000917.


