基于若依框架的智慧居家养老系统开发复盘

  • ~5.15K 字

这篇博客记录了我学习若依(RuoYi)快速开发框架,从零改造实现智慧居家养老安全监护系统的全过程。从最开始对着项目源码画思维导图梳理文件结构,到一步步改造前后端、实现业务功能,既是一次完整的框架学习实践复盘,也是给自己留一份成长记录,证明这段时间的摸索与学习成果。

🎯 1. 项目背景与技术选型

先简单介绍一下若依系统——它是一套完全开源的免费快速开发平台,前后端分离版本采用Vue + Element UI + Spring Boot + Spring Security + Redis的技术栈,内置了用户管理、RBAC权限控制、日志管理、代码生成器等通用基础功能,无需从零搭建系统的基础能力,非常适合用来快速开发业务系统,也方便我边学习框架边实现自己的项目需求。

本次实践的目标是搭建一套面向独居老人的居家养老监护系统,核心需求是:基于若依改造Web端管理系统,实现老人信息管理、服务管理、实时监控、数据可视化等功能

📚 2. 个人对若依系统整体的理解和总结

🔐 权限管理(RBAC 核心)

这是若依最核心、最基础的能力,几乎所有后台系统都离不开。

  • 用户管理:新增/禁用/编辑用户,分配角色,重置密码。
  • 角色管理:创建角色、分配菜单权限、分配数据权限(只能看自己/本部门/全部数据)。
  • 菜单管理:配置系统菜单、路由、按钮权限标识(如 system:user:list)。
  • 部门管理:树形组织架构,支持数据权限控制。
  • 岗位管理:配置用户所属岗位,用于组织化管理。

用户 → 角色 → 菜单/数据权限,标准 RBAC 模型。

⚙️ 系统管理(基础配置)

所有系统通用的“配置类”功能,开箱即用。

  • 字典管理:维护系统通用固定数据(如性别:男/女、状态:正常/禁用),前端直接引用,避免硬编码。
  • 参数管理:动态配置系统参数(如文件上传大小、登录有效期),无需改代码重启。
  • 通知公告:发布系统公告、站内信。
  • 文件上传:支持本地/云端等,统一文件管理。

📜 日志与安全审计(企业必备)

若依内置完整日志体系,满足安全审计、故障排查需求。

  • 操作日志:记录谁、何时、IP、做了什么操作,支持导出、查询。
  • 登录日志:记录登录成功/失败、验证码错误、锁定账号等。
  • 在线用户:查看当前活跃用户,可强制下线。
  • 安全机制:验证码、密码加密、接口防刷、XSS防护、SQL注入防护。

📊 系统监控(运维能力)

帮助开发者实时掌握服务器与系统运行状态。

  • 服务监控:CPU、内存、磁盘、JVM 堆/非堆、GC 情况。
  • 缓存监控:Redis 信息、key 统计、命令监控。
  • 连接池监控:Druid 连接池状态、SQL 执行分析,定位慢查询。

🚀 快速开发工具(最能提升效率)

这是若依被称为“快速开发框架”的关键。

  • 代码生成器(核心)
    输入数据库表 → 一键生成:

    • 后端:Entity、Mapper、Service、Controller
    • 前端:Vue 列表页、表单页、API
    • 数据库:SQL 脚本
      生成即可用,节省 80% 重复 CRUD 代码
  • 定时任务:在线添加/修改/删除定时任务,支持 cron 表达式、执行日志。

  • 在线表单构建器:拖拽生成 HTML 表单代码。

  • 系统接口文档:自动生成 Swagger API 文档。

🗺️ 3. 前期准备:用思维导图梳理若依项目结构

整个系统采用前后端分离架构。
后端基于Spring Boot框架处理业务逻辑,使用MySQL存储结构化数据,Redis作为缓存层提升响应速度;
前端采用Vue.js+Element UI实现界面,同时扩展了小程序端支持点餐等便捷操作。

刚开始接触若依框架时,我对项目文件结构完全陌生,不知道要实现自己的业务功能该修改哪些文件,所以我对着项目源码,画了一份详细的思维导图,把每个目录、文件的作用都标注出来,同时标记了哪些是基础框架文件(无需修改)、哪些是业务开发时需要重点改造的文件,相当于自己的“项目改造地图”。

Xmind思维导图

🖥️ 前端项目结构梳理

若依的前端项目基于Vue开发,核心目录结构及我的项目改造点如下:

目录/文件 作用 我的项目改造点
public/ 静态资源、公共配置 替换项目logo、修改页面标题、配置favicon
src/assets/ 静态资源(图片、样式) 新增养老项目相关图标、自定义全局样式文件
src/components/ 公共组件库 新增监控画面组件、数据大屏图表组件、餐品卡片组件、预警提示组件
src/views/ 业务页面(核心改造点) 新增养老项目专属页面:客户信息管理、志愿者管理、服务管理(餐品列表/服务信息)、实时监控、厨房与服务、数据大屏
src/router/ 路由配置 新增业务页面路由,关联菜单权限,实现动态菜单加载
src/store/ Vuex状态管理 扩展用户信息、菜单状态,适配项目权限控制
src/styles/ 全局样式 自定义项目主题色、修改Element UI组件默认样式
src/utils/ 工具类封装 新增摄像头流处理工具、预警消息格式化工具、时间格式化工具

🖥️ 后端项目结构梳理

后端基于Spring Boot开发,若依已经封装好了通用的基础模块,我只需要扩展业务相关的模块:

  • ruoyi-system:基础的用户、角色、菜单、权限管理模块,直接复用无需修改
  • ruoyi-framework:框架核心配置模块,包含安全认证、Redis缓存、日志配置、全局异常处理等
  • 新增业务模块:ruoyi-elder(老人/客户信息管理)、ruoyi-volunteer(志愿者管理)、ruoyi-service(养老服务与餐品管理)、ruoyi-monitor(监控数据处理),每个模块包含controller、service、mapper、entity层,通过MyBatis操作数据库,实现业务接口。

🔧 4. 基于若依框架的前后端改造与功能实现

用户可以在左侧的菜单栏来根据自己的需求使用系统功能,系统基于Vue.js框架构建,采用Element-UI组件库实现专业级交互界面,通过Axios实现与Spring Boot后端RESTful API通信,前后端解耦的架构大幅提升了系统的可维护性。

♻️ 基础功能复用

若依自带的基础功能直接满足了系统的通用需求,我没有重复开发,直接复用了这些能力:

  • 基于RBAC的权限管理:为管理员、普通员工等不同角色分配相应操作权限,从根源上防范数据泄露,保障数据安全
  • 日志管理:操作日志、登录日志记录,详细记录用户登录时间、IP地址及操作内容,助力故障排查与安全审计
  • 系统监控:实时采集CPU使用率、内存使用率和响应时间等性能指标,及时发现系统潜在问题
  • 代码生成器:对于老人信息、餐品列表、服务信息这类CRUD页面,直接用代码生成器一键生成前后端基础代码,再修改字段和样式,大幅提升了开发效率

🎨 前端业务功能改造实现

基于之前梳理的文件结构,我在src/views/目录下新增了养老项目的特色业务页面,以下是核心功能的实现说明:

🍱 服务管理模块:餐品列表与服务信息

这是系统的核心业务模块之一,分为餐品列表服务信息两个子页面,分别用于管理养老餐品和上门服务项目,界面如下:

无法在公开网络展示

  • 餐品列表页面:实现了老人餐食套餐的CRUD管理,支持餐品图片预览、套餐描述、价格与剩余份数展示,管理员可通过新增/修改/删除操作维护餐品库,同时支持导出餐品信息。页面支持按序号、图片名称快速搜索,方便厨房人员快速定位餐品信息。
    核心改造文件:src/views/service/meal/index.vue,通过修改表格列配置,新增图片预览组件、套餐描述文本域,适配餐品信息的展示需求。
  • 服务信息页面:管理保洁、陪护、助行、代购等上门养老服务项目,包含服务描述、价格、可预约次数等字段,同样由代码生成器快速生成基础CRUD代码,再自定义修改样式和字段。

📹 实时监控模块:多摄像头AI姿态监测

这是系统的安全核心功能,基于树莓派摄像头采集的实时画面,集成YOLOv8-pose姿态检测模型,实现多社区、多房间的老人居家行为监测,界面如下:

实时监控界面(展示的是测试阶段画面)

页面支持同时展示多个社区的监控画面,每个画面都叠加了YOLOv8-pose识别的人体关键点和行为标签(如situp)及置信度,当识别到老人跌倒、长时间静止等异常行为时,会自动生成预警日志并标红提醒。
核心改造点:

  • 新增src/views/monitor/realTime/index.vue页面,实现多摄像头画面的网格布局展示
  • 封装src/components/monitor/VideoPlayer.vue自定义组件,支持实时视频流播放和姿态检测结果渲染
  • 对接后端监控数据接口,实现预警信息的实时推送与展示,异常行为自动高亮标红

👥 客户信息与志愿者管理模块

基于若依的基础用户管理能力扩展,实现了养老场景专属的人员管理功能。

  • 客户信息管理:支持管理员对社区老人信息进行增删改查,维护老人基本信息、紧急联系人、健康状况等数据,确保信息的及时性与准确性。
  • 志愿者管理:分为志愿活动管理和志愿服务管理两个子模块,可维护志愿者信息、活动报名记录、服务时长统计,实现养老服务人员的规范化管理。

📈 其他特色功能:厨房与服务、数据大屏

  • 厨房与服务管理:实现了小程序端老人点餐信息的实时同步,管理端可即时展示订单详情,便于厨房与服务人员高效处理订单,打通了“用户下单-厨房制作-服务配送”的全流程链路。
  • 数据大屏:以可视化图表的形式汇总展示社区老人数据、点餐统计、服务满意度、预警信息等运营数据,同时集成基于K-means算法的AI行为分析模型,自动识别老人异常行为模式(如跌倒、长时间静止)并划分风险区域,为社区管理人员提供直观的决策依据,同时支持实时接收异常预警信息,快速采取干预措施。

🛠️ 后端业务接口扩展

后端在若依的基础上,新增了业务相关的接口模块,主要包括:

  1. 老人/客户信息管理接口:实现老人信息的CRUD操作,存储老人基本信息、紧急联系人信息、健康状况等数据。
  2. 服务与餐品管理接口:管理养老服务项目和餐品套餐信息,处理小程序端的点餐/服务订单请求,同步订单状态至管理端,支持餐品库存与服务预约次数的更新。
  3. 志愿者管理接口:实现志愿者信息、志愿活动、服务记录的管理,支持服务时长统计与活动报名状态更新。
  4. 监控数据接口:接收树莓派上传的视频流和传感器数据,对接YOLOv8-pose模型处理结果,存储预警日志,支持前端查询历史记录与实时推送预警信息。
  5. 数据大屏接口:汇总老人数据、服务订单数据、预警数据,为前端可视化大屏提供数据支持,同时提供K-means行为分析结果的接口。

同时,复用了若依的Redis缓存能力,把频繁访问的老人信息、餐品列表、服务项目缓存到Redis中,减少数据库查询压力,提升系统响应速度。


🎓 5. 学习心得与总结

这次基于若依框架开发智慧养老系统的实践,对我来说是一次非常完整的学习过程,也真正让我体会到了“从无到有”开发项目的乐趣:

  1. 学会了如何学习开源框架:最开始对着项目源码无从下手,通过画思维导图梳理文件结构,把每个目录、每个文件的作用搞清楚,慢慢理解了若依框架的设计思路,知道了“哪些文件不用动、哪些文件是业务开发的核心”,解决了新手最容易遇到的“不知道该改哪里”的问题。
  2. 大幅提升了开发效率:学会了利用若依的代码生成器快速开发CRUD页面,不用从零写重复的增删改查代码,把精力放在业务逻辑和自定义功能的实现上,也理解了“快速开发框架”的真正价值。
  3. 深入理解了前后端分离开发模式:通过这次项目,完整实践了前后端分离的开发流程,从接口定义、数据交互到页面渲染,理解了前后端如何配合实现业务功能,也学会了如何基于现有框架扩展自定义功能。
  4. 形成了自己的学习方法论:这次实践让我明白,学习开源框架不能只停留在“跑通demo”,而是要深入理解其文件结构和设计思路,通过梳理结构、标记改造点、分步实现功能,才能真正掌握框架的使用方法,为后续的项目开发打下基础。

这次实践的成果,不仅是一个可以运行的智慧养老系统,更重要的是我真正学会了如何学习和改造一个开源框架,也证明了这段时间的摸索与学习没有白费。

💖 感谢支持,点击查看收款码
你的鼓励是我持续更新的动力!