springboot宠物寄养服务预约与监管系统82684-计算机课程设计、毕业设计

1 绪论

1.1 研究背景

  宠物寄养服务领域存在着服务质量良莠不齐、价格标准不明晰、责任认定难等问题。在传统的寄养模式中,宠物主人要亲自去实地考察机构的环境,与机构负责人进行面对面的交流,签订书面的合同来约定双方的权利和义务,整个过程耗时费力,缺少事后追责的依据。寄养机构采用手工记账的方式进行订单的管理,信息易出错、漏记,客户的维护费用高。监管部门面对分散的寄养服务提供者,不能对服务质量进行有效的监管和纠纷调解。互联网技术和共享经济模式深入到生活服务领域当中,给重新塑造宠物寄养行业的生态赋予了技术上的可能。移动支付普及、定位服务成熟、评价体系完备,于是线上预约线下服务的闭环模式得以实现1。宠物主人从生理需求向情感需求转变,寄养服务也由原来的简单喂养照料转变为关注宠物的心理健康以及行为训练2。宠物经济市场不断扩大,专业化分工越来越明显,产生了行为训练寄养、特需护理寄养等新的服务种类3。创建起联系供需双方、整合服务展示、订单管理、支付结算、评价反馈的综合性平台,可以很好地解决信息孤岛的问题,促使宠物寄养行业朝着规范化、透明化的方向发展。

1.2 研究意义

  本系统从操作流程上对寄养服务进行全链条的数字化改造。宠物主人在平台浏览寄养项目信息、对比价格和服务内容、在线预约、支付,全部过程都可以在移动端完成闭环,省去了线下多次沟通的麻烦。机构用户接受预约订单、审核客户需求、记录寄养过程、反馈服务情况,信息流转效率比手工模式高很多,人为差错率也降低了。订单状态从提交待审、支付完成、服务结束等各个节点的状态可以被查询和追踪,交易双方的权责边界也十分清楚。系统从行业规范的角度出发,促进寄养服务标准化发展。机构资质审核保证入驻的供应商有基本的服务能力,评价反馈模块积累真实的使用数据作为信用的参照,寄养记录保存功能给纠纷解决提供客观的依据。平台积累的订单数据、评价数据经过分析挖掘之后,可以给监管部门制定行业标准提供决策依据。该系统的系统设计思想和实现途径对于家政服务、养老看护、幼儿托管等类似预约服务领域有借鉴意义,也体现了信息技术改造传统服务业的一种可能方式。

1.3 国内外研究现状

  国内宠物服务领域信息化研究起步较晚但是发展迅速,研究热点也由最初的单一功能工具向综合性的服务平台转变。早期研究主要是对宠物疾病诊断和健康护理进行研究,随着宠物饲养人数的增多,服务范围也从最初的疾病诊断扩展到行为训练等方面。移动互联网技术的普及使宠物服务系统的形态发生了变化,微信小程序凭借即用即走的特点成为了主要的载体,后台管理系统也朝着专业化、模块化的方向发展。技术架构上单体应用向前后端分离发展,开发效率和系统可维护性一起提高。

  余文轩为宠物疾病诊断场景创建图文咨询平台,用微信小程序把宠物主人和兽医联系起来,用图文交互的方式进行远程问诊4。该研究证明移动端可以很好地承担起专业服务咨询的场景,给本系统在线沟通模块的设计提供了一个交互范式。陈华敏、余汪洋把物联网技术应用到宠物喂养上,设计出一个利用STM32做为控制器的远程智能喂养系统,可以达到定时投喂和环境检测的目的5。本文扩大了宠物服务的物理交互范围,寄养系统可以接入智能硬件来提高服务质量。余久久、葛颖、凤鹏飞等学者用Spring Cloud微服务架构开发智慧校园宠物领养系统,用服务拆分来应对高并发访问场景6。敏捷设计思想对于系统模块划分以及可扩展性设计有指导作用,本系统用户权限分离的设计就是受到该思想的影响。肖新凤使用区块链技术创建出宠物管理系统信任存证系统FISCO BCOS平台7。突出了数据的真实性、防篡改对于宠物服务的必要性,给本系统订单状态跟踪以及寄养记录留存功能赋予了理论根基。万涛、吴杰、葛晶晶等人所设计的智能宠物管家系统集成了各种各样的服务功能,说明综合性的平台技术上是可行的8。从整体上看,国内的研究在单点功能上取得显著成效,但是在预约、支付、评价、监管全流程闭环系统的开发方面还存在着不足,本系统就是针对这些空白展开功能整合和流程优化的系统。

  国外宠物服务领域信息化研究开始的比较早,技术应用的深度以及系统的集成程度都处于领先地位。研究重心由基础功能实现向智能化服务、数据驱动决策转变,重视用户体验提升与商业价值挖掘。移动应用和云端服务相结合已经成为主要的技术路线,机器学习算法被用在宠物的行为分析以及健康预测上。

  One Fur All公司推出的Pet House系统集寄养预定、用品购买、健康咨询等各项功能于一身,用微服务架构支持多端访问,其春季新品推广策略体现出了系统同商业运营的深度融合9。西班牙山泉宠物旅馆开发节日主题活动预约模块,把常规寄养服务和特色体验结合起来,说明系统设计要考虑场景化的需求10。Lu W 在宠物护理管理系统前端设计时使用了响应式布局和组件化思想,用用户行为数据来改善交互路径11。前端设计方法论对本系统Vue.js界面的创建有借鉴意义,局部搜索和筛选排序的功能就是按照其交互优化的方法来实现的。Nicola B对春季宠物中毒危害进行研究,并开发出预警模块,把专业知识库和用户行为数据结合起来实现风险推送12。该研究证明寄养系统可以提高宠物健康知识服务的附加值。Adam T等学者对澳大利亚本土宠物贸易的影响因素进行分析,得出物种特征、社会经济属性以及监管系统一起影响交易行为。研究结果说明,监管数据对于规范市场行为有重要作用,并且也证明了本系统评价反馈、审核机制的设计是必要的。国外的研究在智能化程度以及数据的价值挖掘上具有明显的优势,但是系统的复杂度较高并且缺少本土化的适应性,本系统将国外的研究模块化设计思想融入到轻量化的架构中。

  国内研究在功能完整性上为本系统打下了基础,移动端交互设计的思想被直接用到了文章资讯的查看和评论发表模块中。国外的研究从数据驱动、智能化的角度出发,给寄养记录模块的后续数据分析提供服务数据。本系统在吸收国内外研究成果的基础上,以宠物寄养垂直领域为研究对象,构建起一个包含预约全流程的闭环系统,用角色权限分离的方式实现服务监管的功能,在操作简便性和数据规范性之间找到平衡。

1.4 研究内容

  本研究的主要任务就是设计并实现一个基于Spring Boot的宠物寄养服务预约和监管系统。系统开发工作从需求调研与分析阶段开始,整理出普通用户、机构用户、管理员这三个角色的功能需求,确定了文章资讯查看、寄养预约、订单支付、评价反馈这些具体的用例。架构设计阶段使用前后端分离模式,后端用Spring Boot创建RESTful接口实现业务逻辑,前端用Vue.js框架开发交互界面,MySQL数据库做数据持久化存储。模块实现阶段根据角色来确定功能边界,普通用户模块可以实现寄养信息浏览搜索、预约订单提交支付、个人订单和寄养记录查询;机构用户模块可以完成寄养项目管理、预约订单审核、寄养记录录入、评价反馈回复;管理员模块可以完成系统用户管理、机构资质审核、寄养信息监管、轮播图与文章资讯维护。数据库的设计符合范式理论,用实体关系来保证数据的一致性、完整性。系统测试包含功能正确性检验和边界条件检验,保证各个模块可以按照业务要求正常运行。研究侧重点是业务流程数字化改造和多角色权限控制机制,不涉及高并发处理和分布式部署。最终交付成果有可以运行的Web系统原型、完整的文档设计、测试报告和源代码。整个开发过程按照软件工程规范进行,采用迭代增量的方式推进,保证各个阶段的成果可以追溯、可以验证。

2 系统分析

2.1 系统概述

  宠物寄养服务预约和监管系统是面向普通用户、机构用户、管理员这三个角色所搭建的综合性在线服务平台。系统主要针对传统寄养模式的信息不对称、预约难、过程难追踪、监管缺位等问题展开改革,用信息化的方式来重新塑造寄养服务的业务流程。系统主要的功能有寄养项目展示与检索、在线预约申请和审核、订单支付及状态追踪、寄养过程的记录与查看、服务评价与反馈、资讯内容发布和管理等几个方面的业务流程。普通用户可以浏览寄养机构发布的各种服务项目,选择适合自己的寄养方案并提交预约申请,支付后查看机构录入的寄养记录,在服务结束时对本次体验进行评价。机构用户登录之后管理自己的寄养项目信息,处理用户提交的预约订单,录入每天的寄养服务记录,查看和回复用户的评价。管理员对机构入驻资格进行审核,监管寄养项目相关的内容是否合规,处理异常订单及投诉,保证平台正常运转。系统采用前后端分离的架构,后端用Spring Boot框架来实现RESTful接口的业务逻辑13,前端用Vue.js来实现用户的界面,用MySQL数据库来保存业务数据。采用角色权限控制机制保证不同的用户只能访问到相应的功能模块,使用订单状态机对预约过程进行规范化的管理,依靠评价体系来收集服务质量的数据从而产生信用参考。

2.2 可行性分析

2.2.1 技术可行性

  Spring Boot框架可以简化项目的初始搭建以及依赖的管理过程,它会自动完成大部分的样板代码的编写工作。Vue.js框架使用组件化开发的方式,界面元素可以被复用并且维护成本低14。MySQL数据库技术成熟稳定,可以满足本系统预计的数据量和并发访问量要求15。前后端分离架构依靠接口互相联系,各个模块的职责分明并且可以各自独立地发展。开发工具链完备、社区资源丰富,遇到技术问题可以很快找到解决办法。系统整体结构合理,所选技术栈之间兼容性好,没有出现难以调和的技术冲突。

2.2.2 经济可行性

  系统开发仅需个人计算机与开源软件,无需购置商业授权开发工具或服务器硬件。Spring Boot与Vue.js均为开源框架16,MySQL提供社区版免费使用,项目软件成本基本为零。系统部署可选用轻量级云服务器,初期配置即可满足运行需求,后期根据用户量弹性扩容。运行期间电费与网络带宽费用处于可控范围,维护工作可由开发人员兼职完成。系统上线后通过服务佣金或广告位获取收益,投入产出比预期较为乐观。

2.2.3 操作可行性

  系统界面设计遵循用户日常使用习惯,寄养信息浏览与预约提交操作流程与电商购物体验相似。普通用户通过搜索筛选快速定位目标服务,点击项目卡片即可查看详情并填写预约表单。机构用户登录后台查看待处理订单,审核通过后系统自动更新状态并通知用户。管理员操作集中在用户管理、内容审核等后台功能,各项操作均有明确提示与反馈。三类用户均无需专业培训即可上手使用,学习成本控制在较低水平。

2.2.4 法律可行性

  系统开发过程使用Spring Boot、Vue.js、MySQL等开源技术框架17,这些软件遵循Apache License 2.0、MIT License、GPL等开源协议,在非商业用途与商业用途中均具备合法使用权。本人独立完成系统的源代码编写工作,没有复制或者改编过其他受版权保护的代码片段,知识产权归本人所有。系统运行时所获取的用户个人信息只用在订单处理和服务联系上,采集范围被限制在业务必要的字段之内,存储和传输过程使用了加密技术。平台展示的寄养机构资质附件由机构自行上传,并承诺内容真实有效,系统只对机构营业执照等证照进行形式审核,不对真实性承担实质法律责任。用户发布的评论、评价等言论必须遵守法律法规,系统建立内容审核制度,及时处置违法信息。系统整体运行模式符合《中华人民共和国网络安全法》、《中华人民共和国数据安全法》、《中华人民共和国个人信息保护法》的相关规定,没有出现法律合规风险。

2.3 需求分析

2.3.1 功能需求

  普通用户角色功能需求。普通用户在系统中可以进行文章资讯查看、发表评论、寄养信息查看、寄养预约订单提交、支付订单、预约订单查看、寄养记录查看等操作。

图3-1 普通用户用例图

  管理员角色功能需求。管理员在系统中可以进行系统用户管理、寄养信息管理、预约订单管理、寄养记录管理、轮播图管理、文章资讯管理等操作。

图3-2 管理员用例图

  机构用户角色功能需求。机构用户在系统中可以进行寄养信息管理、预约订单管理、寄养记录管理、评价反馈管理等操作。

图3-3 机构用户用例图

2.3.2 性能需求

  系统在多用户并发访问的时候要保证稳定的响应速度,页面加载时间控制在3秒内。订单提交、支付等操作应在5秒内完成,然后将结果返回给用户。数据库查询操作的响应时间在2秒内,复杂一些的统计查询会超过8秒。系统允许最多有50个用户在线操作,CPU负载率不超过70%。内存占用在常规使用情况下不会超过可用容量的60%,不会因为资源耗尽而造成服务中断。数据备份和恢复工作要安排在非高峰时段进行,全量备份完成时间不能超过30分钟。系统应具有7*24小时不间断运行的能力,计划内检修每次不超过一次。

2.3.3 环境需求

硬件需求

  服务器端需配置Intel Core i5及以上处理器,主频不低于2.5GHz。内存容量建议8GB以上,硬盘空间至少100GB用于程序部署与数据存储。客户端计算机需配备Intel Core i3及以上处理器,内存4GB以上,硬盘空间10GB剩余。显示设备分辨率建议不低于1366×768,以保证界面元素完整显示。网络设备需支持100Mbps以太网或802.11n无线网络标准,确保数据传输通畅。

软件需求

  服务器操作系统选用Windows Server 2019或CentOS 7及以上版本。数据库管理系统使用的是MySQL 8.0社区版,字符集设为utf8mb4。Java运行环境需安装JDK 11及以上版本,配置JAVA_HOME环境变量。Web应用服务器使用Spring Boot内嵌Tomcat,无需单独安装。客户端操作系统支持Windows 10以上版本或者macOS 11以上版本。浏览器需使用Chrome 90、Edge 90、Firefox 90及以上版本,开启JavaScript与Cookie功能。前端运行需要Node.js 16以上版本,开发调试使用,生产环境不需要安装。

3.1 系统总体设计

3.1 系统总体设计

  系统采用前后端分离的架构模式,用户界面层用Vue.js框架来搭建起单页应用,并使用路由机制达成页面之间无刷新跳转的目的。视图组件主要是渲染数据并收集用户操作,状态管理就是保存跨组件共享的数据的地方。应用服务层部署在Spring Boot容器中,控制器接收到HTTP请求之后解析参数,服务接口封装了寄养预约、订单处理、评价管理等主要的业务规则。数据持久层用Spring Data JPA和MySQL数据库交互,实体类对应数据库表结构,仓库接口提供基本的增删改查方法。系统支持层是权限控制、日志记录、异常处理等横切关注点的实现,用Spring AOP来解耦和业务逻辑的联系。各个层次之间职责分明,上层依靠下层的接口而不是具体的实现来完成工作,模块替换和功能扩展比较灵活。

3.1.1 功能模块设计

  宠物寄养服务预约与监管系统分为普通用户、管理员、机构用户三个主要角色。普通用户功能模块有文章资讯查看、发表评论、寄养信息查看、寄养预约订单提交、支付订单、预约订单查看、寄养记录查看。管理员功能模块包含系统用户管理、寄养信息管理、预约订单管理、寄养记录管理、轮播图管理、文章资讯管理。机构用户功能模块有寄养信息管理、预约订单管理、寄养记录管理、评价反馈管理。各个角色的功能是相对独立的,但是又互相联系在一起,共同组成一个完整的业务闭环。该系统的功能结构如图4-2所示。

图4-2 系统功能结构图

3.1.2 功能模块说明

  普通用户功能模块有文章资讯查看、发表评论、寄养信息查看、寄养预约订单提交、支付订单、预约订单查看、寄养记录查看等七个子模块。文章资讯查看模块给用户提供宠物养护知识和行业动态的浏览服务,可以按照分类筛选或者关键词搜索。发表评论模块可以允许用户在文章或者寄养项目详情页下写反馈内容,并且支持回复互动。寄养信息查看模块是显示机构发布寄养项目的列表,并提供多方面筛选、排序的功能。寄养预约订单提交模块处理用户选择寄养项目之后填写预约信息并生成订单。支付订单模块可以实现用户对已生成的待支付订单进行在线支付。预约订单查看模块对用户的全部预约记录进行集中管理,可以按照状态来筛选查看。寄养记录查看模块给用户查看宠物寄养期间的服务过程详情。

  管理员功能模块包含系统用户管理、寄养信息管理、预约订单管理、寄养记录管理、轮播图管理、文章资讯管理这六个子模块。系统用户管理模块是对普通用户、机构用户的账户信息进行保存,对机构资质进行审核并修改账户的状态。寄养信息管理模块对寄养机构发布的寄养项目内容进行监管,发现有违规行为的会强制下架。预约订单管理模块对整个平台的订单流转情况进行监控,参与处理异常交易纠纷。寄养记录管理模块对机构提交的服务过程记录的真实性进行核查,可以导出存档。轮播图管理模块对系统首页的广告位进行展示内容的维护,可以上传图片并对其进行顺序调整。文章资讯管理模块主要完成系统内容栏目的发布和维护工作,可以对文章进行分类和置顶。

  机构用户功能模块有寄养信息管理、预约订单管理、寄养记录管理、评价反馈管理这四个子模块。寄养信息管理模块为机构提供发布和维护自家寄养服务项目的功能,可以随时修改信息或者临时下架。预约订单管理模块处理用户提交的寄养预约申请,支持审核通过或者拒绝的操作。寄养记录管理模块录入宠物每天的服务情况,形成服务档案,多次录入形成连续的日志。评价反馈管理模块可以查看用户对于已经完成的服务的评价内容,并且可以进行互动,恶意差评可以向管理员申诉。

3.2 系统数据库的分析与设计

3.2.1 数据库的概念结构设计

  从业务流程完整性角度来抽象出系统的中心数据关系,关键是理清楚普通用户、机构用户、预约订单、寄养记录、评价反馈之间业务联系。用户提交预约申请形成订单记录,订单执行过程中产生寄养记录,服务结束之后出现评价反馈,机构发布寄养项目给用户挑选。实体之间用主外键来建立联系,一对多的关系表达业务聚合的语义。概念模型是现实业务到数据库结构的中间映射,它不牵涉具体的实现细节。实体定义属性并标识相互关系,用E-R图可视化展示全局数据架构18,给后面逻辑模型的设计提供清晰的依据。全局的E-R模型如图4-8所示。

图4-8 全局ER图

  根据系统分析,系统的主要实体有普通用户、机构用户、寄养信息、预约订单、寄养记录、评价反馈、文章、评论、收藏、点赞,各个实体具体的属性如下图所示。

图4-9 普通用户实体属性图

  普通用户主要包括用户姓名、用户性别、联系电话、审核状态等。如图4-9所示。

图4-10 机构用户实体属性图

  机构用户主要包括机构名称、机构电话、资质附件、审核状态等。如图4-10所示。

图4-11 寄养信息实体属性图

  寄养信息主要包括寄养项目、寄养价格、寄养地址、机构名称等。如图4-11所示。

图4-12 预约订单实体属性图

  预约订单主要包括订单编号、寄养项目、用户姓名、订单状态等。如图4-12所示。

图4-13 寄养记录实体属性图

  寄养记录主要包括订单编号、寄养项目、用户姓名、记录日期等。如图4-13所示。

图4-14 评价反馈实体属性图

  评价反馈主要包括订单编号、寄养项目、用户姓名、评价内容等。如图4-14所示。

图4-15 文章实体属性图

  文章主要包括标题、文章分类、点击数、点赞数等。如图4-15所示。

图4-16 评论实体属性图

  评论主要包括评论内容、昵称、创建时间、来源表等。如图4-16所示。

图4-17 收藏实体属性图

  收藏主要包括标题、封面、创建时间、来源表等。如图4-17所示。

图4-18 点赞实体属性图

  点赞主要包括点赞状态、创建时间、来源表、来源ID等。如图4-18所示。

3.2.2 数据库的逻辑结构设计

  逻辑模型阶段把概念模型转换成具体的数据库表结构,按照范式理论规范化属性定义和关系表达。每一个实体映射成一张数据表,实体属性对应表的字段,并且给定数据类型和长度约束。主键字段保证记录的唯一性,外键字段建立表间的参照关系。索引设计对高频查询字段进行优化,事务机制保证关键操作的数据一致性。字符集统一设置为utf8mb4,存储引擎选择InnoDB,行级锁和事务支持。郑妍等学者在宠物系统的研究中验证了该设计方法的可行性,其数据库设计经验给本研究提供实践上的借鉴19。表结构定义遵照字段命名准则和类型选取准则,从而保证数据存储的准确性和可扩充性。

3.2.3 数据库表的结构设计

  普通用户表主要是用来存储系统普通用户的基本信息与审核状态。主要包括用户姓名、用户性别、联系电话、审核状态等字段。如表4-1所示。

表4-1 普通用户表

序号 字段名 数据类型 长度 备注
1 普通用户id int 11 主键
2 用户姓名 varchar 64 用户真实姓名
3 用户性别 varchar 10 男/女
4 联系电话 varchar 20 手机号码
5 审核状态 varchar 20 待审核/已通过/未通过
6 用户id int 11 关联账户编号
7 创建时间 datetime - 记录生成时间
8 更新时间 timestamp - 最后修改时间

  机构用户表主要是用来存储寄养机构的基本信息与资质审核状态。主要包括机构名称、机构电话、资质附件、审核状态等字段。如表4-2所示。

表4-2 机构用户表

序号 字段名 数据类型 长度 备注
1 机构用户id int 11 主键
2 机构名称 varchar 100 寄养机构名称
3 机构电话 varchar 20 联系电话
4 资质附件 varchar 255 营业执照等文件路径
5 审核状态 varchar 20 待审核/已通过/未通过
6 用户id int 11 关联账户编号
7 创建时间 datetime - 记录生成时间
8 更新时间 timestamp - 最后修改时间

  寄养信息表主要是用来存储机构发布的寄养项目详细信息。主要包括寄养项目、寄养价格、寄养地址、机构名称等字段。如表4-3所示。

表4-3 寄养信息表

序号 字段名 数据类型 长度 备注
1 寄养信息id int 11 主键
2 寄养项目 varchar 64 服务项目名称
3 寄养价格 double 10 每日价格
4 寄养地址 varchar 200 服务详细地址
5 机构名称 varchar 100 发布机构
6 机构用户 int 11 关联机构用户
7 封面图片 varchar 255 项目展示图
8 点赞数 int 11 累计点赞量
9 创建时间 datetime - 记录生成时间

  预约订单表主要是用来存储用户提交的寄养预约申请信息。主要包括订单编号、寄养项目、用户姓名、订单状态等字段。如表4-4所示。

表4-4 预约订单表

序号 字段名 数据类型 长度 备注
1 预约订单id int 11 主键
2 订单编号 varchar 50 唯一订单号
3 寄养项目 varchar 64 预约服务名称
4 寄养价格 double 10 每日单价
5 机构名称 varchar 100 服务提供方
6 机构用户 int 11 关联机构用户
7 用户姓名 varchar 64 下单用户
8 联系电话 varchar 20 用户手机
9 订单状态 varchar 20 待审核/待支付/已完成
10 支付状态 varchar 20 未支付/已支付
11 创建时间 datetime - 记录生成时间

  寄养记录表主要是用来存储机构录入的日常服务过程信息。主要包括订单编号、寄养项目、用户姓名、记录日期等字段。如表4-5所示。

表4-5 寄养记录表

序号 字段名 数据类型 长度 备注
1 寄养记录id int 11 主键
2 订单编号 varchar 50 关联订单号
3 寄养项目 varchar 64 服务项目名称
4 机构名称 varchar 100 服务提供方
5 机构用户 int 11 关联机构用户
6 用户姓名 varchar 64 服务对象
7 记录日期 date - 服务日期
8 记录内容 text 65535 服务情况描述
9 创建时间 datetime - 记录生成时间

  评价反馈表主要是用来存储用户对已完成服务的评价内容。主要包括订单编号、寄养项目、用户姓名、评价内容等字段。如表4-6所示。

表4-6 评价反馈表

序号 字段名 数据类型 长度 备注
1 评价反馈id int 11 主键
2 订单编号 varchar 50 关联订单号
3 寄养项目 varchar 64 服务项目名称
4 机构名称 varchar 100 服务提供方
5 机构用户 int 11 关联机构用户
6 用户姓名 varchar 64 评价人
7 评价日期 date - 提交日期
8 评价内容 text 65535 用户反馈
9 创建时间 datetime - 记录生成时间

  文章表主要是用来存储系统发布的资讯内容。主要包括标题、文章分类、点击数、点赞数等字段。如表4-7所示。

表4-7 文章表

序号 字段名 数据类型 长度 备注
1 文章id mediumint 11 主键
2 标题 varchar 125 文章标题
3 文章分类 varchar 64 所属类别
4 点击数 int 11 浏览次数
5 点赞数 int 11 点赞数量
6 来源 varchar 255 文章来源
7 封面图 varchar 255 配图路径
8 创建时间 timestamp - 发布时间
9 更新时间 timestamp - 最后修改

  评论表主要是用来存储用户对文章或寄养项目的评论内容。主要包括评论内容、昵称、创建时间、来源表等字段。如表4-8所示。

表4-8 评论表

序号 字段名 数据类型 长度 备注
1 评论id int 11 主键
2 评论人id int 11 用户编号
3 回复评论id int 11 被回复评论
4 内容 longtext 4294967295 评论文本
5 昵称 varchar 100 显示名称
6 头像地址 varchar 255 用户头像
7 来源表 varchar 255 评论归属表
8 来源id int 11 归属记录id
9 创建时间 timestamp - 评论时间

  收藏表主要是用来存储用户收藏的文章或寄养项目。主要包括标题、封面、创建时间、来源表等字段。如表4-9所示。

表4-9 收藏表

序号 字段名 数据类型 长度 备注
1 收藏id int 11 主键
2 收藏人id int 11 用户编号
3 来源表 varchar 255 收藏内容类型
4 来源id int 11 收藏内容id
5 标题 varchar 200 收藏标题
6 封面 varchar 255 缩略图
7 创建时间 timestamp - 收藏时间

  点赞表主要是用来存储用户对文章或寄养项目的点赞记录。主要包括点赞状态、创建时间、来源表、来源id等字段。如表4-10所示。

表4-10 点赞表

序号 字段名 数据类型 长度 备注
1 点赞id int 11 主键
2 点赞人 int 11 用户编号
3 来源表 varchar 255 点赞内容类型
4 来源id int 11 点赞内容id
5 点赞状态 tinyint 4 1点赞0取消
6 创建时间 timestamp - 点赞时间

4 系统详细设计

4.1 用户模块

4.1.1 寄养预约流程设计

  用户浏览寄养项目列表,点击项目卡片查看详细服务内容与价格说明。确定意向后填写预约表单,选择开始日期并输入预约天数,系统自动计算订单总价。提交预约申请后订单进入待审核状态,机构用户登录后台查看新订单并决定通过或拒绝。审核通过后用户收到通知并进入支付环节,选择支付方式完成付款操作。支付成功则订单状态变更为已支付,机构准备提供服务。寄养预约流程图如图4-3所示。

图4-3 寄养预约流程图

4.1.2 寄养记录录入流程设计

  机构用户登录系统进入寄养记录管理模块,选择待服务的已支付订单。点击录入记录按钮进入表单页,填写宠物当日饮食、活动、健康状况等信息。系统记录填写时间并关联对应订单,提交后数据存入寄养记录表。用户可在个人中心查看历史寄养记录,机构用户可追溯过往服务详情。寄养记录录入流程图如图4-4所示。

图4-4 寄养记录录入流程图

4.1.3 机构审核流程设计

  机构用户登录后台进入预约订单列表页,筛选状态为待审核的订单。点击订单详情查看用户提交的预约信息与备注内容。审核人员根据机构当前接待能力与宠物具体情况做出判断,选择通过或拒绝操作。若审核通过则系统自动扣减可预约库存并向用户推送支付通知,若拒绝则填写拒绝原因后订单状态更新为已拒绝。机构审核流程图如图4-5所示。

图4-5 机构审核流程图

4.1.4 评价反馈流程设计

  服务完成后用户在个人中心找到已完成订单,点击评价按钮进入评价页面。填写评价内容并选择星级评分,提交后评价数据关联订单与机构。机构用户登录后可查看用户评价并在评价下方回复解释。管理员后台监控异常评价内容,必要时进行隐藏或删除处理。评价反馈流程图如图4-6所示。

图4-6 评价反馈流程图

4.1.5 支付订单流程设计

  用户提交预约申请且机构审核通过后,订单状态变为待支付。用户进入待支付订单列表选择目标订单,点击支付按钮进入收银台页面。系统展示订单金额与实付金额,用户从微信支付、支付宝支付、网银支付中选择支付方式。确认支付后系统调用模拟支付接口,支付成功则更新订单状态并记录支付流水号,支付失败则提示用户重试或更换支付方式。支付订单流程图如图4-7所示。

图4-7 支付订单流程图

5 系统实现

5.1 普通用户角色功能实现

5.1.1 文章资讯查看

  文章资讯查看模块给用户提供宠物养护知识、行业动态、寄养指南等信息的浏览服务。用户进入到资讯列表页之后,就会以分页的形式展示出文章的标题、封面图、发布时间和阅读量。列表可以按照分类标签筛选资讯内容,顶部搜索框可以匹配标题和正文摘要。点击文章卡片进入详情页,页面顶部显示标题和元信息,底部为完整的正文内容。底部区域对当前文章的浏览量、点赞数做统计,用点击按钮点赞来表示自己的看法。系统对每一次的访问行为进行记录并更新点击量数据,热门文章按照访问次数进行自动排序。文章资讯查看界面如图5-1所示。

图5-1 文章资讯查看界面

  关键代码如下:

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

  }

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

  }

  }

5.1.2 发表评论

  发表评论模块可以供用户在文章详情页或者寄养项目详情页上发表自己的意见。页面底部添加评论输入框,用户点击之后就会弹出文本编辑区。输入内容之后点击发表按钮,系统对评论内容是否为空进行校验,为空则返回错误提示,不为空则将评论内容提交到服务器。服务端保存评论人的信息、评论的时间和来源的内容标识,新的评论立即出现在评论区的顶部。用户可查看自己发表的历史评论并在规定时间内删除。其他的用户可以对已有的评论作出回应,从而形成一个嵌套式的讨论结构。评论区分页加载减小了前端的渲染负担,热门评论按照点赞数排序。发表评论界面如图5-2所示。

图5-2 发表评论界面

  关键代码如下:

  @PostMapping("/add")

  @Transactional

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

  Map<String,Object> paramMap = service.readBody(request.getReader());

  paramMap.entrySet().removeIf(entry -> {

  Object value = entry.getValue();

  return value instanceof String && ((String) value).isEmpty();

  });

  Comment comment = new Comment();

复制代码
comment.setContent(paramMap.get("content")==null?null:String.valueOf(paramMap.get("content")));

this.addEntity(comment);

return success(1);

  }

5.1.3 寄养信息查看

  寄养信息查看模块呈现机构发布的各类寄养服务项目。列表页采用卡片式布局展示项目封面图、名称、价格与机构名称。顶部提供搜索框与筛选条件,用户可按价格区间、服务类型、地理位置进行多维度过滤。排序选项支持按价格从低到高或按评价分数倒序排列结果。点击项目卡片进入详情页,完整展示服务内容描述、机构资质信息、用户评价列表。详情页同时显示当前项目的收藏数量与点赞数量,用户可进行收藏或点赞操作。寄养信息查看界面如图5-3所示。

图5-3 寄养信息查看界面

  关键代码如下:

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

  }

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

  }

  }

5.1.4 寄养预约订单提交

  寄养预约订单提交模块是用户从浏览到下单的全部操作过程。用户在项目详情页点击立即预约按钮后跳转到表单填写页,系统会把项目名称和机构信息带入表单中。用户选择开始日期和预约天数,日历组件禁止已经满的日期。输入框实时计算订单总价并显示在表单的底部,用户可以填写备注来说明特殊需求。提交之前先做手机号码格式校验和必填项检查,通过之后生成唯一的订单编号并跳转到订单确认页。订单初始状态设为待审核,并向机构用户发出新订单通知。寄养预约订单提交界面如下图5-4所示。

图5-4 寄养预约订单提交界面

  关键代码如下:

  @PostMapping("/add")

  @Transactional

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

  Map<String,Object> paramMap = service.readBody(request.getReader());

  paramMap.entrySet().removeIf(entry -> {

  Object value = entry.getValue();

  return value instanceof String && ((String) value).isEmpty();

  });

  ReservationOrder reservation_order = new ReservationOrder();

复制代码
reservation_order.setOrder_number(paramMap.get("order_number")==null?null:String.valueOf(paramMap.get("order_number")));

reservation_order.setOrder_status(paramMap.get("order_status")==null?null:String.valueOf(paramMap.get("order_status")));

this.addEntity(reservation_order);

return success(1);

  }

5.1.5 支付订单

  支付订单模块可以实现用户进行预约费用的在线支付。用户在待支付订单列表中选择一个目标订单进入支付页面,订单金额和实付金额都会显示出来。支付方式区域有微信支付、支付宝支付、网银支付三种选择,用户点击选中后底部会显示对应的图标。确认支付按钮弹出模拟支付收银台,用户输入支付密码或者验证码完成交易。支付成功之后系统把订单状态更改为已支付,并向用户发出通知,支付记录也存入数据库。支付失败时提示用户重新支付或者选择其他的支付方式,异常订单由管理员后台处理。支付订单界面如图5-5所示。

图5-5 支付订单界面

  关键代码如下:

  @Transactional

复制代码
@GetMapping("/update_pay_state")

public String updatePayState(Long id, String newState) throws IOException {

if (!newState.equals("未支付") &amp;&amp; !newState.equals("已支付")) {

  return "非法的支付状态";

  }

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

  queryMap.put("id",String.valueOf(id));

  ReservationOrder reservation_order = service.findOne(queryMap);

复制代码
if (reservation_order!=null) {

reservation_order.setPay_state(newState);

this.setEntity(queryMap,new HashMap&lt;&gt;(),reservation_order);

return "支付成功";

  }

  }

5.1.6 预约订单查看

  预约订单查看模块集中管理用户所提交的所有的寄养预约记录。订单列表页默认显示全部订单,顶部有状态筛选标签可以切换待审核、待支付、已完成、已取消分类。每个订单项显示订单编号、寄养项目、机构名称、当前状态和提交时间。点击详情按钮进入订单详情页,可以完整的看到用户的个人信息、服务项目、费用明细以及操作记录。待支付状态的订单底部有立即支付按钮,待审核状态的订单可以进行取消操作。已完成的订单可以进入到评价入口进行反馈。预约订单查看界面如图5-6所示。

图5-6 预约订单查看界面

  关键代码如下:

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

  }

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

  }

  }

5.1.7 寄养记录查看

  寄养记录查看模块供用户追溯宠物在寄养期间的服务情况。记录列表展示已完成订单对应的服务记录项,按记录日期倒序排列。每个记录项包含订单编号、寄养项目、机构名称与记录日期摘要。点击记录卡片进入详情页,查看机构录入的每日服务内容,包括饮食情况、活动状态、健康状况描述。系统记录每次查看行为,用户可对历史记录进行截图保存。无记录时页面显示暂无数据提示。寄养记录查看界面如图5-7所示。

​编辑 图5-7 寄养记录查看界面

  关键代码如下:

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

  }

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

  }

  }

5.2 管理员角色功能实现

5.2.1 系统用户管理

  系统用户管理模块处理普通用户与机构用户的账户信息维护与状态审核。用户列表页分页展示注册账户,顶部搜索框支持按用户名或手机号精确查找。管理员可查看用户详细信息并修改用户组归属,冻结异常账户限制登录权限。机构用户列表单独标识资质附件字段,点击文件名下载查看营业执照等文件。审核状态列提供批量审核功能,勾选多个待审核机构后统一通过或拒绝。操作记录日志追踪管理员所有修改行为。系统用户管理界面如图5-8所示。

图5-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);

  }

  @Transactional

复制代码
@GetMapping("/update_examine_state")

public String updateExamineState(Long id, String newState) throws IOException {

if (!newState.equals("未审核") &amp;&amp; !newState.equals("已通过") &amp;&amp; !newState.equals("未通过")) {

  return "非法的审核状态";

  }

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

  queryMap.put("id",String.valueOf(id));

  InstitutionalUsers institutional_users = service.findOne(queryMap);

复制代码
if (institutional_users!=null) {

institutional_users.setExamine_state(newState);

this.setEntity(queryMap,new HashMap&lt;&gt;(),institutional_users);

return "审核成功";

  }

  }

5.3.1 寄养信息管理

  寄养信息管理模块监管机构发布的寄养项目内容合规性。项目列表展示所有寄养信息,支持按机构名称或项目状态筛选。管理员点击详情查看完整服务描述与价格设置,发现违规内容可强制下架项目。下架后项目在用户端不再显示,机构收到通知后可修改后重新提交审核。统计模块汇总各机构项目数量与平均价格,为监管决策提供数据参考。寄养信息管理界面如图5-9所示。

图5-9 寄养信息管理界面

  关键代码如下:

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

  }

  @RequestMapping(value = "/del")

  @Transactional

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

  Map<String,String> query = service.readQuery(request);

  Map<String,String> config = service.readConfig(request);

  this.service.delete(query, config);

  return success(1);

  }

5.3.2 预约订单管理

  预约订单管理模块监控全平台订单流转状态与交易数据。订单列表聚合所有用户提交的预约记录,支持多维度组合查询。管理员可介入处理异常订单,手动调整订单状态或标记退款。订单详情页展示完整的用户信息、支付记录与服务评价,为纠纷调解提供客观依据。数据统计功能按时间段汇总订单总量与交易金额,趋势图表直观反映平台运营状况。预约订单管理界面如图5-10所示。

图5-10 预约订单管理界面

  关键代码如下:

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

  }

  @Transactional

复制代码
@GetMapping("/update_examine_state")

public String updateExamineState(Long id, String newState) throws IOException {

if (!newState.equals("未审核") &amp;&amp; !newState.equals("已通过") &amp;&amp; !newState.equals("未通过")) {

  return "非法的审核状态";

  }

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

  queryMap.put("id",String.valueOf(id));

  ReservationOrder reservation_order = service.findOne(queryMap);

复制代码
if (reservation_order!=null) {

reservation_order.setExamine_state(newState);

this.setEntity(queryMap,new HashMap&lt;&gt;(),reservation_order);

return "审核成功";

  }

  }

5.3.3 寄养记录管理

  寄养记录管理模块核查机构录入的服务过程记录是否真实完整。记录列表关联订单编号与机构名称,管理员抽查记录内容与订单日期是否匹配。发现记录缺失或内容异常可联系机构补充完善,严重情况给予警告或处罚。记录导出功能支持按机构或时间段批量导出数据,便于存档审计。寄养记录管理界面如图5-11所示。

图5-11 寄养记录管理界面

  关键代码如下:

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

  }

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

  }

  }

5.2.5 轮播图管理

  轮播图管理模块维护系统首页广告位展示内容。管理员上传轮播图片并设置跳转链接,图片支持点击裁剪与尺寸调整。拖动排序功能调整轮播图展示顺序,顶部项获得更高曝光率。过期或失效轮播图可下线处理,历史记录保留供后续复用。轮播图管理界面如图5-12所示。

​编辑 图5-12 轮播图管理界面

  关键代码如下:

复制代码
@PostMapping("/upload")

public Map&lt;String, Object&gt; upload(@RequestParam("file") MultipartFile file) {

String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

  File dest = new File(filePath + fileName);

  file.transferTo(dest);

  JSONObject jsonObject = new JSONObject();

  jsonObject.put("url", "/api/upload/" + fileName);

  return success(jsonObject);

  }

  @PostMapping("/add")

  @Transactional

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

  Map<String,Object> addMap = service.readBody(request.getReader());

  if (addMap.get("title")==null){

  throw new IllegalArgumentException("标题不能为空");

  }

  this.service.insert(addMap);

  return success(1);

  }

5.2.6 文章资讯管理

  文章资讯管理模块负责发布与维护系统内容栏目。管理员编辑文章标题、正文内容并选择分类标签,封面图上传后自动生成缩略图。已发布文章支持重新编辑与置顶操作,置顶文章在列表前排固定展示。分类管理功能新增或修改资讯类别,关联文章同步更新归属。文章资讯管理界面如图5-13所示。

​编辑 图5-13 文章资讯管理界面

  关键代码如下:

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

  }

  @PostMapping("/add")

  @Transactional

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

  Map<String,Object> addMap = service.readBody(request.getReader());

  if (addMap.get("type")==null){

  throw new IllegalArgumentException("分类不能为空");

  }

  if (addMap.get("title")==null){

  throw new IllegalArgumentException("标题不能为空");

  }

  this.service.insert(addMap);

  return success(1);

  }

5.3 机构用户角色功能实现

5.3.1 寄养信息管理

  寄养信息管理模块供机构发布和维护自家寄养服务项目。机构进入项目列表页,选择一个项目,点击新增按钮来填写项目的名称、价格、地址和描述。封面图片上传之后就会出现在用户端的列表页上,内容描述可以使用富文本编辑格式。已经发布的项目可以随时修改信息或者临时下架,价格调整之后用户端会立即更新。机构寄养信息管理界面如图5-14所示。

图5-14 机构寄养信息管理界面

  关键代码如下:

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

  }

  @PostMapping("/add")

  @Transactional

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

  Map<String,Object> paramMap = service.readBody(request.getReader());

  paramMap.entrySet().removeIf(entry -> {

  Object value = entry.getValue();

  return value instanceof String && ((String) value).isEmpty();

  });

  FosterCareInformation foster_care_information = new FosterCareInformation();

复制代码
foster_care_information.setFoster_care_project(paramMap.get("foster_care_project")==null?null:String.valueOf(paramMap.get("foster_care_project")));

this.addEntity(foster_care_information);

return success(1);

  }

5.3.2 预约订单管理

  预约订单管理模块对用户的寄养预约申请进行处理。机构在订单列表页筛选出待审核订单后,点击订单详情查看用户所填写的预约信息和备注内容。审核通过之后订单状态会自动变为待支付,并且向用户发送通知,拒绝的时候需要填写原因。已付订单在服务结束后可以标记为完成,订单进入待评价状态。机构预约订单管理界面如图5-15所示。

图5-15 机构预约订单管理界面

  关键代码如下:

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

  }

  @Transactional

复制代码
@GetMapping("/update_examine_state")

public String updateExamineState(Long id, String newState) throws IOException {

if (!newState.equals("未审核") &amp;&amp; !newState.equals("已通过") &amp;&amp; !newState.equals("未通过")) {

  return "非法的审核状态";

  }

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

  queryMap.put("id",String.valueOf(id));

  ReservationOrder reservation_order = service.findOne(queryMap);

复制代码
if (reservation_order!=null) {

reservation_order.setExamine_state(newState);

this.setEntity(queryMap,new HashMap&lt;&gt;(),reservation_order);

return "审核成功";

  }

  }

5.3.3 寄养记录管理

  寄养记录管理模块录入宠物每日服务情况形成服务档案。机构选择待服务订单点击录入记录,填写饮食、活动、健康等观察信息。系统自动关联订单编号与记录日期,多次录入形成连续服务日志。用户端可随时查看记录内容,机构可补充修改当日记录。寄养记录管理界面如图5-16所示。

图5-16 机构寄养记录管理界面

  关键代码如下:

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

  }

  @PostMapping("/add")

  @Transactional

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

  Map<String,Object> paramMap = service.readBody(request.getReader());

  paramMap.entrySet().removeIf(entry -> {

  Object value = entry.getValue();

  return value instanceof String && ((String) value).isEmpty();

  });

  FosterCareRecords foster_care_records = new FosterCareRecords();

复制代码
foster_care_records.setOrder_number(paramMap.get("order_number")==null?null:String.valueOf(paramMap.get("order_number")));

foster_care_records.setRecord_content(paramMap.get("record_content")==null?null:String.valueOf(paramMap.get("record_content")));

this.addEntity(foster_care_records);

return success(1);

  }

5.3.4 评价反馈管理

  评价反馈管理模块查看用户对已完成服务的评价内容并回复互动。机构进入评价列表查看所有关联本机构的评价,按时间倒序排列展示。每条评价下方提供回复输入框,回复后内容同步显示在用户端评价区。发现恶意差评可向管理员申诉,提供证据后由管理员裁决处理。机构评价反馈管理界面如图5-17所示。

​编辑 图5-17 机构评价反馈管理界面

  关键代码如下:

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

  }

  @PostMapping("/set")

  @Transactional

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

  Map<String,String> queryMap = service.readQuery(request);

  Map<String,String> configMap = service.readConfig(request);

  Map<String,Object> paramMap = service.readBody(request.getReader());

  EvaluationFeedback evaluation_feedback = new EvaluationFeedback();

复制代码
evaluation_feedback.setEvaluation_content(paramMap.get("evaluation_content")==null?null:String.valueOf(paramMap.get("evaluation_content")));

this.setEntity(queryMap,configMap,evaluation_feedback);

return success(1);

  }

6 系统测试

6.1 测试目的

  系统测试就是检验业务逻辑同设计规格是否吻合,经由执行测试用例来找出功能实现同需求文档的差别。测试过程要包含各个角色的主要操作路线,看数据在模块之间流转的时候是否还能保持完整性和一致性。边界值测试和异常场景模拟检验系统的容错能力,保证用户误操作时给出友好的提示而不是崩溃退出。多浏览器兼容性测试可以保证在不同的访问环境里,界面的渲染是正常的。余文轩认为测试环节对于系统稳定性起着重要的作用,在宠物疾病平台的研究中也给出了实践的参考20。测试目的还有对于系统的响应时间、并发处理能力等做出评价,使系统上线之后能够达到所期望的用户数。

6.2 测试方法

  功能测试使用黑盒测试法,根据需求文档编写测试用例逐一检验。测试人员扮演普通用户、机构用户、管理员三种角色进行操作,检验功能点是否符合预期效果。边界测试就是对输入框最长长度、特殊字符、空值等异常数据进行测试,看系统的校验机制是否起作用。集成测试主要是对模块之间的接口调用是否畅通进行测试,即订单创建之后,支付模块和记录模块是否能够正确地接收到数据。兼容性测试用Chrome、Firefox、Edge浏览器分别访问系统,检验页面布局和交互的一致性。性能测试使用JMeter工具模拟多用户并发操作,监控服务器响应时间和资源占用情况。在测试过程中发现的缺陷予以记载并加以追踪,对修复过的测试结果实施回归检验。

6.3 测试环境

  系统测试环境搭建在个人开发的计算机上,硬件是Intel Core i5-11400H处理器,CPU主频为2.7GHz,六核十二线程。内存容量16GB DDR4,硬盘采用512GB固态硬盘,剩余可用空间180GB。操作系统选用Windows 11专业版64位,版本号23H2。数据库服务采用MySQL 8.0.32社区版,在本地运行,端口为3306。后端服务运行于JDK 11.0.18环境,采用Spring Boot内嵌Tomcat服务器,端口号8080。前端项目基于Vue 3.2.13构建,通过Node.js 16.18.0运行开发服务器,端口号8081。浏览器测试覆盖Chrome 114.0.5735.110、Edge 114.0.1823.58、Firefox 115.0.2三个主流版本,均采用窗口分辨率1920×1080进行功能验证。网络环境是家庭宽带100Mbps,测试的时候网络延迟控制在20ms以内。

6.4 测试用例与结果

  寄养预约功能测试如表6-1所示。测试内容包括正常填写预约表单、未登录状态下预约跳转、选择已满日期、提交空白表单等场景。预期结果包括成功生成订单、跳转登录页、日期禁用提示、表单校验提醒。实际结果均符合预期,预约流程功能正常。

表6-1 寄养预约功能测试表

测试内容 测试步骤 预期结果 实际结果
正常预约 填写完整信息并提交 订单生成成功,状态待审核 符合预期
未登录预约 未登录状态点击提交 跳转至登录页面 符合预期
选择已满日期 点击日历中已满日期 日期不可选,提示已满 符合预期
空白表单提交 不填写内容直接提交 提示必填项不能为空 符合预期

  寄养预约功能测试如图6-1所示。

​编辑 图6-1寄养预约功能测试图

  机构审核功能测试如表6-2所示。测试内容包括正常审核通过、审核拒绝并填写原因、不填写原因直接拒绝、重复审核已处理订单。预期结果包括订单状态变更为待支付、状态变更为已拒绝、提示填写原因、提示订单已处理。实际结果均符合预期,审核逻辑正确。

表6-2 机构审核功能测试表

测试内容 测试步骤 预期结果 实际结果
审核通过 点击通过按钮确认 订单状态更新为待支付 符合预期
审核拒绝填原因 填写原因后点击拒绝 订单状态更新为已拒绝 符合预期
拒绝不填原因 直接点击拒绝按钮 提示必须填写原因 符合预期
重复审核 再次处理已审核订单 提示订单已处理 符合预期

  机构审核功能测试如图6-2所示。

​编辑 图6-2机构审核功能测试图

  支付功能测试如表6-3所示。测试内容包括正常支付、支付取消、支付超时、余额不足模拟场景。预期结果包括订单状态变更为已支付、状态保持不变、提示超时重试、提示支付失败。实际结果均符合预期,支付模块处理准确。

表6-3 支付功能测试表

测试内容 测试步骤 预期结果 实际结果
正常支付 选择支付方式完成支付 订单状态更新为已支付 符合预期
支付取消 在支付页面点击取消 返回订单列表,状态不变 符合预期
支付超时 超过支付时限再支付 提示订单已超时,请重新预约 符合预期
余额不足 模拟余额不足支付 提示支付失败,请更换方式 符合预期

  支付功能测试如图6-3所示。

​编辑 图6-3支付功能测试图

  寄养记录录入功能测试如表6-4所示。测试内容包括正常录入记录、不填写内容录入、为未开始服务订单录入、重复录入同一天记录。预期结果包括保存成功并展示、提示内容不能为空、提示订单状态不符、提示当日已录入。实际结果均符合预期,记录管理严谨。

表6-4 寄养记录录入功能测试表

测试内容 测试步骤 预期结果 实际结果
正常录入 填写完整记录提交 保存成功,用户端可见 符合预期
空白录入 不填写内容直接提交 提示记录内容不能为空 符合预期
未开始订单录入 为待审核订单录入记录 提示订单尚未开始服务 符合预期
重复录入 同一天再次录入记录 提示当日记录已存在 符合预期

  寄养记录录入功能测试如图6-4所示。

​编辑 图6-4寄养记录录入功能测试图

  评价反馈功能测试如表6-5所示。测试内容包括正常提交评价、不填写内容评价、为未完成订单评价、机构回复评价。预期结果包括评价成功展示、提示内容不能为空、提示订单未完成无法评价、回复成功同步显示。实际结果均符合预期,评价交互流畅。

表6-5 评价反馈功能测试表

测试内容 测试步骤 预期结果 实际结果
正常评价 填写内容与星级后提交 评价成功,列表显示 符合预期
空白评价 不填写内容直接提交 提示评价内容不能为空 符合预期
未完成订单评价 为待支付订单评价 提示服务未完成无法评价 符合预期
机构回复 机构在评价下方回复 回复内容同步显示 符合预期

  评价反馈功能测试如图6-5所示。

图6-5评价反馈功能测试图

6.5 测试结论

  寄养预约功能测试包含正常提交和异常情况,系统可以产生有效的订单并且正确地检验表单必填项。机构审核功能用、拒绝和重复处理逻辑,订单状态变更正确,原因填写有效。支付功能测试模拟正常支付、取消支付、超时支付、余额不足等情况,系统对于各种支付结果都会给出正确的回应。寄养记录录入功能测试内容为0,订单状态不符,重复录入等边界情况均有所处理,并具备完备的数据校验和防重复机制。评价反馈功能测试检查评价提交、空白评价、状态限制和机构回复等场景,评价流程闭环且数据同步正确。五类核心功能一共执行了25个测试用例,所有的用例预期结果和实际结果都是一致的,系统功能实现完整,业务逻辑处理正确,数据流转符合设计预期。

项目分享:大家可自取用于参考学习,获取方式可私信哦!

相关推荐
程序员小杰@1 小时前
Spring Boot 常用注解分类速记
java·spring boot·后端
vx_Biye_Design1 小时前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计
吴声子夜歌1 小时前
Nginx应用与运维——Nginx日志管理
java·运维·nginx
老花眼猫1 小时前
数学艺术图案画-曼陀罗(93)
c语言·经验分享·青少年编程·课程设计
guo_wen_qiang1 小时前
云服务器nacos搭建-集群&持久化
java·运维·服务器
江江爱编程2 小时前
java零基础保姆级教学01
java·开发语言
9624562 小时前
餐饮 SaaS 优惠券系统架构演进(三):优惠计算引擎——商品级计价、冲突策略与优惠分摊
java·数据库·spring boot
vx_Biye_Design2 小时前
expressDeepSeek社团咨询助手的学生社团管理系统60746-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·课程设计·express