医疗预约微服务系统 - 基于 Go 语言开发的分布式医疗服务平台,提供医生排班、患者预约、科室管理等核心功能,采用 gRPC 进行服务间通信,包含独立的 API 网关层。
- API Gateway (
api-gateway/):统一入口,处理客户端请求的路由和转发 - Medi-Serve (
medi-serve/):核心医疗服务,处理业务逻辑 - Common (
common/):共享配置、数据模型和工具包 - Proto (
proto/):gRPC 协议定义文件
一个基于 Go 语言和 gRPC 的分布式医疗预约平台,支持医生排班、患者预约、科室管理等功能。
.
├── .gitignore
├── README.md
├── api-gateway/ # API 网关服务
│ ├── basic/cmd/main.go # 网关启动入口
│ ├── handler/ # 请求处理
│ │ ├── api/medi.go # API 处理器
│ │ └── request/medi.go # 请求封装
│ └── router/router.go # 路由配置
├── common/ # 公共模块
│ ├── config/ # 配置文件管理
│ │ ├── config.go
│ │ ├── config.yaml
│ │ └── global.go
│ ├── init/init.go # 初始化逻辑
│ ├── models/ # 数据模型
│ │ ├── appointment.go # 预约模型
│ │ ├── department.go # 科室模型
│ │ ├── doctor.go # 医生模型
│ │ ├── patient.go # 患者模型
│ │ └── schedule.go # 排班模型
│ └── pkg/ # 工具包
│ ├── alipay.go # 支付宝支付
│ ├── genware.go # 通用中间件
│ └── page.go # 分页工具
├── medi-serve/ # 医疗服务
│ ├── basic/cmd/main.go # 服务启动入口
│ └── handler/service/service.go # 业务服务实现
└── proto/ # gRPC 协议定义
└── medi/
├── medi.proto # 协议定义
├── medi.pb.go # 生成的 Go 代码
└── medi_grpc.pb.go # 生成的 gRPC 代码
- 患者管理:患者注册、信息维护
- 医生管理:医生信息、资质管理
- 科室管理:医院科室分类与配置
- 排班管理:医生出诊时间安排
- 预约系统:在线预约、取消、改期
- 微服务架构:API 网关 + 业务服务分离
- gRPC 通信:高性能服务间通信
- 统一配置管理:YAML 配置文件中心化管理
- 支付宝支付集成:支持在线支付功能
- 模型驱动开发:清晰的领域模型定义
- 语言: Go 1.19+
- 通信协议: gRPC + Protocol Buffers
- API 网关: 自定义网关层
- 配置管理: YAML
- 支付集成: 支付宝 SDK
- 架构模式: 微服务架构
git clone <repository-url>
cd medical-appointment-system# 安装 Go 依赖
go mod download
# 安装 Protocol Buffers 编译器 (如果需要重新生成)
# 参考: https://grpc.io/docs/protoc-installation/cd proto/medi
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
medi.proto编辑配置文件:
cp common/config/config.yaml.example common/config/config.yaml
# 修改数据库、服务端口、支付宝等配置cd medi-serve/basic/cmd
go run main.gocd api-gateway/basic/cmd
go run main.go- API 网关默认端口:
8080 - gRPC 服务端口:
50051(根据配置调整)
GET /api/doctors # 获取医生列表
POST /api/appointments # 创建预约
GET /api/departments # 获取科室列表
PUT /api/schedules/{id} # 更新排班
- 服务名称:
MediService - 定义文件:
proto/medi/medi.proto
- 在
proto/medi/medi.proto中添加新的 RPC 方法 - 重新生成 gRPC 代码
- 在
medi-serve/handler/service/service.go中实现服务 - 在
api-gateway/handler/api/medi.go中添加 HTTP 接口处理 - 在
api-gateway/router/router.go中注册路由
在 common/models/ 目录下添加新的 .go 文件定义模型结构。
系统使用关系型数据库(如 MySQL/PostgreSQL)存储业务数据。具体数据库配置在 common/config/config.yaml 中设置。
运行测试:
go test ./...MIT License
这个 README.md 清晰地展示了项目的微服务架构、功能模块和启动方式,适合开发者和部署人员使用。