尚医通
Last updated on November 15, 2023 am
欢迎观看我的医院预约挂号平台项目笔记
axiba,图片在typora软件更新时被意外删除了!!!
尚医通学习笔记
前言:按照计划跟做项目,发现仍有一些令人不解的坑,为了解决问题耗费了更多的事件,通过手写和电子笔记以此列举学习成果,以便更好的复习。
项目介绍篇
是一个预约挂号,就医问诊,解决患者就医难看病难的平台。
平台:用户前台(用户预约挂号)、管理员后台、医院管理后台(上传医院信息)
技术框架
微服务:使用Docker
作为微服务的部署,启动中间件
Spring Cloud
作为整体框架
nacos
注册中心
feign
远程调用
Spring Cloud GateWay
网关
数据库:
MongoDB
、MySQL
作为数据库
中间件:
Rabbitmq
消息队列、redis
功能性类库:
JWT
登录验证、EasyExcell
数据库导入导出
业务流程
医院通过医院管理后台上传医院的基本信息、预约规则信息、科室信息、排班信息。然后又管理平台进行审核,通过后预约挂号平台进行展示,用户就可以进行根据需求选择挂号,会调用医院挂号接口进行挂号,挂号成功之后,进行支付,取号,同时也可以取消预约,对应的预约状态也会进行实时更新。
项目亮点
真实全面、贴合实际
什么是服务端渲染?
服务器先把数据请求好,并且拼接到恩安政的页面当中,再返回给客户端。
从何处请求数据呢?答:从后端,所以运行项目的时候,要先运行后端,否则会报错!
数据库是怎么划分的?
数据库分为MySQL和MongoDB,其中MySQL是关系型数据库,用来存储用户、订单、预约等关系型数据,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。因为大多数数据操作在内存中进行,所以效率较高。本项目中用来存储一些医院本身的信息和一些不固定的信息,比较灵活!
后端亮点:
项目启动
后端
启动服务:
nacos
可以用来管理微服务,提供服务的注册与发现,作为配置中心管理动态配置
简历部分
前端:使用webpack来减小项目体积以及运行速度
P64 redis
redis连接不上,贴一篇文章,包含conf文件的配置与redis.cli客户端的运行命令
P65 配置nginx
P66 MongoDB
1 |
|
1 |
|
通过下图实例,我们也可以更直观的的了解Mongo中的一些概念:
P67 —— P72 SpringBoot整合MongoDB
mongo Template CRUD实现方法:
1 |
|
模糊查询方法:
1
2
3
4
5
6
7
8
9
10
11
//模糊查询
@Test
public void findUsersLikeName() {
String name = "est";
String regex = String.format("%s%s%s", "^.*", name, ".*$");
//regex正则表达式
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
mongo repository CURD 实现方法:
总结一波,方法调用来说,整体差不多,都挺麻烦,但是不难看出,MongoTemplate更加灵活,MongoRepogistory简单一些。
P73 数据接口-上传医院接口
需求和准备——>基础类创建——>初步实现
涉及:json转换工具(JSONObject:map->字符串->对象)
P79 mongodb模糊查询(带分页)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
public Page<Department> findPageDepartment(int page, int limit, DepartmentQueryVo departmentQueryVo) {
//创建PageABLE对象,设置当前页与记录数
Pageable pageable = PageRequest.of(page-1,limit);
//将QueryVo对象转换成department对象
Department department = new Department();
BeanUtils.copyProperties(departmentQueryVo,department);
//创建example对象,这是mongodb中模糊查询的规则
ExampleMatcher matcher = ExampleMatcher.matching()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase(true);
Example<Department> example = Example.of(department,matcher);
Page<Department> all = departmentRepository.findAll(example, pageable);
return all;
}
踩坑记录:
1 |
|
git许久未用,可能之前踩坑埋雷了,用以下方法得以解决:
P80 后台系统-医院管理-需求和nacos启动
1 |
|
记录一下:nacos(注册中心)可以远程调用两个springBoot项目,为什么要远程调用,因为项目的开发微服务可能部署在不同的服务器之上,因此需要注册中心nacos来管理。
重点记忆,需要和熟练!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//mongodb的条件查询带分页
Controller:
//医院列表(条件查询带分页)
//因为本方法是通过路径传递当前页值与记录数值,所以方法体中需要通过@PathVariable注解将值取到;
//又因为本方法设计条件查询,条件已经被封装到Vo类中,所以方法体中需要传入Vo类。
@PostMapping("list/{page}/{limit}")
public Result listHosp(@PathVariable Integer page,
@PathVariable Integer limit,
HospitalQueryVo hospitalQueryVo) {
Page<Hospital> pageModel = hospitalService.selectHospPage(page,limit,hospitalQueryVo);
return Result.ok(pageModel);
}
service:
//条件查询医院列表分页
Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo);
service实现类:
//医院列表(条件查询分页) 以下三个步骤是查询MOngoDB中的步骤
@Override
public Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo) {
//创建pageable对象
Pageable pageable = PageRequest.of(page-1,limit);
//创建条件查询匹配器
ExampleMatcher matcher = ExampleMatcher.matching()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase(true);
//对象转换 Vo->hospital
Hospital hospital = new Hospital();
//通过bean工具类 直接进行对象转换 Vo->hospital
BeanUtils.copyProperties(hospitalQueryVo,hospital);
//创建example实例对象
Example<Hospital> example = Example.of(hospital,matcher);
//调用方法
Page<Hospital> all = hospitalRepository.findAll(example, pageable);
return all;
}
P88 医院列表,前端整合
踩大坑记录:
1 |
|
1 |
|
1 |
|
下一步p89:实现更新医院上线状态功能。
P89-P90医院的上线以及查看详细信息的功能
过程:常规的Controller->Service->ServiceImpl
问题:隐藏路由跳转真实路由:
1 |
|
P91排班管理
这块代码逻辑比较复杂,可以借此锻炼自己的需求分析+逻辑实现。
赶进度,代码逻辑已经实现,从本初开始cv代码!!!P92
1以下代码必须整理明白,搞清楚其中的逻辑,需求如何实现!
1 |
|
P93显示科室的前端整合
一些基础的前端隐藏路由-》界面elemenUI+信息显示
完成科室信息树形结构显示
P94
接下来完成每个科室的树形结构排版信息显示。
涉及到信息的统计、分析与聚合(分组之后的数据)
P95科室排班的分页信息显示
注意此处的代码逻辑书写,自己找时间练习
P98
遇到了排班详细信息不显示的问题,暂未解决!
简历写法
基于Vue+SpringBoot+SpringCloud+MongoDB+RabbitMQ+Gateway实现的问诊预约系统,用户可以进行微信单点登录、预约挂号、支付订单,管理员可以会员管理、订单管理、统计管理以及对数据字典的导入导出
一个前后端分离的在线预约挂号系统。用户可以预约挂号支付订单,管理员可以管理订单,医院 可以管理数据。使用Spring Cloud微服务框架,数据存储使用MongoDB和MySQL,中间件使用Redis和 RabbitMQ
同时还整合了定时任务,实现就医提醒功能,
综合应用了阿里云OSS,短信服务
以及微信登录、
微信支付,
同时增加了微信退款功能