springboot二手车网站交易系统--附源码70303

基于Spring Boot的二手车交易系统

摘  要

随着互联网技术的飞速发展和电子商务模式的不断创新,二手车交易逐渐从传统的线下市场向线上平台转移。在线二手车交易平台不仅提供了便捷的买卖渠道,还通过技术手段保障了交易的安全性和透明度,满足了消费者日益增长的需求。本文旨在介绍一个基于Spring Boot框架开发的二手车网站交易系统的设计与实现。

本系统面向买家、卖家和管理员三类用户,提供高效便捷的二手车交易服务。买家可以查看详细的车辆信息并进行点赞、收藏、预约看车、发表评论等操作,还可以利用在线评估功能获取专业意见辅助决策。此外,买家能够管理个人信息、查看预约详情、完成下单交易以及申请分期付款等功能,实现一站式服务体验。卖家除具备买家功能外,还可审核预约与订单并发送分期账单。管理员拥有最高权限,可通过后台管理系统对用户活动进行全面监控和管理。这包括但不限于管理车辆及其型号信息、处理看车预约与交易审核、管理分期申请及账单、监督交易评价等。

本系统通过为不同类型的用户提供定制化的功能和服务,旨在构建一个安全、透明且高效的二手车在线交易平台,推动二手车行业的健康发展。

关键词:二手车交易;在线交易平台;Spring Boot

Abstract

With the rapid development of Internet technology and the continuous innovation of e-commerce model, second-hand car trading has gradually shifted from the traditional offline market to the online platform. The online second-hand car trading platform not only provides convenient buying and selling channels, but also ensures the security and transparency of transactions through technological means, meeting the growing needs of consumers. This article aims to introduce the design and implementation of a second-hand car website trading system developed based on the Spring Boot framework.

This system is designed for three types of users: buyers, sellers, and administrators, providing efficient and convenient second-hand car trading services. Buyers can view detailed vehicle information and perform actions such as liking, bookmarking, scheduling car viewing, leaving comments, etc. They can also use the online evaluation function to obtain professional opinions to assist in decision-making. In addition, buyers can manage personal information, view appointment details, complete order transactions, and apply for installment payments, achieving a one-stop service experience. In addition to the buyer function, sellers can also review appointments and orders and send installment bills. Administrators have the highest authority to comprehensively monitor and manage user activities through the backend management system. This includes but is not limited to managing vehicle and model information, handling car viewing reservations and transaction reviews, managing installment applications and bills, supervising transaction evaluations, etc.

This system aims to build a secure, transparent, and efficient online trading platform for second-hand cars by providing customized functions and services for different types of users, promoting the healthy development of the second-hand car industry.

Keywords:Second hand car transactions; Online trading platform; Spring Boot

目  录

1 绪  论

1.1 研究背景

1.2 研究意义

1.3 研究现状

1.3.1 国内研究现状

1.3.2 国外研究现状

1.4 论文结构与章节安排

2 相关技术介绍

2.1 Java语言

2.2 MySQL

2.3 Spring Boot框架

2.4 B/S架构

3 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2 经济可行性

3.1.3 操作可行性

3.1.4 市场可行性

3.2 系统需求分析

3.2.1 功能性需求分析

3.2.2 非功能性需求分析

3.3 模型分析

3.3.1 系统用户角色分析

3.3.2 系统用例分析

4 系统设计

4.1 系统架构设计

4.2 系统功能模块设计

4.3 系统流程设计

4.3.1 系统操作流程

4.3.2 登录流程

4.3.3 注册流程

4.4 数据库设计

4.4.1 数据库实体设计

4.4.2 数据库表结构设计

5 系统实现

5.1 前台用户功能实现

5.1.1 用户注册

5.1.2 用户登录

5.1.3 首页

5.1.4 通知公告

5.1.5 新闻资讯

5.1.6 车辆信息

5.1.7 个人中心(买家用户)

5.1.8 个人中心(卖家用户)

5.2 管理员功能实现

5.2.1 后台首页

5.2.2 系统用户

5.2.3 车辆信息管理

5.2.4 交易评价管理

5.2.5 在线评估管理

5.2.6 系统管理

5.2.7 通知公告管理

5.2.8 资源管理

6 系统测试

6.1 系统测试目的

6.2 系统功能测试

6.3 测试结果总结

7总结

参考文献

致  谢

附录

 

1    

1.1研究背景

随着我国汽车保有量的持续增长以及居民消费观念的逐步转变,二手车市场正日益成为汽车消费体系中的重要组成部分。相较于传统的线下交易模式,在线二手车交易平台凭借信息透明度高、操作便捷性强、覆盖用户范围广等优势,逐渐赢得了买卖双方的广泛认可。尤其是在移动互联网普及和数字化进程加快的大背景下,构建一个功能完善、性能稳定、用户体验良好的线上交易系统,已成为推动二手车行业高质量发展的关键环节。

然而,当前许多二手车平台仍存在车辆信息繁杂、匹配效率低、用户查找成本高等问题。为提升用户的使用体验与平台的服务能力,本系统在设计中引入了基于用户行为数据的智能推荐机制。例如,通过分析用户的浏览记录、收藏偏好及搜索关键词,系统可自动筛选并推荐与其需求高度匹配的车辆信息,从而有效提高信息获取效率与成交转化率。

从技术实现角度来看,本系统采用目前主流的Spring Boot框架进行后端开发,充分发挥其模块化设计、快速启动、易于集成第三方中间件等优势,提升了系统的开发效率与可维护性。数据库方面,选用MySQL作为主存储引擎,保障数据的一致性与安全性,并结合Redis实现热点数据缓存,提升系统响应速度;数据访问层采用MyBatis进行灵活的SQL控制,增强数据库交互性能。整体架构具备高可用性、易扩展性和良好的维护性,是构建现代化二手车交易平台的理想技术选型。

1.2研究意义

二手车网站交易系统的开发具有重要的现实意义。通过集成买家用户、卖家用户和管理员三大模块,该系统不仅为买卖双方提供了一个便捷的交易平台,还为管理者提供了强有力的数据支持与业务管理工具。系统利用Spring Boot框架构建,确保了高效率、稳定性和易维护性,同时为开发者带来了便捷的开发体验。

该系统能够有效促进二手车市场的透明化和规范化。对于买家而言,他们可以通过在线评估功能获取车辆的真实价值,减少信息不对称带来的风险;而预约看车、下单交易等功能则简化了购车流程,提升了用户体验。卖家用户同样受益于这一平台,他们可以轻松发布车辆信息,并通过审核机制保证信息的真实性与合法性,增强潜在买家的信任感。此外,卖家还可以对交易过程中的关键环节如看车预约、下单交易进行实时跟踪和管理,提高交易成功率。

从管理员的角度来看,后台提供的可视化数据统计和分析工具使得管理员能够全面掌握平台运营状况,及时调整营销策略和服务内容,从而提升整体管理水平和服务质量。例如,通过对买家用户统计、看车预约统计以及下单交易统计等数据的深入分析,管理员可以更好地理解市场趋势和用户需求,制定更加精准有效的商业策略。这不仅有助于优化资源配置,还能增强平台竞争力,推动业务持续增长。

综上所述,二手车网站交易系统的建立不仅满足了现代消费者对高效、安全交易平台的需求,还为行业内的各方参与者提供了全面的支持和服务。通过促进信息流通、降低交易成本、提高服务质量和效率,该系统在推动二手车市场健康发展方面发挥着重要作用。同时,其技术实现也为其他类似应用的开发提供了宝贵的参考案例和技术借鉴。

1.3研究现状

1.3.1国内研究现状

在国内,随着互联网技术的不断发展和二手车市场的日益成熟,越来越多的研究者开始关注如何通过信息化手段提升二手车交易的效率、透明度与安全性。目前,国内关于二手车网站交易系统的研究主要集中在平台架构设计、区块链技术应用、价格预测模型构建以及服务流程优化等方面。

在平台架构方面,李皓采用Spring Boot与MyBatis框架搭建了“二手车之家”网站,实现了包括首页展示、车辆买卖、分期购车、估价工具、资讯论坛等核心功能模块[1]。该系统的实现为后续二手车交易平台的技术选型提供了参考范式,表明基于成熟的Java框架可以快速构建高效稳定的二手车交易平台。这说明当前二手车网站交易系统在技术架构上已经具备较强的可扩展性和稳定性。

与此同时,针对二手车交易中信息不透明、信任缺失等问题,卢鑫海和余建坤提出了一种基于区块链技术的解决方案。他们利用Hyperledger Fabric架构,设计了一个去中心化、数据不可篡改且可溯源的二手车交易系统[2]。该研究不仅增强了交易过程的安全性与可信度,也为构建更加公开、公平的二手车市场环境提供了技术支持。这一方向代表了未来二手车交易平台在数据安全与信任机制建设上的重要趋势。

在提升交易效率方面,代金辉、仲璇等人则聚焦于二手车价格预测问题。他们基于LightGBM算法对二手车价格进行建模分析,并提出了合理的定价建议,有助于加快库存车辆的销售速度[3]。这种基于大数据与机器学习的价格预测模型,能够有效辅助消费者和商家做出更理性的交易决策,从而推动二手车交易的智能化发展。

此外,鲁捷从服务设计的角度出发,结合信息化手段对二手车交易的关键环节进行了系统优化[4]。他的研究强调用户体验的重要性,提出了通过数字化转型来改善传统二手车交易流程的方法。这种以用户为中心的服务设计理念,正在成为新一代二手车交易平台优化运营模式的重要指导思想。

综上所述,国内在二手车网站交易系统方面的研究已逐步从基础功能开发向技术融合与服务升级转变,涵盖了从平台架构到数据安全、智能定价再到用户体验优化等多个维度,展现出较强的创新性和实用性,为行业进一步发展奠定了坚实基础。

1.3.2国外研究现状

在国外,二手车市场的发展历史悠久,体系较为完善,相关研究也相对成熟。特别是在美国、德国、日本等国家,二手车交易已经形成了规模化、标准化和信息化的运作模式。以美国为例,其二手车市场高度发达,车辆普及率高、更换周期短,车源充足且流通顺畅。同时,政府监管与行业协会共同作用,推动建立了健全的法律法规体系和行业标准,有效保障了消费者权益。例如,Carmax作为美国最大的品牌二手车经销商之一,通过实施车辆质量认证制度和透明的一口价策略,极大缓解了二手车交易中的信息不对称问题。此外,互联网技术的广泛应用也促进了线上交易平台的兴起,使得二手车交易更加高效便捷。

在技术层面,随着信息技术的发展,越来越多的研究开始关注如何利用新兴技术提升二手车交易系统的安全性、透明度和可信度。Yoo G S 和 Ahn B 在其研究中提出了一种基于公共区块链 Ethereum 的二手车交易管理系统,该系统通过引入智能合约机制,在无需第三方介入的情况下确保交易的可靠性和数据的真实性[5]。这一研究为解决传统二手车交易中信任缺失、信息篡改等问题提供了新的思路和技术路径,也为未来构建去中心化的二手车交易平台奠定了理论基础。

德国的二手车市场则以其专业化的服务体系著称,包括严格的车辆检测流程、完善的售后服务保障以及高效的拍卖机制。而在日本,Nextage等新兴连锁品牌则通过低成本运营和低价策略迅速扩张,不仅从事二手车销售,还整合了维修、保险代理等多项服务,体现了多元化发展的趋势。这些国家在售前评估、车辆认证、售后服务等方面的经验,为构建一个用户友好、安全可靠的二手车网站交易系统提供了重要的参考价值。

综上所述,国外在二手车交易系统方面的研究涵盖了政策法规、商业模式、技术应用等多个维度,尤其在区块链、大数据等新技术的应用方面取得了初步成果。这些研究成果对于我国二手车网站交易系统的建设具有重要的借鉴意义。

1.4论文结构与章节安排

本文共分为七章,章节内容安排如下:

第一章:绪论,主要介绍二手车网站交易系统领域研究的背景和意义,概述研究的现状。

第二章:相关技术介绍,主要介绍实现二手车网站交易系统的相关技术。

第三章:系统分析,主要从二手车网站交易系统的可行性、功能性需求、非功能性能等方面进行分析,为后续系统设计提供理论支持。

第四章:系统设计,主要对二手车网站交易系统功能模块、系统流程及数据库进行设计。

第五章:系统实现,主要介绍了二手车网站交易系统各个用户的功能、系统界面的实现。

第六章:系统测试,主要对二手车网站交易系统进行测试,验证功能完整性、稳定性和安全性,评估系统在实际运行中的性能表现。

第七章:总结。主要对系统的开发设计工作进行总结。

2  相关技术介绍

2.1Java语言

Java是一种广泛使用的编程语言,具有跨平台、面向对象、安全性高等特点。Java语言提供了丰富的类库和API,使得开发者能够轻松地进行网络编程、数据库操作、图形界面开发等任务[6]。Java还支持多线程编程和分布式计算,为开发高性能和可扩展的应用提供了有力支持[67]。所以本次毕设选择了Java作为二手车网站交易系统的开发语言。通过利用Java的面向对象特性和丰富的类库资源,成功实现了系统的各个功能模块,并保证了系统的稳定性和可扩展性。而且Java的跨平台特性也使得此次毕业设计能够在不同的操作系统和硬件平台上运行,为用户提供了更加便捷的使用体验。

2.2MySQL

MySQL是一种流行的开源关系型数据库管理系统,用于存储和管理数据。在二手车网站交易系统中,MySQL可以用于数据存储、数据查询和数据管理等方面,用户可以免费使用和修改源代码,为平台提供可靠和高性能的数据库支持[8]。MySQL支持多种存储引擎,如InnoDB和MyISAM,可以根据不同的应用场景选择合适的存储引擎,以提高性能;提供了多种数据安全机制,如用户权限管理、数据加密和备份恢复等,确保数据的安全性。

2.3Spring Boot框架

SpringBoot是一个用于简化Spring应用开发的开源框架,通过减少开发人员配置和依赖的复杂性,使得开发者能够快速构建基于Spring的生产级应用。SpringBoot基于Spring框架之上,提供了一种自配置的方式,使得开发者可以以最少的配置来启动和开发Spring应用[9]。它通过约定优于配置的原则,将常见的配置预设,使得开发人员能够聚焦于业务逻辑的实现,而不必过多关注繁琐的配置和环境搭建。

SpringBoot框架的核心特点之一是其自动配置功能。它能够根据项目中已存在的类和库,自动推断出开发环境的配置需求,减少了手动配置的工作量。SpringBoot还提供了嵌入式Web服务器支持(如Tomcat、Jetty等),使得应用可以以独立的Java应用形式运行,不再依赖外部的Web容器。这种特性使得SpringBoot特别适合于微服务架构的构建。SpringBoot还通过其提供的启动器(Starters)简化了常见功能的集成,例如数据库连接、消息队列、缓存、认证与授权等,从而提升了开发效率[10]。

2.4B/S架构

B/S(Browser/Server,浏览器/服务器)体系结构是一种以浏览器作为统一客户端的软件架构模式,广泛应用于现代Web应用系统中。在该架构下,用户通过浏览器访问部署在服务器端的应用程序,所有的业务逻辑处理、数据存储与管理均在服务器端完成,客户端仅负责页面展示和用户交互[11]。这种设计有效简化了客户端的维护成本,提升了系统的可扩展性和跨平台兼容性。

B/S体系通常基于HTTP协议进行通信,采用三层架构模式,包括浏览器(表现层)、Web服务器(业务逻辑层)和数据库服务器(数据层)[12]。其优势在于易于部署与维护,用户无需安装专用客户端即可通过任何支持浏览器的设备访问系统,特别适合分布式环境下的信息管理系统。

随着Web技术的不断发展,B/S架构已广泛应用于各类在线服务平台,如电商系统、教务管理系统、企业OA系统等。对于二手车网站交易系统而言,采用B/S架构不仅能够提供良好的用户体验,还便于管理员进行集中管理和数据维护,是构建现代化交易平台的理想选择。

3  系统分析

3.1可行性分析

3.1.1技术可行性

Java是一种跨平台的编程语言,具有丰富的类库和良好的兼容性,广泛应用于各种场景。Java语言具有较高的性能和稳定性,可以满足系统高并发、大数据处理的需求。此外,Spring Boot是一个非常流行的Java开发框架,Spring Boot不仅能够帮助开发者快速搭建应用的基本框架,还提供了丰富的扩展点,使得开发者可以灵活地定制和优化应用程序,满足不同场景下的需求。

3.1.2经济可行性

该系统的开发主要基于开源技术(如Java、Spring Boot、MySQL等),这大大降低了技术选型的费用,无需支付高额的许可费用。系统的开发只需具备Java相关的技术背景,开发成本相对较低。此外,Spring Boot的代码质量和可维护性较高,可以降低后期维护成本。

3.1.3操作可行性

Spring Boot应用易于监控和调试,结合自动化运维工具,能够显著减少运营复杂度,并确保系统的稳定性和可靠性。为了进一步提升操作可行性,平台界面设计直观易用,降低用户的上手难度,并提供详尽的使用指南和技术支持,帮助用户快速使用该系统。

3.1.4市场可行性

随着我国汽车保有量的持续增长和消费观念的转变,二手车市场正迎来快速发展期。线上交易平台凭借信息透明、操作便捷、覆盖范围广等优势,逐渐成为买卖双方的重要选择。该系统不仅可满足买家查找车辆、在线评估、预约看车、交易支付等核心需求,也为卖家提供了信息发布与订单管理支持,同时便于管理员进行数据监控与业务调控。因此,从市场需求角度来看,该系统具有较强的可行性和广阔的应用前景。

3.2系统需求分析

3.2.1功能性需求分析

本系统分为买家用户、卖家用户和管理员这三大用户功能模块。各用户模块的具体功能说明如下:

1.买家用户功能

  1. 注册登录:新用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
  2. 首页:用户可以查看首页展示的轮播图、新闻资讯、车辆信息推荐等信息并进行相关操作。
  3. 通知公告:用户可以查看系统发布的网站公告、关于我们、联系方式、网站介绍等信息。
  4. 新闻资讯:用户可以查看新闻资讯列表中某个资讯信息的详情并可以进行点赞、收藏和发表评论操作。
  5. 车辆信息:用户可以查看车辆信息列表中某个车辆信息的详情并可以进行点赞、收藏、预约看车和发表评论等操作。
  6. 在线评估:用户可以在线提交二手车辆评估信息。
  7. 我的:用户点击我的头像的下拉菜单“我的账户”可以查看和修改个人信息和登录密码;点击“个人中心”可以查看个人首页、看车预约、下单交易、申请分期、分期账单、交易评价、在线评估、收藏和评论管理并进行相关操作。例如,点击“看车预约”可以查看列表中某个预约的详情和审核状态;审核通过后可以提交下单交易或申请分期信息。点击“下单交易”可以查看列表中某个下单交易的详情,点击“支付”可以通过微信、支付宝等方式完成在线支付,交易完成后可以提交交易评价信息。点击“退出”即可退出系统。

2.卖家用户功能

  1. 注册登录:新用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
  2. 首页:用户可以查看首页展示的轮播图、新闻资讯、车辆信息推荐等信息并进行相关操作。
  3. 通知公告:用户可以查看系统发布的网站公告、关于我们、联系方式、网站介绍等信息。
  4. 新闻资讯:用户可以查看新闻资讯列表中某个资讯信息的详情并可以进行点赞、收藏和发表评论操作。
  5. 车辆信息:用户可以查看车辆信息列表中某个车辆信息的详情并可以进行点赞、收藏和发表评论等操作。
  6. 在线评估:用户可以在线提交二手车辆评估信息。
  7. 我的:用户点击我的头像的下拉菜单“我的账户”可以查看和修改个人信息和登录密码;点击“个人中心”可以查看个人首页、车辆信息、看车预约、下单交易、申请分期、分期账单、交易评价、收藏和评论管理并进行相关操作。例如,可以对用户提交的看车预约、下单交易信息进行审核,可以向买家用户发送分期账单信息等。点击“退出”即可退出系统。

3.管理员功能

  1. 登录:管理员的账号和密码是事先在数据库中设定好的,管理员可以通过在后台输入正确的账号、密码和验证码进行登录。
  2. 后台首页:管理员可以查看后台首页展示的买家用户统计、看车预约统计和下单交易统计等可视化图表。
  3. 系统用户:管理员可以查看新注册的卖家用户信息详情并进行审核,同时拥有对所有用户(管理员、买家用户、卖家用户)信息进行增删改查的操作权限。
  4. 车辆信息管理:管理员可以对车辆信息进行增删改查操作。例如,点击“ 车辆信息列表”可以查看列表中所有车辆信息的详情和评论,可以对卖家用户新发布的车辆信息进行审核和回复。
  5. 车辆型号管理:管理员可以对车辆型号信息进行增删改查操作。例如,点击“ 车辆型号列表”可以查看列表中某个车辆型号的详情
  6. 看车预约管理:管理员可以查看看车预约列表中某个买家提交的看车预约详情并可以进行审核。
  7. 下单交易管理:管理员可以查看下单交易列表中某个买家提交的下单交易详情并可以进行审核等操作。
  8. 申请分期管理:管理员可以查看申请分期列表中某个买家提交的申请分期详情并可以进行审核等操作。
  9. 分期账单管理:管理员可以查看分期账单列表中某个分期账单的详情并可以进行审核。
  10. 交易评价管理:管理员可以查看交易评价列表中某个买家用户提交的交易评价的详情并可以进行审核和回复。
  11. 在线评估管理:管理员可以查看交易评价列表中某个买家用户提交的交易评价的详情并可以进行审核和回复车辆估价。
  12. 系统管理:管理员可以对系统轮播图信息进行增删改查操作。
  13. 通知公告管理:管理员可以对通知公告进行增删改查操作。
  14. 资源管理:在该模块管理员可以对新闻资讯和资讯分类信息进行增删改查操作。例如,点击“新闻资讯”可以查看列表中某个新闻资讯的详情和评论。
  15. 管理员点击我的头像下拉菜单“个人信息”可以修改个人基本信息,点击“修改密码”可以修改登录密码;点击“网站首页”可以浏览首页信息;点击“退出”即可退出系统。

3.2.2非功能性需求分析

非功能性需求分析主要是分析本系统的安全性怎么样(是否会泄露用户个人信息),可靠性怎么样(用户操作的时候是不是能够根据实际操作显示信息),性能怎么样(运行是否操作流畅),可拓展性怎么样(功能能否继续拓展)等。具体可以表示在如下3-1表格中:

3-1二手车网站交易系统非功能需求表

需求类型

描述

性能

系统应具有高性能,能够快速响应用户请求,保持稳定的性能水平,支持高并发访问和大规模数据处理。

可靠性

系统应具有高可靠性,确保系统稳定运行,防止系统故障和数据丢失,提供数据备份和恢复机制。

安全性

系统应具有高安全性,保护用户隐私信息和数据安全,采用加密传输技术、访问控制和身份验证机制。

可用性

系统应具有高可用性,保证系统全天候运行,最大限度减少系统故障和维护时间,提供灾备和故障转移功能。

易用性

系统应具有良好的易用性,用户界面设计友好,操作简单直观,提供清晰的指导和帮助文档。

可维护性

系统应具有良好的可维护性,易于维护和升级,提供模块化和结构化代码,方便开发人员进行维护和修改。

可扩展性

系统应具有良好的可扩展性,支持新增功能和模块的集成,具备良好的架构设计和扩展性能。

3.3模型分析

3.3.1系统用户角色分析

在系统开发过程中,对用户角色的分析是构建合理用户权限管理和确保系统有序运行的基础。本系统旨在为用户提供一个高效、便捷的二手车网站交易系统,为此定义了两种主要的用户角色:买家用户(buyer_user)、卖家用户(seller_customers)和管理员(Administrator)。每一种角色都被赋予了与其角色相关的特定权限和功能,以满足不同用户群体的需求并保障系统的整体安全性。

3.3.2系统用例分析

系统用例分析是对系统中各个功能模块的用户需求和行为进行分析,以识别和描述不同的用户用例。通过系统用例分析,可以深入了解用户在系统上的操作流程和交互方式,为系统设计和开发提供指导,并确保平台能够满足用户的需求和期望。

买家用户角色用例图如下图所示:

图3.1买家用户用例图

卖家用户角色用例图如下图所示:

图3.2卖家用户用例图

管理员角色用例如下图所示。

图3.3管理员用例图

4  系统设计

4.1系统架构设计

在系统架构设计中,我将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图所示。

图4.1系统架构设计图

表示层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。

业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。

数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。

这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。

4.2系统功能模块设计

功能模块设计是系统开发过程中的重要阶段,它旨在将系统划分为不同的模块,每个模块负责完成特定的功能或任务。二手车网站交易系统由买家用户、卖家用户和管理员这三个用户功能模块组成,每个模块下又包含具体的功能操作。功能整体功能结果图如下图所示。

图4.2系统整体功能结构图

4.3系统流程设计

4.3.1系统操作流程

用户访问系统,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。

图4.3程序操作流程图

4.3.2登录流程

用户访问系统,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。

图4.4登录流程图

4.3.3注册流程

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

图4.5注册流程图

4.4数据库设计

4.4.1数据库实体设计

数据库实体设计是数据库设计的关键步骤,对实际业务逻辑中涉及的实体及其属性进行抽象建模,明确系统中的主要信息对象及其关系[13]。在实体设计中,根据需求分析确定系统的核心实体,如用户、角色、权限等,提取实体的主要属性,如用户的ID、姓名、性别等,同时定义各实体之间的关系,包括一对一、一对多、多对多等。在设计过程中,注重实体的完整性、规范性和唯一性,确保设计能够满足系统功能需求,并为后续的表设计提供清晰的结构框架。实体设计需遵循数据库设计的标准化要求,避免数据冗余和不必要的复杂度。以下将展示系统的全局E-R图。系统全局E-R图如图4.5所示。

图4.6总E-R图

4.4.2数据库表结构设计

数据库表设计基于实体设计,将抽象的实体映射为具体的表结构。设计过程中,为每个实体定义表名、字段名及数据类型 [14]。根据业务需求,合理定义主键、外键及约束条件,确保表之间的关联性,例如通过外键建立用户表和角色表之间的关系。表设计时注重数据存储的完整性、一致性,并通过索引优化查询效率,最终确保数据库结构能够支持系统的功能需求。在此列举主要数据表

表 4-1-buyer_user(买家用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

buyer_user_id

int

买家用户ID

2

buyers_name

varchar

64

买家姓名

3

buyers_gender

varchar

64

买家性别

4

buyers_phone_number

varchar

16

买家电话

5

buyers_territory

varchar

64

买家地域

6

examine_state

varchar

16

审核状态

7

user_id

int

用户ID

8

create_time

datetime

创建时间

9

update_time

timestamp

更新时间

表 4-2-car_viewing_reservation(看车预约)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

car_viewing_reservation_id

int

看车预约ID

2

vehicle_number

varchar

64

车辆编号

3

license_plate_brand

varchar

64

车牌品牌

4

model

varchar

64

车辆型号

5

vehicle_color

varchar

64

车辆颜色

6

vehicle_age

varchar

64

车辆车龄

7

vehicle_prices

varchar

64

车辆价格

8

seller_customers

int

卖家用户

9

sellers_phone_number

varchar

64

卖家电话

10

buyer_user

int

买家用户

11

buyers_name

varchar

64

买家姓名

12

buyers_phone_number

varchar

64

买家电话

13

car_viewing_time

datetime

看车时间

14

number_of_appointments

varchar

64

预约次数

15

appointment_remarks

text

65535

预约备注

16

examine_state

varchar

16

审核状态

17

examine_reply

varchar

255

审核回复

18

order_transaction_limit_times

int

下单交易限制次数

19

apply_for_installment_payment_limit_times

int

申请分期限制次数

20

create_time

datetime

创建时间

21

update_time

timestamp

更新时间

22

source_table

varchar

255

来源表

23

source_id

int

来源ID

24

source_user_id

int

来源用户

表 4-3-order_transaction(下单交易)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

order_transaction_id

int

下单交易ID

2

vehicle_number

varchar

64

车辆编号

3

license_plate_brand

varchar

64

车牌品牌

4

model

varchar

64

车辆型号

5

vehicle_color

varchar

64

车辆颜色

6

vehicle_age

varchar

64

车辆车龄

7

vehicle_prices

varchar

64

车辆价格

8

seller_customers

int

卖家用户

9

sellers_phone_number

varchar

64

卖家电话

10

buyer_user

int

买家用户

11

buyers_name

varchar

64

买家姓名

12

buyers_phone_number

varchar

64

买家电话

13

purchase_price

double

购买价格

14

order_date

date

下单日期

15

transaction_status

varchar

64

交易状态

16

purchase_remarks

text

65535

购买备注

17

examine_state

varchar

16

审核状态

18

pay_state

varchar

16

支付状态

19

pay_type

varchar

16

支付类型: 微信、支付宝、网银

20

transaction_evaluation_limit_times

int

交易评价限制次数

21

create_time

datetime

创建时间

22

update_time

timestamp

更新时间

23

source_table

varchar

255

来源表

24

source_id

int

来源ID

25

source_user_id

int

来源用户

表 4-4-seller_customers(卖家用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

seller_customers_id

int

卖家用户ID

2

seller_name

varchar

64

卖家姓名

3

sellers_gender

varchar

64

卖家性别

4

sellers_phone_number

varchar

16

卖家电话

5

qualification_certificate

varchar

255

资质证件

6

examine_state

varchar

16

审核状态

7

user_id

int

用户ID

8

create_time

datetime

创建时间

9

update_time

timestamp

更新时间

表 4-5-transaction_evaluation(交易评价)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

transaction_evaluation_id

int

交易评价ID

2

vehicle_number

varchar

64

车辆编号

3

license_plate_brand

varchar

64

车牌品牌

4

model

varchar

64

车辆型号

5

vehicle_color

varchar

64

车辆颜色

6

vehicle_age

varchar

64

车辆车龄

7

vehicle_prices

varchar

64

车辆价格

8

seller_customers

int

卖家用户

9

sellers_phone_number

varchar

64

卖家电话

10

buyer_user

int

买家用户

11

buyers_name

varchar

64

买家姓名

12

buyers_phone_number

varchar

64

买家电话

13

purchase_price

varchar

64

购买价格

14

order_date

varchar

64

下单日期

15

transaction_rating

varchar

64

交易评分

16

transaction_evaluation

text

65535

交易评价

17

examine_state

varchar

16

审核状态

18

examine_reply

varchar

255

审核回复

19

create_time

datetime

创建时间

20

update_time

timestamp

更新时间

21

source_table

varchar

255

来源表

22

source_id

int

来源ID

23

source_user_id

int

来源用户

表 4-6-vehicle_information(车辆信息)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

vehicle_information_id

int

车辆信息ID

2

seller_customers

int

卖家用户

3

sellers_phone_number

varchar

64

卖家电话

4

vehicle_number

varchar

64

车辆编号

5

license_plate_brand

varchar

64

车牌品牌

6

model

varchar

64

车辆型号

7

vehicle_color

varchar

64

车辆颜色

8

vehicle_mileage

varchar

64

车辆里程

9

vehicle_region

varchar

64

车辆地域

10

vehicle_age

varchar

64

车辆车龄

11

vehicle_prices

double

车辆价格

12

test_report

text

65535

检测报告

13

release_time

date

发布时间

14

vehicle_status

varchar

64

车辆状态

15

vehicle_pictures

varchar

255

车辆图片

16

vehicle_details

longtext

4294967295

车辆详情

17

hits

int

点击数

18

praise_len

int

点赞数

19

collect_len

int

收藏数

20

comment_len

int

评论数

21

examine_state

varchar

16

审核状态

22

examine_reply

varchar

255

审核回复

23

recommend

int

智能推荐

24

car_viewing_reservation_limit_times

int

预约看车限制次数

25

create_time

datetime

创建时间

26

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

用户可以查看新闻资讯列表中某个资讯信息的详情并可以进行点赞、收藏和发表评论操作。支持通过局部搜索、筛选等方式搜索查看相关资讯信息。其界面图如下图5.5所示。

图5.5新闻资讯界面

5.1.6车辆信息

在该模块卖家用户可以查看车辆信息列表中某个车辆信息的详情并可以进行点赞、收藏和发表评论等操作。买家用户可以查看车辆信息列表中某个车辆信息的详情并可以进行点赞、收藏、预约看车和发表评论等操作。点击详情页面的“预约看车”进入页面选择预约时间和填写预约次数和备注信息后点击“提交”即可生成预约信息。支持通过关键字搜索、排序等方式搜索查看相关车辆信息。其界面图如下图5.6所示。

图5.6车辆信息界面

5.1.7个人中心(买家用户)

用户点击我的头像下拉菜单“个人中心”可以查看个人首页、看车预约、下单交易、申请分期、分期账单、交易评价、在线评估、收藏和评论管理并进行相关操作。例如,点击“看车预约”可以查看列表中某个预约的详情和审核状态;审核通过后点击“下单交易”可以提交交易信息;点击“申请分期”可以提交分期付款申请信息。点击“下单交易”可以查看列表中某个下单交易的详情,点击“支付”可以通过微信、支付宝等方式完成在线支付,交易完成后可以提交交易评价信息。点击“收藏”可以查看或删除收藏列表信息。点击“评论管理”可以查看评论或删除自己的评论信息。其界面图如下图5.7所示。

图5.7个人中心界面

5.1.8个人中心(卖家用户)

用户点击我的头像下拉菜单“个人中心”可以查看个人首页、车辆信息、看车预约、下单交易、申请分期、分期账单、交易评价、收藏和评论管理并进行相关操作。例如,点击“车辆信息”可以对车辆信息进行增删改查操作,点击“添加”进入页面填写车辆编号、车辆品牌、车辆型号、车辆颜色等信息后上传封面图片后点击“提交”即可完成车辆信息的发布,发布后需由管理员进行审核。点击“看车预约”可以查看列表中某个买家用户提交的预约信息详情,点击“审核”可以对买家预约进行审核和回复。点击“下单交易”可以查看列表中某个交易的详情和修改过户状态并进行审核。点击“申请分期”可以查看列表中某个申请分期的详情并进行审核和回复,审核通过后点击“分期账单”可以向买家发送分期账单信息。其界面图如下图5.8所示。

图5.8个人中心界面

5.2管理员功能实现

5.2.1后台首页

后台首页界面为管理员提供了方便快捷地查看买家用户统计、看车预约统计和下单交易统计等可视化图表的功能。这些数据的可视化展示有助于管理员全面掌握二手车交易网站的运营状况,及时分析销售趋势与用户消费行为,从而科学制定管理策略与营销方案,提升整体管理水平和服务质量。其界面图如下图5.9所示。

图5.9后台首页界面

5.2.2系统用户

管理员可以查看新注册的卖家用户信息详情并进行审核,同时拥有对所有用户(管理员、买家用户、卖家用户)信息进行增删改查的操作权限。例如,点击某个买家用户后面的“详情”可以查看该用户的信息详情并可以对用户状态等信息进行修改。其界面图如下图5.10所示。

图5.10系统用户界面

5.2.3车辆信息管理

管理员可以对车辆信息进行增删改查操作。例如,点击“ 车辆信息列表”可以查看列表中所有车辆信息的详情和评论,可以对卖家用户新发布的车辆信息进行审核和回复。点击“车辆信息添加”进入页面填写车辆编号、车辆品牌、车辆型号、车辆颜色等信息后上传封面图片等信息后点击“提交”即可完成车辆信息的发布。以车辆信息列表为例,其界面图如下图5.11所示。

图5.11车辆信息列表界面

5.2.4交易评价管理

管理员可以查看交易评价列表中某个买家用户提交的交易评价的详情,点击“审核”可以对用户评价进行审核和回复,可以对列表信息进行查询、重置和删除操作。其界面图如下图5.12所示。

图5.12交易评价管理界面

5.2.5在线评估管理

管理员可以对在线评估信息进行增删改查操作。点击“在线评估列表”可以查看某个用户提交的在线评估的详情,点击“申请”可以对用户提交的评估信息进行审核和回复车辆估价。其界面图如下图5.12所示。

图5.13系统管理界面

5.2.6系统管理

管理员可以对系统轮播图信息进行增删改查操作。点击“添加”进入页面上传轮播图图片和填写标题、链接地址后点击“提交”即可完成轮播图的添加。其界面图如下图5.12所示。

图5.14系统管理界面

5.2.7通知公告管理

管理员可以对通知公告进行增删改查操作。例如,点击“添加”进入页面填写标题和正文信息后点击“提交”即可完成通知公告的发布。其界面图如下图5.13所示。

图5.15通知公告管理界面

5.2.8资源管理

在该模块管理员可以对新闻资讯和资讯分类信息进行增删改查操作。例如,点击“新闻资讯”可以查看列表中某个新闻资讯的详情和评论;点击“添加”进入页面上传封面图片和填写标题、分类、正文等信息后点击“提交”即可完成文章资讯的添加。以新闻资讯为例,其界面图如下图5.14所示。

图5.16新闻资讯界面

6  系统测试

6.1系统测试目的

在这个产品被投入使用前,首先需要进行试用,这是重要的环节。考虑到某个部分的开发没有缺陷情况下,把各种模块拼接,也有一定概率就存在矛盾。这就好比每个人都很独特,但聚在一起就显得杂乱无章,需要保证有默契的配合。对于测试,要看它的各项内容是否契合的原则[15]。若与最初定下的标准有一定程度上的出入,那么就需要做出一些调整,让最终的大方向朝着目标前进。

测试是为了发现在开发的程序中所存在的问题,测试这一工作是非常艰巨的,而又是非常困难的,这一部分在程序的设计中占有很大比例,可以说一个程序的开发工作量要是占据了百分至六十,那么剩下的百分之四十必然是测试这一部分,甚至更高。

6.2系统功能测试

通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。系统功能测试包括:用户注册登录功能测试、用户发表评论功能测试、看车预约功能测试、管理员添加轮播图信息功能测试、管理员删除通知公告功能测试,如表6-1、6-2、6-3、6-4、6-5所示:

表6-1用户注册登录测试表

用户注册登录测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

用户注册、登录

测试用户正确注册、登录

  1. 在首页界面注册一个新用户,按规定输入合理的注册信息,提交。
  2. 用户在登录界面输入账户密码登录

用户注册成功,登录成功

结果输出符合预期

通过

表6-2用户发表评论测试表

用户发表评论测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

用户发表评论

测试买家用户发表评论操作

  1. 在导航栏点击“新闻资讯”并看某个新闻资讯的详情; 
  2. 在详情页面下方发表对该资讯的评论

用户发表评论成功,展示用户评论信息

结果输出符合预期

通过

表6-3看车预约测试表

看车预约测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

看车预约测试

测试买家用户看车预约功能

  1. 在首页导航栏点击“车辆信息;
  2. 点击查看某个车辆信息详情,在详情页面点击“看车预约”

用户可以编辑看车预约信息并提交

结果输出符合预期

通过

表6-4管理员添加轮播图测试表

管理员添加轮播图测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

管理员添加轮播图测试

测试轮播图信息添加

  1. 管理员点击“系统管理”下方的“轮播图管理”;
  2. 点击“添加”输入相关信息后点击“提交”

轮播图信息添加成功,前端用户可以查看该轮播图信息

结果输出符合预期

通过

表6-5管理员删除通知公告测试表

管理员删除通知公告测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

管理员删除通知公告测试

测试通知公告删除

  1. 管理员点击“通知公告管理”
  2. 选择一个通知公告信息点击“删除”并确认删除

通知公告删除成功,前端不在展示该通知公告信息

结果输出符合预期

通过

6.3测试结果总结

通过编写二手车网站交易系统系统的功能测试用例,已经检测完毕系统测试,用户注册登录功能测试、用户发表评论功能测试、看车预约功能测试、管理员添加轮播图信息功能测试、管理员删除通知公告功能测试,通过这五大模块功能测试将为二手车网站交易系统的后期推广运营提供了强力的技术支撑。

7总结

在开发二手车网站交易系统之前,需要对用户的实际需求进行全面分析。这不仅包括系统的可行性研究,还涵盖了功能需求、性能需求以及用户体验等方面的深入调研。在可行性分析阶段,本文从技术可行性、经济可行性和社会可行性等多个角度对系统实现的可能性进行了全面评估,结果表明,该系统的开发和实施是完全可行的。

本文首先概述了二手车网站交易系统开发的背景及其现实意义,接着详细阐述了系统的具体业务流程与功能需求。根据实际应用场景,本文对系统的整体架构和功能模块进行了精细化设计。整个系统划分为买家用户、卖家用户和管理员三大角色模块,涵盖车辆信息发布、在线评估、预约看车、下单交易、支付结算、评价管理等多项核心功能,确保系统运行高效、稳定且具备良好的用户交互体验。

在开发本系统的过程中,我收获颇丰,不仅掌握了Spring Boot框架、MySQL数据库、Redis缓存等关键技术的实际应用,也加深了对软件开发流程、系统安全性和前后端协同工作的理解。尽管系统已初步完成主要功能模块,但由于个人技术水平和项目经验的局限,系统仍存在可优化空间,例如前端界面的美观性提升、代码结构的进一步规范、系统安全性加固等方面。未来,我将持续学习并完善相关技能,对系统进行持续迭代和优化。

期望该二手车网站交易系统能够顺利投入实际应用,为用户提供一个安全、便捷、高效的线上交易平台,推动二手车行业的数字化转型。同时,也希望该系统能为其他类似类型的互联网交易平台提供有价值的参考案例。通过智能化手段提升交易效率和服务质量,系统将有助于促进二手车市场的健康发展,增强买卖双方的信任感和满意度,助力构建更加开放、透明、智能的现代汽车消费生态体系。

参考文献

  1. 李皓.基于Spring boot的二手车之家网站的设计与实现[D].北京交通大学,2019.
  2. 卢鑫海,余建坤.基于区块链的二手车交易系统研究[J].软件导刊,2021,20(09):185-190.
  3. 代金辉,仲璇,王梦恩.基于LightGBM和随机森林算法的二手车估价[J].高师理科学刊,2022,42(12):15-22.
  4. 鲁捷.I公司二手车交易服务设计优化研究[D].电子科技大学,2023.
  5. Yoo G S ,Ahn B .A study for efficiency improvement of used car trading based on a public blockchain[J].The Journal of Supercomputing,2021,77(9):1-15.
  6. 谢帅虎.基于Java语言的翻页功能接口程序设计与实现[J].数字通信世界,2024,(11):92-94.
  7. 贾琴.Java编程语言的应用策略分析[J].集成电路应用,2024,41(10):84-85.
  8. 熊群毓.大数据时代MySQL数据库的应用分析[J].信息与电脑(理论版),2023,35(14):209-212.
  9. 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
  10. 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
  11. 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
  12. 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
  13. 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
  14. 马艳艳,吴晓光.计算机软件与数据库的设计策略分析[J].电子技术,2024,53(05):104-105.
  15. 刘建,何冬辉,刘维,等.国产通用计算机性能测试系统的设计与验证[J].计算机测量与控制,2024,32(09):44-50.
  16. 单媛媛.二手车交易平台商业模式研究[D].北京邮电大学,2023.
  17. 何鹏飞.二手车市场发展及存在问题分析[J].内燃机与配件,2023,(09):112-114.
  18. 王旭光.二手车交易市场经营模式创新发展在路上[N].国际商报,2024-11-18(005).
  19. Hejing W .Commerce Middle Office Management System Based on Springboot[J].International Journal of Advanced Network, Monitoring and Controls,2022,7(2):32-45.
  20. Sunday O B ,Nduka O S .MySQL Database Server: Deploying Software Application to Enhance Visibility and Accountability[J].Current Journal of Applied Science and Technology,2023,42(4):16-23.

致  谢

这次毕业设计能够完成,最重要的就是来自指导老师的帮助,老师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设施能够完成离不开老师的帮助。我对老师由衷的表示感谢,

其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。

最后,我要感谢我的家人和同学们。感谢父母在物质与精神上给予我无限的支持和鼓励。感谢我的同学们,在论文写作期间,你们给予了我许多宝贵的建议和帮助,让我在学术研究的道路上不再孤单。

再次感谢所有在我大学生活中给予我帮助和支持的人们。您们的关怀和鼓励将永远铭刻在我的心中,成为我未来前行的动力。

附录

系统核心代码设计

项目启动文件Application.java,代码如下:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

@EnableJpaRepositories

@MapperScan("com.project.demo.dao")

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class,args);

    }

}

Controller用于spring控制请求的地址

新增一条数据,通过post传入一个json对象,然后经过request.getReader(),最后经过readBody()转成一个Map,含有String和Object,key用的是字段名,Object存放数据,最终得到Map,insert用拼装sql,读取body,组装成一个insert对象,runCountSql()语句,代码如下:

    @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);

 }

修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下:

    @PostMapping("/set")

@Transactional

    public Map<String, Object> set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

    }

删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下:

    @RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

    }

    public void delete(Map<String,String> query,Map<String,String> config){

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

        log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());

    }

通过请求的参数获取一条数据,通过readQuery(),获取URL后面的对象地址,查询FindConfig语句,select筛选Map对象,FIELD为查询字段,未传输的情况下传入“*”,代码如下:

    @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);

        }

    }

通过请求的参数获取列表数据,代码如下:

    @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);

    }

图片/文件/视频等的上传方法通过MultipartFile,代码如下:

   @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, "上传失败");

    }

注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下:

    /**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}    

登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,其代码如下:

 /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        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, "账号或密码不正确");

        }

    }

找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:

    /**

     * 找回密码

     * @param form

     * @return

     */

    @PostMapping("forget_password")

    public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {

        JSONObject ret = new JSONObject();

        String username = form.getUsername();

        String code = form.getCode();

        String password = form.getPassword();

        // 判断条件

        if(code == null || code.length() == 0){

            return error(30000, "验证码不能为空");

        }

        if(username == null || username.length() == 0){

            return error(30000, "用户名不能为空");

        }

        if(password == null || password.length() == 0){

            return error(30000, "密码不能为空");

        }

        // 查询用户

        Map<String, String> query = new HashMap<>();

        query.put("username",username);

        List list = service.selectBaseList(service.select(query, service.readConfig(request)));

        if (list.size() > 0) {

            User o = (User) list.get(0);

            JSONObject query2 = new JSONObject();

            JSONObject form2 = new JSONObject();

            // 修改用户密码

            query2.put("user_id",o.getUserId());

            form2.put("password",service.encryption(password));

            service.update(query, service.readConfig(request), form2);

            return success(1);

        }

        return error(70000,"用户不存在");

    }

修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如下:

    /**

     * 修改密码

     * @param data

     * @param request

     * @return

     */

    @PostMapping("change_password")

    public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){

        // 根据Token获取UserId

        String token = request.getHeader("x-auth-token");

        Integer userId = tokenGetUserId(token);

        // 根据UserId和旧密码获取用户

        Map<String, String> query = new HashMap<>();

        String o_password = data.get("o_password");

        query.put("user_id" ,String.valueOf(userId));

        query.put("password" ,service.encryption(o_password));

        int count = service.selectBaseCount(service.count(query, service.readConfig(request)));

        if(count > 0){

            // 修改密码

            Map<String,Object> form = new HashMap<>();

            form.put("password",service.encryption(data.get("password")));

            service.update(query,service.readConfig(request),form);

            return success(1);

        }

        return error(10000,"密码修改失败!");

    }

请关注点赞+私信博主,免费领取项目源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值