博主介绍:
同学们好,本人从事计算机毕业设计多年服务很多届学生,精通Java、SSM、SpringBoot、Python、微信小程序、安卓APP等。我有上千套Java项目成品,也可根据同学们的需求去按需定制
以下毕设均可提供远程部署安装服务,文末有微信联系方式有需要的可以添加
👇🏻 精彩专栏 推荐订阅👇🏻
Java毕业设计项目精品实战案例《3000套》https://blog.csdn.net/a1g45/category_12324117.html
🌟文末有微信名片获取源码+数据库(上千套毕设+配套论文,白嫖勿扰)🌟
🌟计算机毕设定制(包加功能以及后期修改功能)🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
👇🏻 毕设演示视频👇🏻
X037-基于Java的“优易”社区二手交易网站
摘 要
本课题旨在设计并实现一个基于Java技术的“优易”社区二手交易网站,旨在为用户提供一个便捷、安全的二手商品交易平台。随着互联网技术的不断发展,二手交易市场逐渐成为消费者之间重要的交易渠道之一。然而,现有的一些二手交易平台在用户体验、信息安全、交易效率等方面仍存在一定的不足。该系统采用了Java语言进行开发,结合MySQL数据库管理数据,前端设计使用了CSS语言来提升用户界面的友好性。为了实现高效的开发,系统选用了MyBatis框架和Spring Boot框架。系统功能包括用户管理、商品管理、订单管理、公告管理、购物车、我的订单、我的收藏等,全面覆盖了二手交易平台所需的核心模块。用户可以通过平台进行商品发布、浏览、购买和交易管理,同时平台也提供了完善的安全机制,确保交易过程中的数据安全与隐私保护。总之,本课题通过实现一个功能完善、易于操作且安全可靠的二手交易平台,旨在为广大用户提供一个良好的二手商品交易体验。系统在技术选型上充分考虑了可扩展性和性能优化,保证了平台的高效运行。
关键词:社区二手交易网站;Java语言;MySQL数据库;MyBatis框架
ABSTRACT
The aim of this project is to design and implement a "Youyi" community second-hand trading website based on Java technology, aiming to provide users with a convenient and secure second-hand commodity trading platform. With the continuous development of Internet technology, the second-hand trading market has gradually become one of the important trading channels between consumers. However, some existing second-hand trading platforms still have certain shortcomings in terms of user experience, information security, and transaction efficiency. The system is developed using Java language, combined with MySQL database to manage data, and the front-end design uses CSS language to enhance the user interface friendliness. In order to achieve efficient development, the system has chosen MyBatis framework and Spring Boot framework. The system functions include user management, product management, order management, announcement management, shopping cart, My Orders, My Favorites, etc., fully covering the core modules required for the second-hand trading platform. Users can publish, browse, purchase, and manage transactions through the platform, and the platform also provides a comprehensive security mechanism to ensure data security and privacy protection during the transaction process. In summary, this project aims to provide users with a good second-hand commodity trading experience by implementing a fully functional, easy to operate, and safe and reliable second-hand trading platform. The system fully considers scalability and performance optimization in technology selection, ensuring the efficient operation of the platform.
Key Words: Community second-hand trading website; Java language; MySQL database; MyBatis framework
目 录
第1章 绪论................................................................ 1
1.1 课题来源与意义..................................................... 1
1.2 国内外发展情况..................................................... 1
1.2.1 国内发展情况................................................. 1
1.2.2 国外发展情况................................................. 2
1.3 论文结构........................................................... 2
1.4 本章小结........................................................... 2
第2章 系统关键技术........................................................ 3
2.1 Java语言........................................................... 3
2.2 MySQL数据库........................................................ 3
2.3 CSS语言............................................................ 3
2.4 MyBatis框架........................................................ 3
2.6 Spring Boot框架.................................................... 4
2.7 开发环境及其应用软件............................................... 4
2.8 本章小结........................................................... 4
第3章 系统需求分析........................................................ 5
3.1 需求分析........................................................... 5
3.2 可行性分析......................................................... 5
3.2.1 技术可行性分析............................................... 5
3.2.2 经济可行性分析............................................... 5
3.2.3 操作可行性分析............................................... 5
3.3 功能需求分析....................................................... 6
3.3.1 用户功能分析................................................. 6
3.3.2 管理员功能分析............................................... 6
3.4 系统流程分析....................................................... 7
3.4.1 商品管理流程分析............................................. 7
3.4.2 用户管理流程分析............................................. 7
3.4.3 活动管理流程分析............................................. 8
3.5 本章小结........................................................... 9
第4章 系统设计........................................................... 10
4.1 系统功能设计...................................................... 10
4.2 数据库设计........................................................ 10
4.2.1 物理设计.................................................... 10
4.2.2 数据表...................................................... 16
4.3 本章小结.......................................................... 20
第5章 系统实现........................................................... 21
5.1 用户详细实现...................................................... 21
5.1.1 登录........................................................ 21
5.1.2 注册........................................................ 21
5.1.3 商品详情.................................................... 22
5.1.4 购物车...................................................... 22
5.1.5 订单管理.................................................... 23
5.1.6 地址管理.................................................... 24
5.2 管理员详细实现.................................................... 25
5.2.1 用户管理.................................................... 25
5.2.2 商品管理.................................................... 26
5.2.3 订单管理.................................................... 27
5.2.4 活动管理.................................................... 29
5.2.5 登录........................................................ 29
5.3 本章小结.......................................................... 30
第6章 系统测试........................................................... 31
6.1 测试目的.......................................................... 31
6.2 测试方法.......................................................... 31
6.3 测试结果.......................................................... 31
6.4 本章小结.......................................................... 32
结 论................................................................... 33
参考文献................................................................... 34
致 谢................................................................... 35
附录A 关于购物车相关代码................................................... 1
附录B 关于收藏商品相关代码................................................. 3
附录C 关于订单相关代码..................................................... 5
第1章 绪论
1.1 课题来源与意义
随着互联网技术的迅猛发展和人们生活方式的变化,二手交易市场逐渐成为一个重要的商业模式。在传统的二手交易过程中,交易双方信息不对称、交易环境不规范等问题普遍存在,往往导致交易过程中的信任危机与安全隐患。而随着电子商务的快速崛起,越来越多的人开始通过线上平台进行二手商品的交易。基于此背景,构建一个安全、便捷、高效的二手交易网站成为一个迫切的社会需求。本文的课题来源于当前二手交易市场中的痛点问题,通过利用Java技术及其相关框架,开发一个功能完备的二手交易平台,旨在为用户提供一个可信赖且高效的交易环境,从而解决传统二手交易所面临的诸多问题,进一步推动二手经济的蓬勃发展[1]。
本课题的研究意义在于通过设计和实现一个基于Java技术的“优易”社区二手交易平台,探索和解决当前二手交易市场中的实际问题,尤其是在用户体验、安全性和交易效率等方面的不足。随着电子商务的发展,网络安全和隐私保护成为日益重要的问题。在此背景下,如何确保平台上的交易安全,保护用户的个人信息,已成为二手交易平台的核心任务之一。通过本文的研究与实践,不仅为二手交易平台的开发提供了技术参考,也为类似系统的建设提供了实践经验,具有较高的学术和应用价值。
1.2 国内外发展情况
1.2.1 国内发展情况
目前,国内在二手交易平台的研究与应用方面已经取得了一定的进展,主要集中在技术架构优化、用户体验提升和平台安全性保障等方面。以“闲鱼”、“转转”等知名二手交易平台为代表,它们依托大数据、云计算和人工智能等技术,不仅在商品推荐、定价、信息匹配等方面提供了智能化服务,还在交易过程中的信用管理和风险控制方面进行了较为完善的设计[2]。例如,闲鱼通过基于用户行为的推荐算法提高商品的曝光度,同时加强了社交化的功能,提升了用户之间的信任度。然而,这些平台也存在一些问题,如在商品质量和交易安全方面的监管不够严格,容易出现虚假交易、诈骗等情况。此外,前人的研究多侧重于平台的商业化运营、用户行为分析等方向,尽管在系统功能设计和技术应用上有所突破,但很多研究在处理海量数据、优化用户体验和保障平台安全方面还存在一定的不足。虽然一些平台使用了成熟的技术架构如Spring Boot、MyBatis等,但在系统的高并发处理和用户信息保护等方面仍有进一步优化的空间。因此,本课题的研究有望在现有研究基础上,进一步完善二手交易平台的技术架构,提升其安全性和用户体验。
1.2.2 国外发展情况
在国外,二手交易平台的研究和应用已有较为成熟的体系,许多平台不仅具有强大的市场份额,还在技术创新和用户体验方面处于领先地位[3]。Facebook Marketplace凭借社交网络的优势,提供了较为精准的社交化交易环境,但其平台的用户安全保障机制尚需加强。总体来说,国外的研究在二手交易平台的技术应用上更加注重数据分析、用户社交和智能化推荐,但在交易安全、信息保护等方面仍然存在不足,这为未来的研究提供了更多改进的空间。在技术使用上,Spring、Ruby on Rails、Node.js等后端技术被广泛应用,而前端开发则普遍采用React、Vue等现代化框架。这些技术虽然推动了平台的高效运行,但在高并发和复杂交易场景下的系统稳定性与数据安全性方面仍需要进一步探索和优化[4]。
1.3 论文结构
本课题主要从社区二手交易网站的相关研究背景以及技术分析、系统需求分析、系统设计、系统实现、系统测试六个方面进行分别论述。
第1章绪论,详细介绍了社区二手交易网站的研究背景和意义、国内外研究现状以及论文的组织结构。
第2章系统关键技术,主要介绍了社区二手交易网站在本课题所用到的关键技术。
第3章系统需求分析,主要从需求分析、可行性分析、功能需求分析三个方面进行介绍。
第4章系统设计,主要从社区二手交易网站的系统功能设计和数据库设计来进行。
第5章系统实现,主要从用户系统功能模块实现和管理员系统功能模块实现两个方面来介绍,并通过截图对系统功能进行展示。
第6章系统测试,社区二手交易网站测试与结果分析。
1.4 本章小结
本章对研究课题的来源与意义进行了深入探讨,阐明了该课题在当前社会背景下的重要性与必要性。接着,分析了国内外在相关领域的发展现状,指出了研究的前沿动态与存在的不足,为本研究提供了充分的理论依据和实践参考。最后,简要介绍了论文的结构安排,明确了各章节的研究重点与逻辑关系。通过这一系列内容的梳理,为后续研究打下了坚实的基础,旨在推动该领域的进一步发展。
第2章 系统关键技术
2.1 Java语言
Java编程语言以其“编写一次,到处运行”的跨平台特性著称,通过Java虚拟机,Java程序可以在不同操作系统上无缝运行。Java是面向对象的编程语言,具有良好的封装、继承和多态性,适合开发复杂的企业级应用。它拥有庞大的标准库和丰富的第三方库,支持多线程编程,广泛应用于Web应用、移动应用、大型分布式系统和金融领域。Java的强类型、稳定性和安全性使其在大规模、高并发的项目中占据重要位置[5]。经过多年的发展,Java依然是全球最受欢迎的编程语言之一,拥有广泛的开发者社区和丰富的文档资源。
2.2 MySQL数据库
MySQL数据库以其高性能、稳定性和易于使用而受到广泛欢迎。MySQL支持结构化查询语言于数据管理和操作,并提供了多种存储引擎,以满足不同的应用需求,它适用于从小型网站到大型企业系统的各种应用,能够处理大量数据和高并发请求。MySQL具有良好的可扩展性,并支持数据备份、恢复和安全管理功能。其强大的社区支持和广泛的文档资源使得开发和维护变得更加便捷[6]。MySQL的跨平台特性允许在不同操作系统上运行,它常被用作Web开发的数据库解决方案,尤其是在LAMP堆栈中。
2.3 CSS语言
CSS是一种用于描述HTML文档呈现样式的语言,主要用于网页设计和布局。它通过选择器、属性和值的组合,为网页元素定义样式,包括颜色、字体、间距和布局等。CSS允许开发者创建响应式设计,使得网页在不同设备和屏幕尺寸下都能良好显示。通过样式表的层叠和优先级机制,CSS能够灵活地管理和调整样式。CSS3引入了许多新特性,如动画、过渡和媒体查询,进一步增强了网页设计的能力。由于其与HTML和JavaScript的紧密集成,CSS是构建现代网页不可或缺的技术。总之,CSS提供了强大的样式控制能力,使得网页设计更加美观和灵活。
2.4 MyBatis框架
MyBatis是一个支持定制化SQL、存储过程以及高级映射的持久层框架,主要用于将Java对象与数据库中的数据进行映射。与传统的JDBC相比,MyBatis简化了数据持久化操作,通过XML或注解的方式将SQL语句与Java方法绑定,减少了冗长的代码编写,它不需要像Hibernate那样严格遵守ORM规范,因此更加灵活,可以手动编写复杂的SQL查询。MyBatis支持动态SQL,可以根据不同条件生成相应的SQL语句,适用于复杂查询场景,它还提供了良好的缓存机制,提升了数据库访问的性能。由于其灵活性和轻量级的特点,MyBatis在需要高度定制SQL查询的项目中被广泛应用。同时,它与Spring等框架集成良好,方便开发者构建大规模应用[7]。
2.6 Spring Boot框架
Spring Boot是一个基于Spring框架的快速开发框架,旨在简化Spring应用的创建和部署,它通过约定优于配置的原则,减少了繁琐的配置工作,使开发者能够专注于业务逻辑的实现。Spring Boot提供了一整套开箱即用的功能,包括嵌入式服务器、自动配置、生产环境的监控和管理等,其内置的Maven和Gradle支持,使得项目的构建和依赖管理更加便捷。Spring Boot还与Spring Cloud无缝集成,支持微服务架构的开发,提升了应用的可扩展性和弹性。总体而言,Spring Boot通过简化开发流程和提供强大的功能支持,显著提高了开发效率和应用的可维护性[8]。
2.7 开发环境及其应用软件
主机:Intel的CPU、内存4G及以上
硬盘:100G以上
显示器:任意显示器
操作系统:Windows 10及以上版本
软件:IDEA开发工具,能够利用该软件进行代码的编写。MySQL用于数据库管理,Navicat用于数据库可视化操作管理工具。
2.8 本章小结
本章对系统的关键技术进行了全面分析,首先介绍了Java语言的特性及其在系统开发中的应用,强调了其跨平台性和丰富的生态环境。接着,讨论了MySQL数据库的优势,尤其是在数据管理和存储方面的高效性。随后,分析了CSS语言在前端设计中的重要性,提升了用户体验。对MyBatis框架的介绍则强调了其在数据持久化上的灵活性,而Spring Boot框架则提供了快速开发和部署的能力。最后,阐述了开发环境及其应用软件的配置与使用,确保了系统开发的高效性与稳定性,为整体系统的实现奠定了技术基础。
第3章 系统需求分析
3.1 需求分析
本系统的主要需求是为用户提供一个简洁、安全的二手交易平台,支持用户注册、登录、商品发布、浏览、购买、订单管理、购物车和收藏等基本功能。同时,系统需要提供完善的商品信息管理功能,包括商品信息的修改和删除。用户能够方便地查看交易记录和订单状态,并进行有效的沟通与反馈[9]。平台需要确保用户数据的安全性,支持支付功能,并具备基本的后台管理功能,确保交易过程顺利进行。
3.2 可行性分析
3.2.1 技术可行性分析
从技术可行性分析来看,Java语言作为一种成熟的编程语言,具有跨平台、稳定性强等优点,非常适合构建大规模的Web应用系统。MySQL数据库作为一款性能优良的关系型数据库,能够高效地处理大量用户和商品数据,满足系统对数据存储的需求[10]。MyBatis框架和Spring Boot框架也具有广泛的应用基础,能够大大提高开发效率,减少开发周期。结合这些技术,系统的构建和优化均具有很高的技术可行性。
3.2.2 经济可行性分析
从经济可行性角度来看,系统所采用的Java语言、MySQL数据库、CSS语言、MyBatis框架以及Spring Boot框架均为开源技术,可以无需支付高昂的许可费用,从而大大降低了项目的开发成本。开发环境方面,Navicat和IDEA等工具也提供了免费的版本,满足项目的开发需求,进一步降低了开发的经济负担。综上所述,该系统的开发在经济上是可行的,能够以较低的成本完成项目的实施。
3.2.3 操作可行性分析
从操作可行性角度来看,系统的功能设计简单明了,用户界面友好,操作流程符合常规二手交易平台的使用习惯。用户可以轻松进行注册、登录、商品浏览、下单购买等操作,后台管理也提供了直观的操作界面,便于管理员进行商品管理、订单处理等任务。整体系统设计上注重了用户体验与操作便捷性,确保用户在操作过程中不会遇到过于复杂或不易理解的环节,因此,操作上是完全可行的。
3.3 功能需求分析
3.3.2 管理员功能分析
管理员进入登录界面进行登录,才能进入后台首页。管理员实现功能包括:个人中心、用户管理、商品管理、商品类型管理、用户咨询管理、公告管理、订单管理、轮播图信息管理、权限管理等。管理员的用例图如图3-2所示。
3.4 系统流程分析
3.4.1 商品管理流程分析
管理员进入商品管理页面,选择需要编辑的商品信息,若编辑内容为空则返回编辑页面,若内容不合法则也会返回编辑页面,二者皆符合则提交即可完成编辑用户信息;选择添加商品信息,若编辑内容为空则返回添加页面,若内容不合法则也会返回添加页面,二者皆符合则提交即可完成添加商品信息。商品管理流程图如图3-3所示。
图3-3 商品管理流程图
3.4.2 用户管理流程分析
管理员进入用户管理页面,选择需要删除的用户信息,若删除内容为空则返回删除页面,若内容不合法则也会返回删除页面,二者皆符合则提交即可完成删除用户信息。用户管理流程图如图3-4所示。
图3-4 用户管理流程图
3.4.3 活动管理流程分析
管理员进入活动管理页面,选择添加活动信息,若添加内容为空则返回添加页面,若内容不合法则也会返回添加页面,二者皆符合则提交即可完成添加活动信息。活动管理流程图如图3-5所示。
图3-5 活动管理流程图
3.5 本章小结
本章对系统需求进行了全面分析,首先通过需求分析明确了系统目标和用户期望。接着,进行了可行性分析,包括技术可行性、经济可行性和操作可行性,评估了项目实施的可行性与风险。随后,详细探讨了功能需求,分别分析了用户和管理员的具体功能需求,以确保系统满足不同角色的需求。在系统流程分析中,重点分析了商品管理、用户管理和活动管理的具体流程,旨在优化操作效率和用户体验。通过这些分析,为后续系统设计和实现提供了清晰的指导和依据。
第4章 系统设计
4.1 系统功能设计
本系统根据不同用户角色划分了相应的功能模块。对于普通用户,系统提供了个人中心、公告查看、商品浏览、购物车管理、订单支付、订单查询、地址管理和收藏夹等功能,用户可以方便地进行商品购买、订单跟踪和信息管理。而管理员则拥有更加全面的管理权限,包括个人中心、用户管理、商品管理、商品分类管理、用户咨询管理、公告发布与管理、订单处理、轮播图信息管理以及权限管理等功能,管理员可以对平台上的各项内容进行审核、调整和维护,确保系统的正常运转与良好用户体验。通过清晰的角色划分,系统能够实现高效的功能管理与安全控制。系统功能架构图如图4-1所示。
图4-1 系统功能架构图
4.2 数据库设计
4.2.1 物理设计
在基于Java的校园二手交易网站的数据库概念设计中,主要包含以下实体及其属性:促销活动实体包括满减、活动名和活动地址,用于管理平台的各类促销活动信息。地址实体包含收货人、详细地址和城市,用于记录用户的收货地址详细信息。评论实体包括评论内容和评论时间,用于用户对商品的评价记录。商品实体包括商品名称、价格和数量,用于管理和展示平台上出售的商品信息。订货实体包含订单时间和是否发货,用于跟踪用户订单的状态和处理时间。购物车实体包括商品ID和用户ID,用于记录用户购物车中的商品信息。用户实体包括用户名、注册时间、邮箱和手机,用于管理用户的基本信息和账户详情。通过这些实体及其属性的设计,数据库能有效支持并管理系统的各项功能,确保数据的结构化和完整性。
促销活动实体的实体E-R图,它具有八个属性,分别是:id、活动名、活动地址、折扣、满免、满减、满免数量、满减数量,其中id是主键。促销活动实体E-R图如图4-2所示。
图4-2 促销活动实体E-R图
地址信息实体的实体E-R图,它具有八个属性,分别是id、用户id、省份、城市、区县、详细地址、收货人、联系方式,其中id为主键。地址信息实体E-R图如图4-3所示。
图4-3 地址信息实体E-R图
管理员实体的实体E-R图,它具有三个属性,分别是adminId、用户名、密码,其中adminId是主键。管理员实体E-R图如图4-4所示。
图4-4 管理员实体E-R图
分类信息实体的实体E-R图,它具有两个属性,分别是分类id、分类名称,其中分类id是主键。分类信息实体E-R图如图4-5所示。
图4-5 分类信息实体E-R图
用户商品实体的实体E-R图,它具有三个属性,分别是用户id、商品主键、创建时间,其中用户id是主键。用户商品实体E-R图如图4-6所示。
图4-6 用户商品实体E-R图
评论信息实体的实体E-R图,它具有六个属性,分别是评论id、评论人主键、商品主键、观点、评论内容、评论时间,其中评论id是主键。评论信息实体E-R图如图4-7所示。
图4-7 评论信息实体E-R图
支付信息实体的实体E-R图,它具有三个属性,分别是支付id、订单主键、发送id,其中支付id是主键。支付信息实体E-R图如图4-8所示。
图4-8 支付信息实体E-R图
商品信息实体的实体E-R图,它具有九个属性,分别是商品id、商品名称、价格、数量、上架时间、分类、详情、描述、活动id,其中商品id是主键。商品信息实体E-R图如图4-9所示。
图4-9 商品信息实体E-R图
图片信息实体的实体E-R图,它具有三个属性,分别是图片id、商品主键、图片路径,其中图片id是主键。图片信息实体E-R图如图4-10所示。
图4-10 图片信息实体E-R图
订货实体的实体E-R图,它具有十个属性,分别是订单id、用户id、订单时间、旧价格、新价格、是否支付、是否发货、是否收货、是否完成、地址id,其中订单id是主键。图片信息实体E-R图如图4-11所示。
图4-11 订货实体E-R图
订货详情实体的实体E-R图,它具有四个属性,分别是itemId 、订单id、商品id、数量,其中itemId是主键。订货详情实体E-R图如图4-12所示。
图4-12 订货详情实体E-R图
购物车实体的实体E-R图,它具有四个属性,分别是用户id 、商品id、日期、商品数量,其中用户id是主键。购物车实体E-R图如图4-13所示。
图4-13 购物车实体E-R图
用户实体的实体E-R图,它具有六个属性,分别是用户id、用户名、密码、注册时间、邮箱、手机,其中用户id是主键。用户实体E-R图如图4-14所示。
图4-14 用户实体E-R图
系统总体E-R图如图4-15所示。
图4-15 系统总体E-R图
4.2.2 数据表
基于Java的“优易”社区二手交易网站总共由12张表组成,分别为促销活动表(cuxiaohuodong)、地址表(dizhi)、管理员表(users)、分类信息表(fenleixinxi)、评论信息表(pinglunxinxi)、支付信息表(zhifuxinxi)、商品信息表(shangpinxinxi)、图片信息表(tupianxinxi)、订货信息表(dinghuoxinxi)、订货详情信息表(dinghuoxiangqingxinxi)、购物车表(gouwuche)、用户信息表(yonghuxinxi)
促销活动表主要存储促销活动信息,由activityId、activityName、activityDes、discount、fullPrice、reducePrice、fullNum、reduceNum等字段组成。促销活动表如表4-1所示。
表4-1 cuxiaohuodong 促销活动表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
activityId | int | 11 | 否 | 主键 |
activityName | varchar | 50 | 否 | 活动名 |
activityDes | varchar | 500 | 否 | 活动地址 |
discount | float | 是 | 折扣 | |
fullPrice | int | 11 | 是 | 满免 |
reducePrice | int | 11 | 是 | 满减 |
fullNum | int | 11 | 是 | 满免数量 |
reduceNum | int | 11 | 是 | 满减数量 |
地址表主要存储地址信息,由addressID、userId、province、city、county、detailAddr、conName、conTel等字段组成。地址表如表4-2所示。
表4-2 dizhi 地址表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
addressID | int | 11 | 否 | 主键 |
userId | int | 11 | 否 | 用户id |
province | varchar | 50 | 否 | 省份 |
city | varchar | 50 | 否 | 城市 |
county | varchar | 50 | 否 | 区县 |
detailAddr | varchar | 50 | 否 | 详细地址 |
conName | varchar | 50 | 否 | 收货人名称 |
conTel | varchar | 50 | 否 | 联系方式 |
管理员表主要存储管理员信息,由adminId、adminName、password等字段组成。管理员表如表4-3所示。
表4-3 users 管理员表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
adminId | int | 11 | 否 | 主键 |
adminName | varchar | 50 | 否 | 用户名称 |
password | varchar | 50 | 否 | 密码 |
分类信息表主要存储分类信息,由cateId、cateName等字段组成。分类信息表如表4-4所示。
表4-4 fenleixinxi 分类信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
cateId | int | 11 | 否 | 主键 |
cateName | varchar | 50 | 否 | 分类名称 |
评论信息表主要存储评论信息,由commentId、userId、goodsId、point、content、commentTime等字段组成。评论信息表如表4-5所示。
表4-5 pinglunxinxi 评论信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
commentId | int | 11 | 否 | 评论主键 |
userId | int | 11 | 否 | 评论人主键 |
goodsId | int | 11 | 否 | 商品主键 |
point | int | 8 | 否 | 观点 |
content | varchar | 255 | 否 | 评论内容 |
commentTime | datetime | 否 | 评论时间 |
支付信息表主要存储支付信息,由deliverId、orderId、sendId等字段组成。支付信息表如表4-6所示。
表4-6 zhifuxinxi 支付信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
deliverId | int | 11 | 否 | 支付主键 |
orderId | int | 11 | 否 | 订单主键 |
sendId | int | 11 | 否 | 发送id |
商品信息表主要存储商品信息,由goodsId、goodsName、price、num、upTime、category、detailCate、description、activityId等字段组成。商品信息表如表4-7所示。
表4-7 shangpinxinxi 商品信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
goodsId | int | 11 | 否 | 商品主键 |
goodsName | varchar | 50 | 否 | 商品名称 |
price | int | 11 | 否 | 价格 |
num | int | 11 | 否 | 数量 |
upTime | datetime | 否 | 上架时间 | |
category | int | 11 | 否 | 分类 |
detailCate | varchar | 50 | 否 | 详情 |
description | text | 否 | 描述 | |
activityId | int | 11 | 是 | 活动id |
图片信息表主要存储图片信息,由pathId、goodId、path等字段组成。图片信息表如表4-8所示。
表4-8 tupianxinxi 图片信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
pathId | int | 11 | 否 | 图片主键 |
goodId | int | 11 | 否 | 商品主键 |
path | varchar | 255 | 否 | 图片路径 |
订货信息表主要存储订货信息,由orderId、userId、orderTime、oldPrice、newPrice、isPay、isSend、isReceive、isComplete、addressId等字段组成。订货信息表如表4-9所示。
表4-9 dinghuoxinxi 订货信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
orderId | int | 11 | 否 | 订单id |
userId | int | 11 | 否 | 用户id |
orderTime | datetime | 否 | 订单时间 | |
oldPrice | float | 否 | 旧价格 | |
newPrice | float | 否 | 新价格 | |
isPay | tinyint | 1 | 否 | 是否支付 |
续表4-9 dinghuoxinxi 订货信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
isSend | tinyint | 1 | 否 | 是否发货 |
isReceive | tinyint | 1 | 否 | 是否收货 |
isComplete | tinyint | 1 | 否 | 是否完成 |
addressId | int | 12 | 否 | 地址id |
订货详情信息表主要存储订货详情信息,由itemId、orderId、goodsId、num等字段组成。订货详情信息表如表4-10所示。
表4-10 dinghuoxiangqingxinxi 订货详情信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
itemId | int | 11 | 否 | 主键 |
orderId | int | 11 | 否 | 订单id |
goodsId | int | 11 | 否 | 商品id |
num | int | 11 | 否 | 数量 |
购物车表主要存储购物车信息,由userId、goodsid、cateDate、goodsNum等字段组成。购物车表如表4-11所示。
表4-11 gouwuche 购物车表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
userId | int | 11 | 否 | 用户id |
goodsid | int | 11 | 否 | 商品id |
cateDate | datetime | 否 | 日期 | |
goodsNum | int | 11 | 否 | 商品数量 |
用户信息表主要存储用户信息,由userId、username、password、regTime、email、telephone等字段组成。用户信息表如表4-12所示。
表4-12 yonghuxinxi 用户信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
userId | int | 11 | 否 | 用户id |
username | Varchar | 50 | 是 | 用户名 |
password | Varchar | 50 | 是 | 密码 |
regTime | datetime | 是 | 注册时间 |
续表4-12 yonghuxinxi 用户信息表
字段名 | 数据类型 | 长 度 | 是否为null | 描 述 |
| Varchar | 50 | 是 | 邮箱 |
telephone | Varchar | 50 | 是 | 手机 |
4.3 本章小结
本章对系统需求进行了全面分析,首先通过需求分析明确了系统目标和用户期望。接着,进行了可行性分析,包括技术可行性、经济可行性和操作可行性,评估了项目实施的可行性与风险。随后,详细探讨了功能需求,分别分析了用户和管理员的具体功能需求,以确保系统满足不同角色的需求。在系统流程分析中,重点分析了商品管理、用户管理和活动管理的具体流程,旨在优化操作效率和用户体验。通过这些分析,为后续系统设计和实现提供了清晰的指导和依据。
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-7所示。地址管理修改页面如图5-8所示。
图5-6 地址管理页面
图5-7 地址管理新增页面
图5-8 地址管理修改页面
5.2 管理员详细实现
5.2.1 用户管理
管理员可以通过用户管理页面查看平台上所有用户的详细信息,包括用户名、联系方式、注册日期、账户状态等内容。该页面为管理员提供了全面的用户信息查询功能,便于进行用户数据的管理和分析。管理员还可以对不符合规定或存在异常的用户账户进行删除操作,以确保平台的正常运行和安全性。此外,管理员可以根据需要对用户权限进行调整或处理违规行为,从而维护平台秩序。该功能帮助管理员高效地管理和优化平台的用户资源。用户管理如图5-9所示。用户管理删除页面如图5-10所示。
图5-9 用户管理页面
图5-10 用户管理删除页面
5.2.2 商品管理
管理员可以通过商品管理页面查看平台上所有商品的详细信息,包括商品名称、价格、库存数量、商品描述、分类等。该页面不仅提供了商品信息的浏览功能,还支持对商品进行编辑、添加和删除等操作。管理员可以根据需要修改商品的描述、调整价格或更新库存,确保商品信息的准确性。此外,管理员还可以根据市场需求和平台策略,随时添加新的商品或删除不再销售的商品。该功能旨在帮助管理员高效管理商品信息,提升平台运营的灵活性与便捷性。商品管理如图5-11所示。商品管理添加商品页面如图5-12所示。商品管理添加分类如图5-13所示。商品管理修改分类如图5-14所示。
图5-11 商品管理页面
图5-12 商品管理添加商品页面
图5-13 商品管理添加分类页面
图5-14 商品管理修改分类页面
5.2.3 订单管理
管理员可以通过订单管理页面查看平台上所有订单的详细信息,包括订单编号、用户信息、商品内容、支付金额以及订单的当前状态。订单状态分为多个阶段,如“未发货”、“未收货”和“已完成”等,管理员可以轻松查看每个订单的进度和处理情况。对于未发货的订单,管理员可以及时处理并安排发货;对于未收货的订单,管理员可以跟踪物流信息;而已完成的订单则表示交易成功,管理员可进行归档操作。该功能帮助管理员高效管理订单流转,确保交易的顺利进行。订单管理未发货页面如图5-15所示。订单管理未收货页面如图5-16所示。订单管理已完成页面如图5-17所示。
图5-15 订单管理未发货页面
图5-16 订单管理未收货页面
图5-17 订单管理已完成页面
5.2.4 活动管理
管理员可以通过活动管理页面查看平台上所有进行中的活动信息,包括活动名称、时间、参与条件、优惠内容等详细信息。该页面不仅支持查看现有活动的情况,还提供了添加新活动的功能,管理员可以根据平台运营需求创建促销活动或特定营销活动。同时,管理员还可以删除或停用不再进行或已过期的活动,确保平台上的活动信息始终准确有效。通过该功能,管理员能够灵活管理各类促销活动,提升平台的市场竞争力和用户参与度。活动管理如图5-18所示。活动管理添加页面如图5-19所示。
图5-18 活动管理页面
图5-19 活动管理添加页面
5.2.5 登录
管理员可以通过输入用户名和密码进行系统登录。登录界面简洁直观,管理员只需提供有效的用户名和密码即可进入后台管理系统。为了确保系统的安全性,管理员输入的密码将会进行加密处理,防止未经授权的访问。如果管理员忘记密码,系统还提供了找回密码的功能,管理员可以通过邮箱或手机号码重置密码。登录成功后,管理员将能够访问平台的各项管理功能,进行日常运营和数据维护。该设计旨在保障平台管理的安全性与便捷性。登录如图5-20所示。
图5-20 登录页面
5.3 本章小结
本章详细介绍了系统的实现过程,首先对用户功能的实现进行了阐述,包括登录、注册、商品详情浏览、购物车操作、订单管理和地址管理等模块,展示了用户界面的友好性与功能的完整性。接着,针对管理员功能的实现,描述了用户管理、商品管理、订单管理、活动管理及管理员登录等模块,强调了管理操作的高效性与系统的安全性。通过对各项功能的实现细节进行深入分析,本章不仅展示了系统的实际运行效果,还为后续的维护与优化提供了重要参考,为整个系统的完整性与实用性提供了保障。
第6章 系统测试
6.1 测试目的
系统功能测试的主要目标是确保平台的各项功能按照设计要求正常运行,满足用户需求。通过对用户注册、登录、商品浏览、购物车、订单支付等核心功能进行全面测试,验证其是否稳定、可靠。测试还将覆盖管理员管理功能,如用户管理、商品管理、订单处理等,确保后台操作顺畅且无明显bug。同时,功能测试还要检验不同角色权限的分配是否合理,避免权限越界或数据泄露。通过这一系列测试,确保系统在不同使用场景下能够高效、准确地完成各项任务,提升用户体验[11]。
6.2 测试方法
本系统的测试方法主要包括单元测试和黑盒测试两种方式。单元测试主要针对系统中的各个模块和功能进行独立测试,确保每个函数、方法或类的逻辑实现正确。通过对核心功能如用户登录、商品查询、订单支付等进行单元测试,能够确保各功能模块在开发初期就能稳定运行。
黑盒测试则侧重于从用户角度出发,验证系统的功能和操作是否符合需求,而不关注内部实现逻辑。对于该系统,黑盒测试主要通过模拟用户操作,检验用户注册、登录、购物车管理、订单生成等关键功能是否能够顺利进行。比如,测试用户在输入错误信息时,系统是否能够给出合理提示,或测试管理员在进行商品管理时,系统是否能够正确处理商品信息的修改和删除。黑盒测试的优势在于它不依赖于代码实现,可以从功能上全面评估系统的用户体验和功能完善性,尤其在验证用户交互流程、系统稳定性和安全性方面具有重要意义。通过结合系统实际业务场景进行测试,能够确保系统在面对真实使用环境时具备足够的可靠性和可用性[12]。
6.3 测试结果
在本次功能测试中,各个模块的测试结果均符合预期,系统功能稳定,操作流畅。登录模块成功验证了用户身份,确保只有登录用户才能进入后台页面,符合安全要求。个人中心功能能够顺利更新用户信息并修改密码,确保用户隐私得到有效管理。商品详情页面正常显示商品信息,并支持加入购物车等操作,购物车模块也能够正确显示购物车信息,支持删除商品和确认订单。订单管理和地址管理模块均能够准确显示和更新订单及地址信息。最后,用户的收藏信息在我的收藏模块中也能准确显示。总体而言,所有功能模块测试结果一致,系统运行稳定,符合设计要求。用户测试结果表如表6-1所示。
表6-1 用户测试结果
预计测试功能 | 测试结果 | |
登录 | 用户需要登录才更能进入后台页面。 | 一致 |
个人中心 | 用户可以在此页面更新个人信息和修改密码。 | 一致 |
商品详情 | 用户可以在此页面查看商品信息和加入购物车等操作。 | 一致 |
购物车 | 用户可以在此页面查看购物车信息并可以删除和确认订单等操作。 | 一致 |
订单管理 | 用户可以在此页面查看订单信息。 | 一致 |
地址管理 | 用户可以在此页面查看地址信息,还可以进行添加、修改和删除地址等操作。 | 一致 |
我的收藏 | 用户可以在此页面查看我的收藏信息。 | 一致 |
在本次管理员功能测试中,所有模块的测试结果均符合预期,系统功能稳定且操作正常。登录模块成功验证了管理员身份[13]。个人中心模块能够顺利更新管理员信息和修改密码,保证账户安全性。用户管理功能正常工作,管理员能够查看用户信息并进行删除等操作。商品管理模块也能顺利进行商品信息查看、添加、修改和删除等功能,确保商品管理灵活高效。订单管理模块能够准确显示不同订单状态,便于管理员进行订单处理。总体而言,所有功能均运行一致,系统满足管理需求,表现良好[14]。管理员测试结果表如表6-2所示。
表6-2 管理员测试结果
测试模块 | 预计测试功能 | 测试结果 |
登录 | 管理员需要登录才更能进入后台页面。 | 一致 |
个人中心 | 管理员可以在此页面更新个人信息和修改密码。 | 一致 |
用户管理 | 管理员可以在此页面查看用户信息并可以删除等操作。 | 一致 |
商品管理 | 管理员可以在此页面查看商品信息并可以添加、修改和删除等操作。 | 一致 |
订单管理 | 管理员可以在此页面查看订单信息,未发货、未收货、和已完成状态。 | 一致 |
活动管理 | 管理员可以在此页面查看活动信息并可以添加和删除等操作。 | 一致 |
6.4 本章小结
本章对系统测试进行了全面阐述,首先明确了测试的目的,旨在验证系统功能的完整性、可靠性和性能,确保其满足预定的需求标准。接着,详细介绍了所采用的测试方法,,确保各个模块和整体系统的有效性。最后,分析了测试结果,指出了在测试过程中发现的问题及其解决方案,验证了系统在不同场景下的稳定性与响应速度。
结 论
本研究设计并实现了一个综合性的社区二手交易网站,涵盖了用户和管理员两类角色的功能需求。通过对系统的功能设计与实现,本文解决了在社区二手交易网站中常见的用户体验、数据管理、订单处理和安全性等一系列问题。系统通过精确划分用户和管理员的角色权限,实现了高效、稳定且安全的功能模块,如用户管理、商品管理、订单处理、活动管理等,确保了系统的整体可操作性和数据流畅性。在理论上,本文通过基于Java的项目开发实现了对社区二手交易网站常见功能的抽象和实现方法,提出了一种适应现代电商业务需求的系统架构设计方案。从实践角度来看,系统经过充分的功能测试,验证了各模块功能的正确性和稳定性,证明了该系统能够有效支持日常的电商业务流程,提升了运营效率和用户体验,达到了预期的设计目标[15]。因此,本研究在电商系统功能模块设计及其实现方面提供了一种有效的解决方案,具有较强的实际应用价值。
尽管本系统在功能设计和实现过程中取得了较好的成果,但仍存在一定的不足。首先,在用户体验方面,虽然系统提供了基本的商品浏览、订单管理和支付功能,但在某些细节设计上(如个性化推荐、动态折扣机制等)尚显不足,未能充分利用数据分析与智能推荐技术,提升用户的个性化体验。其次,系统的安全性方面仍有进一步提升的空间,尤其在防止恶意攻击和数据泄露方面,尚未完全考虑到所有潜在的安全威胁。此外,系统的性能优化问题也需要在更大规模的数据环境下进行进一步测试和调优,以保证在高并发场景下仍能稳定运行。未来的研究可以集中在完善系统的用户交互体验,增加个性化推荐算法,结合大数据与人工智能技术进一步提升用户满意度。另一方面,系统的可扩展性与多端适配性也是未来研究的重点,开发适应更多设备的应用程序,并增强平台的云端数据存储和管理能力,以应对日益增长的业务需求和用户规模,进一步提升系统的综合性能和市场竞争力
参考文献
- 赵俊杰,葛敬军,朱文婷.基于微信小程序的校园二手书交易平台的设计与实现[J].科技与创新,2024,(09):7-11+15.
- 蒋瑞霞,王莉.基于地理位置的校园二手交易平台设计与实现[J].物联网技术,2024,14(04):73-76.
- 崔臣,宋甲旭.基于SpringBoot的校园二手交易系统研究[J].无线互联科技,2023,20(18):31-34.
- 周姣.基于微服务架构的高校二手物品交易系统设计与实现[J].电脑知识与技术,2023,19(22):67-70.
- 潘雨婷,郭福三,秦晋.基于微信小程序智能无人寄存式交易系统设计[J].电脑知识与技术,2024,20(27):56-58.
- 李晓敏.农贸产品交易系统设计与实现[D].北京:北京交通大学,2022.
- 李爽.高校闲置物品交易系统的设计与实现[J].产业与科技论坛,2023,22(15):34-35.
- 葛树杨.疫情环境下农产品交易系统的设计与实现[D].南京:南京林业大学,2022.
- 葛金梅,禤梅胜,刘科明,等.基于大学生校园物品二手交易和兼职需求的《易校园》小程序应用研究[J].科技与创新,2024,(23):52-54.
- 郭林盛,张晓艳,赵妍,等.基于微信云开发实现校园二手交易的平台设计[J].现代计算机,2024,30(22):185-190.
- 袁江琛.校园二手交易网的设计与实现[J].福建电脑,2024,40(09):108-110.DOI:10.16707/j.cnki.fjpc.2024.09.022.
- 张娅妮,陈永春.校园二手资源共享平台的设计与实现[J].现代信息科技,2023,7(13):6-12.
- Liu X ,Lee B ,Park K .Importance Ranking of Usability Indicators for Second-Hand Trading Applications Based on Exploratory Factor Analysis—Analytic Hierarchy Process toward Sustainable Development[J].Applied Sciences,2024,14(12):5164-5164.
- Jisoo P ,Ah M L ,Youn H K .The neighborhood advantage: exploring the impact of negotiation costs on transaction satisfaction in local second-hand trading platforms[J].Fashion and Textiles,2024,11(1):225-248.
- Cristina C ,Nuria V .A cross-generational analysis of second-hand online shopping: comparing GenX, millennials and GenZ[J].Journal of Consumer Marketing,2025,42(1):93-105.
致 谢
在本论文的撰写和研究过程中,我得到了许多老师、同学和家人的支持与帮助。在此,我要衷心感谢所有在我研究过程中给予我帮助的人。
首先,我要特别感谢我的导师,他在整个研究过程中给予了我无私的指导和帮助。无论是在论文选题、研究方向的确定,还是在系统设计、编码实现以及论文撰写过程中,导师都耐心指导、细致入微。导师严谨的学术态度和丰富的经验让我受益匪浅,是他的教诲让我在面对困难时保持了冷静和信心。导师的鼓励与支持使我能够不断克服挑战,完成了这篇论文。
我要感谢我的同学们,他们在项目的各个阶段提供了宝贵的意见与建议。在我遇到技术问题或困惑时,大家总是能够耐心地帮忙解答并一起解决问题。
最后,我要感谢我的家人,感谢他们一直以来的理解、支持与鼓励。在我攻读学位的过程中,家人给予了我无条件的关爱与支持,为我创造了一个安静、和谐的学习环境。每当遇到困难和挫折时,家人的鼓励让我重新振作,继续前行。
再次向所有帮助过我的人表示衷心的感谢,是你们的支持和帮助让我顺利完成了这篇论文。
附录A 关于购物车相关代码
@Controller
public class CartController {
@Autowired
private ShopCartService shopCartService;
@Autowired
private GoodsService goodsService;
@RequestMapping("/addCart")
public String addCart(ShopCart shopCart, HttpServletRequest request) {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if(user == null) {
return "redirect:/login";
}
//判断是否已经加入购物车
ShopCart shopCart1 = shopCartService.selectCartByKey(new ShopCartKey(user.getUserid(), shopCart.getGoodsid()));
if (shopCart1 != null) {
return "redirect:/showcart";
}
//用户
shopCart.setUserid(user.getUserid());
//加入时间
shopCart.setCatedate(new Date());
shopCartService.addShopCart(shopCart);
//返回到购物车页面
return "redirect:/showcart";
}
@RequestMapping("/showcart")
public String showCart(HttpSession session) {
User user = (User) session.getAttribute("user");
if(user == null) {
return "redirect:/login";
}
return "shopcart";
}
@RequestMapping("/cartjson")
@ResponseBody
public Msg getCart(HttpSession session) {
User user = (User) session.getAttribute("user");
if(user == null) {
return Msg.fail("请先登录");
}
//获取当前用户的购物车信息
ShopCartExample shopCartExample = new ShopCartExample();
shopCartExample.or().andUseridEqualTo(user.getUserid());
List<ShopCart> shopCart = shopCartService.selectByExample(shopCartExample);
//获取购物车中的商品信息
List<Goods> goodsAndImage = new ArrayList<>();
for (ShopCart cart:shopCart) {
Goods goods = goodsService.selectById(cart.getGoodsid());
List<ImagePath> imagePathList = goodsService.findImagePath(goods.getGoodsid());
goods.setImagePaths(imagePathList);
goods.setNum(cart.getGoodsnum());
goodsAndImage.add(goods);
}
return Msg.success("查询成功").add("shopcart",goodsAndImage);
}
@RequestMapping(value = "/deleteCart/{goodsid}", method = RequestMethod.DELETE)
@ResponseBody
public Msg deleteCart(@PathVariable("goodsid")Integer goodsid, HttpSession session) {
User user = (User) session.getAttribute("user");
if(user == null) {
return Msg.fail("请先登录");
}
shopCartService.deleteByKey(new ShopCartKey(user.getUserid(), goodsid));
return Msg.success("删除成功");
}
@RequestMapping("/update")
@ResponseBody
public Msg updateCart(Integer goodsid,Integer num,HttpSession session) {
User user = (User) session.getAttribute("user");
if(user == null) {
return Msg.fail("请先登录");
}
ShopCart shopCart = new ShopCart();
shopCart.setUserid(user.getUserid());
shopCart.setGoodsid(goodsid);
shopCart.setGoodsnum(num);
shopCartService.updateCartByKey(shopCart);
return Msg.success("更新购物车成功");
}
附录B 关于收藏商品相关代码
收藏商品
/**
* 收藏商品
* @param pn
* @param request
* @param model
* @return
*/
@RequestMapping("/info/favorite")
public String showFavorite(@RequestParam(value = "page", defaultValue = "1") Integer pn, HttpServletRequest request, Model model) {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user == null) {
return "redirect:/login";
}
//一页显示几个数据
PageHelper.startPage(pn, 16);
FavoriteExample favoriteExample = new FavoriteExample();
favoriteExample.or().andUseridEqualTo(user.getUserid());
List<Favorite> favoriteList = goodsService.selectFavByExample(favoriteExample);
List<Integer> goodsIdList = new ArrayList<Integer>();
for (Favorite tmp : favoriteList) {
goodsIdList.add(tmp.getGoodsid());
}
List<Goods> goodsList = new ArrayList<>();
if(goodsIdList!=null && goodsIdList.size()>0){
for (Integer id:goodsIdList) {
goodsList.add( goodsService.selectById(id)) ;
}
}
//获取图片地址
for (int i = 0; i < goodsList.size(); i++) {
Goods goods = goodsList.get(i);
List<ImagePath> imagePathList = goodsService.findImagePath(goods.getGoodsid());
goods.setImagePaths(imagePathList);
//判断是否收藏
goods.setFav(true);
goodsList.set(i, goods);
}
//显示几个页号
PageInfo page = new PageInfo(goodsList, 5);
model.addAttribute("pageInfo", page);
return "favorite";
}
附录C 关于订单相关代码
@Controller
public class OrderController {
/*@Value("#{addressService}")*/
@Autowired
private AddressService addressService;
@Autowired
private ShopCartService shopCartService;
@Autowired
private GoodsService goodsService;
@Autowired
private OrderService orderService;
@Autowired
private ActivityService activityService;
@RequestMapping("/order")
public String showOrder(HttpSession session, Model model) {
User user = (User) session.getAttribute("user");
if (user == null) {
return "redirect:/login";
}
//查询当前用户的收货地址
AddressExample addressExample = new AddressExample();
addressExample.or().andUseridEqualTo(user.getUserid());
List<Address> addressList = addressService.getAllAddressByExample(addressExample);
model.addAttribute("address", addressList);
//订单信息
//获取当前用户的购物车信息
ShopCartExample shopCartExample = new ShopCartExample();
shopCartExample.or().andUseridEqualTo(user.getUserid());
List<ShopCart> shopCart = shopCartService.selectByExample(shopCartExample);
//获取购物车中的商品信息
List<Goods> goodsAndImage = new ArrayList<>();
Float totalPrice = new Float(0);
Integer oldTotalPrice = 0;
for (ShopCart cart : shopCart) {
//分别从购物车列表中获取每个商品
Goods goods = goodsService.selectById(cart.getGoodsid());
List<ImagePath> imagePathList = goodsService.findImagePath(goods.getGoodsid());
goods.setImagePaths(imagePathList);
goods.setNum(cart.getGoodsnum());
//活动信息
Activity activity = activityService.selectByKey(goods.getActivityid());
goods.setActivity(activity);
//处理折扣信息
//如果商品折扣不为 折扣
if(activity!=null){
if (activity.getDiscount() != 1) {
goods.setNewPrice(goods.getPrice() * goods.getNum() * activity.getDiscount());
System.out.println("价格为:" + goods.getPrice() * goods.getNum() * activity.getDiscount());
} else if (activity.getFullnum() != null) {
System.out.println("进入第二层方法");
if (goods.getNum() >= activity.getFullnum()) {
goods.setNewPrice((float) (goods.getPrice() * (goods.getNum() - activity.getReducenum())));
} else {
goods.setNewPrice((float) (goods.getPrice() * goods.getNum()));
}
} else if (activity.getFullprice() != null && activity.getReducenum() != null) {
if ((goods.getNum() * goods.getNum()) > activity.getFullprice()) {
goods.setNewPrice((float) (goods.getPrice() * goods.getNum() - activity.getReducenum()));
} else {
goods.setNewPrice((float) (goods.getPrice() * goods.getNum()));
}
} else {
goods.setNewPrice((float) (goods.getPrice() * goods.getNum()));
}
}else{
goods.setNewPrice((float) (goods.getPrice() * goods.getNum()));
}
totalPrice = totalPrice + goods.getNewPrice();
oldTotalPrice = oldTotalPrice + goods.getNum() * goods.getPrice();
goodsAndImage.add(goods);
}
model.addAttribute("totalPrice", totalPrice);
model.addAttribute("oldTotalPrice", oldTotalPrice);
model.addAttribute("goodsAndImage", goodsAndImage);
return "orderConfirm";
}
@RequestMapping("/orderFinish")
@ResponseBody
public Msg orderFinish(Float oldPrice, Float newPrice, Boolean isPay, Integer addressid, HttpSession session) {
User user = (User) session.getAttribute("user");
//获取订单信息
ShopCartExample shopCartExample = new ShopCartExample();
shopCartExample.or().andUseridEqualTo(user.getUserid());
List<ShopCart> shopCart = shopCartService.selectByExample(shopCartExample);
//删除购物车
for (ShopCart cart : shopCart) {
shopCartService.deleteByKey(new ShopCartKey(cart.getUserid(), cart.getGoodsid()));
Goods goods = goodsService.selectById(cart.getGoodsid());
goods.setNum(goods.getNum()-cart.getGoodsnum());
goodsService.updateGoodsById(goods);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dat = sdf.format(new Date());
//把订单信息写入数据库
Order order = new Order(null, user.getUserid(),dat, oldPrice, newPrice, isPay, false, false, false, addressid, null, null);
orderService.insertOrder(order);
//插入的订单号
Integer orderId = order.getOrderid();
//把订单项写入orderitem表中
for (ShopCart cart : shopCart) {
orderService.insertOrderItem(new OrderItem(null, orderId, cart.getGoodsid(), cart.getGoodsnum()));
}
return Msg.success("购买成功");
}
@RequestMapping("/checkGoodsNum")
@ResponseBody
public String checkGoodsNum(HttpSession session){
User user = (User) session.getAttribute("user");
if (user == null) {
return "redirect:/login";
}
//订单信息
//获取当前用户的购物车信息
ShopCartExample shopCartExample = new ShopCartExample();
shopCartExample.or().andUseridEqualTo(user.getUserid());
List<ShopCart> shopCart = shopCartService.selectByExample(shopCartExample);
for (ShopCart cart : shopCart) {
//分别从购物车列表中获取每个商品
Goods goods = goodsService.selectById(cart.getGoodsid());
if(goods.getNum()<cart.getGoodsnum()){
return goods.getGoodsname()+"库存不足";
}
}
return "success";
}
}