组织介绍

医院陪护服务平台项目总览(供 AI 快速理解用)

本文是代码级架构与核心业务逻辑说明,基于当前 hospital-service/ hospital-web / hospital-uniapp 的实际代码结构整理而成,方便后续 AI / 开发者在不通读全部代码的前提下,快速建立整体认知。


1. 项目总体说明

  • 项目名称:医院陪护服务平台(家属端 / 护工端 / 医院管理员端 / 超级管理员端)

  • 业务定位:撮合“家属陪护需求 / 护理服务”与“护工供给”的 O2O 平台,覆盖:
    需求发布 → 接单 → 打卡与护理记录 → 支付结算 → 评价与纠纷处理 → 培训与管理 的闭环。

  • 端角色

    • 家属(family):注册登录后,选择医院、发布/管理陪护需求、下单与支付、查看打卡/护理记录、评价订单、发起纠纷等。
    • 护工(nurse):完成实名+资质认证、申请入驻医院、维护服务档期与服务项目、接单、打卡、填写护理记录、查看收入/提现、参与培训等。
    • 医院管理员(hospital_admin):审核护工入驻、本院需求与订单管理、纠纷处理、医院信息维护、指导价配置、本院统计等。
    • 超级管理员(super_admin):全平台医院和护工审核管理、订单与纠纷总览、系统配置、培训管理、全局统计等。
  • 整体状态(当前版本)

    • 后端基于 Spring Boot 3 + JPA + MySQL + Redis,核心业务接口已实现。
    • 前端基于 Vue 3 + Vite + Vant/Element Plus,按角色拆分多模块页面。
    • 数据库脚本与迁移文件位于 db/hospital-service/src/main/resources/db/,包含主 schema 与多次增量变更(医院图片、护工服务状态、订单服务科室、护理系统等)。

2. 技术栈与工程结构(最新)

2.1 后端(/hospital-service

  • 基础技术

    • Spring Boot 3.2.x(启动类:HospitalCareApplication
    • Spring MVC + REST API
    • Spring Data JPA(entity + repository
    • Spring Security + JWT(SecurityConfigJwtAuthFilter 等)
    • Redis 缓存(系统配置 / 医院信息 / 统计等)
    • Actuator 健康检查(/actuator
  • 主要配置

    • application.yml
      • MySQL:jdbc:mysql://10.156.196.61:3308/hospital_care
      • Redis:10.156.196.61:6379
      • JPA:ddl-auto: none,使用外部 schema/migration 管理表结构
      • 文件上传:file.upload-dir=uploadsfile.serve-path=/uploads
  • 核心包结构com.hospital.care):

    • controller:按业务和角色划分的 REST 控制器。
    • entity:JPA 实体类(见下文“数据模型”)。
    • repository:各实体对应的 *Repository,封装数据库访问。
    • service
      • 业务服务:如 PaymentServiceSystemConfigServiceNurseMemberServiceNeedTimeoutTask(定时任务)等。
      • 规则与计算:如结算规则、配置读取等。
    • config
      • SecurityConfig:Spring Security + JWT 相关配置。
      • JwtAuthFilter:JWT 解析和鉴权过滤器。
      • GlobalExceptionHandler:全局异常处理。
    • common
      • 工具类:EncryptUtil(AES)、IdCardValidator 等。
      • 审计 / 通用返回包装等(部分在其他包中组合使用)。
  • 数据库脚本

    • 根目录 db/schema.sql:主 schema 定义。
    • 增量迁移脚本(位于 hospital-service/src/main/resources/db/hospital-service/target/classes/db/):
      • migration_nursing_system.sql
      • migration_hospital_base_info.sql
      • migration_hospital_images.sql
      • migration_nurse_service_status.sql
      • migration_order_service_department.sql

2.2 前端(/hospital-web

  • 技术栈

    • 构建工具:Vite 5
    • 框架:Vue 3 + TypeScript
    • 路由:Vue Router 4
    • 状态管理:Pinia(stores/auth.ts 等)
    • UI:Vant 4(移动端主 UI)、Element Plus(部分管理端组件)
  • 主要目录

    • src/main.ts:应用入口。
    • src/router/index.ts:路由定义,按角色拆分模块。
    • src/stores/auth.ts:认证信息和当前用户状态。
    • src/api/*.ts:前端调用后端的 API 封装,例如:
      • user.ts:用户/认证相关。
      • common.ts:公共接口(医院列表、消息等)。
      • hospital.ts:医院端接口。
      • nurse.ts:护工端。
      • serviceOrder.ts:服务订单相关接口。
      • dispute.ts / super.ts:纠纷和超级管理员端。
    • src/modules:按角色 + 业务拆分页面模块(见第 6 章)。
    • src/data/areaList.tssrc/data/areaCascader.ts:省市区数据。
    • src/utils/url.ts:基础 URL 工具。
  • 重要提示

    • 不需要、也不应该遍历 hospital-web/node_modules 下的文件,那里都是依赖和构建产物,对业务无意义且会严重拖慢分析。

3. 数据模型与数据库表(entity 概览,最新)

下面仅列出关键实体和核心字段,完整字段以具体实体类为准。所有实体一般包含 createTime / updateTime 审计字段。

  • User(user)

    • 账号:mobile, passwordHash, status
    • 认证状态:realnameStatus
    • 角色:roleFlagsfamily / nurse / hospital_admin / super_admin 等)
    • 其他:lastHospitalId(路由分流与默认医院选择)
  • Nurse(nurse)

    • 用户关联:userId
    • 护工属性:nurseType(全职/兼职)、maxCareGrade, grade, certifyStatus, rejectReason
    • 资质材料:idCardHold, nurseCert, healthCert, skillCert
    • 个人介绍:selfIntro, advantages, specialty
    • 运营统计:ratingAvg, orderCount, violationCount, photoFakeCount
  • Hospital(hospital)

    • 基本信息:name, province, city, district, address, type, departments
    • 业务信息:notice(医院陪护须知等)
    • 状态:status(0 待审核 / 1 生效 / 2 禁用)
  • HospitalAdmin(hospital_admin)

    • 绑定:userId, hospitalId
  • NurseHospital(nurse_hospital)

    • 护工与医院的入驻关系:nurseId, hospitalId, applyDate, status(0 待审核 / 1 已通过 / 2 已拒绝)
  • Address / Patient

    • 家属常用地址:Address(绑定 family)。
    • 患者信息:Patient(姓名、性别、年龄、诊断等)。
  • Need(need)

    • 家属发布的陪护需求:familyId, hospitalId, careGrade, serviceType, startTime, endTime, price, isUrgent, patientInfo, content, status
  • Apply(apply)

    • 护工对 Need 的接单申请:needId, nurseId, status, remark
  • Order(order)

    • 订单:orderNo, needId, familyId, nurseId, hospitalId, careGrade, status, amount, startTime, endTime
    • 注:存在与服务类订单(NurseService / 服务单)之间的扩展字段和关联。
  • NurseService(nurse_service)

    • 护工可配置的服务项目:nurseId, serviceName, department, price, status 等。
    • 用于服务单(非传统长陪护订单)的场景。
  • NurseAvailability(nurse_availability)

    • 护工档期设置:可服务的日期/时间段、科室等,用于匹配可接服务单。
  • Checkin(checkin)

    • 打卡记录:orderId, nurseId, checkinType(1 开始 / 2 结束), photoUrl, location, latitude, longitude, checkinTime, isOffline
  • NursingRecord(nursing_record)

    • 护理记录:orderId, nurseId, familyId, recordType, content, photoUrls, recordTime, isConfirmed, confirmTime
  • Payment(payment)

    • 支付&结算:orderId, familyId, nurseId, amount, platformFee, nurseAmount, payType, payStatus, settleStatus, transactionId, payTime, settleTime
  • Evaluate(evaluate)

    • 评价:orderId, familyId, nurseId, score, tags, content, createTime(同时反向影响 Nurse.ratingAvg 等)
  • Dispute(dispute)

    • 纠纷:orderId, familyId, nurseId, hospitalId, status, reason, result, createTime, updateTime
  • Message(message)

    • 站内消息:userId, type, title, content, readFlag, createTime
  • NurseTraining / NurseTrainingRecord

    • 培训课程与护工参与记录。
  • SystemConfig(system_config)

    • 系统配置:提现规则、护理指导价、平台费、公示文案等,键值多为 JSON。
  • AuditLog(audit_log)

    • 系统审计日志:记录重要操作,支持运营追踪。
  • NurseMember / NurseIncome / Withdraw 等(通过 NurseMemberControllerNurseIncomeControllerNurseWithdrawController 等实现)

    • 护工会员/权益、收入结算与提现的扩展信息(字段以实体类为准)。

4. 后端核心业务流程与控制器(最新)

下文按“公共 / 家属 / 护工 / 医院 / 超级管理员 / 回调与工具”分组列出主要 Controller 与职责。

4.1 公共部分(Common / User / File)

  • CommonAuthController

    • 注册、登录、获取当前用户信息。
    • 实名信息提交与状态查询。
    • 注册时可选择是否成为护工,必要时初始化创建 Nurse 记录。
  • CommonMessageController

    • 消息列表、未读数统计、标记单条/全部已读。
  • 医院公共能力(部分在 HospitalAdminController 及其他公共接口中)

    • 医院列表(带缓存)、名称模糊查询、按地市过滤。
    • 申请创建医院、查看医院陪护须知。
  • UserProfileController

    • 用户个人信息维护。
  • FileUploadController

    • 文件上传(资质照片、打卡照片、护理记录图片等)。

4.2 家属端(Family*Controller

  • FamilyNeedController

    • 发布 / 编辑 / 取消陪护需求,落库到 Need
    • 家属侧需求列表 / 详情,按当前登录家属过滤。
  • FamilyApplyController

    • 查看各护工对需求提交的接单申请 Apply
    • 确认选用某护工后创建 Order,并更新对应 Need / Apply 状态。
  • FamilyOrderController

    • 陪护订单列表 / 详情、改签/取消等。
  • FamilyServiceOrderController

    • 服务单(基于 NurseService 的短期/单次服务)相关接口:列表、详情等。
  • FamilyPaymentController

    • 发起支付、查询支付状态。
    • 支付成功并确认完成后,调用 PaymentService 完成分账结算。
  • FamilyEvaluateController

    • 提交订单评价(评分 + 文本 + 标签),更新 Evaluate 并联动护工评分。
  • FamilyDisputeController

    • 家属发起纠纷(围绕订单),查询纠纷列表/详情。
  • FamilyAddressController / FamilyPatientController

    • 家属地址管理 / 患者信息管理(列表、新增、编辑、删除等)。

4.3 护工端(Nurse*Controller

  • 认证与资料

    • NurseCertifyController:护工资质提交、查看审核状态。
    • NurseProfileController:护工个人资料与服务能力维护。
  • 医院入驻

    • NurseHospitalController:申请入驻医院、查看已入驻医院、同城最多 5 家医院限制、查看并确认医院须知。
  • 接单与需求

    • NurseNeedController:获取可接需求列表(按护工等级 / 入驻医院过滤)、提交/撤回接单申请。
  • 服务项目与排班

    • NurseServiceController:护工管理自己的服务项目 NurseService(增删改查)。
    • NurseServiceQueryController:前端查询护工服务项目、服务单可选服务等。
    • NurseAvailabilityController:护工可用时间档期与可服务科室设置(影响可接服务单)。
  • 订单与服务执行

    • NurseOrderController:护工视角订单列表 / 详情。
  • 打卡与护理记录

    • NurseCheckinController:订单开始/结束打卡,记录 Checkin(含定位、照片等),支持异常上报。
    • NurseNursingRecordController:护工提交护理记录 NursingRecord
    • NurseExceptionController:异常场景处理(如异常打卡)。
  • 收入 / 会员 / 提现

    • NurseIncomeController:收入明细、余额等。
    • NurseWithdrawController:提现申请(规则由 SystemConfig 控制)。
    • NurseMemberController + NurseMemberService:护工会员/权益相关能力。
  • 培训

    • NurseTrainingController:培训课程列表、报名/取消报名、查看我的培训记录。
  • 消息

    • NurseMessage.vue / NurseMessageDetail.vue 等前端页面依赖公共消息接口。

4.4 医院端(HospitalAdminController 等)

  • 护工管理

    • 本院护工列表。
    • 审核护工入驻申请,拉黑 / 解除拉黑护工。
  • 需求与订单管理

    • 本院需求与订单列表 / 详情(可查看打卡、护理记录)。
    • 护理指导价的配置(通过 SystemConfig 读写)。
    • 与服务单(科室维度)相关的扩展管理(受 migration_order_service_department.sql 影响)。
  • 纠纷处理

    • 本院纠纷列表 / 详情。
    • 更新 Dispute 状态与处理意见。
  • 医院信息管理与统计

    • 维护 Hospital 基本信息(名称、地址、科室、须知、图片等,迁移脚本已引入图片表和基础信息增强)。
    • 查看本院统计报表(订单量、护工数、纠纷情况等)。

4.5 超级管理员端(SuperAdminController

  • 医院管理(重点:你提到的“有数据但列表为空”的模块)

    • 全平台医院列表:支持按医院名称模糊查询、按省市区过滤等。
    • 医院审核(通过/驳回)与禁用/启用控制。
    • 需要确保前端查询参数与后台条件一致,否则会出现“数据库有数据,前端无列表”的现象。
  • 护工管理

    • 全平台护工列表。
    • 护工资质审核与等级设定。
    • 拉黑 / 解禁护工。
  • 订单与纠纷总览

    • 平台订单 / 纠纷的全局列表与详情,支持按医院/时间区间等筛选。
  • 系统配置(SystemConfigService

    • 提现限额、平台费比例、护理指导价、培训配置等。
    • 读写均做缓存处理。
  • 统计与培训管理

    • 多维统计报表(对数据库加缓存,减轻压力)。
    • NurseTraining 课程的增删改查。

4.6 支付与回调

  • FamilyPaymentController + PaymentService

    • 发起支付、查询支付结果。
    • 统一进行分账与状态变更,保证金额与订单状态同步。
  • PaymentCallbackController

    • 处理微信 / 支付宝支付回调。
    • 幂等更新 PaymentOrder 状态,仅在支付成功时推进后续流程。

5. 安全、审计与性能优化

5.1 安全

  • 认证与鉴权

    • Spring Security + JWT:SecurityConfig + JwtAuthFilter 保护需要登录的接口。
  • 密码与数据安全

    • 用户密码使用 BCrypt 加密存储。
    • 敏感字段采用 AES 加密存储,前端展示前通过脱敏工具处理。
  • 权限控制

    • 通过当前登录用户上下文(User 信息与角色)和业务侧校验,限制访问边界:
      • 家属只能访问自己的需求 / 订单 / 患者 / 地址。
      • 护工只能访问与自己相关的订单 / 打卡 / 护理记录 / 收入。
      • 医院管理员仅能访问本院范围内的数据。
      • 超级管理员拥有平台级查看与管理能力。
  • 审计

    • AuditLog 实体与相关服务记录关键操作,为日后追踪与风控提供基础数据。

5.2 性能与缓存

  • Redis 缓存场景:

    • 医院列表缓存。
    • 系统配置缓存。
    • 统计报表等读多写少的数据缓存。
  • 数据库与并发:

    • 常用字段建立索引。
    • 在支付回调、订单确认、提现等关键流程处使用状态机/幂等校验,避免重复处理。

6. 前端路由与模块(最新)

6.1 路由分流逻辑(概念)

  • 登录 / 注册成功后,由后端返回的角色和用户信息决定前端跳转:

    • super_admin → 超管端首页(如 /super/...,具体见 SuperLayout.vue 与对应路由)。
    • nurse → 护工端首页 /nurse/home
    • 其他(默认作为家属):
      • lastHospitalId 有值 → 家属端首页 /family/home
      • 否则 → 公共首页 /home,引导选择医院。
  • 各角色有独立 layout:

    • SuperLayout.vue:超级管理员端。
    • 家属 / 护工 / 医院端各有自己的 layout(在 modules 中组合实现)。

6.2 前端模块概览(src/modules

  • common 模块

    • CommonHomePage.vue:公共首页。
    • HospitalSelectPage.vue:医院选择页(支持名称模糊查询、无结果时引导“我要创建”)。
    • HospitalCreatePage.vue:创建医院表单弹窗/页面。
    • HospitalMapPickerPage.vue:地图选点/地址辅助。
    • MessageListPage.vue / MessageDetailPage.vue:统一消息列表与详情页。
  • family 模块(家属端)

    • 首页与资料:
      • FamilyHome.vue:家属首页(展示当前医院、需求/订单入口等)。
      • FamilyProfile.vue / FamilyProfileEdit.vue:家属资料。
    • 医院与护工:
      • FamilyHospitalNeedList.vue:当前医院的需求列表视图。
      • FamilyHospitalNurseList.vue / FamilyHospitalNurseDetail.vue:医院内护工列表与详情。
    • 需求与订单:
      • FamilyNeedPublish.vue / FamilyNeedList.vue / FamilyNeedDetail.vue:发布 / 列表 / 详情。
      • FamilyApplyList.vue / FamilyApplyDetail.vue:护工接单申请查看与确认。
      • FamilyOrderDetail.vue:订单详情(含打卡记录/护理记录等)。
    • 服务单:
      • FamilyServiceList.vue / FamilyServiceDetail.vue:基于 NurseService 的服务项目选择与下单视图。
    • 地址与患者:
      • FamilyAddressList.vue / FamilyAddressDetail.vue
      • FamilyPatientList.vue / FamilyPatientDetail.vue
    • 支付 / 评价 / 纠纷:
      • FamilyPayment.vue:支付页面。
      • FamilyEvaluate.vue:评价页面。
      • FamilyDispute.vue / FamilyDisputeList.vue / FamilyDisputeDetail.vue:纠纷发起与查看。
  • nurse 模块(护工端)

    • 首页与个人中心:
      • NurseHome.vue:护工首页。
      • NurseMemberCenter.vue / NurseProfileEdit.vue:会员与个人信息。
    • 医院与需求:
      • NurseHospitalList.vue / NurseHospitalDetail.vue:已入驻医院和详情。
      • NurseNeedList.vue / NurseNeedDetail.vue:可接需求列表 / 详情。
    • 服务项目与排班:
      • NurseServiceList.vue / NurseServiceDetail.vue / NurseServicePublish.vue:服务项目列表 / 详情 / 发布与编辑。
      • NurseAvailability.vue:可用档期 / 科室设置。
    • 订单与执行:
      • NurseOrderList.vue / NurseOrderDetail.vue:护工订单列表与详情。
      • NurseNursingRecord.vue:护理记录填写。
    • 收入 / 纠纷 / 消息:
      • NurseIncome.vue:收入与余额。
      • NurseDispute.vue:护工端纠纷处理视图。
      • NurseMessage.vue / NurseMessageDetail.vue:护工消息中心。
  • hospital 模块(医院管理员端)

    • HospitalInfo.vue:医院信息查看与编辑。
    • HospitalNurseManage.vue / HospitalNurseDetail.vue:本院护工管理。
    • HospitalNeedManage.vue / HospitalNeedDetail.vue:本院需求管理。
    • HospitalDisputeList.vue / HospitalDisputeDetail.vue:本院纠纷管理。
  • super 模块(超级管理员端)

    • 医院管理:
      • SuperHospitalList.vue / SuperHospitalDetail.vue / SuperHospitalEdit.vue
      • 支持按名称模糊查询、按省市区过滤等(注意与后台查询条件保持一致)。
    • 护工与用户管理:
      • SuperNurseList.vue / SuperHospitalNurseList.vue
      • SuperUserList.vue / SuperUserDetail.vue
      • SuperRealnameList.vue / SuperRealnameDetail.vue:实名审核。
      • SuperNurseHospitalApplyList.vue / SuperNurseHospitalApplyDetail.vue:护工入驻申请审核。
    • 订单 / 需求 / 纠纷:
      • SuperNeedList.vue / SuperNeedDetail.vue
      • SuperOrderList.vue / SuperOrderDetail.vue
      • SuperDisputeList.vue / SuperDisputeDetail.vue
    • 培训与配置:
      • SuperTrainingList.vue / SuperTrainingDetail.vue:培训课程管理。
      • 其他配置类页面可在此模块内扩展。

7. 关键交互补充说明(便于 AI 对齐真实业务)

7.1 家属端:医院选择与创建流程(最新版)

  1. 未选择医院时的引导

    • 家属端若未选择当前医院,首页或关键入口需要先提醒用户:请先选择医院
  2. 选择医院的查询能力

    • 页面调用医院列表查询接口:
      • 支持按医院名称模糊查询。
      • 支持按地市、省市区等条件过滤(与后端医院查询接口对齐)。
  3. 无结果时的创建引导

    • 若查询结果为空:
      • 前端展示文案:类似“未查询到当前医院,是否创建一个新医院?”。
      • 显示一个明显的 “我要创建”(蓝色)按钮,点击弹出“创建医院”表单(HospitalCreatePage.vue)。
  4. 创建成功后的刷新与回填

    • 用户提交创建表单后,调用“申请创建医院”的后端接口。
    • 创建成功后:
      • 重新查询医院列表(建议默认显示最新创建的若干条,如 10 条)。
      • 将刚创建的医院展示在列表中,方便用户直接选择。
  5. 选择医院后的使用体验

    • 家属选择某个医院后:
      • 前端需要更新当前医院上下文(通常会影响 lastHospitalId),并跳转到家属首页 /family/home
      • 首页展示该医院下的护工数据、需求数据等。
      • 在页面顶部展示“当前医院:XXX”,并提供入口重新弹出医院列表,允许用户切换到其他医院。

7.2 超级管理员端:医院管理查询(你曾反馈“列表无数据”的点)

  1. 问题场景回顾

    • 现象:超级管理员端“医院管理”页列表为空,但数据库中实际有医院数据。
    • 通常原因:
      • 前端默认传入了一些过滤条件(例如状态、某些必填查询项),后台按条件过滤后结果为空。
      • 或前端 / 后端字段名、传参格式不一致。
  2. 目标能力

    • 超级管理员端医院管理接口需支持:
      • 按医院名称模糊查询。
      • 按省市区(地市)组合查询。
      • 按状态(待审核 / 生效 / 禁用)过滤。
    • 需要保证:
      • 当不带任何筛选(或只带分页参数)时,可以正确返回所有医院的分页数据。
      • 前后端对分页字段(页码、页大小、排序)和过滤字段(名称/城市/状态等)约定一致。

8. 给后续 AI / 开发者的使用建议

  • 首次理解本项目时

    • 建议先完整阅读本文件,可在 5–10 分钟内掌握:
      • 当前真实的技术栈与工程结构;
      • 核心实体与数据库表;
      • 按角色拆分的业务流程与 Controller;
      • 前端主要模块和关键交互(尤其是医院选择、医院管理等易出问题的地方)。
  • 需要深入细节时

    • 后端接口:参照各 controller / service / repository 源码。
    • 数据结构:阅读对应 entitydb/schema.sql + db/migration_*.sql
    • 前端交互:阅读 src/router/index.ts 与对应模块下的 *.vue 页面。
  • 代码扫描与性能建议

    • 不要扫描 hospital-web/node_modules 目录,会极大拖慢分析速度。
    • 优先聚焦 hospital-service/src/main/java/hospital-web/src/ 下的业务文件。
  • 团队编码约定

    • 谨记:所有新增或修改的代码都必须写有意义的注释,说明业务意图 / 特殊规则 / 约束条件,而不是简单复述代码字面含义。

超级管理员端

1、超级管理员端,医院管理,查询列表没有数据。 数据库有数据。帮我检查这个逻辑,同时需要新增查询条件,按照医院相关字段进行查询,如医院名称模糊查询,地市查询等。

谨记:所有的代码必须有注释

成就
0
Star
0
Fork
成员(1)
scj0708

搜索帮助