Spring Cloud+Nacos+Feign整合微信支付登录接口实现分布式医院挂号系统

整体架构 Spring Cloud+Nacos+Feign整合微信支付登录接口实现分布式医院挂号系统_第1张图片

业务流程图

Spring Cloud+Nacos+Feign整合微信支付登录接口实现分布式医院挂号系统_第2张图片

技术栈

前端

采用主流前端框架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 地址 )

    • 配置
      在config包配置文件内配置mybatisplusConfig的分页插件
      //分页查询插件
      @Bean
      public PaginationInterceptor paginationInterceptor(){
      	return new PaginationInterceptor();
      }
      
  • MongoDB

    在对应微服务包下添加Repository包并创建对应类的Repository 继承MongoRepository 方法名遵循Spring Data的标准(XXXX为实体类)
    
    • 配置
      Spring:
      	data:
       		mongodb:
       			uri: mongodb://localhost:27017/yygh_hosp
      
    • 使用
      在ServiceImpl中调用相应类的Repository进行MongoDB操作(方法名遵循Spring Data的标准)
      
    • 启动
      Terminal命令 brew services start [email protected](MacOSX)
      
  • 服务注册Nacos与服务调用Feign

    • 准备
      下载nacos文件包 解压启动 在文件目录下 sh startup.sh -m standalone(MacOSX)
      
    • 项目应用
      1.添加依赖
      
      	com.alibaba.cloud
      	spring-cloud-starter-alibaba-nacos-discovery
      
      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文件中进行配置
    
    • 配置
      Spring:
      	redis:
      		host: localhost
        		port: 6379
      		database: 0
      		timeout: 1800000
      		lettuce:
      			pool:
      				max-active: 20
      				max-wait: 1
      				max-idle: 5
      
    • 启用服务
      Terminal命令 redis-server (MacOSX)
      
  • Nginx

    前端解决微服务架构 无法访问多个后端端口问题 下载安装Nginx在nginx文件/路径下nginx.conf中配置对应后端路由
    
    • 前端反向路由
      修改前端config/dev.env.js中全局端口为9001
      
    • 配置
      server {
      	listen       9001;
      	server_name  localhost;
      	location ~ /hosp/ {
      		proxy_pass http://localhost:8201;
           }
      	location ~ /cmn/ {
      		proxy_pass http://localhost:8202;
      	 }
      }
      
  • Gateway

    • 引入依赖
      
      	org.springframework.cloud
      	spring-cloud-starter-gateway
      	
      	2.1.3.RELEASE
      
      
    • 配置
      # 服务端口
      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);
      	}
      }
      

核心业务

  1. 医院管理
    1. 科室管理
    2. 排班管理
  2. 医院设置管理
  3. 数据字典

技术点Demo汇总

  • Spring Boot RabbitMQ Demo
  • Spring Boot MyBatis-Plus Demo
  • Spring Boot SSO Demo(Spring Security+Oauth2+JWT)

写在最后

项目为尚硅谷出品,此文章为个人学习过程中的心得和学习笔记,仅作为个人学习记录分享.侵删

你可能感兴趣的:(spring,boot,spring,cloud,分布式,mongodb)