# 云医疗预约挂号平台 **Repository Path**: sanjig/yygh_parent ## Basic Information - **Project Name**: 云医疗预约挂号平台 - **Description**: 云医疗预约挂号平台是近年来开展的一项便民就医服务,旨在缓解看病难、挂号难的就医难题,让患者能够随时随地轻松挂号。采用SpringCloud微服务架构和前后端分离技术,后台管理系统分为医院设置,数据字典,用户管理,订单管理,统计管理5个模块,前台用户系统分为:医院详情,用户登录,就诊人管理,预约挂号,就医提醒模块。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2023-07-28 - **Last Updated**: 2024-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 云医疗预约挂号平台 #### 介绍 云医疗预约挂号平台是近年来开展的一项便民就医服务,旨在缓解看病难、挂号难的就医难题,让患者能够随时随地轻松挂号。采用SpringCloud微服务架构和前后端分离技术,后台管理系统分为医院设置,数据字典,用户管理,订单管理,统计管理5个模块,前台用户系统分为:医院详情,用户登录,就诊人管理,预约挂号,就医提醒模块。 #### 技术实现: 项目使用SpringBoot框架快速搭建整个项目,数据库采用MySql,基于MyBatisPlus实现数据的增删改查,开发期间使用swagger2进行接口测试。频繁查询的信息存储到redis中例如数据字典、验证码、支付二维码有效时间,通过EasyExcel实现数据字典的导入导出。调用第三方 API 来解决实际问题,比如微信接口、阿里云云存储OSS、阿里云短息服务SMS。使用rabbitmq进行消息分发,前期使用Nginx实现负载均衡,后期使用Spring Cloud Gateway网关对请求进行分发,使用Nacos注册中心配合Open Feign实现服务之间远程调用。 #### 项目功能总结(后台管理系统) 1、医院设置管理 (1)医院设置列表、添加、锁定、删除 (2)医院列表、详情、排班、下线 2、数据管理 (1)数据字典树形显示、导入、导出 3、用户管理 (1)用户列表、查看、锁定 (2)认证用户审批 4、订单管理 (1)订单列表、详情 5、平台对外上传医院信息接口 #### 项目功能总结(前台用户系统) 1、首页数据显示 (1)医院列表 2、医院详情显示 (1)医院科室显示 3、用户登录功能 (1)手机号登录(短信验证码发送) (2)微信扫描登录 4、用户实名认证 5、就诊人管理 (1)列表、添加、详情、删除 6、预约挂号功能 (1)排班和挂号详情信息 (2)确认挂号信息 (3)生成预约挂号订单 (4)挂号订单支付(微信) (5)取消预约订单 7、就医提醒功能 ![输入图片说明](image.png) ####笔记 ### 项目模块 ![输入图片说明](pngimageaaa.png) ![输入图片说明](er.png) ### 接口文档 { ​ url: ​ method: ​ params:{}, ​ data:{} } ### swagger ​ 1引入swagger依赖信息(swagger、swagger ui) ​ 2配置类(@EnableSwagger2)提供一个Docket对象(@Bean) ​ 3在对应微服务加swagger依赖,在配置类提供Docket对象 启动服务访问当前服务下地址+swagger-ui.html ​ @Api(tags=“ ”):标记在接口类上 ​ @ApiOperation(value=“ ”):标记在方法上 ​ @ApiParam(value=“ ”):标记在参数上 ​ @ApiModel(description=“ ”):对pojo类做说明 ​ @ApiModelProperty(value=“ ”):对pojo类属性做说明 ### ### mybatisplus自定义接口 继承ServiceLmpl--------------------→IService

​ ⬆ ⬆ 自定义service接口实现类⬅-----------自定义service接口---> ### mybatis使用分页条件 ```java @Configuration public class PageConfig { @Bean public PaginationInterceptor paginationInterceptor() { return paginationInterceptor(); } } ``` 主启动类添加组件扫描 ### 全局异常处理类 @RestControllerAdvice 类上面 ​ @ExceptionHandler ​ 方法上面 ### 自定义异常 必须手动抛出异常接收 ```java public R findAll() { List list = null; try { int i=10/0; list = hospitalSetService.list(); } catch (Exception e) { throw new YyghException(20003,"XXX异常"); } return R.ok().data("items", list); } ``` ### 日志 springboot默认只会输出info级别日志 level:debug

页面元素
第三步:封装专门的js文件调用后端接口 src/api/xxx.js export default{ ​ 方法(参数){ ​ url:" ", ​ method: ​ params } } 第四步:回到路由跳转的页面 ​ 1.引入js文件 ​ 2.调用js文件中的方法请求后端接口 ​ 3.将后端返回的数据在页面展示出来 ### 使用springcache的四个步骤 1、添加redis数据库依赖 2、在application.properties 添加redis连接信息 3、在配置类中提供一个cacheManager,配置类使用注解@EnableCaching开启缓存支持 4、使用以下三个注解,必须跟value指定存储命名空间 @Cacheable:查询方法上,表示查询数据时,先去缓存查没有再去数据库查。 @CachePut:添加方法上,表示在往数据表添加数据时也会想缓存中添加一份 @CacheEvict:修改或删除上,表示修改或删除数据表中数据,同时会把缓存中对应的数据删除掉 ### 使用MongoTemplate的三个步骤 1、添加Mongo数据库依赖 2、在application.properties 添加Mongo连接信息 3、在使用的地方直接注入MongoTemplate对象 ### 微服务注册nacos步骤 1、导nacos依赖 2、在application.properties 添加nacos连接地址 3、在主启动类添加@EnableDiscoveryClient ### openfeign使用步骤 1、导openfeign依赖 2、自定义一个feign客户端接口,@FeignClient(value='调用方在注册中心上的应用名称'), 方法和被调用方法的controller层方法完全一致 3、在主启动类上加@EnableFeignClients注解 4、在远程调用的地方直接注入自定义feign接口的代理类对象,即可远程调用 ### Gateway使用步骤 1、导Spring Cloud Gateway依赖 2、在application.properties 设置路由 3、编写主启动类 ### Spring Cloud Gateway Spring Cloud Gateway 是一个基于 Spring Framework 构建的开源网关解决方案,用于构建面向微服务架构的 API 网关。它提供了一种简单、轻量级且可扩展的方式来路由、过滤和转换传入的请求,并将其转发到合适的后端服务。 Spring Cloud Gateway 可以作为整个微服务架构的入口点,负责统一处理外部请求,并对请求进行路由、负载均衡、安全认证、错误处理等操作。它支持动态配置路由规则,根据请求的路径、请求头、请求参数等条件,将请求转发到特定的后端服务实例。同时,Spring Cloud Gateway 还提供了插件机制,可以自定义各种过滤器来处理请求和响应。 通过使用 Spring Cloud Gateway,可以实现以下功能: - 路由:将请求根据不同的规则转发到不同的目标服务。 - 负载均衡:将请求分发到后端服务的多个实例上,以实现负载均衡和高可用性。 - 安全认证:对请求进行身份验证和授权,保护后端服务免受未经授权的访问。 - 请求限流和熔断:通过限制请求的流量或在后端服务故障时终止请求,保护系统免受过载的影响。 - 请求转换和重写:对请求进行修改、过滤或转换,以适应后端服务的需要。 - 请求日志和监控:记录请求和响应信息,并提供监控和跟踪功能。 总之,Spring Cloud Gateway 提供了一个灵活且可扩展的方式来构建和管理 API 网关,简化了微服务架构中的网关层实现。 ### 微信登录流程 ![输入图片说明](png1688710907645.png) #### MyBatis-Plus 中QueryWrapper条件及其含义 在 MyBatis-Plus 中,`QueryWrapper` 是一个条件构造器,用于构建 SQL 查询语句的查询条件。 下面是 `QueryWrapper` 的各个条件及其含义: - **eq**:等于。表示字段等于指定值。 - **ne**:不等于。表示字段不等于指定值。 - **gt**:大于。表示字段大于指定值。 - **ge**:大于等于。表示字段大于等于指定值。 - **lt**:小于。表示字段小于指定值。 - **le**:小于等于。表示字段小于等于指定值。 - **like**:模糊匹配。表示字段包含指定的字符串。 - **notLike**:不匹配模式。表示字段不包含指定的字符串。 - **in**:包含某些值。表示字段的值包含在指定的值列表中。 - **notIn**:不包含某些值。表示字段的值不包含在指定的值列表中。 - **isNull**:为空。表示字段的值为空(NULL)。 - **isNotNull**:不为空。表示字段的值不为空(非NULL)。 - **orderByAsc**:升序排序。按照指定字段进行升序排序。 - **orderByDesc**:降序排序。按照指定字段进行降序排序。 - **groupBy**:分组。按照指定字段进行分组。 ### 使用MQ步骤 1、导入mq相关依赖信息 2、在application.properties 配置mq连接信息 3、生产者一端rabbittemplate向rabbitmq发送信息 4、创建交换机、队列、绑定关联关系 ### 在springboot使用定时任务步骤 1、在主启动类添加@EnableScheduling//开启定时任务支持 2、在定时人物job方法上添加@Scheduled注解并指定石英表达式(cron=”* * * * * * *“)