00:01
各位大家好,我们继续来开发上传医院接口,之前内容中呢,咱们完成了医院接口相关基础类的创建,包括创建了reporter service,还有controller,那咱们下面就来开发这个接口,那接口具体怎么开发,我们先做一个快速的分析。首先我们之前提到我们的过程呢,是通过医院的系统去调用咱们平台中的接口,最终实现相关的操作,而医院里边咱是不是要传入我们相关数据,把数据提交到咱的接口中去,最终实现操作,包括添加、查询等等功能。那咱们下面就来做这个功能,首先我们先分析一下我们要做这个上传医院接口中用到的相关的数据,然后这个数据在我这里边给大家提供出来了,咱们来看一下,咱们一会儿要上传数据,就是里边的这段数据,是一段这份数据咱把它上传过来,然后最终添加到咱们的猫DB数据库中。
01:11
那这个数据到底是什么意思,给各位来做个分析,然后这个过程呢,咱们可以看一下我们这个上一通API的技术文档,找到上传医院接口,然后这里边大家看到。这个表格中呢,我就清晰的标注出来了,每个字段它相关的含义,比如说我们来看一下。House code医院的这个标识,包括医院名称、医院类型等等一些相关内容,这个各位给他有个了解,咱们一会儿就来上传这段数据,然后把它添加到我们的数据库中,所以这是一个数据的分析。那咱下面来看一下这个具体该怎么做,刚才咱们提到我们是通过这个医院的系统去上传数据,然后把数据是不是要传到咱们的平台的接口中来呀?
02:03
也就是说我们在平台的接口中,或者说是在我们的CTRL中,咱是不是写个方法。这个方法是不是要得到我们传过来到医院信息,然后把信息加到数据库中,那咱们看一下我们的医院系统是怎么把数据传过来的,咱们来找一下啊,我们找到里面这个方法在这个。Service实现类中有这个方法,大家看到叫save hospital,咱之前应该见过,包括方法都是这个结构,然后你看里边,首先它把数据做一些相关的转换都放到这个map里面去,然后它下面通过一个工具类去传入参数,最终。就是调用咱们的接口,然后这个工具类中,我们来看一下它的写法,首先咱看第一部分这一部分。是不是就是封装数据,把数据通过post方式进行封装,然后第个方法换送请求,也就是说现在就是通过post去提交过来我们的参数,然后咱们得到post提交的参数,最终加到数据库就不可以了,所以咱们在接口中就来做这事情,得到重来的参数数据最终叫做数据库。
03:20
而我们在CTRL中怎么得到POS条款的数据呢?各位同学应该清楚啊,这个应该是我们web阶段的基础知识,咱们最基础的做法用request.get per是不是可以得到,或者说里边还有一个方法叫get per map是不是可以得到,所以咱们一会儿用这种方式就来得到数据,最终做这个操作。那下面在里边,那就开始写这个方法,首先我先写CTRL了,咱们写第一个接口,就是上传医院的这个。把这个我们来做一个开发。
04:00
然后这个接口我来写一下,我们来写一个方法。Public,然后它返回类型是这个result,是咱们之前用到的,然后这里边起个名字,我就叫这个C。好披,然后在里边呢,因为咱们要用蕊快的方式得到,所以里边我给它就传入一个蕊快的这么一个参数HTP。Request,这个是request,把这个给他拽进来。然后传完之后,然后给到数据。包括在方法上面,咱们加上它的提交方式,因为它是用POS过来,所以咱们用一个POS,最终做添加,在里边给它起个名字,然后这个名字呢,要跟咱们接口文档中的名字要对上。咱们来看一下它的这个名字,A片hospital在咱们这个类上面是不是叫这个,然后这个方法名字咱们看一下是不是叫save hospital,那我现在把这名字就给他分过来。
05:06
这样的话,咱就完成这么一个方法的创建,然后创建之后下面在里边我们写一下它的具体内容,首先第一步咱们先获取到。我们传递过来这个医院的这个信息。我们的做法就是用request.get perer map是不是可以得到,然后这个方法返回就是一个map集合,也就是说把你这个过程中封装之后的这个数据咱就在里边得到,也就这个数据我们在里边可以得到,因为这里边我们已经通过这个POS方式做了封装,包括给他调过来了,然后得到之后咱们把它调到数据库,而这个方法大家看啊,它的返回类型。我们来看一下。是不是一个外部集合呀,而外部集合中有P有Y6,它的Y6是不是一个数组形式,所以这里边咱们给的稍微做个转换,比如说把这数组形式换成一个object,当然你不换也可以,就后面操作要稍微麻烦点,因为数组你还要便利,所以咱为了方便把它就直接换成一个object类型,那怎么换给各位来强调一下这个做法呢?我们在之前内容中呢,曾经复制过一个工具类。
06:26
不知各位是否记得啊这个工具类,然后在工具类中呢,有一个方法。大家看这方法,这方法就叫Switch map,然后这个方法大家看它是什么操作,就把咱的map集合最终变成一个ma集合,然后里边的数组变成是要,所以我们现在直接调这个工具类中的方法就可以完成这么一个转换,那咱们现在给他就来弄一下,但是说你不转换也可以,只是后面操作,你需要做一些特别的处理,那我现在给他就转换一下。
07:00
比如这个我起个名字,我就叫request map,然后下面咱们来调用工具类中这个方法,这工具类就叫做http request。Help里边这个方法叫Switch map,然后咱们把这map传进去,最终返回的就是一个map集合,比如起个名字叫这个P。然后这个我们得到之后,下面咱就可以调用service中的方法把它加到数据库,我写一下。调用service的方法,那我们来调一下,好,Service我起个名字,比如又叫save,然后在save里面传入咱们这个map集合,这样的话一会咱就可以完成添加,然后最终给它来一个返回值,比如来一个退这个result.ok。这样的话咱们就把砍破了,就完成了,大家看这过程啊,得到我们这个医院系统通过POS调过来这个数据,我们用快得到,然后得到之后传到方法中,把这数据加到数据可以了,因为咱们在一元系统中,我们是通过这个POS提交,把参数传到录径中去请求咱们这里面的接口,所以这个CTRL了我们就写完了。
08:22
然后写完之后呢,下面咱们开始写这个service部分,在service里面来实现这个操作。那我们来操作一下啊,首先第一个我在里边先创建这个方法。就是这个上传医院的技术方法,然后创建之后来到它的实现类中,在实现内中来实现它这个技术方法。咱们来做一个实线。而这个事间各位注意啊,因为咱们现在要把数据最终是不是要加到咱的数据库中去,所以我现在来做添加,而加到数据库在里边,咱是不是要调这个好披report里面的方法,那我们在中来写一下这个具体操作,咱们看应该怎么做。
09:10
首先我们做一个分享,就是现在这个数据呢,咱肯定要加到咱们的猫DB中,那数据如果说我第一次加,是不是就直接加到你的数据库中去,但是如果说我第二次加相同的数据,那咱是不是要做一个更新的操作,之前咱们演示这个mango reporter这中曾经演示过。如你数据库中没有这数据,那我们添加,如有数据自做是否更新有,所以现在我这里边写的完整点,我就先做个判断,看我的数据库中有没有这个数据,有的话我们就做一个更新,没有的话就做一个添加,就判断里边是否先存在,那我写一下这个过程啊,第一步。先判断是否存在。这个相同的数据,这里边如果说它不存在,那我们就进行添加。
10:06
如果说它存在,那我们进行什么,是不是就是修改或者说更新,所以现在我们就来做这个事情,那这过程我们要怎么做呢?给各位说一下啊,首先咱们看啊第一部分我这里边是不是一个map克集合呀,Map集合如果咱要操作肯定不方便,所以咱把map集合是不是要做个转换呀。转成什么?是不是咱们那个对象,因为你看啊,Map集合中有K,有value,也就是咱们刚才看到里边的就是这些数据,而咱把K和value给它封装到一个对象中去,是不是会特别方便,所以咱们现在先做这个操作,那我写一下啊,就是我们的第一部分。先把咱们参数的ma集合给它转换成一个对象,这对象应该就是我们这个hospital这个对象,医院这个对象,那我们来做一下,那怎么转换,咱用的应该是综合用到咱们这个Json转工具之前呢,咱曾经在common里边引入过这么一个依赖。
11:15
是不是这个fast Jason就是一个这工具,而我现在在里边因为能用到工具类,所以我在现在这里边也能用到这个教内容,那咱用Jason来做一个具体操作,咱们看怎么做啊。首先,第一步我写上这么一个对象,它叫做Jason。代表。就是怎么做呢?首先咱们先把这个map先转成一个字符串,然后把这字符串是不是再变成这个对象,就是我们第一步先变成一个字符串,那怎么编字符串里面一个方法叫做to Jason这个词缀。然后写一下啊,To jc string,然后在里边呢,传入我们那个相关这个map集合,那我传一下啊,就是这个。
12:04
拍map,这样的话呢,就把咱的map先变成了一个字符串。那我写一下啊,比如叫这个map。脊椎。然后变完字符串之后,咱们把这字符串是不是再给它变成一个对象的形式,那我来变一下啊,就是Jason。代表。点上一个方法叫这个pass。Object。然后在里边传入咱们这个字符串。以及你要转成那个对象的那个class,我们就是hospital。点上。Class。然后最终这样的话,它就返回了我们一个对象,所以现在我们就完成这个操作,这是关于Jason转换工具一个基本使用,我再说一遍,对把这药特别熟练,因为咱们在项目中这种操作会经常用到,首先第一个你把外部集合先变成字串。
13:02
用里面的方法,然后把这字符串再变成对象,包括用里面这个方法,最终就变成我们这个好这个对象,这样的话咱们就完成了,然后完成之后,下面咱们来做这个操作,就是咱们的第二部分,判断这个数据在我的数据库中是否存在。那大家说怎么判断?怎么判断数据在数据库中是否存在呢?咱是不是要查询呢?比如说根据里边一个数据查询我们那个数据库中,比如说在猫DB中,数据库里边的表是不是叫collection,包括里边那个内容数据是不是叫document,看里边有没有这个数据,那咱就可以做一个查询,那查询比如说我们根据这个好的PI里边的这么一个参数,咱就用这个house code查一下了就可以了啊用这个查一下,看里边到底有没有这个数据。然后把这个先得到,比如说咱们来查一下啊,那查的话我就调用hospital reporty里边一个方法,那这方法比如我起个名字,按照咱的规范,我就叫get hospital,为了明显我给它复制一下啊,省得我写错get好,然后里面加一个BY。
14:19
加上这个叫house code。注意它的大小写区分。每个单词的首字母需要大写,然后里边传入这个hot code,传完之后最终呢,让它就返回这么一个对象,那我们给他。返回家。对象,比如一个对象,我起个名字就叫这个。一个就是是否存在。这样的话,咱们把这个方法就完成了,然后完成之后呢,咱们需要在这个hospital reportage中把这方法我们给它做个创建,实现这个具体操作,那咱下面在里边就创建这么一个方法,我根据提示做个创建。
15:07
然后这个方法,这个图式判断是否存在这么一个数据,这样的话,咱们现在把这个就完成了,然后这个过程呢,就是。用这个mango re reportry中呢,有这么一个特点,咱之前演示中没有提到,咱现在在项目中给大家具体说一下,而这个特点是什么呢?咱们看一下,之前咱们讲猫弟弟中有一个文档里边有段话,现在给大家详细来说一下。咱们打开这个文档,然后我们找到这个mango re potterry,咱们看啊,里边有这个特点,之前没有提到,因为之前我没有用过,现在项目中用到,给大家具体说一下,咱们就看这句话,这里写到date提供了对mongo DB数据访我们的支持,我们只需要继承这个mango reer这类,然后按照data的规范就可以了,主要这句话按照它的规范就可以,什么叫规范?也就是说我们现在。
16:11
在这个reporter中写方法时候,你只要按照它的名字规范就可以了,然后这个方法实现不需要咱们写mango re report中会根据这个方法名字帮你实现这个具体的操作,所以这就是它一个规范,所以它里边做的很智能,那这规范是怎么样的呢?咱们看一下里边几个例子,然后再看我们这个例子啊,比如大家看啊,比如现在我想做个操作,就是根据这个咱找一个具体的,比如根据这个。说这个拉name等于值,然后firstname等于值,我们加两个条件,而这个如果说你在re reporter里边写上这个规范,那怎么做,大家看方法的命名特点,我们就想一个叫范范,Lastname and firstname,你看啊,这里边每个字母是不是都大写,然后这样的话完成这个操作,包括如果你写其他的跟它的类似,都是类似这种规范,所以咱们现在就按照这种规范来实验就可以了,包括下我也提到咱们不是随便声明的。
17:15
需要符合一定规范,然后这里写到查询方法,以这几开头都可以,你用find的开头,用read,用干的都可以,而大家看我刚才方法用什么,是不是get,然后在get里面看到我这个特点啊,我们是。查询这个hot,然后根据我的house code进行查询,所以这个按照规范写完之后,Monggo po就会根据这个名字帮你实现里面的具体功能,而不需要我们再单独写这个操作,所以这是一个比较方便的地方,所以咱们现在把这个我们就写出来了,就是现在我们再回到这个Z里边,根据你的hot code去查猫DB,看里边有没有相同数据,如果有的话,这里边有数据,没有的话,这只肯定等于空,然后咱们再做判断,做添加或者切改操作。
18:09
那咱们下面来写一下。下面咱就做判断。那我写一下啊,这里边如果说这个hospital exist这个值不等于空,那就表示我现在数据库中是不是已经存在了这个数据。存在的话,那我们做什么,是不是就做一个修改。然后else,如果里边就是不存在,那我们做的肯定就是一个添加。那现在我们来把这过程咱就快速写下,如果说存在也好,不存在也好,咱们做的是不是应该都是调那个C方案进行实现,那咱们首先先做一个修改。那修改怎么做,在里边肯定有它相关的值,咱就把这值我们做一个设置就可以了,那我们来写一下啊。首先第一个在这个好PI里边呢,咱看它相关的字段,其中里边有这么一个字段叫CS the的里边零表示未上限,一表示是已上限,咱们第一次加的时候是不是肯定未上限,而你这里边已经存在,肯定是已上限,所以咱们把这个值先做个处理,那怎么处理,我们就用这个。
19:24
好的,披头。直接。给它set这个值,然后通过数据库中是什么,咱就给它返回正值,我们用这个hospital exist,点上这个get thes在里边这个传递,然后除了这个之外,里边肯定还有它的什么时间呀,包括等等,以及相关内容,那这些内容咱们把它也是拿回来,那这些内容我就从课件中直接就复制了。就是里边的这几个值,我给他拿过来,就是这些。把这个复制到我们里边来,然后把里面的名字给他改一下。
20:03
然后咱们来看一下哈,首先这里边创建时间,因为是修改嘛,肯定还有之前时间修改时间改成最新时间,包括以deleted,就是是否删除,咱没有删除改成零,然后这些值都设置之后,咱最后调用这个hospital report里边这个save方法。然后在里边呢,传入这个好的批斗对象,这样的话是不是就实现的操作,然后除了这个操作之外,如果里边不存在,那我们做的肯定是一个添加操作。而添加操作掉的方法跟这个应该是一样的,那咱用它就快速改一下,因为代码都是类似的,首先里边第一个它这个状态在默认值就来个零,第二个是它的创建时间,因为是第一次添加,那我们也是U上一个date修改时间是否删除,最后调方法实现咱们这个操作。
21:03
这样的话,咱们现在就把部分,包括这个Rep部分,以及我们的control部分,咱们现在就最终完成了,这样的话,咱就把这个上传医院接口,应该说就初步做到了,然后咱们看一遍,最终做个测试。咱们看一下啊,在我这个API ctrl里面,首先第一部分我们先得到你那个医院那个系统中传过来的数据,用request get per map得到,然后转成map即合,最终调思维中的方法。在里边呢,咱们先给它转成这个对象,然后判断数据库中是否存在,如果说不存在,我们做的是添加,如果说里边存在,我们做的肯定是修改。这样的话,我们现在就完成了这么一个操作,这个就记完了,然后写完之后,下面咱就给他做一个最终的测试,看一下效果能不能做到,当然里边可能需要一些完善,咱先测一个最基础功能。
22:08
那怎么测试?首先我把这个service hospital先给他做个启动。咱们给它先修起来。咱先看它能不能启动,然后启动之后咱们在我们这个医院的模拟系统中来测试这个医院管理中上传医院的这个部分。那我们先启动一下啊。咱们等它集中起来。啊,各位看现在已经启动了,然后这个怎么测试给各位来说一下啊,首先第一个呢,因为咱们现在要上传这个医院的信息,首先第一部分呢,咱们来到模拟系统中,或者说各位也可以看一下我们的文档,我就直接代理操作。第一个咱先把医院做一个设置,设置中咱需要填写三个值,第一个是你医院的扣,第二个是你签名T,第三个是你那个就是调用接口的路径。
23:18
什么意思呢?就是在我们的这个数据库中,比如咱们找到我把这个先打开。然后咱们之前呢,做过一个模块,是不是叫医院设置模块啊。但是里边咱是不是设置一些值啊,包含你的扣的,包含你这个就是K,所以咱需要把这两个值给它复制过来,一个是扣的,一个是K,然后这里边的路径就写上,一会儿你要调那个接口,因为咱这接口是不是8201这个端口号,所以咱调它这个需要做个设置,现在这里边已经设置过来了,咱是1000下线零。然后他的key是这个key,包括把这个咱们给他先添加进去,然后一保存加到咱们这个医院的这个。
24:01
数据库这个表里边来,你看里边就有这个数据。然后加上之后,下面再来做这个医院的这个设置,但是医院设置中的咱们看里边这个部分,第一次点进去会报一个数据异常,因为它要显示这个接口,咱还没有做一会儿咱们完善,而现在咱们做的是这部分叫添加,添加之后会掉咱的接口,那我现在点击添加,大家看是不是有这么一个框了,咱就把那段这些数据给它复制过来,然后点保存这数据就可以加到数据库。那我们给他试一下啊,然后这段数据我在这个资料中给大家都听出来了,里边有一个hospital.jason就是一段医院的数据,比如咱们刚才看到的。这个数据。你注意啊,里边的ID这要对上啊,然后咱把这段这段数据给它就直接复制过来到我们这里边。大家看是复制过来了,然后复制之后,现在我们点击这个保存,把它就调用咱们刚才的这个8201中的我们写的这个接口,最终加的数据库,但是你调的时候注意检查一下,你的路径要跟你文档中的路径要对上,因为咱是按照这种规范写的,这个路径并不能写错。
25:21
包括现在我们给他拿过来,然后咱们点保存,大家看这过程提示咱们是不是操作总功能,所以现在数据应该就加到了猫DB数据库中,这个过程我们就完成了,完成之后咱们看一下数据库啊,那怎么看呢?之前呢,咱是用这个控制台直接看,但是现在我们看猫DB有一个客户端的工具,特别方便,就类似于买so中的SQ样,那这工具给大家快速介绍一下,很简单,咱们看一下啊,在工具中这个东西。叫做no circle boot starter,然后猫DB,然后用这个咱们先安装一下,安装之后我这里边应该已经提前装过了,就这个工具,咱们把这工具打开。
26:08
比如给它打开,然后打开之后在里边我们连接上猫DB。咱等它打开啊。我强调这个工具是免费的,你可以直接用,不需要做什么其他处理,免费版最后咱们使用了,然后在里边第一次你进入,首先你可以先创建一个连接,在里面创建,我已经创建过了,就是这个链接,你看一下我创建这个啊。首先有他的服务器的地址,包括这是我起的名字,另外有他的端口号,咱们默认是27017,然后你把它就是都填写之后,最终给它保存并且连接,然后最终我们看到就是这个界面,在这里边大家看这时我们刚才那个数据库就是预约挂号hospital people里边有一个叫hospital,这个就是collection,然后在这里边咱给它双击打开。
27:01
大家看里边是不是就有我们刚才加进来的数据,数据是不是有了,包括你看里边有这个相关的内容都加到咱这里边来了。所以这样的话呢,咱就完成这个上传医院接口的初步开发,通过咱们的医院模拟系统已经完成测试,包括这里边的显示,咱一会儿来实现这接口没有写到,咱现在只是把添加功能给它就完成了,所以各位要掌握我们刚才这个开发的过程,最终数据就加到数据库,特别强调就是在Rep里边的这个方法,因为我们这个spring data里边,它可以直接支持猫DB,按照它的规范,你命名的这个方法,猫DB就会帮我们实现这个功能,但是如果你不这么习惯,你可以自己单独去写这个方法也是可以的,只是这里边方便,不需要咱这么做,直接按照规范就可以帮我们实现相关的操作。
28:00
所以这样的话,上传医院接口我们就初步完成了。
我来说两句