基于SpringBoot的宠物生命周期信息管理系统

项目简介

宠物全生命周期信息管理系统是一套面向宠物主人与后台管理员的综合管理平台,围绕宠物从建档、健康维护、疫苗诊疗提醒、服务机构预约到信息溯源查询的完整流程进行设计与开发。

系统采用前后端分离架构,前台用户端主要服务普通宠物主人,后台管理员端用于平台数据维护、预约审核、服务机构管理和数据统计。通过规范化的数据表结构与清晰的业务分层,系统能够保障宠物生命周期数据的完整性、可追溯性与可维护性。

核心功能介绍

1. 登录注册

  • 用户可以通过登录页面进入系统。

  • 支持普通用户注册。

  • 登录注册界面采用居中布局,左侧为账号表单,右侧为系统介绍。

  • 登录成功后根据用户角色进入前台用户端或后台管理员端。

2. 前台用户端

宠物档案管理
  • 新增宠物基础信息。

  • 编辑宠物名称、种类、品种、性别、出生日期、毛色、芯片编号、生命周期阶段等信息。

  • 系统自动生成宠物唯一溯源码。

  • 支持宠物档案归档。

健康档案管理
  • 新增宠物健康记录。

  • 支持体检、疫苗、诊疗、护理等多种记录类型。

  • 记录服务机构、医生、日期、费用和健康详情。

  • 健康记录会同步写入生命周期溯源轨迹。

疫苗诊疗提醒
  • 新增疫苗或诊疗提醒。

  • 支持设置计划日期、提醒日期、提醒备注。

  • 支持提醒完成操作。

  • 系统定时标记过期提醒,便于及时维护宠物健康计划。

服务机构预约
  • 查看可预约服务机构。

  • 支持选择宠物、服务机构、服务类型和预约时间提交预约。

  • 用户可查看自己的预约记录。

  • 待处理预约支持用户取消。

信息溯源查询
  • 通过宠物溯源码快速查询宠物生命周期轨迹。

  • 展示宠物基础信息和建档、健康、提醒、预约、服务等关键事件。

3. 后台管理员端

统计首页
  • 展示用户数量、宠物档案数量、健康档案数量、服务机构数量、待办提醒数量、预约总数等统计信息。

  • 展示近期预约记录。

  • 展示到期提醒信息。

用户管理
  • 查看系统用户列表。

  • 查看账号、昵称、手机号、邮箱、角色和状态。

  • 支持启用或禁用用户账号。

宠物管理
  • 查看全部宠物档案。

  • 查看宠物主人、宠物种类、品种、生命周期阶段、芯片编号、溯源码和状态。

预约审核
  • 查看所有用户预约。

  • 支持确认预约、完成预约、取消预约。

  • 预约完成后自动生成服务记录,并写入宠物溯源记录。

服务机构管理
  • 新增宠物医院、美容、寄养、训练等服务机构。

  • 维护机构名称、类型、联系电话、地址、评分、简介和状态。

技术栈介绍

后端技术

  • Java 1.8

  • Spring Boot 2.7.18

  • Spring MVC

  • MyBatis

  • MySQL 8

  • Maven 3.6.3

  • 定时任务:Spring Scheduling

  • 接口风格:RESTful API

前端技术

  • Vue 2.7

  • Vue Router 3

  • Axios

  • Node.js 16

  • CSS3

数据库

  • MySQL

  • 字符集:utf8mb4

  • 排序规则:utf8mb4_unicode_ci

项目结构

复制代码
.
├── backend
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           │   └── com
│           │       └── jay
│           │           └── petlife
│           │               ├── PetLifeApplication.java
│           │               ├── common
│           │               │   ├── ApiResponse.java
│           │               │   ├── AuthUser.java
│           │               │   ├── CurrentUserContext.java
│           │               │   ├── PasswordUtil.java
│           │               │   └── TokenUtil.java
│           │               ├── config
│           │               │   ├── AuthInterceptor.java
│           │               │   ├── GlobalExceptionHandler.java
│           │               │   └── WebConfig.java
│           │               ├── controller
│           │               ├── entity
│           │               ├── mapper
│           │               └── service
│           └── resources
│               └── application.yml
├── frontend
│   ├── package.json
│   ├── vue.config.js
│   ├── public
│   │   └── index.html
│   └── src
│       ├── App.vue
│       ├── main.js
│       ├── api
│       ├── assets
│       ├── components
│       ├── router
│       └── views
│           ├── LoginRegister.vue
│           ├── admin
│           └── user
└── sql
    ├── schema.sql
    └── data.sql

后端分层说明

  • common:公共响应对象、登录用户上下文、密码加密、Token 工具。

  • config:跨域配置、登录拦截器、全局异常处理。

  • controller:接口控制层,负责接收前端请求并返回统一结果。

  • entity:数据库实体类。

  • mapper:MyBatis 数据访问层。

  • service:业务逻辑层,负责权限校验、业务处理、溯源记录生成等。

前端分层说明

  • api:接口请求封装。

  • assets:全局样式资源。

  • components:公共组件,如导航栏、空状态组件。

  • router:前台用户端和后台管理员端路由配置。

  • views/LoginRegister.vue:登录注册页面。

  • views/user:前台用户端页面。

  • views/admin:后台管理员端页面。

数据库设计

系统共设计 8 张核心数据表。

1. sys_user 用户信息表

用于存储普通用户和后台管理员信息。

主要字段:

  • id:用户ID。

  • username:登录账号。

  • password:密码摘要。

  • nickname:用户昵称。

  • phone:手机号。

  • email:邮箱。

  • role:用户角色,包含 USERADMIN

  • status:账号状态,包含 ENABLEDISABLE

  • create_time:创建时间。

  • update_time:更新时间。

2. pet_info 宠物信息表

用于存储宠物基础档案。

主要字段:

  • id:宠物ID。

  • user_id:所属用户ID。

  • name:宠物名称。

  • species:宠物种类。

  • breed:宠物品种。

  • gender:宠物性别。

  • birth_date:出生日期。

  • color:毛色。

  • chip_code:芯片编号。

  • trace_code:生命周期溯源码。

  • life_stage:生命周期阶段。

  • status:宠物档案状态。

3. health_record 健康档案表

用于记录宠物体检、疫苗、诊疗和护理信息。

主要字段:

  • id:健康档案ID。

  • pet_id:宠物ID。

  • record_type:记录类型。

  • title:档案标题。

  • description:档案详情。

  • hospital:服务机构。

  • doctor:医生或经办人。

  • record_date:记录日期。

  • cost:费用。

4. vaccine_reminder 疫苗诊疗提醒表

用于管理宠物疫苗和诊疗提醒。

主要字段:

  • id:提醒ID。

  • pet_id:宠物ID。

  • vaccine_name:疫苗或诊疗事项。

  • plan_date:计划日期。

  • remind_date:提醒日期。

  • status:提醒状态,包含 WAITINGOVERDUEDONE

  • remark:备注。

  • finish_time:完成时间。

5. service_institution 服务机构表

用于存储宠物医院、美容、寄养、训练等服务机构。

主要字段:

  • id:机构ID。

  • name:机构名称。

  • type:机构类型。

  • contact_phone:联系电话。

  • address:地址。

  • description:机构简介。

  • score:评分。

  • status:机构状态,包含 OPENCLOSED

6. appointment 服务预约表

用于存储用户提交的服务预约。

主要字段:

  • id:预约ID。

  • user_id:用户ID。

  • pet_id:宠物ID。

  • institution_id:服务机构ID。

  • service_type:服务类型。

  • appointment_time:预约时间。

  • status:预约状态,包含 PENDINGCONFIRMEDCOMPLETEDCANCELED

  • remark:预约备注。

  • feedback:处理反馈。

7. service_record 服务记录表

用于记录预约完成后的实际服务情况。

主要字段:

  • id:服务记录ID。

  • appointment_id:预约ID。

  • pet_id:宠物ID。

  • institution_id:服务机构ID。

  • service_type:服务类型。

  • service_time:服务时间。

  • detail:服务详情。

  • cost:服务费用。

  • operator_name:经办人。

8. trace_record 生命周期溯源记录表

用于记录宠物生命周期中的关键事件。

主要字段:

  • id:溯源记录ID。

  • pet_id:宠物ID。

  • trace_code:溯源码。

  • action_title:事件标题。

  • action_content:事件内容。

  • action_time:事件时间。

  • operator_name:操作人。

  • source_type:来源类型。

表间关系说明

  • 一个用户可以拥有多只宠物。

  • 一只宠物可以拥有多条健康档案。

  • 一只宠物可以拥有多条疫苗诊疗提醒。

  • 一个用户可以提交多条预约。

  • 一条预约关联一个宠物和一个服务机构。

  • 一条完成的预约可以生成一条服务记录。

  • 一只宠物可以拥有多条生命周期溯源记录。

数据库脚本说明

数据库脚本位于 sql 目录下。

  • schema.sql:数据库建表脚本。

  • data.sql:初始化数据脚本。

两个 SQL 文件均已添加:

复制代码
SET NAMES utf8mb4;

用于确保 MySQL 客户端以 utf8mb4 处理中文内容。

启动教程

1. 环境准备

请确认本地环境已具备:

  • JDK 1.8

  • Maven 3.6.3

  • MySQL

  • Node.js 16

2. 初始化数据库

进入 MySQL 客户端后,依次执行:

复制代码
source sql/schema.sql;
source sql/data.sql;

如果使用数据库管理工具,也可以直接打开 sql/schema.sqlsql/data.sql,按顺序执行。

3. 修改后端数据库配置

后端配置文件位置:

复制代码
backend/src/main/resources/application.yml

根据自己的 MySQL 环境修改数据库账号和密码:

复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/pet_life?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: 123456

4. 启动后端

进入 backend 目录,执行:

复制代码
mvn spring-boot:run

后端默认端口:

复制代码
http://localhost:8080

5. 启动前端

进入 frontend 目录,先安装前端依赖:

复制代码
npm install

然后启动前端服务:

复制代码
npm run serve

前端默认端口:

复制代码
http://localhost:8081

6. 前后端接口代理

前端代理配置位于:

复制代码
frontend/vue.config.js

默认将 /api 请求代理到:

复制代码
http://localhost:8080

初始化账号

管理员账号

复制代码
账号:admin
密码:123456

普通用户账号

复制代码
账号:linna
密码:123456

也可以使用初始化数据中的其他普通用户账号登录,默认密码均为:

复制代码
123456

常用接口说明

登录注册

  • POST /api/auth/login:用户登录。

  • POST /api/auth/register:用户注册。

用户管理

  • GET /api/users/profile:获取当前用户资料。

  • PUT /api/users/profile:修改当前用户资料。

  • GET /api/users:管理员查看用户列表。

  • PUT /api/users/status:管理员修改用户状态。

宠物管理

  • GET /api/pets:查询宠物列表。

  • POST /api/pets:新增宠物档案。

  • PUT /api/pets/{id}:修改宠物档案。

  • DELETE /api/pets/{id}:归档宠物档案。

  • GET /api/pets/{id}/timeline:查询宠物生命周期详情。

健康档案

  • GET /api/health-records:查询健康档案。

  • POST /api/health-records:新增健康档案。

  • PUT /api/health-records/{id}:修改健康档案。

  • DELETE /api/health-records/{id}:删除健康档案。

疫苗诊疗提醒

  • GET /api/reminders:查询提醒列表。

  • GET /api/reminders/due:查询到期提醒。

  • POST /api/reminders:新增提醒。

  • PUT /api/reminders/{id}:修改提醒。

  • PUT /api/reminders/{id}/finish:完成提醒。

服务机构

  • GET /api/institutions:查询服务机构。

  • POST /api/institutions:新增服务机构。

  • PUT /api/institutions/{id}:修改服务机构。

预约管理

  • GET /api/appointments:查询预约列表。

  • POST /api/appointments:提交预约。

  • PUT /api/appointments/{id}/status:修改预约状态。

信息溯源

  • GET /api/public/trace/{traceCode}:通过溯源码公开查询宠物生命周期记录。

  • GET /api/traces?petId=宠物ID:查询指定宠物的溯源记录。

后台统计

  • GET /api/admin/dashboard:后台统计首页数据。

业务流程说明

宠物建档流程

  1. 用户登录系统。

  2. 进入前台用户端宠物档案页面。

  3. 填写宠物基础信息。

  4. 系统保存宠物档案并生成唯一溯源码。

  5. 系统自动写入一条宠物建档溯源记录。

健康档案流程

  1. 用户选择宠物。

  2. 填写健康档案类型、标题、机构、医生、日期、费用和详情。

  3. 系统保存健康档案。

  4. 系统自动写入健康档案相关溯源记录。

预约服务流程

  1. 用户选择宠物和服务机构。

  2. 填写服务类型、预约时间和备注。

  3. 系统生成待处理预约。

  4. 管理员在后台进行确认、完成或取消。

  5. 预约完成后系统自动生成服务记录。

  6. 系统自动写入预约状态和服务完成溯源记录。

溯源查询流程

  1. 用户输入宠物溯源码。

  2. 系统查询宠物基础信息。

  3. 系统按时间展示宠物生命周期事件。

  4. 用户可以快速了解宠物建档、健康、预约、服务等关键轨迹。

权限说明

  • 普通用户只能管理自己的宠物、健康档案、提醒和预约。

  • 管理员可以查看和管理平台全部用户、宠物、预约和服务机构。

  • 未登录用户只能访问登录注册接口和公开溯源查询接口。

开发注意事项

  • 项目路径可能包含中文,后端和前端均使用相对路径配置。

  • 数据库字符集使用 utf8mb4,保证中文数据正常存储。

  • 后端接口统一返回 ApiResponse 格式。

  • 前端请求统一通过 Axios 封装,并自动携带登录 Token。

  • 文件按功能分层管理,避免代码集中堆放。

相关推荐
星栈1 小时前
Rust 全栈一个 main.rs 搞定启动:migration + CQRS + 投影监听,部署只需一个二进制
后端·架构
Penge6661 小时前
一文理清 Mac/Linux 终端配置文件(.bash_profile, .bashrc, .zshrc)
后端
Rust研习社2 小时前
Rust 性能陷阱:那些看起来很优雅但很慢的写法(上)
后端·rust·编程语言
秋92 小时前
MySQL 8.0.46 与 MySQL 9.7.0在sql语句方面的区别并举例说明
数据库·sql·mysql
一只数据集2 小时前
NVIDIA Nemotron AIQ Agentic Safety Dataset:面向企业级智能体系统的安全与防护评估数据集全面解析
网络·数据库·安全
万亿少女的梦1682 小时前
基于SpringBoot的在线考试管理系统设计与实现
java·spring boot·后端
Amazinqc2 小时前
Mysql数据库数据软隔离的并发死锁情况
数据库·mysql·死锁
一勺菠萝丶2 小时前
如何在 Linux 服务器上使用 Speedtest 官方 CLI 测试带宽(小白教程)
java·服务器·前端
DianSan_ERP2 小时前
京东订单接口集成中如何处理消费者敏感信息的安全与合规问题?
前端·数据库·后端·团队开发·运维开发