基于springboot的流浪狗智能救助系统 毕业设计-附源码23826
基于SpringBoot的流浪狗智能救助系统旨在提供一个高效、用户友好的平台,促进流浪狗的救助与领养。系统采用前后端分离架构,结合Vue.js前端框架和MySQL数据库,确保高效的用户体验。
用户可通过邮箱或手机号注册并登录,支持第三方社交账号授权登录。首页集成了全网搜索、公告通知和新闻资讯展示,并利用协同过滤算法推荐个性化的宠物品种、宠物医院和基金信息,提升用户体验。
“动物小圈”模块允许用户发布帖子、上传封面图、撰写正文,并对喜欢的帖子进行点赞、收藏和评论,增强社区互动。详细的宠物信息列表让用户查看每只宠物的具体信息,并可以点赞、收藏、评论和申请领养。宠物医院模块展示医院详情,用户可点赞、收藏和评论。基金信息模块展示了各类救助基金,用户可根据需要申请资助。
系统采用SSL/TLS加密传输保障数据安全,遵守相关法律法规,提供透明的隐私政策。多语言支持提升了系统的全球化体验。
管理员后台具备强大的管理功能,涵盖用户管理、宠物信息管理、领养信息管理、宠物医院管理和基金信息管理等,确保内容准确和及时更新。数据分析通过收集用户行为数据优化推荐算法,定期生成的数据报告帮助管理员做出明智决策,提升服务质量。
该系统不仅为用户提供便捷、个性化的救助服务,也为管理员提供了强大的管理工具,确保系统的稳定运行和持续优化。
关键词:SpringBoot, 流浪狗智能救助,Vue.js框架、MySQL数据库。
The SpringBoot based intelligent rescue system for stray dogs aims to provide an efficient and user-friendly platform to promote the rescue and adoption of stray dogs. The system adopts a front-end and back-end separation architecture, combined with Vue.js front-end framework and MySQL database, to ensure an efficient user experience.
Users can register and log in through email or phone number, and support third-party social account authorization login. The homepage integrates online search, announcement notifications, and news information display, and uses collaborative filtering algorithms to recommend personalized pet breeds, pet hospitals, and fund information, enhancing user experience.
The "Animal Circle" module allows users to post posts, upload cover images, write main text, and like, bookmark, and comment on their favorite posts, enhancing community interaction. A detailed pet information list allows users to view the specific information of each pet, and can like, bookmark, comment, and apply for adoption. The pet hospital module displays hospital details, and users can like, bookmark, and comment. The fund information module displays various types of rescue funds, and users can apply for funding according to their needs.
The system adopts SSL/TLS encryption transmission to ensure data security, complies with relevant laws and regulations, and provides transparent privacy policies. Multi language support enhances the global experience of the system.
The administrator backend has powerful management functions, covering user management, pet information management, adoption information management, pet hospital management, and fund information management, ensuring accurate and timely content updates. Data analysis optimizes recommendation algorithms by collecting user behavior data, and regularly generates data reports to help administrators make informed decisions and improve service quality.
This system not only provides users with convenient and personalized rescue services, but also offers powerful management tools for administrators to ensure the stable operation and continuous optimization of the system.
Keywords:SpringBoot, Intelligent rescue for stray dogs, Vue.js framework, MySQL database.
目 录
1绪论
1.1课题研究背景及目标
随着城市化进程的加快,流浪狗问题日益突出,不仅影响公共卫生和居民生活,也给城市管理带来挑战。尽管越来越多的社会力量投身于流浪狗救助工作,但传统救助方式效率低下、信息不透明、资源分散。为解决这些问题,本课题设计并实现一个基于SpringBoot的流浪狗智能救助系统,旨在提高救助工作的效率和透明度,整合多方资源,提供一个集救助、领养、医疗、资助为一体的综合服务平台。
该系统采用SpringBoot作为后端框架,结合Vue.js实现前端交互,并使用MySQL数据库存储数据。通过协同过滤算法推荐个性化内容,如宠物品种、宠物医院和基金信息,提升用户体验。系统支持用户注册登录、信息发布与互动、宠物信息管理等功能,并为管理员提供强大的后台管理工具。为了保障数据安全,系统采用SSL/TLS加密传输,遵守相关法律法规,提供多语言支持以提升全球化体验。最终,该平台希望促进各方合作,共同解决流浪狗问题,推动流浪动物救助事业的发展。
1.2国内外发展现状分析
近年来,流浪动物救助问题在全球范围内受到广泛关注。在国外,许多国家已经建立了较为完善的流浪动物救助体系,政府和社会组织共同参与,形成了多渠道、多层次的救助网络。例如,美国和欧洲部分国家设有专门的动物保护法律和政策,确保流浪动物得到及时救助和妥善安置。此外,社区志愿者和专业机构的合作也十分紧密,通过定期的收容、医疗和领养活动,有效减少了流浪动物的数量。
在国内,随着社会经济的发展和公众意识的提高,流浪狗救助工作逐渐受到重视。一些大城市已经开始探索建立规范化的救助机制,如设立专门的流浪动物收容所,提供基本的医疗护理和领养服务。同时,越来越多的社会组织和个人积极参与到救助行动中来,利用社交媒体和互联网平台宣传救助信息,组织募捐和领养活动。然而,与国外相比,国内的救助体系仍存在资源分散、信息不透明等问题,亟需进一步整合和优化。
总体而言,国内外在流浪动物救助方面都取得了一定进展,但也面临着诸多挑战。如何通过信息化手段提升救助效率、促进各方合作,是当前亟待解决的问题。本课题旨在通过设计和实现一个基于SpringBoot的智能救助系统,为流浪狗救助工作提供新的解决方案,推动这一领域的发展和完善。
2相关技术简介
2.1 Java语言
流浪狗智能救助系统采用了Java语言作为后端开发的核心技术。Java语言因其跨平台特性和高度灵活性而备受青睐,使系统能够在不同操作系统上稳定运行,并为未来功能的拓展提供可靠的技术支持。同时,采用SpringBoot框架简化了配置,提升了开发效率和系统的稳定性。Java的选择确保了平台具有良好的可扩展性和稳定性,在为流浪狗智能救助系统提供技术支持的同时,也为用户提供畅顺的体验。
2.2 SpringBoot 框架
SpringBoot,作为Spring生态系统中一颗璀璨的明星,以其“约定优于配置”的核心理念,极大地简化了Java应用的开发、部署与管理流程。它并非对Spring框架的颠覆,而是在其基础上进行了深度封装与优化,旨在快速搭建独立的、生产级别的Spring应用。SpringBoot通过自动配置功能,减少了大量繁琐的配置工作,让开发者能够更加专注于业务逻辑的实现。同时,它集成了众多常用库,如数据库连接池、缓存、消息队列等,为开发者提供了一站式的解决方案。此外,SpringBoot还支持多种部署方式,无论是传统的WAR包部署,还是现代的容器化部署,都能轻松应对。因此,选择SpringBoot作为流浪狗智能救助系统的开发框架,不仅能够提升开发效率,还能确保系统的稳定性和可维护性。
2.3 Vue框架
Vue框架,作为一款风靡前端的JavaScript框架,以其渐进式、组件化的设计理念,为开发者构建高效、灵活的Web界面提供了强大支持。Vue不仅轻量且易于上手,其核心库专注于视图层,使得开发者能够轻松地将Vue集成到现有项目中,实现前后端分离的现代Web应用开发。其数据绑定和组件系统,让开发者能够高效地管理界面状态和用户交互,同时Vue丰富的生态系统也提供了众多插件和工具,进一步提升了开发效率和应用的性能。在流浪狗智能救助系统中引入Vue作为前端框架,不仅可以优化用户界面的渲染和交互体验,还能通过前后端分离的架构提升系统的可维护性和可扩展性,是构建更高效的流浪狗智能救助系统的理想选择。
2.4 MySQL数据库
MySQL数据库,作为开源关系型数据库管理系统的佼佼者,以其高性能、可靠性、易用性和灵活性,在全球范围内被广泛应用于各类企业级应用中。MySQL采用SQL(结构化查询语言)作为数据操作的标准语言,支持复杂的查询、数据更新、索引优化等功能,确保数据的高效存取和完整性。其强大的事务处理能力,为业务逻辑的原子性、一致性、隔离性和持久性提供了坚实保障。此外,MySQL还具备高度的可配置性和可扩展性,通过优化存储引擎、调整配置参数等手段,可以轻松应对高并发、大数据量的应用场景。在SpringBoot的流浪狗智能救助系统中,MySQL作为后端数据存储的核心,不仅为系统提供了稳定可靠的数据支持,还通过其丰富的数据操作功能,助力系统实现复杂的业务逻辑和高效的数据管理。
2.5 协同过滤推荐系统
协同过滤推荐系统通过分析用户的历史行为(如点击、收藏、评论)和偏好,识别出具有相似兴趣的用户群体。在本系统中,该算法为用户推荐个性化的宠物品种、宠物医院和救助基金信息,基于相似用户的喜好提供更符合个人需求的内容。此外,系统结合用户的其他互动数据优化推荐结果,提升用户体验和社区互动,促进流浪狗救助工作的效率和效果。
通过这种方式,用户可以更便捷地找到心仪的宠物、合适的医疗资源和有效的资助机会,同时救助组织也能获得更高效的管理工具。
3.1系统功能需求分析
基于SpringBoot的流浪狗智能救助系统提供用户注册登录、个人资料管理及第三方社交账号授权登录。系统首页集成全网搜索、公告通知和新闻资讯,利用协同过滤算法推荐个性化的宠物品种、宠物医院和基金信息。用户可以在“动物小圈”发布和互动帖子,查看并申请领养宠物,浏览宠物医院详情,并申请救助基金。系统采用SSL/TLS加密确保数据安全。管理员后台具备强大的管理功能,涵盖用户、宠物信息、领养信息、宠物医院和基金信息管理,确保内容准确和及时更新。数据分析模块优化推荐算法,提升用户体验和服务质量。主要功能如下:
3.1.1 注册用户功能
登录页面:提供注册功能,允许新用户创建账户。用户可以选择身份进行登录。
首页:用户可以在首页左上角输入关键词进行全网搜索,方便查找相关信息。此外,用户可以修改个人资料(如头像、昵称、密码等),并通过导航栏浏览轮播图和公告通知。系统利用协同过滤算法分析用户的点击行为,自动推荐个性化的宠物品种、宠物医院和基金信息,提升用户体验。
动物小圈:用户可以查看其他用户发布的帖子详情,并通过关键字或全部内容进行搜索。支持上传封面图、输入标题、选择分类、标签和正文发布新帖子。用户可以对喜欢的帖子进行点赞、收藏和回复,查看帖子的点击数和点赞数,增强社区互动和归属感。
公告通知:用户可以查看网站公告信息,包括网站公告、关于我们、联系方式和网站介绍等内容,确保用户了解最新的平台动态和重要信息。
新闻资讯:用户可以查看系统发布的各类新闻资讯详情,并通过关键字、排序和筛选功能进行搜索。用户还可以对喜欢的资讯进行点赞、收藏和评论,促进信息共享和交流。
宠物信息:用户可以查看详细的宠物信息列表,包括编号、名字、品种、年龄、健康状态、绝育状态等。通过输入关键字(如宠物名字、品种、绝育状态、性别)和下拉菜单进行精确搜索。用户可以对喜欢的宠物进行点赞、收藏和评论,并提交领养申请,输入领养原因、选择申请时间和联系方式等详细信息。
宠物医院:用户可以查看宠物医院列表,包括医院名称、类型、位置、擅长科室和院长信息。通过输入关键字(如医院名称、类型)和下拉菜单进行搜索。用户可以对合适的医院进行点赞、收藏和评论,并获取更多医疗资源。
基金信息:用户可以查看基金信息列表,包括基金名称、类型和金额。通过输入关键词(如基金名称、类型)和下拉菜单进行搜索。用户可以对感兴趣的基金进行点赞、收藏和评论,并提交申请,输入申请原因、选择申请时间和备注信息,获得资助机会。
我的账户:用户可以修改自己的资料,包括头像、昵称、密码、车牌号码等个人信息,确保账户安全和个人信息的准确性。
个人中心:用户可以管理个人首页,包含领养信息、申请信息、动物小圈、收藏和评论管理等功能,集中管理和查看个人相关活动。
领养信息:用户可以查看前台的领养详情,通过输入宠物名字、品种、选择审核状态进行搜索,查看领养申请的审核状态和回复,跟踪申请进度。
申请信息:用户可以查看前台的基金申请详情,通过输入基金名称、类型、用户姓名、选择审核状态进行搜索,查看基金申请的审核状态和回复,跟踪申请进展。
收藏:用户可以查看系统中收藏的所有关于动物信息和基金信息,对不喜欢的内容可以删除,方便管理个人兴趣点。
评论管理:用户可以查看自己在前台的各评论详情,查看被回复的内容,并进行查询、重置和删除操作,保持评论区的整洁和有序。
3.1.2 管理员功能
后台首页:管理员可以在后台首页修改个人资料信息和密码,查看网站首页并退出登录,确保账户安全和个人信息的准确性。
系统用户:管理员可以查看和管理用户信息,支持增删改查操作,确保用户数据的准确性和安全性。
宠物信息管理:管理员可以查看和编辑各宠物信息详情和评论,支持按名字、品种、绝育状态、性别等条件进行搜索,进行查询、重置、删除操作,并添加新的宠物信息,确保宠物信息的及时更新和准确性。
领养信息管理:管理员可以查看和审核用户的领养申请详情,支持按名字、品种、审核状态进行搜索,进行查询、重置、删除操作,并回复审核结果,确保领养流程的透明和公正。
宠物种类管理:管理员可以查看和管理宠物种类详情,支持按种类搜索,进行查询、重置、删除操作,并添加新的宠物种类,确保宠物种类信息的全面性。
宠物医院管理:管理员可以查看和编辑各宠物医院详情和评论,支持按名称、类型进行搜索,进行查询、重置、删除操作,并添加新的医院信息,确保医院信息的准确性和完整性。
医院类型管理:管理员可以查看和管理医院类型详情,支持按类型搜索,进行查询、重置、删除操作,并添加新的医院类型,确保医院类型信息的多样性。
基金信息管理:管理员可以查看和编辑各类基金信息详情和评论,支持按名称、类型进行搜索,进行查询、重置、删除操作,并添加新的基金信息,确保基金信息的透明和及时更新。
申请信息管理:管理员可以查看和审核用户的基金申请信息详情,支持按名称、类型、用户姓名、审核状态进行搜索,进行查询、重置、删除操作,并回复审核结果,确保基金申请流程的透明和公正。
基金类型管理:管理员可以查看和管理基金类型详情,支持按类型搜索,进行查询、重置、删除操作,并添加新的基金类型,确保基金类型信息的多样性和准确性。
员工信息管理:管理员可以查看和管理员工信息详情,支持按姓名、职位、性别进行搜索,进行查询、重置、删除操作,并添加新的员工信息,确保员工信息的准确性和安全性。
公告通知管理:管理员可以查看和管理各类公告详情,支持按标题搜索,进行增删改查操作,确保公告信息的及时发布和更新。
资源管理:管理员可以查看和管理新闻资讯和资讯分类,支持按标题、标签、分类进行搜索,进行增删改查操作,确保新闻资讯的多样性和时效性。
交流管理:管理员可以查看和管理动物小圈和小圈分类,支持按标题、分类进行搜索,进行增删改查操作,确保社区交流的活跃度和秩序。
3.2系统非功能性分析
在研究SpringBoot的流浪狗智能救助系统时,非功能性需求分析是一个重要的部分。非功能性需求主要关注的是系统如何运行,而不是它具体完成什么功能。这些需求包括性能、可用性、安全性、可维护性、可扩展性、易用性等方面。以下是一个关于流浪狗智能救助系统非功能性需求分析的概要。
性能需求:系统需确保快速响应和高吞吐量,以支持大量用户同时访问,即使在高峰时段也能保持流畅的操作体验,避免因延迟或卡顿影响用户体验。
可用性:系统必须具备高可用性,采用冗余部署、负载均衡等策略,确保即使部分组件故障也能迅速恢复服务,减少服务中断时间,保障用户业务的连续性。
安全性:鉴于系统处理用户敏感信息,如个人信息、申请信息等,必须实施严格的安全措施,包括数据加密、访问控制、防攻击机制等,以保护用户数据免受未授权访问或泄露。
可维护性:系统设计应注重可维护性,采用模块化、标准化的架构,提供详尽的开发文档和用户手册,确保系统易于理解和维护,降低长期运维成本。
可扩展性:随着业务的发展,系统可能需要扩展功能或提升性能。因此,系统需具备灵活的可扩展性,能够轻松添加新模块、优化性能,以应对未来增长的需求。
易用性:用户界面应直观易用,符合用户习惯,提供清晰的导航和友好的操作反馈,帮助用户快速上手并高效完成任务,提升整体用户满意度。
3.3系统可行性分析
通过SpringBoot的流浪狗智能救助系统的可行性分析,我们可以从技术可行性、经济可行性、操作可行性以及社会可行性四个维度进行深入探讨,以确保系统的开发与应用具有坚实的可行性基础。
3.3.1技术可行性
SpringBoot作为目前流行的Java企业级应用开发框架,以其“约定优于配置”的原则,极大地简化了开发流程,降低了技术门槛。前端采用Vue框架,不仅提升了用户界面的交互体验,也实现了前后端分离的现代Web架构。MySQL数据库作为后端数据存储,以其高性能和稳定性为系统提供了可靠的数据支持。综上所述,从技术角度来看,该系统的开发具备高度可行性。
3.3.2经济可行性
考虑到SpringBoot、Vue及MySQL等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著提升系统管理的效率和用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。
3.3.3操作可行性
系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。
3.3.4社会可行性
SpringBoot的流浪狗智能救助系统的社会可行性体现在多个方面。首先,用户可以方便地浏览可领养的宠物信息,了解宠物的基本情况、宠物品种、健康状态、绝育状态、领养流程等信息,增加透明度,增强用户的信任感,从而提高领养的成功率。最重要的是,现在越来越多的人开始关注环保和动物保护,流浪狗智能救助系统可以帮助提高公众对流浪动物的关注,促进领养而非购买的理念。
从技术、经济、操作和社会四个维度来看,SpringBoot的流浪狗智能救助系统的开发均具备高度的可行性。
3.4系统用例分析
SpringBoot的流浪狗智能救助系统用例分析主要从注册用户、管理员这些实体展开描述。
3.4.1注册用户用例分析
注册用户可以通过邮箱或手机号注册登录,支持第三方社交账号授权。首页提供全网搜索、个人资料管理、轮播图和公告通知,利用协同过滤算法推荐个性化的宠物品种、宠物医院和基金信息。用户可在“动物小圈”发布和互动帖子,查看宠物信息并申请领养,浏览医院详情,申请救助基金,进行点赞、收藏和评论。系统确保数据安全,并提供便捷的个人中心管理功能。详细用例图如图3-1所示。

图3-1注册用户用例图
3.4.2管理员用例分析
管理员用例包括后台首页管理、系统用户、宠物信息管理和领养信息管理、宠物种类管理、宠物医院管理、医院类型管理和基金信息管理、申请信息管理、基金类型管理、员工信息管理、系统管理等。管理员通过后台管理各项功能,以维护和更新平台信息,确保系统正常运行和用户体验。详细用例图如图3-2所示。

图3-2管理员用例图
4系统设计
4.1系统总体设计思路
流浪狗智能救助系统采用Browser/Server结构,(浏览器/服务器)和基于Web服务前后台交互的模式,是一个适用于Windows体系环境下的模型结构。只要用户有符合程序运行的硬件系统,并连上互联网,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示:

图4-1系统工作原理图
其最终前后台交互原理如图4-2所示。

图4-2前后台交互原理
具体交互流程为:浏览器中执行具体操作,操作命令将生成一个do方法。该方法使得浏览器能够访问后台中的Controller层,Controller层由于业务上的需要执行进而访问Service层。Service层收到指令后将会去调用内部DAO层的接口。接口将会和MyBatis层下的一个SQL语句相对接。对接好之后进而访问MySql数据库。更新底层数据,然后将数据同步回MyBatis层,同步变化后的数据将通过DAO层接口,Service层和后台Controller层,直观反映到浏览器页面上。
4.2系统结构设计
流浪狗智能救助系统的整体结构设计如图4-3所示。

图4-3整体功能结构设计图
4.3系统功能设计
4.3.1用户登录流程
当用户进入登录页面时,当其在浏览器执行具体操作的时候,后端会同步显示,如图4-4所示。

图4-4登录流程图
4.3.2申请领养操作流程
注册用户提交领养信息申请后,管理员会审核用户提供的相关信息。管理员审核后可查看。操作流程如图4-5所示。

图4-5系统操作流程图
4.4系统核心代码设计
SpringBoot的流浪狗智能救助系统的核心代码设计如下:
4.4.1用户注册
注册页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);
}
4.4.2用户登录
登录页,首先输入"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<>()));
}
4.4.3修改密码
修改密码,通过请求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,"密码修改失败!");
4.4.4修改数据
修改一个数据,原理与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);
}
4.4.5删除数据
删除一条数据,通过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());
}
4.4.6获取数据
通过请求的参数获取列表数据,代码如下所示。
@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.4.7图片上传
通过请求的参数获取列表数据,代码如下所示。
@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("创建目录失败");
}
}
4.5数据库设计
4.4.1数据库设计原则
SpringBoot的流浪狗智能救助系统在进行数据库设计时,考虑到个人能力与数据库选择,选择了数据库Mysql。以下将使用E-R展示数据库中设计的实体及主要的字段和类型及数据库的描述。
4.4.2数据库实体
通过建立SpringBoot的流浪狗智能救助系统的E-R模型图。以此来设计详细的数据库资料实体,以下为具体图例:
(1)注册用户实体图如下图所示;

图4-6注册用户实体图
(2)宠物信息实体图如下图所示;

图4-7宠物信息实体图
(3)领养信息实体E-R图如下图所示;

图4-8领养信息实体E-R图
(4)数据库实体E-R图如下图所示:

图4-9数据库E-R图
4.4.3数据库表设计
表access_token (登陆访问时长)
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
用户编号: |
表adoption_information (领养信息)
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
adoption_information_id |
int |
10 |
0 |
N |
Y |
领养信息ID |
|
|
2 |
pet_id |
varchar |
64 |
0 |
Y |
N |
宠物编号 |
|
|
3 |
pet_name |
varchar |
64 |
0 |
Y |
N |
宠物名字 |
|
|
4 |
pet_breeds |
varchar |
64 |
0 |
Y |
N |
宠物品种 |
|
|
5 |
adopting_users |
int |
10 |
0 |
Y |
N |
0 |
领养用户 |
|
6 |
reason_for_adoption |
varchar |
64 |
0 |
Y |
N |
领养原因 |
|
|
7 |
application_time |
datetime |
19 |
0 |
Y |
N |
申请时间 |
|
|
8 |
contact_information |
varchar |
16 |
0 |
Y |
N |
联系方式 |
|
|
9 |
adoption_details |
text |
65535 |
0 |
Y |
N |
领养详情 |
|
|
10 |
examine_state |
varchar |
16 |
0 |
N |
N |
未审核 |
审核状态 |
|
11 |
examine_reply |
varchar |
16 |
0 |
Y |
N |
审核回复 |
|
|
12 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
13 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
14 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表 |
|
|
15 |
source_id |
int |
10 |
0 |
Y |
N |
来源ID |
|
|
16 |
source_user_id |
int |
10 |
0 |
Y |
N |
来源用户 |
表application_information (申请信息)
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
application_information_id |
int |
10 |
0 |
N |
Y |
申请信息ID |
|
|
2 |
fund_name |
varchar |
64 |
0 |
Y |
N |
基金名称 |
|
|
3 |
fund_type |
varchar |
64 |
0 |
Y |
N |
基金类型 |
|
|
4 |
fund_amount |
varchar |
64 |
0 |
Y |
N |
基金金额 |
|
|
5 |
apply_for_user |
int |
10 |
0 |
Y |
N |
0 |
申请用户 |
|
6 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
|
7 |
reason_for_application |
varchar |
64 |
0 |
Y |
N |
申请原因 |
|
|
8 |
application_time |
datetime |
19 |
0 |
Y |
N |
申请时间 |
|
|
9 |
application_remarks |
text |
65535 |
0 |
Y |
N |
申请备注 |
|
|
10 |
examine_state |
varchar |
16 |
0 |
N |
N |
未审核 |
审核状态 |
|
11 |
examine_reply |
varchar |
16 |
0 |
Y |
N |
审核回复 |
|
|
12 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
13 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
14 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表 |
|
|
15 |
source_id |
int |
10 |
0 |
Y |
N |
来源ID |
|
|
16 |
source_user_id |
int |
10 |
0 |
Y |
N |
来源用户 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
parent |
varchar |
64 |
0 |
Y |
N |
父级菜单 |
|
|
8 |
parent_sort |
int |
10 |
0 |
N |
N |
0 |
父级菜单排序 |
|
9 |
position |
varchar |
32 |
0 |
Y |
N |
位置: |
|
|
10 |
mode |
varchar |
32 |
0 |
N |
N |
_blank |
跳转方式: |
|
11 |
add |
tinyint |
3 |
0 |
N |
N |
1 |
是否可增加: |
|
12 |
del |
tinyint |
3 |
0 |
N |
N |
1 |
是否可删除: |
|
13 |
set |
tinyint |
3 |
0 |
N |
N |
1 |
是否可修改: |
|
14 |
get |
tinyint |
3 |
0 |
N |
N |
1 |
是否可查看: |
|
15 |
field_add |
text |
65535 |
0 |
Y |
N |
添加字段: |
|
|
16 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: |
|
|
17 |
field_get |
text |
65535 |
0 |
Y |
N |
查询字段: |
|
|
18 |
table_nav_name |
varchar |
500 |
0 |
Y |
N |
跨表导航名称: |
|
|
19 |
table_nav |
varchar |
500 |
0 |
Y |
N |
跨表导航: |
|
|
20 |
option |
text |
65535 |
0 |
Y |
N |
配置: |
|
|
21 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
22 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
code_token_id |
int |
10 |
0 |
N |
Y |
||
|
2 |
token |
varchar |
255 |
0 |
Y |
N |
||
|
3 |
code |
varchar |
255 |
0 |
Y |
N |
验证码 |
|
|
4 |
expire_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
失效时间 |
|
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
6 |
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 |
employee_information_id |
int |
10 |
0 |
N |
Y |
员工信息ID |
|
|
2 |
employee_name |
varchar |
64 |
0 |
Y |
N |
员工名称 |
|
|
3 |
employee_gender |
varchar |
64 |
0 |
Y |
N |
员工性别 |
|
|
4 |
employee_age |
double |
9 |
2 |
Y |
N |
0.00 |
员工年龄 |
|
5 |
employee_position |
varchar |
64 |
0 |
Y |
N |
员工职位 |
|
|
6 |
date_of_employment |
date |
10 |
0 |
Y |
N |
入职时间 |
|
|
7 |
contact_information |
varchar |
64 |
0 |
Y |
N |
联系方式 |
|
|
8 |
remarks_details |
text |
65535 |
0 |
Y |
N |
备注详情 |
|
|
9 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
10 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
forum_id |
mediumint |
8 |
0 |
N |
Y |
论坛id |
|
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
排序 |
|
3 |
user_id |
mediumint |
8 |
0 |
N |
N |
0 |
用户ID |
|
4 |
nickname |
varchar |
16 |
0 |
Y |
N |
昵称:[0,16] |
|
|
5 |
praise_len |
int |
10 |
0 |
Y |
N |
0 |
点赞数 |
|
6 |
hits |
int |
10 |
0 |
N |
N |
0 |
访问数 |
|
7 |
title |
varchar |
125 |
0 |
N |
N |
标题 |
|
|
8 |
keywords |
varchar |
125 |
0 |
Y |
N |
关键词 |
|
|
9 |
description |
varchar |
255 |
0 |
Y |
N |
描述 |
|
|
10 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址 |
|
|
11 |
tag |
varchar |
255 |
0 |
Y |
N |
标签 |
|
|
12 |
img |
text |
65535 |
0 |
Y |
N |
封面图 |
|
|
13 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文 |
|
|
14 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
15 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
16 |
avatar |
varchar |
255 |
0 |
Y |
N |
发帖人头像: |
|
|
17 |
type |
varchar |
64 |
0 |
N |
N |
0 |
论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
|
18 |
istop |
int |
10 |
0 |
N |
N |
0 |
是否置顶 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] |
|
|
2 |
name |
varchar |
16 |
0 |
N |
N |
分类名称:[2,16] |
|
|
3 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该分类的作用 |
|
|
4 |
url |
varchar |
255 |
0 |
Y |
N |
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
|
|
5 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
|
6 |
icon |
varchar |
255 |
0 |
Y |
N |
分类图标: |
|
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
fund_information_id |
int |
10 |
0 |
N |
Y |
基金信息ID |
|
|
2 |
fund_name |
varchar |
64 |
0 |
Y |
N |
基金名称 |
|
|
3 |
fund_type |
varchar |
64 |
0 |
Y |
N |
基金类型 |
|
|
4 |
application_requirements |
varchar |
64 |
0 |
Y |
N |
申请条件 |
|
|
5 |
fund_amount |
varchar |
64 |
0 |
Y |
N |
基金金额 |
|
|
6 |
cover_photo |
varchar |
255 |
0 |
Y |
N |
封面图片 |
|
|
7 |
fund_details |
longtext |
2147483647 |
0 |
Y |
N |
基金详情 |
|
|
8 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
|
9 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
10 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
|
11 |
application_information_limit_times |
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 |
fund_type_id |
int |
10 |
0 |
N |
Y |
基金类型ID |
|
|
2 |
fund_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 |
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 |
hospital_type_id |
int |
10 |
0 |
N |
Y |
医院类型ID |
|
|
2 |
hospital_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 |
pet_hospital_id |
int |
10 |
0 |
N |
Y |
宠物医院ID |
|
|
2 |
hospital_name |
varchar |
64 |
0 |
Y |
N |
医院名称 |
|
|
3 |
hospital_type |
varchar |
64 |
0 |
Y |
N |
医院类型 |
|
|
4 |
hospital_location |
varchar |
64 |
0 |
Y |
N |
医院位置 |
|
|
5 |
cover_photo |
varchar |
255 |
0 |
Y |
N |
封面图片 |
|
|
6 |
proficient_in_departments |
varchar |
64 |
0 |
Y |
N |
擅长科室 |
|
|
7 |
hospital_director |
varchar |
64 |
0 |
Y |
N |
医院院长 |
|
|
8 |
hospital_details |
longtext |
2147483647 |
0 |
Y |
N |
医院详情 |
|
|
9 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
|
10 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
11 |
recommend |
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 |
pet_information_id |
int |
10 |
0 |
N |
Y |
宠物信息ID |
|
|
2 |
pet_id |
varchar |
64 |
0 |
Y |
N |
宠物编号 |
|
|
3 |
pet_name |
varchar |
64 |
0 |
Y |
N |
宠物名字 |
|
|
4 |
pet_breeds |
varchar |
64 |
0 |
Y |
N |
宠物品种 |
|
|
5 |
cover_photo |
varchar |
255 |
0 |
Y |
N |
封面图片 |
|
|
6 |
pet_age |
double |
9 |
2 |
Y |
N |
0.00 |
宠物年龄 |
|
7 |
health_status |
varchar |
64 |
0 |
Y |
N |
健康状态 |
|
|
8 |
sterilization_status |
varchar |
64 |
0 |
Y |
N |
绝育状态 |
|
|
9 |
pet_gender |
varchar |
64 |
0 |
Y |
N |
宠物性别 |
|
|
10 |
pet_details |
longtext |
2147483647 |
0 |
Y |
N |
宠物详情 |
|
|
11 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
|
12 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
|
13 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
|
14 |
adoption_information_limit_times |
int |
10 |
0 |
N |
N |
0 |
领养限制次数 |
|
15 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
|
16 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
pet_species_id |
int |
10 |
0 |
N |
Y |
宠物种类ID |
|
|
2 |
pet_species |
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 |
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 |
registered_user_id |
int |
10 |
0 |
N |
Y |
注册用户ID |
|
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
|
3 |
user_gender |
varchar |
64 |
0 |
Y |
N |
用户性别 |
|
|
4 |
user_age |
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 |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
schedule_id |
smallint |
5 |
0 |
N |
Y |
日程ID:[0,32767] |
|
|
2 |
content |
varchar |
255 |
0 |
Y |
N |
日程内容 |
|
|
3 |
scheduled_time |
datetime |
19 |
0 |
Y |
N |
计划时间 |
|
|
4 |
user_id |
int |
10 |
0 |
N |
N |
用户id |
|
|
5 |
create_time |
datetime |
19 |
0 |
Y |
N |
创建时间 |
|
|
6 |
update_time |
datetime |
19 |
0 |
Y |
N |
更新时间 |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
1 |
score_id |
int |
10 |
0 |
N |
Y |
评分ID: |
|
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
评分人: |
|
3 |
nickname |
varchar |
64 |
0 |
Y |
N |
昵称: |
|
|
4 |
score_num |
double |
5 |
2 |
N |
N |
0.00 |
评分: |
|
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
|
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
|
7 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
|
8 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
|
9 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
int |
10 |
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 |
创建时间: |
|
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
|
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 |
更新时间: |
5系统实现
5.1注册用户功能实现
5.1.1前台首页
用户可以在首页左上角输入关键词进行全网搜索,方便查找相关信息。此外,用户可以修改个人资料(如头像、昵称、密码等),并通过导航栏浏览轮播图和公告通知。系统利用协同过滤算法分析用户的点击行为,自动推荐个性化的宠物品种、宠物医院和基金信息,提升用户体验。如下图所示。

图5-1首页界面图
5.1.2用户注册
用户注册流程简便快捷,用户通过填写基本信息和设置登录凭证完成注册,确保账户安全。注册信息将被安全地存储和管理,保障用户隐私和数据安全。如下图所示。

图5-2用户注册界面图
5.1.3用户登录
用户通过输入注册时设置的用户名和密码进行登录,系统将验证用户身份。若信息正确,用户将成功进入个人中心,访问各项功能。如果输入错误,系统会提示用户重新输入,提供找回密码的选项以帮助用户恢复账户访问。如下图所示。

图5-3用户登录界面图
5.1.4宠物信息
用户可以查看详细的宠物信息列表,包括编号、名字、品种、年龄、健康状态、绝育状态等。通过输入关键字(如宠物名字、品种、绝育状态、性别)和下拉菜单进行精确搜索。用户可以对喜欢的宠物进行点赞、收藏和评论,并提交领养申请,输入领养原因、选择申请时间和联系方式等详细信息。如下图所示。

图5-4宠物信息详情界面图

图5-5 领养申请提交界面图
5.1.5宠物医院
用户可以查看宠物医院列表,包括医院名称、类型、位置、擅长科室和院长信息。通过输入关键字(如医院名称、类型)和下拉菜单进行搜索。用户可以对合适的医院进行点赞、收藏和评论,并获取更多医疗资源。如下图所示。

图5-6 宠物医院界面图
5.1.6基金信息
用户可以查看基金信息列表,包括基金名称、类型和金额。通过输入关键词(如基金名称、类型)和下拉菜单进行搜索。用户可以对感兴趣的基金进行点赞、收藏和评论,并提交申请,输入申请原因、选择申请时间和备注信息,获得资助机会。如下图所示。

图5-7 基金信息详情界面图

图5-8 申请基金提交界面图
5.1.7 个人中心-领养信息
用户可以查看前台的领养详情,通过输入宠物名字、品种、选择审核状态进行搜索,查看领养申请的审核状态和回复,跟踪申请进度。如下图所示。

图5-9 个人中心-领养信息界面图
5.2管理员功能实现
5.2.1领养信息管理
管理员可以查看和审核用户的领养申请详情,支持按名字、品种、审核状态进行搜索,进行查询、重置、删除操作,并回复审核结果,确保领养流程的透明和公正。如下图所示。

图5-10 领养信息管理界面

图5-11 审核领养信息界面
5.2.2申请信息管理
管理员可以查看和审核用户的基金申请信息详情,支持按名称、类型、用户姓名、审核状态进行搜索,进行查询、重置、删除操作,并回复审核结果,确保基金申请流程的透明和公正。如下图所示。

图5-12 申请信息详情界面

图5-13 审核申请信息界面
5.2.3宠物信息管理
管理员可以查看和编辑各宠物信息详情和评论,支持按名字、品种、绝育状态、性别等条件进行搜索,进行查询、重置、删除操作,并添加新的宠物信息,确保宠物信息的及时更新和准确性。如下图所示。

图5-14 宠物信息详情界面
5.2.4资源管理
管理员可以查看和管理新闻资讯和资讯分类,支持按标题、标签、分类进行搜索,进行增删改查操作,确保新闻资讯的多样性和时效性。如下图所示。

图5-15 资源管理界面
6系统测试
6.1系统测试目标
为了保证流浪狗智能救助系统的质量,使其能够稳定地运行,并排除其可能存在的未知隐患。解除软件可能存在的故障,理清楚测试与纠错的关系,如下图所示。

图6-1测试与纠错信息流程
6.2系统功能测试
通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。以下是详细的测试表:
表6-1用户注册登录测试表
|
测试用例编号 |
功能模块 |
测试用例描述 |
测试结果 |
|
TC001 |
用户注册 |
输入正确的用户名和密码 |
注册成功,提示注册完成 |
|
TC002 |
用户注册 |
输入已存在的用户名 |
注册失败,提示用户名已存在 |
|
TC003 |
用户注册 |
输入格式错误的邮箱地址 |
注册失败,提示邮箱格式错误 |
|
TC004 |
用户注册 |
不输入密码 |
注册失败,提示密码不能为空 |
|
TC005 |
用户注册 |
输入弱密码(如123456) |
注册失败,提示密码强度不足 |
表6-2用户登录测试表
|
测试用例编号 |
功能模块 |
测试用例描述 |
测试结果 |
|
TC001 |
用户登录 |
输入正确的用户名和密码 |
登录成功,进入主页 |
|
TC002 |
用户登录 |
输入错误的用户名 |
登录失败,提示用户名不存在 |
|
TC003 |
用户登录 |
输入错误的密码 |
登录失败,提示密码错误 |
|
TC004 |
用户登录 |
未输入用户名或密码 |
登录失败,提示用户名或密码不能为空 |
|
TC005 |
用户登录 |
多次输入错误密码 |
登录失败,提示账户已被锁定 |
表6-3宠物信息查看测试表
|
测试用例编号 |
功能模块 |
测试用例描述 |
测试结果 |
|
TC001 |
宠物信息查看 |
浏览特定宠物信息 |
信息显示正常 |
|
TC002 |
宠物信息查看 |
搜索宠物信息 |
返回搜索结果 |
|
TC003 |
宠物信息查看 |
查看评价 |
评价展示正常 |
|
TC004 |
宠物信息查看 |
查看宠物图片 |
图片展示正常 |
6.3测试结果总结
经过测试,用户注册功能正常,对于正确、错误、格式错误的用户名、密码和强度进行了有效验证。用户登录功能也正常,能处理正确、错误和多次错误密码的情况。宠物信息查看模块能够正常展示特定宠物的信息,包括评价和图片。总体来说,各功能模块的测试表现良好,符合预期的功能要求,为用户提供了良好的体验和有效的操作流程。
基于SpringBoot的流浪狗智能救助系统通过整合现代信息技术,提供了一个高效、透明且用户友好的综合服务平台。该系统显著提升了流浪狗救助工作的效率和效果,促进了各方的合作与参与。
系统采用SpringBoot作为后端框架,结合Vue.js实现前端交互,并使用MySQL数据库存储数据,确保高效性和稳定性。引入协同过滤算法进行数据分析,根据用户行为推荐个性化内容,如宠物品种、宠物医院和基金信息,显著提升了用户体验和平台活跃度。
功能设计方面,系统为用户提供了一站式服务体验,包括注册登录、个人资料管理、全网搜索、公告通知和新闻资讯展示等。用户可以在“动物小圈”发布和互动帖子,分享救助经验,增强社区归属感。详细的宠物信息列表让用户可以查看每只宠物的具体信息,并申请领养。系统还提供了宠物医院和基金信息的推荐与申请功能,方便用户获取医疗资源和资助机会。
为了保障数据安全和隐私,系统采用了SSL/TLS加密传输技术,遵守相关法律法规,提供透明的隐私政策。数据分析模块通过收集用户行为数据优化推荐算法,帮助管理员了解平台运行状况和用户偏好,进一步提升服务质量。
最终,该系统旨在在政府、社会组织和个人之间搭建桥梁,共同解决流浪狗问题,营造和谐的社会环境。通过技术创新,系统不仅提升了救助工作的效率,还增强了用户的参与感和满意度,推动了流浪动物救助事业的发展。
[1]陈钱,兰全祥. Java Web中文件上传方法的研究与分析 [J]. 工业控制计算机, 2024, 37 (11): 72-74+77.
[2]Borrego D ,Barba I ,Valle D C , et al. DPGraphJ: A Java package for the implementation of dynamic programming algorithms [J]. SoftwareX, 2024, 28 101948-101948.
[3]贾琴. Java编程语言的应用策略分析 [J]. 集成电路应用, 2024, 41 (10): 84-85.
[4]庞敏. MySQL数据库的数据安全应用设计技术研究 [J]. 数字通信世界, 2024, (09): 25-27.
[5]Zhu Y . Contract Management System Based on SpringBoot and Vue [J]. Advances in Computer, Signals and Systems, 2024, 8 (5):
[6]Jamie C . Learn SQL using MySQL in One Day and Learn It Well:SQL for beginners with Hands-on Project[M]. Packt Publishing Limited: 2024-04-26.
[7]郭丽清,黄耀忠. 城乡结合部初中实施STEM教育的实践研究——以《AI智能宠物救助小屋》项目实践为例 [J]. 教育信息技术, 2023, (12): 60-63.
[8]费天乐,刘君. 宠物领养一站式服务平台可行性及运行模式研究 [J]. 国际公关, 2023, (12): 170-172.
[9]王腾. 基于猫脸智能识别的校园流浪猫救助管理系统的设计与实现[D]. 浙江师范大学, 2023.
[10]王志亮,纪松波. 基于SpringBoot的Web前端与数据库的接口设计 [J]. 工业控制计算机, 2023, 36 (03): 51-53.
[11]卢艺轩,崔李宇,曹欣雨,等. 流浪犬猫的溯源生存现状及领养救助调研 [J]. 中国动物保健, 2022, 24 (12): 107-109.
[12]赵亚洲,杨晓冬. 动物领养管理系统的设计与实现 [J]. 无线互联科技, 2022, 19 (18): 61-65+72.
[13]姜秀云. 领养一只完美的宠物 [J]. 疯狂英语(新悦读), 2022, (07): 38-39+76.
[14]张杜鹃. 基于微服务的流浪动物新型救助系统的设计与实现[D]. 首都经济贸易大学, 2022.
[15]刘少林,游国强,曾燕,等. 基于图像识别的宠物综合服务移动管理平台 [J]. 电脑知识与技术, 2022, 18 (14): 58-60+63.
[16]笪伟瀚. AI宠物技术应用于宠物领养app的设计研究 [J]. 电子测试, 2022, 36 (09): 115-118.
[17]刘永强. 救助中心合作模式下宠物专业学生技能的培养 [J]. 当代畜牧, 2021, (12): 69-70.
[18]韩丽萍. 中国宠物市场发展的问题与对策研究[D]. 上海财经大学, 2021.
[19]吴文洋,刘世宇. 基于B/S架构宠物领养管理系统设计 [J]. 软件, 2020, 41 (11): 85-87.
[20]杨芹. 宠物领养Web App的设计与实现[D]. 华中科技大学, 2020.
在本论文的撰写及系统开发过程中,我深刻体会到了独立完成系统开发任务所带来的挑战与成就感。首先,我必须向我的导师表达最诚挚的谢意,他在整个研究与开发过程中,为我提供了无私的指导与建议。无论是在技术细节的处理还是在研究思路上的把握,他都给予了我宝贵的方向性指导,帮助我解决了众多难题。他的专业知识和严谨态度对我产生了深远的影响,促进了我在学术领域的不断进步。每一次的讨论和反馈都让我受益良多。
在开发过程中,我经历了从系统需求分析、架构设计到功能实现的整个流程。这一过程不仅锻炼了我的编程技能,也让我在项目管理、时间规划和问题解决等方面取得了显著的进步。我独立编写了系统的每一行代码,并通过不断的测试与优化,确保了系统的稳定性和性能。面对技术难题时,我通过广泛查阅文献、技术文档和参与社区讨论,自主解决了各种问题,这个过程加深了我对技术深度与广度的理解。
同时,我也要向我的家人和朋友表达感激之情,感谢你们在我遇到困难时给予的鼓励与支持。我们的讨论和互动不仅丰富了我的研究内容,也让整个过程充满了乐趣。
我还要特别感谢我的家人,感谢你们的理解和支持。在我追求学术目标的道路上,你们的鼓励是我前进的最大动力。
最后,我要向所有参与本研究的受访者以及提供数据支持的机构表示感谢,你们的帮助是本研究得以顺利完成的关键。
再次感谢所有关心和支持我的人,正是因为有了你们的陪伴,我才能走到今天。
点赞+收藏+关注 → 私信领取本源代码、数据库
更多推荐
所有评论(0)