整体架构 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e0b6e9f19eb94e1a9f4048b723c5147b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA2MjI5OQ==,size_16,color_FFFFFF,t_70#pic_center)
业务流程图
技术栈
前端
采用主流前端框架Vue,使用Nuxt和vue-admin-template模板搭建页面环境,采用Element-ui进行页面布局,Npm进行依赖管理,axios进行异步调用,使用ECharts进行图表显示,实现全栈开发。
后端
采用主流的SpringBoot+SpringCloud微服务架构,全面使用了目前流行的NoSQL技术,使用Redis缓存数据,使用MongoDB实现高并发读写,整合消息中间件RabbitMQ提高订单的并发量,同时还整合了定时任务,实现就医提醒功能,综合应用了阿里云OSS,短信服务以及微信登录、微信支付,同时增加了微信退款功能。
开发环境
MacOSX 10.15.7 IntelliJ IDEA 2020 .1 . 2
项目 | 版本 |
---|---|
Java | 1.8 |
Spring Cloud | Hoxton.RELEASE |
Alibaba Cloud | 2.2.0.RELEASE |
MyBatis-Plus | 3.3.1 |
MySql Connection | 5.1.46 |
Swagger | 2.7.0 |
JSON Web Token | 0.7.0 |
FastJson | 1.2.29 |
HttpClient | 4.5.1 |
EasyExcel | 2.2.0-beta2 |
Aliyun | 4.1.1 |
AliOSS | 3.9.1 |
JodaTime | 2.10.1 |
包结构
- common包 包含项目中通用的一些配置和工具类(全局异常处理 统一数据返回类型)(Swager2 Redis配置类)
- hospital-manage 医院端服务 实现医院接口的设置及科室、排班等相关操作(需与医院服务验证通过后才能实现相关操作)
- model 包含项目中所有实体类的定义(Enums DO VO)
- service 项目中心服务的服务包 包含项目下所有的微服务(用户 医院:8201(医院设置 科室 排班 …) 数据字典:8202 …)
● yygh_parent[文件根目录]
● common[项目通用工具类配置类]
◎ common_util[全局异常处理 统一数据返回类型...]
◎ service_util[Swagger2配置 Redis配置 MD5工具类...]
● hospital_manage[医院端服务 包含医院接口设置 科室 排班等相关操作]
● model[包含项目下所有的实体定义 Enums Do Vo...]
◎ enums
◎ model
◎ vo
● service[服务类包 包含所有微服务 用户 医院:8201 数据字典:8202]
◎ service_cmn[数据字典相关服务 查询数据字典查]
◎ service_hosp[医院相关服务 CRUD医院设置 上传查询医院 上传查询删除科室.排班 ]
◎ service_user
● service_client[]
◎ service_cmn_client[service_cmn服务调用]
对应技术的配置与实现
Nacos:8848 Redis:6379 MongoDB:27017 前后台跨越:@CrossOrigin注解 Nginx前端负载均衡
-
MyBatis-Plus ( GitHub MyBatis-Plus Demo 地址 )
-
MongoDB
在对应微服务包下添加Repository包并创建对应类的Repository 继承MongoRepository<XXXX,String> 方法名遵循Spring Data的标准(XXXX为实体类)
-
服务注册Nacos与服务调用Feign
-
准备
下载nacos文件包 解压启动 在文件目录下 sh startup.sh -m standalone(MacOSX)
-
项目应用
1.添加依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 2.配置文件(yml)中添加配置 Spring: cloud: nacos: discovery: server-addr: http://localhost:8848 3.在启动类添加@EnableDiscoveryClient注解 @EnableFeignClients(basePackages = "com.xxxx") 包路径 4.创建Feign接口 添加FeignClient注解 加入Controller中的方法并给@PathVariable参数添加命名
-
-
Redis + Cache缓存
各模块下pom.xml文件引入依赖 在common下service_util中创建Config文件 添加Configuration EnableCaching注解 在yml文件中进行配置
-
Nginx
前端解决微服务架构 无法访问多个后端端口问题 下载安装Nginx在nginx文件/路径下nginx.conf中配置对应后端路由
-
Gateway
-
引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <!-- 版本冲突所以选择2.1.3 可以从mvnrepository查询发布时间 --> <version>2.1.3.RELEASE</version> </dependency>
-
配置
# 服务端口 server: port: 80 # 服务名 spring: application: name: service-gateway # nacos服务地址 cloud: nacos: discovery: server-addr: http://localhost:8848 #使用服务发现路由 gateway: discovery: locator: enable: true routes: - id: service-hosp #设置路由id uri: lb://service-hosp #设置路由地址 predicates: - Path=/*/hosp/** #设置路由断言 代理serviceID为anth-service为/auth/路径 - id: service-cmn uri: lb://service-cmn predicates: - Path=/*/cmn/**
-
添加启动类
@SpringBootApplication public class ServerGatewayApplication { public static void main(String[] args) { SpringApplication.run(ServerGatewayApplication.class,args); } }
-
核心业务
- 医院管理
- 科室管理
- 排班管理
- 医院设置管理
- 数据字典
- 项
技术点Demo汇总
- Spring Boot RabbitMQ Demo
- Spring Boot MyBatis-Plus Demo
- Spring Boot SSO Demo(Spring Security+Oauth2+JWT)