1. 项目概述
"大健康养老公寓管理系统"是一款基于SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0技术栈开发的综合性管理平台。这个系统专门为现代化养老机构设计,涵盖了从入住登记、健康监测到日常服务的全流程数字化管理。我在实际开发中发现,这类系统需要特别注重操作便捷性和数据安全性,因为主要使用者包括护理人员和老年群体。
系统采用前后端分离架构,后端使用SpringBoot2提供RESTful API接口,前端Vue3实现响应式界面,MyBatis-Plus简化数据库操作,MySQL8.0负责数据存储。这种技术组合既保证了系统性能,又便于后期功能扩展。文档部分包含完整的部署手册、API接口文档和用户操作指南。
2. 核心功能模块解析
2.1 住户信息管理模块
这个模块是系统的核心基础,采用树形结构组织住户档案:
- 基础信息(姓名、年龄、紧急联系人)
- 健康档案(病史、过敏史、用药记录)
- 护理等级评估(ADL评分、护理需求)
- 房间分配(房型、床位、费用标准)
技术实现上,使用MyBatis-Plus的ActiveRecord模式简化CRUD操作。例如住户分页查询:
java复制public Page<Resident> getResidentPage(PageParam param) {
return residentMapper.selectPage(new Page<>(param.getPage(), param.getSize()),
Wrappers.<Resident>lambdaQuery()
.like(StringUtils.isNotBlank(param.getKeyword()), Resident::getName, param.getKeyword())
.orderByDesc(Resident::getCreateTime));
}
2.2 健康监测系统
对接智能穿戴设备数据,实现:
- 实时生命体征监测(心率、血压、血氧)
- 异常值预警(阈值可配置)
- 健康趋势分析(ECharts可视化)
关键技术点:
- WebSocket保持长连接接收设备数据
- Redis缓存最近24小时数据
- Quartz定时生成健康报告
注意:医疗数据属于敏感信息,必须加密存储。我们采用AES-256加密健康数据字段,密钥由系统管理员单独保管。
2.3 护理服务管理
采用工单系统模式管理护理流程:
- 服务申请(扫码或语音提交)
- 任务分配(智能调度算法)
- 执行确认(拍照+签字)
- 服务评价
前端使用Vue3的Composition API实现状态管理:
javascript复制const useServiceOrder = () => {
const orders = ref([])
const fetchOrders = async (status) => {
orders.value = await api.getOrders({status})
}
return { orders, fetchOrders }
}
3. 技术架构详解
3.1 后端技术栈
SpringBoot2框架配置要点:
yaml复制spring:
datasource:
url: jdbc:mysql://localhost:3306/nursing_home?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 加密密码需使用Jasypt
redis:
host: 127.0.0.1
port: 6379
password: ${REDIS_PWD:}
安全方案:
- JWT身份认证
- 接口权限控制(Spring Security + RBAC模型)
- 敏感操作日志审计
3.2 前端技术方案
Vue3典型配置:
javascript复制// vite.config.js
export default defineConfig({
plugins: [
vue(),
Components({
resolvers: [ElementPlusResolver()]
})
],
server: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}
})
特色功能实现:
- 语音交互:接入百度语音API
- 大字体模式:CSS变量控制字号
- 紧急呼叫:全局悬浮按钮
3.3 数据库设计
MySQL8.0主要表结构示例:
sql复制CREATE TABLE `health_record` (
`id` bigint NOT NULL AUTO_INCREMENT,
`resident_id` bigint NOT NULL,
`check_time` datetime NOT NULL,
`heart_rate` smallint COMMENT '心率',
`blood_pressure` varchar(10) COMMENT '血压',
`blood_oxygen` decimal(3,1) COMMENT '血氧',
`device_id` varchar(32) COMMENT '设备编号',
`is_abnormal` tinyint DEFAULT 0,
PRIMARY KEY (`id`),
INDEX `idx_resident` (`resident_id`),
INDEX `idx_time` (`check_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
4. 系统部署实践
4.1 环境准备
硬件建议配置:
- 生产环境:4核CPU/8GB内存/200GB SSD
- 测试环境:2核CPU/4GB内存/100GB SSD
软件依赖:
- JDK11+
- Node.js 16+
- MySQL8.0+
- Redis6+
4.2 后端部署步骤
- 编译打包:
bash复制mvn clean package -DskipTests
- 配置JVM参数:
bash复制java -jar -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m \
-Dspring.profiles.active=prod nursing-home.jar
- 配置Nginx反向代理:
nginx复制location /api {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
4.3 前端部署方案
- 生产环境构建:
bash复制npm run build -- --mode production
- 配置静态资源服务器:
nginx复制server {
listen 80;
server_name nursing.home;
root /opt/nursing-home/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
5. 开发经验与优化技巧
5.1 性能优化实践
- 接口响应优化:
- 启用MyBatis-Plus二级缓存
- 添加@Cacheable注解缓存热点数据
- 使用Hutool的ExcelWriter导出大数据
- 前端加载优化:
- 路由懒加载
- 组件异步加载
- Gzip压缩静态资源
5.2 典型问题排查
- 跨域问题解决方案:
java复制@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.maxAge(3600);
}
}
- 事务失效场景处理:
- 检查方法是否为public
- 确认是否抛出RuntimeException
- 避免同类内方法调用
5.3 安全防护措施
- SQL注入防护:
- 严格使用MyBatis参数绑定
- 避免字符串拼接SQL
- 定期执行SQL审计
- XSS防护方案:
- 前端使用DOMPurify过滤
- 后端统一处理特殊字符
- 设置HttpOnly Cookie
- 密码安全策略:
- BCrypt加密存储
- 强制定期修改
- 失败锁定机制
6. 扩展开发建议
6.1 智能设备集成
- 手环数据对接:
- 蓝牙4.0协议通信
- 自定义数据解析器
- 离线数据同步机制
- 室内定位系统:
- 蓝牙信标部署
- 三角定位算法
- 电子围栏功能
6.2 数据分析扩展
- 健康预测模型:
- 使用Python集成sklearn
- 定时任务执行分析
- 风险等级可视化
- 运营报表系统:
- 自定义报表模板
- 定时邮件发送
- 移动端查看
6.3 移动端适配方案
- 微信小程序版本:
- 复用后端API
- 定制UI组件库
- 集成微信支付
- React Native方案:
- 共享业务逻辑代码
- 原生模块封装
- 热更新机制
我在实际部署中发现,养老机构网络环境差异较大,建议提前做好弱网测试。系统界面的适老化改造需要特别注意:按钮尺寸不小于44×44px,颜色对比度至少4.5:1,所有功能都应提供语音引导。数据库每周应进行完整备份,保留最近4周的备份副本。