摘 要
随着电子商务的快速发展,手工艺品市场也逐渐向线上转移,尤其是个性化、创意化产品的需求不断增长。为了满足这一需求,本论文设计并开发了基于Java技术的JMY手作商城系统。该系统旨在为用户提供一个便捷的在线购物平台,支持用户浏览商品、下单购买、订单管理及商品收藏等功能,同时为管理员提供商品管理、订单管理、用户管理等后台管理功能。系统主要采用了Spring Boot框架进行后台开发,利用MySQL数据库进行数据存储,前端则使用HTML、CSS和JavaScript进行页面设计与交互,确保了系统的响应速度和用户体验。此外,系统还引入了权限管理机制,区分管理员和普通用户的不同操作权限,确保了平台的安全性和高效性。通过对商城流程的优化与技术的有效结合,本系统不仅提高了用户的购物体验,也为商家提供了便捷的商品和订单管理工具,解决了传统线下购物存在的时间和空间限制问题,推动了手工艺品销售的数字化转型。系统经过测试,功能稳定,界面友好,满足了当前市场对手作商品在线交易的需求。
关键词:手作商城 ;Spring Boot;MySQL;
Abstract
With the rapid development of e-commerce, the handicraft market is gradually shifting towards online, especially with the increasing demand for personalized and creative products. In order to meet this demand, this paper designs and develops a JMY handmade shopping mall system based on Java technology. The system aims to provide users with a convenient online shopping platform, supporting functions such as browsing products, placing orders, managing orders, and collecting products. At the same time, it provides administrators with backend management functions such as product management, order management, and user management. The system mainly adopts the Spring Boot framework for backend development, uses MySQL database for data storage, and uses HTML, CSS, and JavaScript for page design and interaction in the frontend, ensuring the system's response speed and user experience. In addition, the system also introduces a permission management mechanism to distinguish the different operational permissions of administrators and ordinary users, ensuring the security and efficiency of the platform. By optimizing the mall process and effectively combining technology, this system not only improves the shopping experience for users, but also provides convenient product and order management tools for merchants, solves the time and space limitations of traditional offline shopping, and promotes the digital transformation of handicraft sales. The system has been tested and proven to have stable functionality and a user-friendly interface, meeting the current market demand for online trading of goods by competitors.
Keywords: Handmade Mall; Spring Boot; MySQL;
目 录
1 前 言
1.1研究背景
随着互联网技术的不断发展,电子商务已经深入人们的日常生活,尤其是手工艺品行业,逐渐向线上平台迁移。近年来,消费者对个性化、定制化商品的需求显著增加,手工艺品作为其中的重要组成部分,因其独特性和艺术性而受到广泛青睐。然而,尽管手工艺品市场潜力巨大,但线下销售模式面临着场地和时间的限制,消费者无法方便地获取到丰富的商品信息和购买渠道。因此,传统手工艺品商家急需借助现代信息技术建立线上销售平台,拓展市场,提升竞争力。在这一背景下,构建一个便捷、高效、安全的手作商城系统,成为行业发展的关键。通过线上平台,消费者能够方便地浏览、选购手工艺品,商家也能够实时更新产品信息,管理订单和客户需求。随着市场对个性化商品需求的增加,如何通过技术手段解决线上销售中存在的问题,提升用户体验和商家管理效率,成为了当前亟待解决的问题。
1.2研究意义
本研究通过设计和实现一个基于Java技术的手作商城系统,提供了一种解决手工艺品行业在线销售问题的有效方案。通过该系统,消费者能够在平台上轻松浏览、购买和定制手工艺品,提升了购物的便捷性与体验。商家则可以通过系统进行商品信息管理、订单处理及用户反馈管理,极大提高了运营效率。系统采用现代化的技术架构,使得平台的稳定性、扩展性和安全性得到了有效保障。在确保用户数据安全的基础上,系统通过权限控制,实现了管理员与普通用户的功能区分,避免了数据泄露和滥用的风险。此外,本研究也展示了如何利用现有的技术手段,结合手工艺品行业的特点,构建一个符合市场需求的电子商务平台,推动手工艺品行业的数字化转型,为其他传统行业的线上化提供了宝贵的经验和技术参考。
1.3国内外研究现状
1.3.1国内研究现状
在国内,随着电商平台的快速发展,传统手工艺品行业也逐渐向线上转型,越来越多的本土电商平台开始提供手工艺品销售渠道。诸如淘宝、京东等大型平台的成功运作,为手工艺品的线上销售提供了参考。国内的研究主要集中在如何利用现有电商平台技术,帮助手工艺品商家提升线上销售效率,拓宽市场渠道。在国内,许多研究探讨了如何在电商平台上优化产品展示和消费者互动,尤其是在商品分类、搜索引擎优化和智能推荐等方面,提出了一些创新性的思路和方法。此外,国内学者还关注电商平台的运营管理和营销策略,尤其是如何通过社交媒体、直播等新型营销手段提升消费者参与感和平台的销售转化率。针对国内手工艺品市场,相关研究还涉及到如何解决平台上商品种类繁多、质量参差不齐的问题,提高平台的信誉度和用户的信任感。尽管国内在手工艺品电商平台的研究和实践中取得了较大进展,但相较于国际平台,国内在个性化推荐、跨境电商发展和平台安全性等方面仍有较大的提升空间。
1.3.2国外研究现状
在国外,电子商务平台已经发展得非常成熟,尤其是在手工艺品销售领域,许多知名平台如Etsy、ArtFire等为手工艺品商家提供了便捷的在线销售渠道。这些平台不仅允许商家展示和销售手工艺品,还通过社交功能、定制服务和个性化推荐等方式,极大地提升了消费者的购物体验。随着消费者对个性化和独特商品的需求不断增加,越来越多的手工艺品商家转向线上平台,平台的功能设计逐渐注重用户的互动性和商品展示的精美性。海外的研究大多集中在如何优化平台的用户界面设计、提升商品搜索与推荐的精准度、改进支付与配送流程等方面。此外,国外学者还关注电商平台的安全性、隐私保护等问题,尤其是在用户信息存储与交易安全方面,相关技术和管理措施逐渐成熟。随着社交电商和跨境电商的发展,越来越多的手工艺品商家也开始跨越国界,通过互联网平台将商品推向全球市场,进一步促进了手工艺品产业的国际化。
1.4论文结构与章节安排
本文共分为七章,章节内容安排如下:
第一章:前言,主要介绍手作商城领域研究的背景和意义,概述研究的现状和系统特点。
第二章:关键技术,主要探讨和说明实现手作商城 的关键技术。
第三章:系统分析,主要从手作商城 的可行性、功能、性能等方面进行分析,为后续系统设计提供理论支持。
第四章:系统设计,主要对手作商城功能模块、数据库进行功能设计。
第五章:系统实现,主要介绍了手作商城各个顾客用户的功能、系统界面的实现。
第六章:系统测试,主要对手作商城进行测试,验证功能完整性、稳定性和安全性,评估系统在实际运行中的性能表现。
第七章:结束语。总结全文研究内容,提出对手作商城 领域未来发展的展望和建议,指出研究的不足和可优化之处,为相关领域的进一步探索提供参考。
2 关键技术
2.1Java
Java是一种跨平台的编程语言,广泛用于开发各种类型的应用程序,包括Web应用、移动应用和大型软件系统。在手作商城 中,Java通常用于后端开发,提供强大的处理能力和稳定性。同时Java是一种面向对象的编程语言,支持封装、继承和多态等特性,使代码更易于维护和重用。还拥有丰富的标准库和第三方框架,如Spring、Hibernate等,可以大大提高开发效率。
2.2B/S模式
B/S(Browser/Server)架构是一种基于浏览器和服务器的应用架构模式。它以Web浏览器作为客户端,服务器端通过Web技术提供应用服务。客户端通过浏览器与服务器进行交互,用户无需安装专门的客户端应用程序,只需要通过互联网连接即可访问应用程序[1]。在B/S架构中,客户端主要承担用户界面的呈现和基本的输入输出功能,而核心的业务处理、数据存储等操作则由服务器端完成。这种架构的核心优势在于无需在每个客户端机器上安装或更新软件,只要用户的浏览器符合要求,就可以使用系统。
B/S(Browser/Server)架构是一种网络架构模型,其主要特点是客户端通过浏览器与服务器进行通信,所有的业务逻辑和数据处理都在服务器端完成,客户端仅负责展示数据[2]。B/S架构本质上是一种客户端-服务器模式的变体,它通过将传统的C/S(Client/Server)架构中的客户端功能移到浏览器中,简化了客户端的开发和维护工作。在B/S架构中,用户通过浏览器发送请求,浏览器负责展示从服务器获取的数据,服务器则处理请求并返回响应。该架构避免了安装和配置客户端软件的麻烦,也减少了对客户端硬件的依赖,适合于需要大规模部署和跨平台支持的应用系统。
B/S模式三层结构图如图2-1所示。

图2-1 B/S模式三层结构图
2.3Spring Boot框架
SpringBoot是一个用于简化Spring应用开发的开源框架,通过减少开发人员配置和依赖的复杂性,使得开发者能够快速构建基于Spring的生产级应用。SpringBoot基于Spring框架之上,提供了一种自配置的方式,使得开发者可以以最少的配置来启动和开发Spring应用[3]。它通过约定优于配置的原则,将常见的配置预设,使得开发人员能够聚焦于业务逻辑的实现,而不必过多关注繁琐的配置和环境搭建。
SpringBoot框架的核心特点之一是其自动配置功能。它能够根据项目中已存在的类和库,自动推断出开发环境的配置需求,减少了手动配置的工作量。SpringBoot还提供了嵌入式Web服务器支持(如Tomcat、Jetty等),使得应用可以以独立的Java应用形式运行,不再依赖外部的Web容器。这种特性使得SpringBoot特别适合于微服务架构的构建。SpringBoot还通过其提供的启动器(Starters)简化了常见功能的集成,例如数据库连接、消息队列、缓存、认证与授权等,从而提升了开发效率[4]。
Vue.js是一款用于构建用户界面的渐进式JavaScript框架,提供一种灵活而高效的方式来开发单页面应用(SPA)。Vue的设计理念是通过尽量简化开发过程,提供一种声明式的方式来构建用户界面[5]。Vue.js通过数据驱动的视图模型,允许开发者以声明式语法绑定数据与视图,使得应用的状态和界面表现更加简洁和可维护。它的核心思想是通过组件化开发将复杂的UI拆分为可重用的独立模块,从而提升了代码的模块化、可维护性和可扩展性。
Vue.js具备响应式数据绑定和虚拟DOM的特性。响应式数据绑定意味着当数据变化时,Vue会自动更新与之绑定的DOM元素,从而实现视图的实时更新。虚拟DOM则是Vue.js的一种优化手段,通过将对DOM的操作抽象为一个虚拟的DOM树来提高性能,减少实际DOM操作的开销[6]。Vue还提供了丰富的插件和工具,如Vue Router用于路由管理,Vuex用于状态管理,方便开发者构建复杂的前端应用。Vue的灵活性和简洁性使其成为现代Web开发中常用的前端框架之一。
2.5MySQL
MySQL是一种开源的关系型数据库管理系统(RDBMS),基于SQL(结构化查询语言)进行数据操作。作为一个被广泛使用的数据库系统,MySQL具有高度的性能、可扩展性和可靠性。MySQL使用表格结构来存储数据,每个表由多个列和行组成,数据通过SQL查询语言进行操作[7]。MySQL支持多种数据类型,如整数、浮动小数、字符串、日期等,以满足不同应用场景对数据存储的需求。在实际应用中,MySQL通常用于存储和管理结构化数据,通过索引、视图、触发器等功能提升数据查询的效率和数据的完整性。
MySQL支持ACID事务特性(原子性、一致性、隔离性、持久性),确保数据库操作的可靠性和数据的一致性。它还支持多种存储引擎,其中InnoDB是最常用的存储引擎,具备事务支持、行级锁定和外键约束等特性,适用于高并发、高可靠性的数据存储需求。MySQL可以通过主从复制、分区和分库分表等技术实现横向扩展,以应对大规模数据存储和高负载的应用需求。MySQL还具有灵活的权限管理机制,支持用户角色管理、细粒度的权限控制等,保障数据的安全性。
3 系统分析
3.1可行性分析
3.1.1技术可行性
从技术角度来看,Spring Boot作为一种轻量级、快速构建的Java框架,能够提高开发效率,降低系统的复杂程度,易于维护和升级。MySQL作为关系型数据库,能够支持平台数据的存储与管理,保障系统的稳定性和高效性。因此,本系统具有技术可行性。
3.1.2经济可行性
从经济角度来看,基于Spring Boot搭建手作商城 的投入成本相对较低,因为Spring Boot本身是一个免费、开源的框架,可以节省开发成本。使用MySQL作为数据库也具有成本效益高的优势。因此,本系统具有经济可行性。
3.1.3操作可行性
从操作角度来看,Spring Boot的简洁性和高度集成的特点使得系统的部署和运行相对简单,容易维护和管理的同时,能够提供一个界面直观友好和操作简单高效的系统,能满足用户的各项要求,方便用户快速上手使用。因此,本系统具有操作可行性。
3.1.4运行可行性
从运行角度来看,正因为本系统是在服务器的基础上开发的,系统开发成功以后,用户无需导航指导便可自己上手进行操作。系统一经开发测试后,在计算机移动客户端能上网的情况下,只需在浏览器里完成所有可用操作,也无需配置复杂的使用和运行环境,只需一个网址便可进入系统。因此,本系统具有运行可行性。
综合来看,基于java技术的手作商城在经济、技术、操作、运行等方面都具有较高的可行性,能够为用户提供便捷的服务,促进共建共享的理念。
3.2功能需求分析
本手作商城 设计分两个主要用户角色:普通用户和管理员。以下是对每个角色的功能需求的详细描述。
(一)用户功能分析
首页:用户可以通过首页快速访问平台的核心功能,包括通知公告、新闻资讯以及手作商城等,为后续操作提供便捷入口。
通知公告:用户可以查看平台发布的最新通知和公告,确保获取到关于商城活动、商品更新等重要信息,及时了解平台动态。
新闻资讯:用户可以浏览与手工艺品相关的新闻和资讯,了解行业发展趋势和最新的市场动态,提升购物决策的依据。
手作商城:用户通过商城浏览各类手工艺品,支持商品分类、搜索和筛选,便于找到感兴趣的商品,进行购买决策。
商城管理(我的购物车、我的订单、我的地址):用户可以查看和管理购物车内商品、查看历史订单信息,管理收货地址,方便后续购物和配送。
我的账户:用户可以管理个人账户信息,包括修改个人资料、设置密码、绑定社交账号等,确保账户安全与管理便捷。
个人中心(个人首页、订单配送、收藏、评论管理):用户可以在个人中心查看自己的订单状态、配送信息,管理收藏的商品,以及查看和编辑对购买商品的评论,提升用户体验。
(二)管理员功能分析
后台首页:管理员通过后台首页查看平台整体运营状况,包括用户活动、订单数据等,确保平台的有效管理和决策支持。
系统用户(管理员、普通用户):管理员可以管理平台上的所有用户,包括管理员权限设置、普通用户账户的激活与冻结,确保平台的安全性和操作规范。
系统管理(轮播图管理):管理员可通过轮播图管理模块更新和维护首页的广告和宣传图,优化平台的视觉展示和用户引导。
通知公告管理:管理员可以发布和管理系统公告,通知用户平台的重要更新、活动或政策变更,确保信息的及时传达。
资源管理(新闻资讯、资讯分类):管理员负责管理新闻资讯的发布和分类,确保平台内容的更新与维护,提升信息的组织性和用户的浏览体验。
商城管理(手作商城、分类列表、订单列表、订单配送):管理员可以管理商城商品、商品分类、查看订单信息并处理订单配送,确保商家的商品和订单处理流程顺畅高效。
普通用户角色用例如图3-1所示。

图3-1普通用户用例图
管理员角色用例如3-2所示。

图3-2 管理人员用例图
3.3系统非功能性需求分析
非功能性分析是系统设计的重要组成部分,其目标是保证系统在各种负载条件下的高效、稳定和可靠。对于手作商城 的设计与实现,系统非功能性需求分析表如表3-1所示。
表3-1 非功能性需求表
| 项目 | 内容 |
| 性能 | 系统应支持至少500个并发用户访问,响应时间不超过2秒 |
| 安全性 | 用户数据需加密,系统应具备防攻击机制(如SQL注入、XSS防护) |
| 可用性 | 系统年可用性应达到99.5%,保证大部分时间能够正常访问 |
| 可维护性 | 代码易于阅读与修改,文档齐全,便于后期维护和功能扩展 |
| 扩展性 | 系统架构应支持后续功能的扩展,易于添加新模块或功能 |
| 兼容性 | 系统应支持主流浏览器(如Chrome、Firefox、Safari) |
| 用户体验 | 界面友好、简洁,操作应当简便,避免用户困惑 |
3.4系统流程分析
3.4.1程序操作流程
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如图3-3所示。

图3-3 程序操作流程图
3.4.2登录流程
用户访问平台的网站,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如图3-4所示。

图3-4 登录流程图
3.4.3注册流程
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如图3-5所示。

图3-5注册流程图
4 系统设计
4.1系统架构设计
本项目采用B/S架构,遵循MVC设计思想,采用前后端分离的方式进行架构搭建。系统主要由表示层、控制层、业务逻辑层和数据层构成,系统架构如图4-1所示。

图4-1 系统整体架构图
系统使用Spring Boot与Vue框架进行搭建,架构分为视图层、控制层、业务逻辑层、数据持久层和数据库服务器。视图层利用Vue框架和Element UI界面渲染工具构建前端页面,前端页面通过HTTP协议发送请求至控制层。控制层与业务逻辑层通过Spring Boot框架搭建,控制层接收前端请求,进行解析和数据校验,将数据传递至Service层进行业务逻辑处理。业务处理完成后,通过数据持久层访问数据库服务器,执行数据库操作,最终将结果返回至控制层,并传递至前端进行页面处理。
4.2系统功能模块设计
本系统的功能模块设计基于用户需求和管理需求,主要分为前端用户模块和后台管理员模块。用户模块包括首页、通知公告、新闻资讯、手作商城、商城管理、我的账户和个人中心等功能,用户可以浏览商品、管理订单、查看个人信息和评论等。管理员模块则涵盖后台首页、系统用户管理、轮播图管理、通知公告管理、资源管理和商城管理等功能,管理员能够有效管理平台用户、商品、订单及资讯内容,确保平台正常运营。通过清晰的功能模块划分和合理的权限控制,系统能够高效且安全地提供服务。整个系统的功能模块设计如图4-2所示。

图4-2 系统功能模块图
4.3数据库设计
数据库设计是一种用于创建数据库结构的过程,通过需求分析确定数据类型和操作需求,并使用实体-关系图表达数据的实体、属性及其关系,形成概念模型[15] 。在此基础上,将概念模型转化为特定数据库系统可识别的逻辑模型,确定表结构、字段、数据类型及约束关系。数据库设计通常分为概念设计、逻辑设计两个阶段。
4.3.1概念设计
概念设计作为数据库设计的关键环节,通过高层次的抽象描述系统中的数据结构和关系,明确系统的数据需求。通常采用E-R图来展现数据的实体、属性及关系,形成逻辑完整的模型,更加清晰地表达和传达设计意图。在该阶段,需要确定关键数据实体,定义属性并表达关系类型,为数据库的逻辑设计和物理设计奠定必要基础。以下是系统总体E-R图。

图4-3手作商城 总E-R图
4.3.2逻辑设计
逻辑设计是数据库设计中的关键环节,主要任务是将概念设计中的抽象模型转化为数据库管理系统可识别的结构,确定表结构、字段名称、数据类型、主键和外键等要素,从而构建数据的逻辑框架。逻辑设计明确了数据的存储方式和关联规则,维持数据一致性与完整性,并提升查询与管理的效率。以下是系统的数据库表设计。
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-address(收货地址)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | address_id | int | 是 | 是 | 收货地址 | |
| 2 | name | varchar | 32 | 否 | 否 | 姓名 |
| 3 | phone | varchar | 13 | 否 | 否 | 手机 |
| 4 | postcode | varchar | 8 | 否 | 否 | 邮编 |
| 5 | address | varchar | 255 | 是 | 否 | 地址 |
| 6 | user_id | mediumint | 是 | 否 | 用户ID | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | default | tinyint | 是 | 否 | 默认判断 |
表 4-3-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-4-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-cart(购物车)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | cart_id | int | 是 | 是 | 购物车ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | img | varchar | 255 | 是 | 否 | 图片 |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | state | int | 是 | 否 | 状态:使用中,已失效 | |
| 8 | price | double | 是 | 否 | 单价 | |
| 9 | price_ago | double | 是 | 否 | 原价 | |
| 10 | price_count | double | 是 | 否 | 总价 | |
| 11 | num | int | 是 | 否 | 数量 | |
| 12 | goods_id | mediumint | 是 | 是 | 商品id | |
| 13 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 14 | description | varchar | 255 | 否 | 否 | 描述 |
表 4-7-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-9-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-10-goods(商品信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | goods_id | mediumint | 是 | 是 | 产品ID | |
| 2 | title | varchar | 125 | 否 | 否 | 标题 |
| 3 | img | text | 65535 | 否 | 否 | 封面图:用于显示于产品列表页 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | price_ago | double | 是 | 否 | 原价 | |
| 6 | price | double | 是 | 否 | 卖价 | |
| 7 | sales | int | 是 | 否 | 销量 | |
| 8 | inventory | int | 是 | 否 | 商品库存 | |
| 9 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 10 | hits | int | 是 | 否 | 点击量 | |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img_1 | text | 65535 | 否 | 否 | 主图1 |
| 13 | img_2 | text | 65535 | 否 | 否 | 主图2 |
| 14 | img_3 | text | 65535 | 否 | 否 | 主图3 |
| 15 | img_4 | text | 65535 | 否 | 否 | 主图4 |
| 16 | img_5 | text | 65535 | 否 | 否 | 主图5 |
| 17 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 19 | customize_field | text | 65535 | 否 | 否 | 自定义字段 |
| 20 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 21 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 22 | source_id | int | 是 | 否 | 来源ID | |
| 23 | user_id | int | 否 | 否 | 添加人 |
表 4-11-goods_type(商品类型)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | int | 是 | 是 | 商品分类ID | |
| 2 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 3 | name | varchar | 255 | 否 | 否 | 商品名称 |
| 4 | desc | varchar | 255 | 否 | 否 | 描述 |
| 5 | icon | varchar | 255 | 否 | 否 | 图标 |
| 6 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 7 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-handmade_mall(手作商城)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | handmade_mall_id | int | 是 | 是 | 手作商城ID | |
| 2 | purchase_instructions | varchar | 64 | 否 | 否 | 购买须知 |
| 3 | collect_len | int | 是 | 否 | 收藏数 | |
| 4 | comment_len | int | 是 | 否 | 评论数 | |
| 5 | cart_title | varchar | 125 | 否 | 否 | 标题 |
| 6 | cart_img | text | 65535 | 否 | 否 | 封面图 |
| 7 | cart_description | varchar | 255 | 否 | 否 | 描述 |
| 8 | cart_price_ago | double | 是 | 否 | 原价 | |
| 9 | cart_price | double | 是 | 否 | 卖价 | |
| 10 | cart_inventory | int | 是 | 否 | 商品库存 | |
| 11 | cart_type | varchar | 64 | 是 | 否 | 商品分类 |
| 12 | cart_content | longtext | 4294967295 | 否 | 否 | 正文 |
| 13 | cart_img_1 | text | 65535 | 否 | 否 | 主图1 |
| 14 | cart_img_2 | text | 65535 | 否 | 否 | 主图2 |
| 15 | cart_img_3 | text | 65535 | 否 | 否 | 主图3 |
| 16 | cart_img_4 | text | 65535 | 否 | 否 | 主图4 |
| 17 | cart_img_5 | text | 65535 | 否 | 否 | 主图5 |
| 18 | create_time | datetime | 是 | 否 | 创建时间 | |
| 19 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-14-logistics_delivery(物流配送)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | logistics_delivery_id | int | 是 | 是 | 物流配送ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单号 |
| 3 | product_name | varchar | 64 | 否 | 否 | 商品名称 |
| 4 | purchase_quantity | varchar | 64 | 否 | 否 | 购买数量 |
| 5 | total_transaction_amount | double | 否 | 否 | 交易总额 | |
| 6 | the_date_of_issuance | date | 否 | 否 | 发货日期 | |
| 7 | delivery_number | varchar | 30 | 否 | 否 | 配送订单 |
| 8 | ordinary_users | int | 否 | 否 | 普通用户 | |
| 9 | shipping_address | varchar | 64 | 否 | 否 | 收货地址 |
| 10 | delivery_status | varchar | 64 | 否 | 否 | 配送状态 |
| 11 | signing_status | varchar | 64 | 否 | 否 | 签收状态 |
| 12 | recommend | int | 是 | 否 | 智能推荐 | |
| 13 | contact_name | varchar | 255 | 否 | 否 | 联系人名字 |
| 14 | merchant_id | int | 否 | 否 | 商家id | |
| 15 | create_time | datetime | 是 | 否 | 创建时间 | |
| 16 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-15-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-order(订单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | order_id | int | 是 | 是 | 订单ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单号 |
| 3 | goods_id | mediumint | 是 | 是 | 商品ID | |
| 4 | title | varchar | 255 | 否 | 否 | 商品标题 |
| 5 | img | varchar | 255 | 否 | 否 | 商品图片 |
| 6 | price | double | 是 | 否 | 价格 | |
| 7 | price_ago | double | 是 | 否 | 原价 | |
| 8 | num | int | 是 | 否 | 数量 | |
| 9 | price_count | double | 是 | 否 | 总价 | |
| 10 | norms | varchar | 255 | 否 | 否 | 规格 |
| 11 | type | varchar | 64 | 是 | 否 | 商品分类 |
| 12 | contact_name | varchar | 32 | 否 | 否 | 联系人姓名 |
| 13 | contact_email | varchar | 125 | 否 | 否 | 联系人邮箱 |
| 14 | contact_phone | varchar | 11 | 否 | 否 | 联系人手机 |
| 15 | contact_address | varchar | 255 | 否 | 否 | 收件地址 |
| 16 | postal_code | varchar | 9 | 否 | 否 | 邮政编码 |
| 17 | user_id | int | 是 | 否 | 买家ID | |
| 18 | merchant_id | mediumint | 是 | 否 | 商家ID | |
| 19 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 20 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 21 | description | varchar | 255 | 否 | 否 | 描述 |
| 22 | state | varchar | 16 | 是 | 否 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
| 23 | remark | text | 65535 | 否 | 否 | 订单备注 |
| 24 | delivery_state | varchar | 16 | 否 | 否 | 发货状态:未配送,已配送 |
| 25 | vip_discount | double | 否 | 否 | 折扣 |
表 4-17-ordinary_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | user_phone | varchar | 64 | 否 | 否 | 用户电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-19-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-20-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-21-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-22-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
5 系统实现
5.1用户功能模块实现
用户可以浏览与手工艺品相关的新闻和资讯,了解行业发展趋势和最新的市场动态,提升购物决策的依据。新闻资讯功能效果图如图5-1所示。

图5-1 新闻资讯功能效果图
5.1.2通知公告
用户可以查看平台发布的最新通知和公告,确保获取到关于商城活动、商品更新等重要信息,及时了解平台动态。通知公告功能效果图如图5-2所示。

图5-2通知公告功能效果图
用户通过商城浏览各类手工艺品,支持商品分类、搜索和筛选,便于找到感兴趣的商品,进行购买决策。手作商城功能效果图如图5-3所示。

图5-3 手作商城功能效果图
5.1.4商城管理界面
用户可以查看和管理购物车内商品、查看历史订单信息,管理收货地址,方便后续购物和配送。我的地址能效果图如图5-4所示。

图5-4 我的地址功能效果图

图5-5 我的订单功能效果图

图5-6 我的购物车功能效果图
用户可以在个人中心查看自己的订单状态、配送信息,管理收藏的商品,以及查看和编辑对购买商品的评论,提升用户体验。个人中心功能效果图如图5-7所示。

图5-7 个人中心功能效果图
管理员可以管理平台上的所有用户,包括管理员权限设置、普通用户账户的激活与冻结,确保平台的安全性和操作规范。用户管理功能效果图如图5-8所示。

图5-8 用户管理功能效果图
管理员可通过轮播图管理模块更新和维护首页的广告和宣传图,优化平台的视觉展示和用户引导。系统管理功能效果图如图5-9所示。

图5-9系统管理功能效果图
管理员可以管理商城商品、商品分类、查看订单信息并处理订单配送,确保商家的商品和订单处理流程顺畅高效。手作商城功能效果图如图5-10所示。

图5-11手作商城管理功能效果图

图5-12订单列表功能效果图

图5-13订单配送功能效果图
5.2.4资源管理
管理员负责管理新闻资讯的发布和分类,确保平台内容的更新与维护,提升信息的组织性和用户的浏览体验。资源管理功能效果图如图5-14所示。

图5-14 资源管理功能效果图
6 系统测试
6.1测试目的
软件测试的目的在于识别系统缺陷,验证软件对需求的符合程度,使其功能、性能和安全性达到设计标准[16] 。在开发过程中,测试能够及时发现潜在问题,降低发布后出现故障的风险。测试不仅关注系统的正常运行,还模拟各种异常情况,评估在不同环境和边界条件下的表现,从而提升软件的可靠性和稳定性,为用户提供更高质量的产品体验,增强信任感。测试过程中的数据和经验积累能完善测试策略,改进开发流程,成为后续项目的参考。软件测试贯穿开发生命周期,是实现产品质量和发布标准的重要环节。
6.2测试方法
测试方法是一系列用于评估和验证产品、软件或系统性能的技术和程序[17] 。这些方法根据测试目标的不同,可以划分为黑盒测试、白盒测试和灰盒测试等多种类型。黑盒测试关注输入和输出,不涉及内部逻辑结构。白盒测试深入代码和系统内部结构,检查程序流程和逻辑错误。灰盒测试介于两者之间,对内部结构有部分了解。其他方法还包括自动化测试、手动测试、性能测试和安全测试,各自具有特定的应用场景和优势。性能测试检验系统的响应时间和稳定性,安全测试识别潜在的安全漏洞。选择适当的测试方法能够有效发现问题,提高产品的质量和可靠性。
6.3测试内容
系统采用黑盒测试对系统功能进行测试,以下是测试的详细用例表。
表6-1 评论功能测试用例表
| 测试目的 | 验证评论功能 |
| 测试条件 | 用户已登录 |
| 测试步骤 | 1. 登录系统。 2. 进入展览评论模块。 3. 发布评论。 4. 回复他人评论。 5. 删除自己的评论。 |
| 预期效果 | 能成功发布、回复和删除评论 |
| 实际效果 | 与预期结果一致 |
| 结论 | 测试通过 |
表6-2 手作商城功能测试用例表
| 测试目的 | 验证手作商城功能 |
| 测试条件 | 用户已登录 |
| 测试步骤 | 1. 登录系统。 2. 进入手作商城模块。 3. 浏览手作商城列表。 4. 点击查看详细信息。 |
| 预期效果 | 能正常查看手作商城 |
| 实际效果 | 与预期结果一致 |
| 结论 | 测试通过 |
表6-3订单配送功能测试用例表
| 测试目的 | 验证订单配送功能 |
| 测试条件 | 用户已登录 |
| 测试步骤 | 1. 登录系统。 2. 进入订单配送模块。 3. 浏览订单配送列表。 4. 点击查看详细信息。 |
| 预期效果 | 能正常查看订单配送 |
| 实际效果 | 与预期结果一致 |
| 结论 | 测试通过 |
表6-4 通知公告功能测试用例表
| 测试目的 | 验证通知公告功能 |
| 测试条件 | 用户已登录 |
| 测试步骤 | 1. 登录系统。 2. 进入通知公告模块。 3. 浏览通知公告列表。 4. 点击查看具体内容。 |
| 预期效果 | 能正常查看知识内容 |
| 实际效果 | 与预期结果一致 |
| 结论 | 测试通过 |
表6-5 手作商城管理功能测试用例表
| 测试目的 | 验证手作商城管理功能 |
| 测试条件 | 管理员已登录 |
| 测试步骤 | 1. 登录系统。 2. 进入手作商城管理模块。 3. 添加新的手作商城。 4. 修改已有手作商城。 5. 删除手作商城。 |
| 预期效果 | 能正常添加、修改和删除信息 |
| 实际效果 | 与预期结果一致 |
| 结论 | 测试通过 |
表6-6订单配送管理功能测试用例表
| 测试目的 | 验证订单配送管理功能 |
| 测试条件 | 管理员已登录 |
| 测试步骤 | 1. 登录系统。 2. 进入订单配送管理模块。 3. 添加新的订单配送。 4. 修改已有订单配送。 5. 删除订单配送。 |
| 预期效果 | 能正常添加、修改和删除信息 |
| 实际效果 | 与预期结果一致 |
| 结论 | 测试通过 |
6.4测试结论
根据上述测试表的结果,系统的各项功能均已通过验证。评论功能测试表显示,用户可以成功发布、回复和删除评论,测试结果与预期一致,功能正常。手作商城功能测试表证明用户能够顺利浏览商城并查看商品详细信息,操作流畅无误。订单配送功能测试表验证了用户能够正常查看订单配送信息,且操作符合预期。通知公告功能测试表表明用户可以顺利浏览公告内容,信息展示正常。手作商城管理功能测试表和订单配送管理功能测试表则表明管理员能够成功添加、修改和删除手作商城及订单配送信息,后台管理功能稳定。综合来看,所有功能模块均表现良好,系统运行正常,测试通过。
7 总结与展望
7.1总结
本文设计并实现了一个基于Java技术的手作商城系统,旨在为消费者提供一个便捷的在线平台,便于浏览和购买手工艺品,同时为管理员提供高效的后台管理工具。通过采用现代化的开发框架和技术,系统具备了良好的用户体验和高效的管理能力。功能测试结果表明,评论、商城、订单配送、通知公告等核心模块均能够顺利运行,符合设计需求。在用户和管理员的使用场景下,系统实现了预期功能,确保了平台的稳定性和安全性。通过本系统的开发,手工艺品行业的电商化进程得到了有效推动,提升了商家的运营效率和消费者的购物体验。
7.2展望
尽管系统目前已经实现了基本的功能需求,但仍有进一步优化的空间。在未来的研究和开发中,可以考虑增强系统的智能推荐功能,提升商品展示和用户购买的个性化体验,进一步增强用户粘性。此外,随着跨境电商的发展,系统的国际化和多语言支持也是一个值得关注的方向。为提升平台的用户活跃度,未来可引入更多的社交化功能,如社交分享、用户互动等。此外,针对系统的可扩展性,未来可以通过微服务架构等技术手段,为更多功能的扩展和第三方系统的对接提供支持。
致 谢
四年的时光如白驹过隙,回顾这段求学经历,我心中充满了感激与不舍。每一次的成长与进步,都离不开那些在我生命中给予过支持和帮助的人。
我的指导老师是我学术道路上的明灯,您不仅传授了我知识,更教会了我如何严谨求学,如何面对学术的挑战。在我遇到瓶颈时,是您的耐心指导让我重新找回信心,明确前行的方向。您对学术的热情与坚持深深感染了我,使我在求知的过程中更加坚定与执着。
父母的爱与支持,始终是我最大的动力源泉。在我走过困难与挑战的时刻,父母总是默默地在背后为我加油。无论我取得怎样的成绩,您们的期望与鼓励始终在我的心中激荡。感谢您们为我创造了一个无忧的学习环境,让我可以专心追求自己的梦想。我将用未来的努力与成就,回报您们的无私付出。
我的同学们是我大学生活中最珍贵的财富。我们一起经历了课业的压力,也一起享受过成功的喜悦。你们的陪伴让我不再孤单,在我彷徨时,你们总是给予我鼓励与支持。无论是合作的力量,还是互相倾诉的温暖,你们让我深刻感受到友谊的力量与青春的美好。
我的母校是我成长的摇篮,这片校园见证了我的蜕变与追求。在这里,我收获了知识,也领悟了人生的真谛。每一处熟悉的景象,都承载着我宝贵的记忆。感谢这片土地赋予我不断成长的机会,让我有机会挑战自我,超越自我。
站在新的起点,我深知这些年的成长离不开所有人的帮助与鼓励。无论未来的路有多远,我都会带着你们给予的勇气与力量,继续前行。我会以更加坚定的步伐,去迎接未来的每一个挑战。感谢你们的陪伴,愿每一位在我生命中出现的人,都能在各自的道路上,走得更加从容与精彩。
参考文献
- 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
- 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 李怀光.内部采购商城对企业采购计划优化提升分析[J].中国招标,2024,(09):109-114.
- Shao W ,Liu K.Design and Implementation of Online Ordering System Based on SpringBoot[J].Journal of Big Data and Computing,2024,2(3):
- Zhu Y .Contract Management System Based on SpringBoot and Vue[J].Advances in Computer, Signals and Systems,2024,8(5):
- 傅悦.场景理论下周村古商城文化价值提升研究[D].山东理工大学,2024.DOI:10.27276/d.cnki.gsdgc.2024.000059.
- Liu Y .Design and Implementation of a Student Attendance Management System based on Springboot and Vue Technology[J].Frontiers in Computing and Intelligent Systems,2024,8(1):91-97.
- 段亚楠.电子商务大数据智能存储管理系统的设计与实现解析[J].电脑编程技巧与维护,2024,(01):104-107.DOI:10.16184/j.cnki.comprg.2024.01.015.
- 余磊.高校政府采购网上商城采购信息化管理模式的优化与实践探索——以淮北师范大学为例[J].招标采购管理,2023,(12):59-62.
- 潘涛,王柳,董冉冉.基于Vue.js框架的网上商城管理系统的设计与实现[J].科技与创新,2023,(13):8-10.DOI:10.15913/j.cnki.kjycx.2023.13.003.
- 颜寒,李锦生.供应链视角下京东商城公司物流成本管理优化研究[J].物流科技,2024,47(03):114-117.DOI:10.13714/j.cnki.1002-3100.2024.03.027.
- 刘斯佳.战略管理会计在电商企业中的运用研究——以天猫商城为例[J].全国流通经济,2023,(11):181-184.DOI:10.16834/j.cnki.issn1009-5292.2023.11.019.
- Yang Y .Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
- 陈小燕,朱映辉,余晓春.基于SpringBoot+Vue的好农物商城的设计与实现[J].电脑知识与技术,2022,18(22):37-39.DOI:10.14004/j.cnki.ckt.2022.1535.
- 任建新,王一鸣,李鑫,等.基于Java Web的智慧商城购物系统设计[J].信息技术与信息化,2022,(07):23-27.
- 柳萌.社区优选商城系统设计与实现[D].青岛科技大学,2022.DOI:10.27264/d.cnki.gqdhc.2022.001248.
- 龙凤,线上商城后台管理系统V1.0.重庆市,家无忧(重庆)网络科技有限公司,2022-04-26.
附录:
注册代码如下:
/
* 注册
* @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);
}
登录代码如下:
/
* 登录
* @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<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}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.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
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());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
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, "账号或密码不正确");
}
}
订单配送代码如下:
@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("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
手作商城代码如下:
@RequestMapping(value = {"/sum_group", "/sum"})
public Map<String, Object> sum(HttpServletRequest request) {
Integer value = service.selectSqlToInteger(service.sum(service.readQuery(request), service.readConfig(request)));
return success(value);
}
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
241

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



