1. 项目概述
线上医院挂号系统是当前医疗信息化建设的重要组成部分。作为一名参与过多个医疗系统开发的全栈工程师,我深知传统线下挂号模式存在的痛点:患者凌晨排队、号源分配不均、信息不透明等问题。这个基于SpringBoot+Vue的解决方案,正是为了解决这些实际问题而设计的。
系统采用前后端分离架构,前端使用Vue.js+ElementUI构建响应式界面,后端基于SpringBoot提供RESTful API,数据持久层采用MyBatis+MySQL组合。这种技术选型既保证了开发效率,又能满足医疗系统对稳定性和安全性的高要求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术栈选型解析
后端技术栈:
- SpringBoot 2.7.x:简化配置,快速构建微服务
- Spring Security:提供完善的安全控制
- MyBatis 3.5.x:灵活的数据持久层方案
- MySQL 8.0:关系型数据库首选
- Redis 6.x:缓存高频访问数据
- JWT:无状态身份认证机制
前端技术栈:
- Vue 3.x:响应式前端框架
- Element Plus:UI组件库
- Axios:HTTP请求处理
- Vue Router:前端路由管理
- ECharts 5.0:数据可视化
2.2 系统模块划分
核心功能模块包括:
- 用户认证模块:处理注册/登录/权限控制
- 医生管理模块:维护医生信息和排班
- 科室管理模块:医院科室分类管理
- 挂号预约模块:核心业务处理
- 支付结算模块:对接支付渠道
- 数据统计模块:可视化报表展示
3. 数据库设计详解
3.1 核心表结构设计
用户表(user)设计考虑:
sql复制CREATE TABLE `user` (
`user_id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '真实姓名',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
`phone_number` varchar(20) NOT NULL COMMENT '登录账号',
`password_hash` varchar(100) NOT NULL COMMENT 'BCrypt加密',
`gender` char(1) DEFAULT NULL COMMENT 'M/F',
`birth_date` date DEFAULT NULL,
`register_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`),
UNIQUE KEY `idx_phone` (`phone_number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
医生表(doctor)关键字段:
sql复制CREATE TABLE `doctor` (
`doctor_id` bigint NOT NULL AUTO_INCREMENT,
`doctor_name` varchar(50) NOT NULL,
`department_id` bigint NOT NULL,
`title` varchar(20) NOT NULL COMMENT '职称',
`specialty` varchar(100) DEFAULT NULL COMMENT '专长',
`introduction` text COMMENT '详细介绍',
`schedule_json` json DEFAULT NULL COMMENT '排班信息',
PRIMARY KEY (`doctor_id`),
KEY `idx_dept` (`department_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
挂号订单表(registration_order)设计要点:
sql复制CREATE TABLE `registration_order` (
`order_id` bigint NOT NULL AUTO_INCREMENT,
`order_no` varchar(32) NOT NULL COMMENT '业务订单号',
`
