校园二手物品交易小程序
摘要
随着移动互联网的普及和校园内二手物品交易需求的增长,开发一款便捷、高效的校园二手物品交易小程序显得尤为重要。本文介绍了一种基于Springboot的辽宁工大校园二手物品交易小程序的设计与实现方案。该系统采用了B2C模式,为用户提供了一个安全、便捷的二手物品交易平台。
在系统架构方面,后端采用Springboot框架,利用其快速开发、简化配置和强大安全机制等优势,实现了用户注册登录、二手商城、订单信息、物品分类、求购信息等核心功能。前端则采用微信小程序,通过跨平台、无需安装的特性,方便用户随时随地使用系统。同时,结合MySQL数据库进行数据管理,确保数据的安全和可靠性。
在系统功能方面,用户可以通过小程序注册账号并登录系统,发布自己想要出售的二手物品信息,包括物品名称、描述、价格等。其他用户可以根据关键词搜索感兴趣的物品,并与卖家进行线上交流,了解商品更多细节或协商交易事宜。此外,系统还引入了评价系统,让用户可以对购买的商品和服务进行评价,为其他用户提供参考。
该校园二手物品交易小程序不仅满足了校园内学生对二手物品交易的需求,提高了物品的利用率,减少了资源的浪费,同时也培养了学生的节约意识和环保意识。通过Springboot和微信小程序的结合,实现了系统的快速开发、高效性能和良好的用户体验,为类似系统的设计和开发提供了一定的参考和借鉴价值。
关键词:二手物品交易,Springboot框架,小程序;
Liaoning University of Technology Campus Second hand Goods Trading Mini Program
abstract
With the popularization of mobile Internet and the growing demand for second-hand goods trading on campus, it is particularly important to develop a convenient and efficient small program for second-hand goods trading on campus. This article introduces the design and implementation of a second-hand item trading mini program for Liaoning University of Technology campus based on Springboot. The system adopts a B2C model, providing users with a safe and convenient second-hand item trading platform.
In terms of system architecture, the backend adopts the Springboot framework, utilizing its advantages of rapid development, simplified configuration, and strong security mechanisms to achieve core functions such as user registration and login, second-hand shopping mall, order information, item classification, and purchase information. The front-end adopts WeChat mini programs, which facilitate users to use the system anytime and anywhere through cross platform and non installation features. At the same time, combining MySQL database for data management to ensure data security and reliability.
In terms of system functionality, users can register an account through the mini program and log in to the system to publish information about second-hand items they want to sell, including item names, descriptions, prices, etc. Other users can search for items of interest based on keywords and communicate online with sellers to learn more about product details or negotiate transaction matters. In addition, the system has also introduced an evaluation system, allowing users to evaluate the purchased goods and services, providing reference for other users.
This campus second-hand goods trading mini program not only meets the needs of students on campus for second-hand goods trading, improves the utilization rate of goods, reduces resource waste, but also cultivates students' awareness of conservation and environmental protection. The combination of Springboot and WeChat mini program has achieved rapid development, efficient performance, and good user experience of the system, providing certain reference and reference value for the design and development of similar systems.
Keywords:Second hand item trading, Springboot framework, mini program;
目录
1.1研究背景和意义
辽宁工大校园二手物品交易小程序的研究背景与意义紧密相连,体现了现代校园生活需求与移动互联网技术发展的融合。随着绿色生活理念的普及和环保意识的增强,学生们对二手物品交易的需求日益增长。传统的二手物品交易方式往往受到时间、地点和信息传播范围的限制,无法满足现代校园生活的快节奏和便捷性要求。因此,开发一款基于Springboot的辽宁工大校园二手物品交易小程序显得尤为迫切和重要。
这款小程序的研究背景不仅在于满足学生的实际需求,更在于推动校园内资源的循环利用和减少浪费。随着移动互联网的普及和智能手机的高度集成,学生们越来越依赖于手机应用来解决生活中的各种问题。通过开发一款便捷、高效的校园二手物品交易小程序,可以为学生提供一个安全、可靠的交易平台,促进物品的有效流通和再利用。
此外,该小程序的研究与开发还具有深远的社会意义。在全球环境问题日益严峻的背景下,推动绿色经济和可持续发展成为了全球的共同目标。通过促进校园内二手物品的循环利用,可以减少资源浪费和环境污染,为绿色校园的建设贡献力量。同时,该小程序还可以培养学生的节约意识和环保意识,提高他们的社会责任感和可持续发展意识。
综上所述,辽宁工大校园二手物品交易小程序的研究背景与意义在于满足学生的实际需求,推动校园内资源的循环利用和减少浪费,促进绿色校园的建设,并培养学生的节约意识和环保意识。这款小程序的开发将为学生带来更加便捷、高效和环保的校园生活体验,同时也具有重要的社会价值和环境意义。
1.2国内外研究现状
国内研究现状:
在国内,随着移动互联网的普及和校园内二手物品交易需求的增长,二手物品交易小程序得到了快速发展。一些知名的二手物品交易平台,如闲鱼、转转等,已经推出了基于微信小程序的服务,为用户提供了便捷的二手物品交易体验。这些小程序通常具备完善的交易功能、丰富的物品分类和智能推荐系统,得到了用户的广泛认可。
然而,专门针对大学生群体的校园二手交易平台相对较少。尽管已有一些高校或学生团队尝试开发校园二手交易系统,但在功能完善性、用户体验、安全保障等方面仍存在一定的不足。因此,开发一个功能完善、操作便捷、安全可靠的校园二手交易平台系统仍具有较大的市场空间和现实意义。
国外研究现状:
在国外,尤其是欧美等发达国家的高校中,二手交易文化历史悠久且深入人心。一些知名的二手物品交易平台如eBay、Depop等提供了便捷的在线交易服务,用户可以通过手机或电脑轻松完成二手物品的交易。这些平台通常具备高度的安全性、用户友好性和丰富的交易功能,为用户提供了良好的交易体验。
综上所述,国内外在二手物品交易领域都取得了一定的研究成果和应用实践。然而,针对大学生群体的校园二手交易平台在国内仍相对较少,具有较大的发展空间和市场需求。因此,辽宁工大校园二手物品交易小程序的研究与开发具有重要的现实意义和应用价值。
针对辽宁工大校园二手物品交易小程序的研究方法,可以从以下几个方面进行考虑:
文献调研:首先,通过查阅相关的学术论文、技术文档、市场报告等文献资料,了解国内外在二手物品交易领域的研究现状和发展趋势。这有助于我们理解校园二手物品交易的市场需求、技术挑战以及可能的解决方案。
用户需求分析:通过与大学生群体进行深入的交流和访谈,了解他们对校园二手交易小程序的需求和期望。这包括但不限于交易功能的完善性、用户体验的便捷性、安全保障的可靠性等方面。
竞品分析:选取市场上一些知名的二手物品交易平台,如闲鱼、转转等,分析它们的功能特点、用户体验、市场份额等方面的优势和不足。这有助于我们找到辽宁工大校园二手物品交易小程序的差异化竞争点和创新方向。
技术选型与实现:根据研究目标和需求分析的结果,选择合适的技术栈和开发工具来实现小程序。例如,可以采用微信小程序作为前端展示平台,结合后端服务器技术(如Springboot)和数据库技术(如MySQL)来完成整个系统的开发和部署。
测试与优化:在完成小程序的开发后,需要进行全面的测试来确保系统的稳定性和可用性。这包括功能测试、性能测试、安全测试等多个方面。同时,根据测试结果和用户反馈进行系统的优化和改进。
总结与展望:在整个研究过程中,及时总结经验和教训,并对未来的发展方向进行展望。这有助于我们不断完善和提升辽宁工大校园二手物品交易小程序的功能和性能。
综上所述,针对辽宁工大校园二手物品交易小程序的研究方法需要综合运用文献调研、用户需求分析、竞品分析、技术选型与实现、测试与优化等多个方面的手段和方法来确保研究的全面性和深入性。
1.4 开发技术
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的Springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用Springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
1.4.1 JAVA技术
JAVA语言是目前软件市场上应用最广泛的语言开发程序。可以在多种平台上运用的,兼容性比较强,适应市面上大多数操作系统,不会出现乱码的现像,其扩展性和维护性都更好,具有分析问题和解决问题的能力,是面向过程的程序设计方便我们编写的代码更强壮。
JAVA相对其它语言来说,比较简单,编译起来更方便一些,安全可靠性高。不完全统计,现在全世界大约有2000多万人在使用它,JAVA既可以镶嵌使用又可以独力的使用。JAVA大致可以分成两个部分,一种部分是JAVA负责的编译,另一种是JAVA负责的运行。JAVA和C++语言很相像,但JAVA在编程时是一种以对象为导向的方式来进行编译的,使得编出来的软件可以单机使用,也可以在互联网上使用,检查出错更为方便。JAVA分布式、体系结构中立的特点也使得其存储更快,编议更简单。面向对象包括四个特点,一是封装,就是说在定义类的时候可以实现一定的功能和属性。二是抽象,属于类的一种,可以把一个具有共同属性的类封装在一个抽象里,便于简单编议。三是继承,顾名思义就是带有前者的特性。还有一个就是多态的特点,可以多种一起运用,表现了它可扩展性好。
1.4.2 MVVM模式
MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。
视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
1.4.3 B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
1.4.4 Spring boot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
1.4.5 Mysql数据库
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的辽宁工大校园二手物品交易小程序在实际的实现过程中,最终选择Mysql数据库的主要原因在于在系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对辽宁工大校园二手物品交易小程序后台数据进行存储操作。
2.1 可行性分析
可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。会从这三个方面对辽宁工大校园二手物品交易小程序进行详细的分析。
辽宁工大校园二手物品交易小程序采用Springboot框架进行后端开发,具有显著的技术可行性。Springboot以其简便的配置、强大的功能和高效的性能,为小程序的开发提供了稳定且可靠的技术支持。通过Springboot,可以快速地搭建起后端服务器,实现用户注册登录、商品发布、浏览交易等核心功能,同时保证系统的稳定性和安全性。此外,Springboot还提供了丰富的插件和工具,方便开发人员进行测试和部署,从而加速整个开发进程。因此,采用Springboot框架开发辽宁工大校园二手物品交易小程序在技术上完全可行,并且有望为校园生活带来更加便捷、高效的二手交易体验。
经济可行性方面,采用Springboot框架开发辽宁工大校园二手物品交易小程序同样具有优势。Springboot是一个开源框架,可以免费使用,这大大降低了开发成本。Springboot还简化了开发过程,提高了开发效率,从而减少了人力和时间成本。此外,Springboot的成熟和稳定性减少了后期维护和升级的成本。对于辽宁工大来说,开发这样一个小程序可以满足校园内学生对二手物品交易的需求,提高资源的利用率,减少浪费,从而带来经济效益。因此,从经济角度来看,采用Springboot框架开发辽宁工大校园二手物品交易小程序是可行的,并且有望为校园带来实际的经济效益。
社会可行性方面,采用Springboot框架开发的辽宁工大校园二手物品交易小程序具有显著的优势。它符合绿色发展和可持续利用资源的理念,通过促进二手物品的流通和再利用,有助于减少资源浪费和环境污染,推动社会的可持续发展。小程序的开发和推广有助于培养大学生的节约意识和环保意识,提高他们的社会责任感和可持续发展意识,对社会产生积极的影响。此外,通过提供便捷、高效的二手物品交易平台,小程序还能够满足学生的实际需求,提升他们的生活质量,进一步增强社会的和谐与稳定。因此,从社会角度来看,采用Springboot框架开发的辽宁工大校园二手物品交易小程序是可行的,并且有望对社会产生积极的影响。
辽宁工大辽宁工大校园二手物品交易小程序的总体设计原则主要围绕以下几个方面展开:
用户需求为中心:所有设计决策和功能实现都以满足用户的实际需求为出发点。通过深入调研和分析,确保小程序提供的服务能够切实解决校园内二手物品交易中的痛点和需求。
简洁直观的用户界面:设计简洁、直观的用户界面,使用户能够快速上手并轻松完成操作。避免过多的复杂元素和繁琐步骤,确保用户在使用过程中的良好体验。
高效稳定的系统性能:采用成熟、稳定的技术框架和架构,确保小程序在处理大量数据和并发请求时能够保持高效和稳定。同时,通过合理的优化和调试,提高系统的响应速度和处理能力。
安全性和隐私保护:严格保护用户的个人信息和交易数据,采取加密存储、访问控制等措施,防止数据泄露和非法访问。确保用户在使用小程序的过程中能够感受到安全和信任。
可扩展性和灵活性:考虑到校园内二手交易需求的不断变化和发展,设计小程序时应具备一定的可扩展性和灵活性。通过合理的架构设计和模块化开发,方便后续功能的增加和修改。
经济性和成本效益:在满足功能需求的前提下,尽量降低开发、运维和升级成本。通过合理的资源分配和技术选型,实现系统的高效运行和资源的合理利用。
综上所述,辽宁工大校园二手物品交易小程序的总体设计原则旨在打造一个以用户需求为中心、简洁直观、高效稳定、安全可靠、可扩展灵活且经济实用的交易平台,为校园内的二手物品交易提供便捷、高效的服务。
辽宁工大校园二手物品交易小程序的需求分析主要围绕以下几个方面展开:
核心功能是支持校园内的二手物品交易。这包括用户注册与登录、发布物品信息、浏览物品列表、搜索特定物品、在线沟通协商以及交易完成后的评价反馈等。通过这些功能,学生可以方便地找到所需物品,促进资源的循环利用。
系统需要注重用户体验和界面设计。简洁明了的界面、直观易用的操作逻辑能够降低用户使用难度,提高用户黏性。同时,系统应提供个性化的推荐服务,根据用户的浏览和购买历史,推送符合其需求的物品信息。
安全性是系统不可忽视的需求。用户个人信息、交易数据等敏感信息需要得到严格的保护。系统应采取加密存储、访问控制等措施,防止数据泄露和非法访问。
系统还应具备一定的可扩展性和灵活性。随着校园内二手交易需求的不断变化,系统应能够支持新增功能和业务场景的拓展。同时,考虑到不同学校和专业的特殊性,系统应提供定制化的解决方案,以满足不同用户的个性化需求。
最后,经济性也是需求分析中需要考虑的因素。系统应在满足功能需求的前提下,尽量降低开发、运维和升级成本。通过合理的架构设计和技术选型,实现系统的高效运行和资源的合理利用。
综上所述,辽宁工大校园二手物品交易小程序的需求分析需要综合考虑核心功能、用户体验、安全性、可扩展性和经济性等多个方面,以确保系统能够满足校园内二手交易的实际需求,并为用户带来便捷、安全、高效的交易体验。
2.4 系统用例分析
系统的用例展示的是系统功能与用户之间的关系,通过用例的方式能够直观的展示出来,辽宁工大校园二手物品交易小程序的完整UML用例图分别是图2-1和图2-2。

图2-1 辽宁工大校园二手物品交易小程序普通用户角色用例图

图2-2 辽宁工大校园二手物品交易小程序管理员角色用例图
2.5系统流程分析
2.5.1操作流程
图2-3用户登录流程图
2.5.2添加订单信息流程
添加订单信息流程图,如图所示:
图2-4添加订单信息流程图
2.5.3删除订单信息流程
删除订单信息流程图,如图所示:
图2-5删除订单信息流程图
在系统架构设计中,我们将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图所示。
图3-1辽宁工大校园二手物品交易小程序架构设计图
表现层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。
业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。
数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。
这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。
3.2系统结构设计
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
辽宁工大校园二手物品交易小程序结构图如图3-2所示。
图3-2 辽宁工大校园二手物品交易小程序结构图
数据库可以说是所有软件的根本,如果数据库存在缺陷,那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题,严重时将会直接损害企业的利益,同时在开发完成后,数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握,做到认真细致。因此,数据库设计是这个辽宁工大校园二手物品交易小程序的重点要素。
辽宁工大校园二手物品交易小程序总E-R图如下图3-3所示
图3-3辽宁工大校园二手物品交易小程序总E-R图
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | item_classification_id | int | 10 | 0 | N | Y | 物品分类ID | |
2 | item_type | varchar | 64 | 0 | Y | N | 物品类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_information_id | int | 10 | 0 | N | Y | 订单信息ID | |
2 | serial_number | varchar | 64 | 0 | Y | N | 物品编号 | |
3 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
4 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
5 | item_price | varchar | 64 | 0 | Y | N | 物品价格 | |
6 | purchasing_users | int | 10 | 0 | Y | N | 0 | 购买用户 |
7 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
8 | receiving_address | varchar | 64 | 0 | Y | N | 收货地址 | |
9 | purchase_quantity | int | 10 | 0 | Y | N | 0 | 购买数量 |
10 | total_amount | varchar | 64 | 0 | Y | N | 合计金额 | |
11 | remarks | text | 65535 | 0 | Y | N | 备注信息 | |
12 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
13 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | purchase_information_id | int | 10 | 0 | N | Y | 求购信息ID | |
2 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
3 | item_type | varchar | 64 | 0 | Y | N | 物品类型 | |
4 | purchasing_user | int | 10 | 0 | Y | N | 0 | 求购用户 |
5 | item_images | varchar | 255 | 0 | Y | N | 物品图片 | |
6 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
7 | purchase_details | text | 65535 | 0 | Y | N | 求购详情 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_age | varchar | 64 | 0 | Y | N | 用户年龄 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表second_hand_shopping_mall (二手商城)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | second_hand_shopping_mall_id | int | 10 | 0 | N | Y | 二手商城ID | |
2 | serial_number | varchar | 64 | 0 | Y | N | 物品编号 | |
3 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
4 | item_type | varchar | 64 | 0 | Y | N | 物品类型 | |
5 | item_images | varchar | 255 | 0 | Y | N | 物品图片 | |
6 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
7 | quantity_of_items | int | 10 | 0 | Y | N | 0 | 物品数量 |
8 | item_price | int | 10 | 0 | Y | N | 0 | 物品价格 |
9 | item_details | longtext | 2147483647 | 0 | Y | N | 物品详情 | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第4章系统实现
4.1普通用户功能模块
4.1.1注册界面
普通用户需要通过注册界面输入个人信息,以创建账户并登录系统,以便进行查询各种信息操作。如下图所示。
图4-1注册界面图
注册逻辑代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
4.1.2登录界面
用户通过注册时的用户名+密码进行验证登录,如下图所示。
图4-2登录界面图
* 登录
* @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;
QueryWrapper wrapper = new QueryWrapper<User>();
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());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
普通用户可以查看系统发布的公告。如下图所示。
图4-3公告消息界面图
用户可以浏览和购买二手物品的功能,包括商品展示、价格信息、交易方式等。如下图所示。
图4-4二手商城界面图
用户可以发布求购信息,描述自己需要的二手物品,以便其他用户查看并联系。如下图所示。
图4-5求购信息界面图
用户可以查看自己的交易订单信息,包括已购买的二手物品、交易状态、交易金额等。如下图所示。
图4-6订单信息界面图
4.2管理员功能模块
4.2.1登录界面
管理员通过填写注册时输入的账号、密码和验证码进行登录,如下图所示。
图4-7管理员登录界面图
4.2.2功能界面
管理员登录进入园区物业管理系统可以后台查看后台首页、系统用户、二手商城管理、订单信息管理、物品分类管理、求购信息管理、系统管理、公告信息管理、资源管理、权限管理等信息。如下图所示。
图4-8管理员功能界面图
管理员功能界面逻辑代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
4.2.3系统用户界面
管理员可对前台注册的用户以进行添加、重置或删除等操作,如下图所示。
图4-9系统用户管理界面图
系统用户管理界面逻辑代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
管理员可以管理二手商城的商品信息,包括添加、编辑、删除商品,管理商品的价格、描述、状态等。界面如下图所示。
图4-10二手商城管理界面图
4.2.5物品分类管理界面
管理员可以管理二手物品的分类信息,包括添加、编辑、删除物品分类,以便用户查找和选择。界面如下图所示。
图4-11物品分类管理界面图
4.2.6系统管理界面
管理员可以管理系统首页的轮播图,包括添加、编辑和删除轮播图图片,以提升用户体验和宣传重要信息。如下图所示。
图4-12系统管理界面图
4.2.7公告消息管理界面
管理员可以发布、编辑和删除系统的通知公告信息,确保信息的及时性和有效性。如下图所示。
图4-13公告消息管理界面图
第5章系统测试
测试存在于系统开发进程中的最后一个阶段,它可以保证一个系统的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。系统测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在系统测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
5.1系统测试的重要性
只有在运行和维护阶段之前经历大量的测试的系统,才能说明它的质量是经得起检验的。最近计算机业界也都一致认为,测试应该存在于软件设计的每个阶段,因为越早发现错误,修复起来就越容易。
实际上,对于一个系统应用,错误是必然存在的,无论使用何种技术或手段,都不可能绝对的排除系统漏洞。测试是随着系统开发一同诞生的,两者是共同发展进步的。实际上,测试可以大幅度的降低维护的成本,如果一个漏洞在开发的早期就被发现,那么修复它的成本远比上线后再修复的成本要低得多。
测试有白盒测试和黑盒测试两种方式。
其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。
黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:
1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。
2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。
4.检查原计划的性能需求有没有完成,运行流畅。
本系统的测试用例(部分):
登录部分测试用例 | |||||
编号 | 对象 | 项目 | 操作 | 预期结果 | 结果 |
1 | 登录 | 登录提示 | 使用正确的账号密码登录 | 成功登录 | 预期结果 |
2 | 登录提示 | 使用正确的账号但错误的密码登录 | 提示密码错误 | 预期结果 | |
3 | 登录提示 | 使用错误的账号登录 | 提示不存在账户 | 预期结果 | |
4 | 登录提示 | 不输入账号,点击登录 | 提示输入账号 | 预期结果 | |
5 | 登录提示 | 输入账号但不输入密码点击登录 | 提示输入密码 | 预期结果 | |
6 | 登录入口 | 已登录账号,查看登录入口 | 不显示登录入口 | 预期结果 |
处理器:Inter Core I7-4710MQ四核处理器
内存:4GB
硬盘:1T
操作系统:Windows 10
数据库:MySQL
全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足客户需求。
试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。
系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。
第6章 总结
随着信息技术的不断发展和普及,各类小程序已成为校园生活中不可或缺的一部分。辽宁工大校园二手物品交易小程序就是在这样的背景下应运而生,旨在为广大师生提供一个便捷、高效的二手物品交易平台。
该小程序从需求分析、设计到实现,都紧密围绕用户需求展开。通过深入分析校园内二手物品交易的特点和痛点,我们明确了小程序的核心功能和特点。在开发过程中,我们采用了Springboot框架,确保了系统的稳定性和性能。同时,我们也注重用户体验和界面设计,力求为用户提供直观、易用的操作界面。
在小程序实现方面,我们建立了完善的数据库结构,定义了关键数据结构,并通过类关系图描述了组件间的协作关系。在代码实现上,我们遵循了面向对象的设计原则,对每一个类的字段、属性和方法进行了详细的定义和实现。通过不断的调试和优化,最终完成了小程序的前后端代码编写和集成整合。
在实际运行中,辽宁工大校园二手物品交易小程序表现出了良好的稳定性和性能。各个功能运行正常,界面友好,操作简单,符合常规逻辑。同时,我们也注意到了一些不足之处,例如在某些特殊情况下,系统的响应速度可能不够快,部分功能还有待进一步完善。这些问题将成为我们日后改进和优化的方向。
总的来说,辽宁工大校园二手物品交易小程序的成功实现,不仅为校园内的二手物品交易提供了一个新的平台,也展示了信息技术在校园生活中的重要作用。未来,我们将继续完善和优化小程序的功能和性能,为广大师生提供更加便捷、高效的服务。
参考文献
[1]Sartika D A R ,Wirawan F ,Putri N P , et al.Association between Iron-Folic Acid Supplementation during Pregnancy and Maternal and Infant Anemia in West Java, Indonesia: A Mixed-Method Prospective Cohort Study.[J].The American journal of tropical medicine and hygiene,2024,
[2]Nugroho S ,Uehara T .Navigating Crisis: Insights into the Depletion and Recovery of Central Java’s Freshwater Eel ( Anguillaspp.) Stocks[J].Sustainability,2024,16(4):
[3]IBNUDARDA R ,FARAJALLAH A ,PERWITASARI D , et al.Female reciprocal calling of pearly tree frog (Nyctixalus margaritifer Boulenger, 1882) in West Java, Indonesia[J].Zootaxa,2024,5410(2):297-300.
[4]Rahmawati B R ,Hardiwinoto S ,Widiyatno, et al.Productivity of Clonal Teak Plantation Under Different Spacing and Thinning Intensity in Java Monsoon Forest[J].IOP Conference Series: Earth and Environmental Science,2024,1299(1):
[5]Dhanistha L W ,Suntoyo,Rosyid M D , et al.Design of wave spectrum in the Java Sea[J].IOP Conference Series: Earth and Environmental Science,2024,1298(1):
[6]Mustain M ,Ariyanti D A .Increasing Globalization Business and Ecotourism Branding on the Beach of Delegan, Gresik, East Java[J].IOP Conference Series: Earth and Environmental Science,2024,1298(1):
[7]高耀,许诺,李博,等.基于Web的新型校园二手交易平台实践研究——以“校易集市”为例[J].中国商论,2023,(01):130-132.DOI:10.19699/j.cnki.issn2096-0298.2023.01.130.
[8]张柱,宋存进,蒋乐,等.基于微信小程序校园二手交易平台设计与开发[J].电脑编程技巧与维护,2022,(12):59-61+142.DOI:10.16184/j.cnki.comprg.2022.12.035.
[9]潘俊任,洪小萍.校园二手交易平台探析——以广西民族师范学院为例[J].现代商贸工业,2022,43(21):75-77.DOI:10.19311/j.cnki.1672-3198.2022.21.031.
[10]许诺,高耀,周文柱.基于改进协同过滤算法的校园二手交易系统研究[J].现代计算机,2022,28(16):101-105.
[11]赵冰,刘星含,杨泰森,等.基于微信小程序的校园二手闲置物品交易平台的设计与实现[J].电脑知识与技术,2022,18(21):64-66.DOI:10.14004/j.cnki.ckt.2022.1254.
[12]武晓朦,赵嘉阳,赵晓静,等.“互联网+”背景下大学生校内二手交易平台的构建[J].商展经济,2022,(12):60-62.DOI:10.19995/j.cnki.CN10-1617/F7.2022.12.060.
[13]王颖.社区二手物品处置系统研究与设计[D].哈尔滨理工大学,2022.DOI:10.27063/d.cnki.ghlgu.2022.000977.
[14]赵明,贲祺舒,吕怡.基于微信小程序的高校校园二手物品交易平台的设计与实现[J].科技与创新,2022,(07):55-58.DOI:10.15913/j.cnki.kjycx.2022.07.016.
[15]沈政晔,张辰澔,黄晋峰.基于微信小程序的校园二手物品交易平台设计与开发[J].无线互联科技,2021,18(22):66-67+84.
[16]蒋君妍,盛婉婷,连兆大.高校二手市场调查分析及交易平台构建研究[J].中国市场,2021,(30):120-121+150.DOI:10.13939/j.cnki.zgsc.2021.30.120.
[17]张洋洋,王丹,越豪杰,等.校园二手物品交易平台研究与设计[J].无线互联科技,2021,18(10):48-49.
[18]苏翀宇,木更乾,吴德.基于微信小程序的校园二手平台设计[J].电子技术,2020,49(10):44-46.
[19]苏翀宇,木更乾,吴德.基于微信小程序的校园二手平台设计[J].电子技术,2020,49(09):23-25.
[20]张子欣,高敏,王斯宇,等.校园内部二手交易平台研究[J].合作经济与科技,2020,(09):84-87.DOI:10.13665/j.cnki.hzjjykj.2020.09.034.
致 谢
大学生活在这个时候即将划上一个句号,但是对于我的人生道路来说,这仅仅是一个逗号,我将面对的是又一次征程的开始。
回忆过去,许许多多的事情浮现在脑海:刚上大学时欢乐心情和兴奋的场景还历历在目。一切都是那么新鲜,那么富有吸引力。有快乐也有艰辛,有收获也有失落。衷心感谢学校所有支持帮助过我的老师,谢谢你们多年来的关心和爱护。同窗的友情同样难忘,你们与我共同走过了人生中不平凡的道路,给我留下了值得珍藏的美好记忆。
最后,我要特别感谢指导辽宁工大校园二手物品交易小程序设计的老师。本论文是在他的悉心指导和热情帮助下完成的,老师认真负责的工作态度,严谨的治学精神和精深的理论水平都使我受益匪浅。老师无论在理论上还是在实践中,都给予我很大的帮助,使我专业技能的应用水平得到很大提高,这对于我以后的工作和学习都有益处。值此论文完成之际,特别向老师表示衷心的感谢和崇高的敬意,谢谢他细心而又耐心地辅导,使得我得以顺利的完成毕业设计开发工作,同时也要感谢其他帮助过我的老师和同学,他们在我成长过程中给予了我很大的帮助,在此一并表示感谢。
由于本人水平有限,加上时间紧促,本文一定有不少缺点和不足,恳请各位老师给予帮助和指正。
点赞+收藏+关注 →私信领取本源代码、数据库