springbootjmy手作商城--附源码01602

摘  要

随着电子商务的快速发展,手工艺品市场也逐渐向线上转移,尤其是个性化、创意化产品的需求不断增长。为了满足这一需求,本论文设计并开发了基于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研究意义

1.3国内外研究现状

1.3.1国内研究现状

1.3.2国外研究现状

1.4论文结构与章节安排

2  关键技术

2.1Java

2.2B/S模式

2.3Spring Boot框架

2.4Vue技术

2.5MySQL

3  系统分析

3.1可行性分析

3.1.1技术可行性

3.1.2经济可行性

3.1.3操作可行性

3.1.4运行可行性

3.2功能需求分析

3.3系统非功能性需求分析

3.4系统流程分析

3.4.1程序操作流程

3.4.2登录流程

3.4.3注册流程

4  系统设计

4.1系统架构设计

4.2系统功能模块设计

4.3数据库设计

4.3.1概念设计

4.3.2逻辑设计

5  系统实现

5.1用户功能模块实现

5.1.1新闻资讯

5.1.2通知公告

5.1.3手作商城界面

5.2.1商城管理界面

5.2.2个人中心

5.3 管理员功能模块实现

5.3.1用户管理

5.3.2系统管理

5.3.3商城管理

5.3.5资源管理

6  系统测试

6.1测试目的

6.2测试方法

6.3测试内容

6.4测试结论

7  总结与展望

7.1总结

7.2展望

致 谢

参考文献

附录:

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]。

2.4Vue技术

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逻辑设计

逻辑设计是数据库设计中的关键环节,主要任务是将概念设计中的抽象模型转化为数据库管理系统可识别的结构,确定表结构、字段名称、数据类型、主键和外键等要素,从而构建数据的逻辑框架。逻辑设计明确了数据的存储方式和关联规则,维持数据一致性与完整性,并提升查询与管理的效率。以下是系统的数据库表设计。

表 4-1-access_token(登陆访问时长)

编号

字段名

类型

长度

是否非空

是否主键

注释

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

email

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.1新闻资讯

用户可以浏览与手工艺品相关的新闻和资讯,了解行业发展趋势和最新的市场动态,提升购物决策的依据。新闻资讯功能效果图如图5-1所示。

图5-1 新闻资讯功能效果图

5.1.2通知公告

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

图5-2通知公告功能效果图

5.1.3手作商城界面

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

图5-3 手作商城功能效果图

5.1.4商城管理界面

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

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

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

图5-6 我的购物车功能效果图

5.1.5个人中心

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

图5-7 个人中心功能效果图

5.2 管理员功能模块实现

5.2.1用户管理

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

图5-8 用户管理功能效果图

5.2.2系统管理

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

图5-9系统管理功能效果图

5.2.3商城管理

管理员可以管理商城商品、商品分类、查看订单信息并处理订单配送,确保商家的商品和订单处理流程顺畅高效。手作商城功能效果图如图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展望

尽管系统目前已经实现了基本的功能需求,但仍有进一步优化的空间。在未来的研究和开发中,可以考虑增强系统的智能推荐功能,提升商品展示和用户购买的个性化体验,进一步增强用户粘性。此外,随着跨境电商的发展,系统的国际化和多语言支持也是一个值得关注的方向。为提升平台的用户活跃度,未来可引入更多的社交化功能,如社交分享、用户互动等。此外,针对系统的可扩展性,未来可以通过微服务架构等技术手段,为更多功能的扩展和第三方系统的对接提供支持。

致 谢

四年的时光如白驹过隙,回顾这段求学经历,我心中充满了感激与不舍。每一次的成长与进步,都离不开那些在我生命中给予过支持和帮助的人。

我的指导老师是我学术道路上的明灯,您不仅传授了我知识,更教会了我如何严谨求学,如何面对学术的挑战。在我遇到瓶颈时,是您的耐心指导让我重新找回信心,明确前行的方向。您对学术的热情与坚持深深感染了我,使我在求知的过程中更加坚定与执着。

父母的爱与支持,始终是我最大的动力源泉。在我走过困难与挑战的时刻,父母总是默默地在背后为我加油。无论我取得怎样的成绩,您们的期望与鼓励始终在我的心中激荡。感谢您们为我创造了一个无忧的学习环境,让我可以专心追求自己的梦想。我将用未来的努力与成就,回报您们的无私付出。

我的同学们是我大学生活中最珍贵的财富。我们一起经历了课业的压力,也一起享受过成功的喜悦。你们的陪伴让我不再孤单,在我彷徨时,你们总是给予我鼓励与支持。无论是合作的力量,还是互相倾诉的温暖,你们让我深刻感受到友谊的力量与青春的美好。

我的母校是我成长的摇篮,这片校园见证了我的蜕变与追求。在这里,我收获了知识,也领悟了人生的真谛。每一处熟悉的景象,都承载着我宝贵的记忆。感谢这片土地赋予我不断成长的机会,让我有机会挑战自我,超越自我。

站在新的起点,我深知这些年的成长离不开所有人的帮助与鼓励。无论未来的路有多远,我都会带着你们给予的勇气与力量,继续前行。我会以更加坚定的步伐,去迎接未来的每一个挑战。感谢你们的陪伴,愿每一位在我生命中出现的人,都能在各自的道路上,走得更加从容与精彩。

参考文献

  1. 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
  2. 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
  3. 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
  4. 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
  5. 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
  6. 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
  7. 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
  8. 李怀光.内部采购商城对企业采购计划优化提升分析[J].中国招标,2024,(09):109-114.
  9. Shao W ,Liu K.Design and Implementation of Online Ordering System Based on SpringBoot[J].Journal of Big Data and Computing,2024,2(3):
  10. Zhu Y .Contract Management System Based on SpringBoot and Vue[J].Advances in Computer, Signals and Systems,2024,8(5):
  11. 傅悦.场景理论下周村古商城文化价值提升研究[D].山东理工大学,2024.DOI:10.27276/d.cnki.gsdgc.2024.000059.
  12. 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.
  13. 段亚楠.电子商务大数据智能存储管理系统的设计与实现解析[J].电脑编程技巧与维护,2024,(01):104-107.DOI:10.16184/j.cnki.comprg.2024.01.015.
  14. 余磊.高校政府采购网上商城采购信息化管理模式的优化与实践探索——以淮北师范大学为例[J].招标采购管理,2023,(12):59-62.
  15. 潘涛,王柳,董冉冉.基于Vue.js框架的网上商城管理系统的设计与实现[J].科技与创新,2023,(13):8-10.DOI:10.15913/j.cnki.kjycx.2023.13.003.
  16. 颜寒,李锦生.供应链视角下京东商城公司物流成本管理优化研究[J].物流科技,2024,47(03):114-117.DOI:10.13714/j.cnki.1002-3100.2024.03.027.
  17. 刘斯佳.战略管理会计在电商企业中的运用研究——以天猫商城为例[J].全国流通经济,2023,(11):181-184.DOI:10.16834/j.cnki.issn1009-5292.2023.11.019.
  18. Yang Y .Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
  19. 陈小燕,朱映辉,余晓春.基于SpringBoot+Vue的好农物商城的设计与实现[J].电脑知识与技术,2022,18(22):37-39.DOI:10.14004/j.cnki.ckt.2022.1535.
  20. 任建新,王一鸣,李鑫,等.基于Java Web的智慧商城购物系统设计[J].信息技术与信息化,2022,(07):23-27.
  21. 柳萌.社区优选商城系统设计与实现[D].青岛科技大学,2022.DOI:10.27264/d.cnki.gqdhc.2022.001248.
  22. 龙凤,线上商城后台管理系统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);

    }

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值