00:00
下面呢,咱们开始写这个新关接口,首先呢,我在CTRL里边我们创建一个接口叫we chart controlr了,那现在啊,我来做个创建,咱们来到这里边把这个controller创建出来。创建之后呢,在CTRL上面加上相关的注解,这个我直接复制过来,我们加上这个CTR了啊,然后加上一个叫。Request mapping里面加上。现在啊,这个就完成了,然后加的时候呢,大家注意啊,这里边有一个细节问题,咱们仔细看啊,咱们对比来看,之前咱们加CTRL上面的,我们加的都是这个主解叫control,但是目前我加的是什么,是不是叫control,为什么这么加,各位要明确啊,如果说你加controller最终是不是会返回咱们相关的Jason数据,而加controller是不是能进行我们的页面跳转,比如说大家看我的这个课件里边啊,我们这么写。这句话什么意思?是不是就表示重定向到这个路径中去,所以咱们为了能做这个页面跳转,或者说路径跳转,而这个时候如果说你也是想返回数据,那怎么做?咱们在方法上是可以加上这个注解,叫response body,表示反真的数据,所以咱目前加的是一个controller,这个位明确啊,然后加上之后在里边我们继续来写一下这个具体代码。
01:25
那咱们来看一下啊,首先在里边我们先注入一些相关的service,为了一会使用一个叫system user service,一个m service,把这两个咱们先进来。那这里边我来写一下啊。Private system user service。然后继续进行注入。微信lp service,然后这个之后呢,这里边我们在做下一件事情啊,刚才我在配置文件中呢,曾经写了一个就是我们进行回调的接口路径,所以现在啊,我把这个值给它得到,那怎么得到多种方式啊,我们可以直接用个注解叫at value加上表达式得到,然后最终做一个注入啊,那现在我们用这个给他获取一下啊。
02:19
我在里边一个属性private user u,面解value value,然后在里边加上表达式,根据它的名字把这到它的名字叫web chart,点上这个user ul。注意啊,这名字不要写错啊,建议各位最好直接复制过来,你手写很容易写错啊,写错的话,那你值肯定就得不到了,所以现在啊,把这些基本的值就得到了,然后得到之后下面呢,我们在里边写一下我们刚才说的三个具体方法,User,还有这个,那咱们啊先看第一个方,就这个这个方法,我把这方法这个结构复制一下,然后里边内容给大家具体来写一下。
03:10
那咱们啊,看一下这个方法啊。咱们讲这里。首先啊,我们用的是get提交,加上这个路径right,然后在里边第一个参数就是我们最终授权成功之后,它会返回这个路径,咱们叫ul,第二个有个快对象啊,但是快的咱应该没有用到啊,给它也放到这里,然后下面写咱们的具体代码。那这里边怎么来做呢?我们来写一下啊,们用我们刚入这个P方这方法get o out to service,就是咱们进行这个to这个授权操作,然后在里面加一个方法叫build out,这个ul,然后这里边呢,我们传入注意啊有三个参数给大家特别说明啊,三个参数首先啊写一下就是这个方法中咱目前传入的有三个参数,包括咱可以看一下啊这里边。
04:10
三个参数,那三个参数是什么呢?我们来说明一下啊。三个参数,首先第一个参数就是你要进行那个授权的那个路径,通俗说就是咱们在哪个路径里边。啊,哪个路径中要获取到你的微信的信息,咱们这个路径是不是就是这个user info这个路径啊,这是第一个参数。除此之外,里边有第二个参数,第二个参数是一个固定值,表示咱目前做的这个就是一个授权的这个类型啊,它是一个,比如你是网页端还是微信公众号,还是什么方式做这个授权,这是我们的第二个就是一种授权的这种类型,这各位明确啊,比如说咱可以写一下,然后这个类型咱可以先写一下啊,在这个微信里边啊,有一个常量类,它叫微信。
05:03
第一个应该叫cons。啊,写到这里啊,写这个。这个,然后在里边有这么一个,它叫做scope,点上里边的这么一个,目前用的应该是他做这个授权啊,它是一个。常量的这么一个,就是目前咱用的是这个固定值啊,表示你的类型,看你用的是哪种方式,然后之后呢,里边啊,还有第三个参数继续写一下啊第三个。第三个参数是什么呢?你可以这么理解,当你授权成功完成之后,它会跳转的那个路径,那咱们跳转路径应该就是我们在页面中传过来的是不是这个URL这个路径,当你首先成功之后,是不是就回到这个路径中去,但是路径中有个问题啊,咱之前把这个井号给它替换成了硅谷OA,为了传递中这个问题,所以咱们需要把这个硅谷OA给它,再转换回成这个井号啊,再给他。
06:09
转换成这个井号,为了最终能跳转,因为我们的路径中这个位置都带一个井号,那把它之前做了一个转换啊,所以这是我们要写的这个三个参数,那下面在里边写下这个操作啊,第一个传入我们这个user in for ul,就刚才咱们通过表达式取这个值,然后第二个传输一个类型,是一个固定值,通过它的常量我们直接得到。第三个咱们传入那个地址啊,但这个地址呢,注意啊,因为咱们需要给它做一个转换啊,给它把那个硅谷OA变成这个井号,所以咱需要给它具体写一下啊,但是这里边我们一般来讲路径嘛,一般都要做一个这个叫URL已扣的这个编码式给加上我这个。
07:04
瑞屯。Ul点上这个replace,然后把里面这个叫硅谷OA。替换成这个角。井号啊,给它再替换回去。所以现在啊,这一部分我们就完成了啊,就是里边这么一个基本的一个结构,然后这个完成之后,咱最终啊给它就是。返回这么一个值,这个值我们起个名字就叫这个,呃,比如就叫redirect。URL。所以现在啊,把这个我们就完成了,这是我们写的一个基本结构啊,然后完成之后,我们后面啊,就是在里边我们可以给它就是做一个存就可以了,蕊退到这个地址中去就可以实现。那最后啊,吞一下啊,这个呢,我就从里边复制了啊,就是咱们的这个代码啊,把这个拿过来,所以现在啊,咱们里边的这个方法我们就完成了。
08:05
Direct啊,应该是这个地址啊。Ul。把这个拿过来啊,现在这个all right方法就完成了啊,完成之后呢,里面一个小问题,你看这位置啊,其实这个方法是不是过时了,其实这么用也可以啊,过时什么原因,因为这里边我可以加上一种就是编码方式,你用这个是条杠八,而JBK编码啊,这里边可以加上,比如说你可以这么讲,加一个叫UTF杠八。加上之后呢,这里边有一常咱可以做一个TRY开始给他处理一下啊,所以现在啊这么做就可以了,以上啊是咱完成第一个方法,这个all net方法,当这个方法完成之后,我们一进行这个微信的授权,这个登录或者授权操作,然后这个时候它就会自动跳转到你设置这个进行获取信息的方法中,咱的方法是里边的这个路径。
09:00
叫做web chart userf,所在下面呢,来写一下这个方法,在这个方法中得到你的微信信息啊,所以下面我们继续来写一下啊,下一个方法。我写到这个位置啊,然后这个方法它的前面部分,我从里边直接复制一下,里边内容咱们详细写一下。我写到这个位置啊。这个方法特别说明啊,就是当我们现在进行授权的时候,首先我们执行这个outlet方法,在这个方法中我们设置这个授权的这个路径,在路径中能得到你的微信信息,当我们一执行之后,它就会自动跳转到这个user侧info,就是你的路径的方法中来,因为咱的路径叫预色info,然后它在跳的过程中会向路径中给我们传递两个值,一个值叫code,一个叫ul,啊,什么意思呢?主要是这个code啊,这个用途不是特别大,主要是code,当然这也有用啊,咱说这code什么意思,你可以理解为啊,这个code叫临时票据,就类似于咱们那个手机验证码,咱通过它才能完成我们后续操作,所以它里面给我们传一个值,叫做code的值,那下面我们来写一下啊,大概怎么做?这是由微信帮我们做到的。
10:17
那我们下面做法就是呢,解一下过程啊,首先我们先要获取到一个内容,这个内容它叫做access token。什么意思,就是咱说的访问凭证啊,通过这code值得到,然后得到ton之后咱们拿着这个值再去得到里面那个叫open ID啊,就是实用。Token,从而获取到这个open ID。因为咱们最终目的是不是就为了得到这个open ID,就是你微信的微标识啊,所以现在我们需要这么来做,另外通过这个还能得到你最终那个就是微信那个用户的信息,但是咱们其实主要得到这个open ID就可以了,那咱们来看一下怎么做到啊,同样啊,调用我们那个叫微信MP service,里边有一个方法,这方法叫get to service,然后里边一个方法叫get access token,在里边传入这个code值,就咱说这个临时票据最终返回到就是这个,它的全称叫微信OS。
11:27
啊,这是第一部分,然后得到之后,我们的第二部分,咱就可以拿着这个token里边的方法叫get opend,得到你那个微信的open ID,这个可以得到啊,这是咱做的第二部。然后这个得到之后呢,为了咱们一会儿测试方便,我把这值啊,咱们给它做个输出,为了咱看着方便啊。Opd给它输出一下啊。为了我们测试进行使用啊,所以现在这个值得到,然后这个值得到之后,我们下面怎么做呢?咱们使用这个ton,其实可以得到你那个微信的信息,就是微信那个用户的信息啊,这个也获取一下啊,获取微信的用户信息,我们来得到一。
12:13
微信MP service,点上get to service啊,这方法都很熟悉了啊,Get user info传入Ken啊,然后第二个参数没有就来一个,那最得到就是这个微信的用户信息,就是这个对象,你看这个名字啊,叫那给起个名字啊这个。MP。咱可以把这个啊,给它做个输出一会做个测试啊,我给他就直接输出一下啊。呃,因为这是一个对象啊,咱这对象我这么来做吧,给他转成一个Jason啊,给他做个操作加这个叫。Jason。
13:02
然这里个注释的。所以现在啊,这部分完成,然后完成之后下面做什么呢?就是我们刚才说那个逻辑,各位应该记得啊,咱刚说过,咱做法就是根据op ID查咱的用户表,看用户表中是否存在这个信息,如果说你存在表示绑定过了,那我们就生成ton,最终完成这个跳转,如果不存在,那咱就绑定这个手机号啊,调用方法进行绑定,所以现在啊,根据UID,咱就来查一下我们的用户表。那这个位置我来写一下啊,这个操作。这位置根据ID查询用户表,咱们来查一下啊,加上DA,然后。等于上一个lada rapper,在rapper里边设置它的条件。
14:06
咱们设立一下啊。S。USA。然后加上这个啊,就是get这个open ID啊,后面传入open ID值,现在条件就完成了,完成之后咱们调方法来查一下啊,刚才service已经注入过了。咱们调这个叫。因为派值肯定是唯一的啊,它肯定不能重复,最终返回一个用户对象,现在就得到了啊,得到之后呢,下面咱们进行判断。判断open ID是否存在啊,那我写一下啊,加上一个。就是如果说啊,这个open ID,它查出这个对象不等于空,就是这个system user,它不等于。
15:02
那就表示它已经存在,如果已经存在的话呢,那咱就根据它那个ID和名称生成一个token最终返回啊,如果不存在,那我们就调用这个方法进行手机号绑定,这个过程在前端已经处理过了,如果等于空啊,咱就弹框绑定,不等于空,我们直接完成后续流程,所以咱下面啊把这个token生成一下。那生成的时候呢,首先我先在外边写个变量。偷开在这个位置,咱们给它生成下。Token等于这个叫j w helper里面一个方法叫token,通过这个用户的ID。加上这个用户的名称啊,咱最终生成一个token字符串,所以现在就完成了啊,然后最后我们给他做一个啊,就是返回到这个,你看里边有一个路径啊,Ul就到我们这个路径中去给它一下啊的这个路径,但是核心是在这里啊。
16:07
那最后这个代码我就复制了啊。最终redirect URL,然后在里面传入你的token啊,包括opd都给它通过路径传递过去。最后这个啊,我写到这里。所以现在啊,咱们把这个方法user info这个方法完成了,得到微信的open ID,然后这个完成之后,这里边还有最后一个方法,比如你现在啊,在你的表里边没这个数据,咱们肯定要绑定手机号,那我最后写这个绑定手机号这个方法,把这个咱们最终完成。这个啊,拿过来咱们写一下啊,首先大家看啊,在这里边呢,我们加上一个名字叫这个band phone绑定手机。这刚说过啊,各位应该记得什么意思,咱们当前这个类上面加的是通过它我们能跳转到你的具体的径中去,或者说你具体的页面里面去,但是现在如果说我想返回数据加CTR,它就返回不了,所以我们加上一个respond包底,为了能返回真的数据啊,把它加上,然后在里边我们传入一个叫band phone VO里边有我们相关的这个信息。
17:26
咱们看一下啊,手机号op ID啊,主要就这两个值,然后在里边写一下我们的这个绑定手机号的过程,那怎么样一个流程呢?刚才咱也说过了啊,首先第一步。写一下啊,根据手机号去查询数据库啊,看这手机号的信息在里边是否存在,如果说已经存在,就更新这个记录,把那个open ID更新进去,如果不存在,提示用户说这个手机号不存在啊,请联系管理员去修改。所以咱们现在就来做这个事情啊,因为实际中都是管理员先把公司员工信息都加进去,谁登录谁进行绑定,如果你改的手机号,那你联系管理员进行这个修改。
18:12
那下面咱们来写一下啊,加上lada query rapper。Rapper等于上一个lada rapper在rapper里边设置这个条件,就是咱们那个手机号这个信息。我加上啊。这个。User加上手机号应该是这个phone,然后手机号从band view里边咱们给它取到,这就是设置条件,设置条件之后我们调方法做一个查询。调用里面那个get啊入你的per,最终返回一个侧对象。这第一步完成,完成之后咱做个判断啊,写到这里,如果说啊,你查询出来这个user对象。
19:05
就右侧。它不等于空,那表示表里边存在,存在的话,那咱们进行更新啊,更新的话就简单了啊,我这里一块都写一下。咱们加上system user,点这个open ID,把ID给放进去,通过这个给到。然后取到之后咱们调方法进行更新,就是这个update ID。传入这个对象,现在啊,这个就完成这个代码各位应该很明确啊,应该没有啥难点啊,应该能很快的做到,然后之后最后啊,咱也是给他返回一个token,把token生成最终return。因为咱是用token进行这个判断啊,都给它生成一下。点上create,通过里边的用户ID。
20:00
还有这个用户的名称最终生成,然后最后我们加上一个退。result.ok。加上。现在啊,这就完成了,然后这里边还有另外一个逻辑,如果说啊,这个手机号一查它不存在,那咱就直接给他返回一个错误提示,比如加个result点啊加个提示,然后file里边比如提示啊说这个。手机号不存在啊什么请联系管理员。修改。现在啊,我们就完成了啊,所以以上呢,咱们就把刚才分析的三个方法就做到了,我最后重复一遍啊,然后咱往下来做这过程就是啊,写了很多的流程,但是其实代码并不复杂,各位把这流程一定要弄清楚啊,咱们的做法就是首先啊,我们进行微信授权,进入到我们这个all方法中,设置你哪个路径中要进行这个获取微信信息,包括你最终授权成功之后跳转的路径。
21:07
而咱们现在第一次肯定没有授权,那他会到我们这个路径中来,在这里边进行这个获取,获取过程中得到俄菜的ton,最终得到open ID,拿着open ID咱们查数据库,如果数据库里边已经存在,咱就生成token返回,如果不存在,那表示之前没绑定过,咱就绑定手机号,在绑定手机号的时候,根据手机号去查数据库,如果里边存在更新open ID,不存在提示信息,因为实际中我们都是管理员一次性把公司员工都加到你的这个数据库中,谁用微信登录,谁就去绑定关联这个账号。所以咱们现在啊,把这个过程我们就最终完成了,这是我们写的这个代码。然后这个完成之后,我们继续来看啊,咱们下面做什么呢?需要在这个里把些给排除,这个是可以T这个安全这个相关的控制,那这个我们给他直接复制改一下啊。
22:11
咱们找到这个配置文件。在这个w security里边,这个配置文件我们找到啊,就这个web security config,然后在配置文件中,我们看下面这部分啊,我把它就直接替换掉了,大家看了一遍啊,咱刚才加的这个第一个,第二个user INF,第三个把你的phone是不是都加进去了,把这个排除掉这个security这个控制外边。啊,所以现在啊,这一步就做到了以上啊,是咱完成这个。授权的相关接口开发这个咱们就做到这里啊。
我来说两句