护工预约系统
创建于 2025 年 5 月 4 日
项目介绍
护工预约系统(医院护工服务管理平台)面向”患者需要陪护、护工提供服务”这一场景,把护工从准入到交付的整条链路搬上了系统:护工先提交实名认证(工号、健康证、护理资格证、证件照),管理员审核通过后才能获得排班;管理员按科室/病区为护工排班,支持请假、调班、休息并保留调整记录;患者在医院官网门户上浏览服务项目与护工排班,按排班时段发起预约,护工确认后上门服务,服务完成后患者对本次服务打分评价。数据全部落到 tb_appointment、tb_schedule、tb_certification、tb_evaluation 等业务表中,形成一个从认证、排班、预约到评价的完整闭环。
工程由三部分组成:20250504护工预约系统-api 后端(若依多模块工程)、20250504护工预约系统-web 前端(RuoYi-Vue3 改造)和 250504-hugong.sql 数据库脚本。系统同时提供后台管理端(管理员)、前台官网门户(/welcome,面向患者/访客)和 /app-api/* APP 端接口(患者端预约、护工端接单)。种子数据中预置了 admin(管理员)、zcz(护工管理员)、xiaozhi 等账号,导入 SQL 即可体验。
项目架构
后端基于若依 RuoYi 3.8.8 骨架(Spring Boot 2.5.15 + Java),拆分为 hamp-common、hamp-framework、hamp-system、hamp-schedule、hamp-appointment、hamp-feedback、hamp-admin 等模块,业务表按预约、排班、评价、系统四个域组织。数据访问层在保留 MyBatis(AppointmentMapper.xml 等)的同时引入 Easy-Query 作为主力查询框架:实体使用 @EntityProxy 生成代理类,Controller 里直接以 easyEntityQuery.queryable(Appointment.class).leftJoin(...).where(...).select(...) 的链式 API 完成多表联查与分页,例如患者/护工的预约列表一次 leftJoin 出护工与患者的昵称头像、评价分数、认证服务价格、病房号与床位号。MySQL 8 存储数据,Druid 连接池,Redis(Lettuce)承担验证码、在线用户与缓存,身份认证沿用若依 JWT 令牌方案(token.expireTime=720 分钟),接口文档用 springfox Swagger(swagger-models 固定 1.6.2 规避类型转换问题),并保留若依的 @Log 操作日志、Excel 导出(ExcelUtil)、@RateLimiter 限流、XSS 过滤等能力。
前端是 Vite 5 构建的 Vue 3 单页应用:Vue 3.4 + Element Plus 2.4 + Pinia + vue-router 4,网络层基于 axios 封装 request.js,集成 echarts 监控图表与 @vueup/vue-quill 富文本。开发端口 80,通过 vite proxy 把 /dev-api 代理到后端 8080。页面布局上,后台是若依标准的侧边栏管理端(系统管理、系统监控、系统工具之外,新增了预约管理、排班管理、科室管理、护工认证、健康科普、轮播图等业务菜单);前台 /welcome 是一套独立的医院门户(主页、健康科普、关于我们),顶部通知公告轮播,服务板块按”生活护理 17 项、用药护理 8 项、疾病护理 7 项、病情观察 8 项、饮食护理 6 项、心理护理 3 项、安全护理 9 项、康复锻炼 4 项、失能照护 3 项、术后恢复 3 项”展示共计 65 个标准服务项目规范。
核心功能
- 护工实名认证(
tb_certification):护工提交工号(唯一索引idx_job_number_unique)、常住地址、服务类型与价格、服务能力简介,并上传健康证、护理资格证、证件照;audit_status在”待申请 → 待审核 → 已通过/未通过”间流转,后台认证管理页一键审核,未通过可驳回,通过后护工才能进入排班与接单 - 排班与调班管理(
tb_schedule+tb_schedule_adjustment):管理员为护工按日期、科室/病区创建排班,班次类型覆盖早班/晚班/夜班/其他,排班状态支持正常/请假/调班/休息;每次取消或调班都会写入tb_schedule_adjustment(调整类型 0-取消、1-调班,附原因与时间),排班调整全程留痕可追溯 - 患者预约与状态流转(
tb_appointment):患者端POST /app-api/appointment/create按排班下单,AppAppointmentController会先查同scheduleId是否存在未取消的预约,存在则返回”该排版已被预约!”,从源头杜绝重复抢单;预约记录护工、患者、服务类型与起止时间,状态按 0-待确认 → 1-已确认 → 2-已完成 / 3-已取消流转,updateStatus在确认、完成时分别自动写入confirmTime与completeTime;护工端排班列表还会用notIn过滤掉已被预约的时段 - 服务评价(
tb_evaluation):预约完成后患者对本次服务打分(1-5 分)并填写评价内容,AppEvaluationController.create先按appointmentId校验是否已评价,防止重复评价;患者与护工的预约列表会联表带出对方的评分与评价内容,形成服务口碑沉淀 - 门户官网与健康科普:
/welcome门户集成 65 项标准服务项目规范、通知公告(tb_notice轮播展示)、轮播图(tb_carousel)与健康科普(tb_popularization,分医疗常识/疾病预防/检查指南,支持精选与发布状态,浏览量统计接口配了@RateLimiter限流防刷);患者扩展信息(tb_user_extend)记录病情标签、服务需求、病房号/床位号与紧急联系人,作为预约上下文供护工参考
功能截图
暂无运行截图。
快速上手
- 环境准备:MySQL 8、Redis(默认
localhost:6379)、JDK 8+、Node.js; - 导入数据库:在 MySQL 中执行
250504-hugong.sql(Navicat 导出,含全部表结构与种子数据),并按需修改hamp-admin/src/main/resources/application-druid.yml中的数据库账号密码; - 启动后端:在
20250504护工预约系统-api目录执行mvn spring-boot:run,服务运行在 8080 端口(application.yml中已启用 druid profile、Redis、Swagger、验证码等配置); - 启动前端:在
20250504护工预约系统-web目录执行npm install后npm run dev,开发服务器运行在 80 端口,vite.config.js已把/dev-api代理到后端 8080; - 访问体验:浏览器打开
http://localhost进入后台,用种子账号admin(管理员)体验用户/角色/预约/排班/认证/科普管理;访问http://localhost/welcome体验面向患者的医院门户,用患者与护工角色账号走一遍”认证 → 排班 → 预约 → 确认 → 完成 → 评价”全流程。
总结
这个项目把”请护工”这件小事做成了完整的业务系统:认证决定谁能服务,排班决定何时能约,预约接口用状态校验拦住重复下单,服务完成后评价沉淀口碑,门户科普负责获客与宣教——每一环都有对应的表、接口和页面承接,业务边界清晰。技术上它是一个典型的若依二开样板:保留了 RuoYi 的系统管理、权限、监控与代码生成全家桶,业务侧又引入了 Easy-Query 代理查询显著压缩了联表 CRUD 的样板代码,Vue 3 + Element Plus 的前端与后端 /app-api 接口共同支撑了”管理端 + 门户端 + APP 端”三种入口。整体完成度较高、可直接演示,后续若补充微信小程序端、预约时段并发锁与在线支付,就更接近真实商用形态了。