1. 项目背景与核心价值
宠物管理系统是近年来随着宠物经济崛起而快速普及的一类信息化工具。根据行业调研数据显示,2023年国内宠物市场规模已突破3000亿元,年均增长率保持在15%以上。在这样的市场背景下,传统的手工记录或Excel管理方式已经难以满足宠物医院、寄养中心、宠物店等机构的运营需求。
这个基于SpringBoot+Vue的全栈项目,正是为解决以下典型痛点而生:
- 宠物信息碎片化:纸质档案易丢失,电子表格难共享
- 服务流程不透明:主人无法实时了解宠物状态
- 业务协同效率低:医疗、美容、寄养等多环节数据割裂
- 数据分析缺失:无法形成经营决策的量化依据
系统采用前后端分离架构,后端使用SpringBoot提供RESTful API,前端通过Vue实现动态交互,MySQL作为数据存储方案。这种技术选型既保证了系统的可扩展性,又能快速响应业务变化。
2. 系统架构设计解析
2.1 技术栈选型依据
后端技术矩阵:
- SpringBoot 2.7.x:简化配置,内置Tomcat,快速构建生产级应用
- MyBatis-Plus 3.5.x:增强的ORM框架,减少90%的常规SQL编写
- Spring Security:完善的权限控制体系
- Lombok:通过注解消除样板代码
- Hutool:国产工具库,处理各类Java常见操作
前端技术方案:
- Vue 3.x:组合式API开发体验
- Element Plus:适配Vue3的UI组件库
- Axios:处理HTTP请求
- Vue Router:实现SPA路由管理
- Pinia:新一代状态管理方案
提示:选择MyBatis-Plus而非JPA,主要考虑国内开发团队更熟悉MyBatis体系,且需要灵活处理复杂SQL的场景较多。
2.2 系统模块划分
核心功能模块采用领域驱动设计(DDD)思想进行划分:
code复制src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── pet/
│ │ ├── module/
│ │ │ ├── admission/ # 入院管理
│ │ │ ├── medical/ # 医疗管理
│ │ │ ├── boarding/ # 寄养管理
│ │ │ └── member/ # 会员管理
│ │ ├── config/ # 配置类
│ │ └── PetApplication.java
│ └── resources/
│ ├── mapper/ # MyBatis映射文件
│ └── application.yml
3. 核心功能实现细节
3.1 宠物电子档案管理
采用树形结构组织宠物全生命周期数据:
java复制// 宠物核心实体类设计
@Data
public class Pet {
private Long id;
private String petNo; // 宠物编号
private String name; // 宠物名
private Integer petType; // 类型(猫/狗/异宠)
private Date birthday;
private String chipNo; // 芯片编号
@TableField(exist = false)
private List<MedicalRecord> medicalHistory;
@TableField(exist = false)
private List<BoardingRecord> boardingRecords;
}
关键业务接口:
POST /api/pet:创建档案(包含RFID芯片绑定)GET /api/pet/{id}/timeline:获取宠物时间轴事件PUT /api/pet/{id}/avatar:上传宠物照片
3.2 多端协同工作流
寄养业务的状态机设计:
mermaid复制stateDiagram
[*] --> 预定中
预定中 --> 入住中 : 主人交付宠物
入住中 --> 护理中 : 每日健康检查
护理中 --> 可领取 : 寄养期满
可领取 --> [*] : 完成领取
对应Spring状态机实现:
java复制@Configuration
@EnableStateMachineFactory
public class BoardingStateMachineConfig
extends EnumStateMachineConfigurerAdapter<BoardingState, BoardingEvent> {
@Override
public void configure(StateMachineTransitionConfigurer<BoardingState, BoardingEvent> transitions)
throws Exception {
transitions
.withExternal()
.source(BoardingState.BOOKED)
.target(BoardingState.CHECKED_IN)
.event(BoardingEvent.CHECK_IN)
.and()
.withExternal()
.source(BoardingState.CHECKED_IN)
.target(BoardingState.IN_CARE)
.event(BoardingEvent.DAILY_CHECK);
}
}
4. 特色功能实现
4.1 健康监测看板
聚合展示关键指标:
vue复制<template>
<el-row :gutter="20">
<el-col :span="6">
<health-card title="体温"
:value="vitals.temperature"
:trend="vitals.tempTrend"
unit="℃"/>
</el-col>
<el-col :span="6">
<health-card title="心率"
:value="vitals.heartRate"
:trend="vitals.hrTrend"
unit="bpm"/>
</el-col>
</el-row>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { getVitalSigns } from '@/api/medical'
const vitals = ref({
temperature: 0,
heartRate: 0,
// ...其他指标
})
onMounted(async () => {
const res = await getVitalSigns(props.petId)
vitals.value = res.data
})
</script>
4.2 智能提醒引擎
基于Quartz的任务调度配置:
java复制@Configuration
public class ReminderConfig {
@Bean
public JobDetail vaccinationJob() {
return JobBuilder.newJob(VaccinationReminderJob.class)
.withIdentity("vaccinationReminder")
.storeDurably()
.build();
}
@Bean
public Trigger vaccinationTrigger() {
return TriggerBuilder.newTrigger()
.forJob(vaccinationJob())
.withSchedule(CronScheduleBuilder
.dailyAtHourAndMinute(9, 0)) // 每天9点执行
.build();
}
}
5. 部署与性能优化
5.1 数据库优化方案
针对宠物关系型数据特点:
sql复制-- 建立覆盖索引
CREATE INDEX idx_pet_owner ON pet(owner_id, status);
-- 医疗记录分表策略
CREATE TABLE medical_record_2023q1 (
LIKE medical_record INCLUDING INDEXES
) INHERITS (medical_record);
5.2 缓存策略设计
采用多级缓存体系:
- 本地Caffeine缓存:高频访问的基础数据
java复制@Cacheable(value = "petCache", key = "#petId") public Pet getPetById(Long petId) { return petMapper.selectById(petId); } - Redis集群:共享会话和热点数据
- CDN静态资源加速:宠物照片等大文件
6. 安全防护措施
6.1 权限控制矩阵
RBAC模型设计:
yaml复制security:
oauth2:
resource:
id: pet-server
client:
client-id: web-app
client-secret: secret
scope: server
6.2 敏感数据保护
宠物主人信息加密存储:
java复制// 使用国密SM4算法加密
public class IdCardEncryptor {
private static final SM4 sm4 = new SM4();
public String encrypt(String plainText) {
return sm4.encryptHex(plainText, SECRET_KEY);
}
@ColumnTransformer(
read = "sm4_decrypt(id_card)",
write = "sm4_encrypt(?)"
)
private String idCard;
}
7. 项目演进路线
7.1 短期优化方向
- 增加宠物行为分析模块
- 对接智能硬件(喂食器、摄像头)
- 开发微信小程序端
7.2 长期技术规划
- 引入AI健康预警系统
- 构建宠物知识图谱
- 实现区块链电子证照
在开发过程中我们发现,宠物行业的数字化程度正在快速提升,但真正好用的管理系统仍然稀缺。这个项目通过前后端分离架构,既保证了开发效率,又为后续功能扩展留足了空间。特别是在状态机设计上,采用Spring StateMachine处理业务流程,使得复杂的寄养状态转换变得清晰可控。