Java+MySQL实现社区宠物管理系统(疫苗提醒+健康档案)
·
系统架构设计
采用MVC模式分层开发,后端使用Spring Boot框架,数据库使用MySQL 8.0+版本。前端可选Thymeleaf模板或Vue.js+ElementUI组合。
数据库设计
核心表结构设计如下:
-- 宠物主表
CREATE TABLE pet_owner (
owner_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
phone VARCHAR(20) UNIQUE,
address VARCHAR(200),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 宠物信息表
CREATE TABLE pet (
pet_id INT PRIMARY KEY AUTO_INCREMENT,
owner_id INT NOT NULL,
name VARCHAR(50) NOT NULL,
species ENUM('犬','猫','兔','其他') NOT NULL,
breed VARCHAR(50),
birth_date DATE,
gender ENUM('公','母'),
FOREIGN KEY (owner_id) REFERENCES pet_owner(owner_id)
);
-- 疫苗记录表
CREATE TABLE vaccination (
vax_id INT PRIMARY KEY AUTO_INCREMENT,
pet_id INT NOT NULL,
vax_type VARCHAR(50) NOT NULL,
vax_date DATE NOT NULL,
next_due_date DATE NOT NULL,
completed BOOLEAN DEFAULT FALSE,
notes TEXT,
FOREIGN KEY (pet_id) REFERENCES pet(pet_id)
);
-- 健康档案表
CREATE TABLE health_record (
record_id INT PRIMARY KEY AUTO_INCREMENT,
pet_id INT NOT NULL,
record_date DATETIME DEFAULT CURRENT_TIMESTAMP,
weight DECIMAL(5,2),
temperature DECIMAL(3,1),
symptoms TEXT,
diagnosis TEXT,
treatment TEXT,
FOREIGN KEY (pet_id) REFERENCES pet(pet_id)
);
后端实现
Spring Boot配置
// application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/pet_community
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
实体类示例
@Entity
@Table(name = "pet")
public class Pet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer petId;
@ManyToOne
@JoinColumn(name = "owner_id", nullable = false)
private PetOwner owner;
private String name;
private String species;
private String breed;
private LocalDate birthDate;
private String gender;
// getters/setters
}
疫苗提醒服务
@Service
public class VaccinationReminderService {
@Autowired
private VaccinationRepository vaccinationRepo;
public List<Vaccination> getUpcomingVaccines(int daysAhead) {
LocalDate start = LocalDate.now();
LocalDate end = start.plusDays(daysAhead);
return vaccinationRepo.findByNextDueDateBetweenAndCompletedFalse(start, end);
}
public void sendSmsReminders() {
List<Vaccination> upcoming = getUpcomingVaccines(7);
// 实现短信发送逻辑
}
}
前端实现
疫苗提醒组件(Vue示例)
<template>
<div class="reminder-list">
<el-table :data="upcomingVaccines">
<el-table-column prop="pet.name" label="宠物"></el-table-column>
<el-table-column prop="vaxType" label="疫苗类型"></el-table-column>
<el-table-column prop="nextDueDate" label="到期日"></el-table-column>
<el-table-column label="操作">
<template #default="scope">
<el-button @click="confirmVaccinated(scope.row)">确认接种</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
upcomingVaccines: []
}
},
mounted() {
this.fetchUpcomingVaccines();
},
methods: {
async fetchUpcomingVaccines() {
const res = await axios.get('/api/vaccines/upcoming');
this.upcomingVaccines = res.data;
},
async confirmVaccinated(vaccination) {
await axios.put(`/api/vaccines/${vaccination.vaxId}`, {
completed: true
});
this.fetchUpcomingVaccines();
}
}
}
</script>
定时任务配置
@Configuration
@EnableScheduling
public class ScheduleConfig {
@Autowired
private VaccinationReminderService reminderService;
@Scheduled(cron = "0 0 9 * * ?") // 每天上午9点执行
public void dailyReminderTask() {
reminderService.sendSmsReminders();
}
}
健康档案管理
健康记录API示例
@RestController
@RequestMapping("/api/health")
public class HealthRecordController {
@Autowired
private HealthRecordService recordService;
@PostMapping
public ResponseEntity<?> addRecord(@RequestBody HealthRecord record) {
HealthRecord saved = recordService.saveRecord(record);
return ResponseEntity.created(URI.create("/api/health/" + saved.getRecordId())).build();
}
@GetMapping("/pet/{petId}")
public List<HealthRecord> getPetRecords(@PathVariable Integer petId) {
return recordService.getRecordsByPet(petId);
}
}
系统扩展建议
- 增加宠物照片存储功能,使用阿里云OSS或七牛云存储
- 实现多社区管理,添加社区管理员角色
- 集成微信小程序端,方便用户随时查看
- 添加宠物活动轨迹记录功能(需GPS数据)
- 开发数据分析模块,统计社区宠物健康趋势
部署注意事项
-
MySQL配置建议设置合适的字符集:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci -
对于生产环境,建议:
- 使用Redis缓存高频访问数据
- 配置Spring Boot Actuator进行健康监控
- 实现API访问日志记录
- 添加Swagger文档支持
-
安全措施:
- 实现JWT身份验证
- 对敏感数据如手机号进行加密存储
- 配置HTTPS协议
- 定期备份数据库
更多推荐
所有评论(0)