00:02
各位同学大家好,我们继续来开发登录的功能,刚才呢,咱们搭建了登录的微铺模块,把环境中的controller service,包括map,包括配置内,我们都本着创建,那咱们下面的就开始开发里面的登录接口,那下面我们来做一下登录接口中,因为咱们首先要根据手机号进行登录,到后面咱要用这个微信S码登录,所以咱们首先先开发这个根据手机号进行登录接口,那登录的时候呢,因为咱们要传入你的手机号,包括你的验证码,所以咱们在传的过程中,我们可以写一个voda,这个VO类我在里边已经创建过了,那我们来看一下啊,在里边也个VO类,就是VO中的user。然后大家看到是不是一个叫log in view来用它对咱们传递的这个十几类,包括你看手机号,密码等信息。那下面我们写一下这个接口,它就是用户手机号登录的这么一个接口,那接口中首先我们先来一个提交方式,然后在里边呢,给它起个名字,我们就叫捞,下面写上它的方法,那我们来开头写一下public result。
01:21
然后给它加个名字,我们就叫捞,印在log in中呢,传递我们这个参数参数,因为咱们用VO,所以我加上一个注解,咱就用这个request body,通过传递我们加一个log in VO。然后它叫loging view,这样的话呢,把这参数可以传进来,然后传过来之后咱们在CTRL中是不是要调用service中的方法,那我现在在里边,我把service它就注进来,我们来最后注入加一个private user info。Service。咱们调用service里边的方法完成最终的登录,那所里边我写个方法就叫log in user,然后把这个log in VO传进去,而登录之后呢,这里边咱可以返回去信息,为什么要返回信息呢?给各位说一下,因为咱们登录之后是不是要回到这个页面中啊,而在页面中的这个位置要显示的是不应该是你的用户的名称或者用户名称,包括你后面操作中是不是都需要判断你当前这个是否是一个登录状态,所以咱们需要反回一些登录信息,那登录信息中呢,因为会有很多信息,所以咱为了方便我就返了一报麦集合,为了方便咱们后面的操作。
02:45
那脉络结构中等,我把它的K写成一个string。Y6,我们写一个就返回写信息,然后信息反应之后,最终咱给它加一个between,然后把这个CTR了,咱也写完return result。
03:04
点上OK里边传这个OL,所以这样的话CTRL了我们就完成了,根据手机号加上验证码完成这个登录,然后写完之后咱们下面来写这个就是service里面的方法,那我在service中把这方法首先我们先做个创建。然后创建之后来到它的实现类中,在实现内中,咱把这个方法做一个最终的实现。那现在我就来写一下这个方法,那这个方法怎么做,我把步骤给大家写一下啊,首先第一步,因为咱要得到我这个就是注册,包括登录里边那个手机号,包括我们的验证码信息,所以第一步呢,扫码信息是不是可以先给他获取出来,也就我课件中写的这个位置,先得到你的手机号,还有你的验证码,这是里边的第一步,我写一下啊,就是从这个。Log view里边先获取咱们输入的这个手机号和咱们的验证码,这是第一步,然后得到之后我们的第二步先判断这些值是否为空。
04:13
就是判断一下你的手机号和验证码是否为空,如果为空的话,那我们就直接抛弃成,如果不为空,咱们再往下操作,然后这个做到之后,我们的第三步就来验证一下,或者说验证,或者说判断一下你的验证码是否一致,也就是说咱们手机上的验证码和我输入的验证码是否一致,我写的详细点。手机验证码和我们输入的验证码是否一致,这是我们的第三步,然后这个如果说不一致,咱直接抛异常,如果一致的话,大家说怎么做。又怎么做,下面是不是要判断一下我当前是否是第一次登录,如果第一次登录,那我们就做一个注册,如果不是第一次,那我们就直接进行登录,所以它是下一步,然后写一下判断。
05:11
我们是否是第一次登录,那怎么判断呢?咱是不是可以根据我的手机号去查询咱的数据库,如果说里边就是不存在。我这个相同的手机号,那表示是不是就是第一次登录,如果第一次登录的话,那咱把它就注入到或者说注册到我们的这个数据库中,如果说它这里边不是第一次登录,那我们就直接进行登录,就是不是第一次。咱们就直接进行这么一个登录,所以它里边就是这么一个流程,然后登录之后,咱们最终可以反问一些登录之后一些信息。然后信息反映什么呢?比如咱现在我可以返回我登录之后那个用户名,为了咱后面在页面中显示,另外我还可以反一个东西,就是一个叫token的这么一个信息,那token什么意思呢?给各位先简单说一下,咱又会具体说,比如咱们看到啊,我现在再来到我的页面中,比如我登录之后这个位置是不是要显示我的用户信息啊,而我下面的每个操作是不是都要验证一下我当前是否是一个登录状态呀?而登录状态其实就是判断一下你当前是不是是否进行过登录,那怎么判断?一种很简单的方式,咱就可以把我的登录这些信息放到一个随机的一个字符串中,当我判断字符串中有的信息,然后咱就可以做登录,但是这个过程呢,咱也可以用session来实现,只现在咱用token,而token能设置它的有效时间,比如说我设置这TOKEN30分钟之后就失效,然后你再进。
06:58
操作,他就告诉我们没有登录,你需要登录之后才完成。
07:03
所以这里边我们就反一个token,而token呢,咱一会儿通过这种方式叫JWT生成一个字符串,包括里边有它特定的结构,这样一会来说,所以现在呢,我先把service按照咱这结构先给它完整出来,所以这是一个基本分析,那下面呢,给各位我来写一下,按照我的步骤啊,第一步现在到我们的信息,那信息中第一个信息。就是我们的手机号这个座位。把这个得到,然后得到之后再得到第二个。里边这个验证码就这个扣的,这是它的两个值,然后得到两之后,下面咱做个判断,判断两个值是否等于空。那我来写一下。然后在里边我来写。String us.ism第一个手机号,然后第二个是我们这个验证码。
08:00
比如说这两值有任何一个等于空,那我们就直接给它可以抛出一个异常,那异常我来抛出一下,咱直接RO。子肉啊妞,这么一个,就是我们之前定义那个自定义一层,也就是这个异常,我把这个给各位就直接复制过来。咱们之前写过这一场叫做预约挂号exception,然后里边给它传入这么一个状态码。所以这是我们的第一部分,判断手机号是不是等于空,如果说手机号不等于空之后,咱下面呢,再来判断我们的验证码是否一致,也就是你手机号上的验证码和你输入验证码是否相同,因为验证码部分呢,咱需要整合阿里云中那个短信服务,就是咱一会儿做的那种,所以这部分呢,我先给它加个注释,咱们一会儿做完善,我加个土度,咱先放到这里,先把这流程给他先走通,一会儿再完成这个。
09:01
短信的一个发送,然后这个做到之后再看下一步我们就判断一下我这个是否是第一次用这个手机号登录,如果是第一次,那把它就加到数据库中,那怎么判断,这里我也写到了,咱们根据手机号去查询数据库就可以了,那我来查一下啊,在里边呢,咱就调这个叫base map里面这个方法叫做我写一下。Light y,然后里边呢,传入咱们那个条件,那这条件我来写一下啊,我们加上一个叫query rapper。里边传一个叫user info,然后这位置我们叫per,等于new上一个query rapper,在rapper中呢,传入它的条件,咱们来上一个EQ,然后加上它那个字段,咱到表里面看一下啊,User info中它这个手机号的字段是不是叫做phone,所以我们就加上一个叫phone。
10:03
然后这里边呢,再加上我们那个手机号,就是咱们得到这个分值,然后得到之后把它传到这里面来,最终它就会返回咱这对象,我们就叫in in,而这对象如果说这对象呢,不等于空,那表示数据库中是不是已经存在手机号,那咱就直接进行登录,如果它等于空,那我们就做一个注册或者是一个添加,最下面我做个判断,我们写一下啊,就是如果说这里边的user in for这个对象。等于空,那就表示呢,咱们当前是第一次使用这个手机号进行登录,那如果第一次的话,那就把这信息可以给他添加到数据库中。那我们来做个添加,添加的话呢,就是调这个base map中这个添加方法,咱叫insert,然后里边传入这个对象就可以了,咱们做添加,那我在里边写一下啊。
11:05
User info等于U上一个user info,然后向里边的传入它的这些值,这些值我就从课件中直接复制的啊,就是里边的这些值。我把这个直接拿来,比如里边有名称啊,咱们就来个空的手机号,就是这个手机号,这是状态,我们来个一一表示可用,零表示不可用,也就是里边的打开里边这个字段部分。就这些值给咱们加一个CS,就是零是锁定也是正常,所以现在我们就完成了里边的这么一个定位结构,把这个就做到了,然后最终咱们把这个user info传进来,就完成这么一个静压操作,啊,这是我们写的这一步,然后这步做到之后往下看,如果说它不是第一次登录,那我们就直接进行登录,最终返回你的用户信息,在用户信息中有包含咱们的这些值,但是这过程中呢,其实咱可以再做个校验,就是校验我的用户啊是否可以使用,就就判断这CS是不是等于零,等于零,那我们就直接抛异常,这句话我就直接复制了,因为这比较简单。
12:16
咱直接做个校验,如果它等于零,表示用户已经禁用,直接抛出异常,如果他这里边这些条件都满足,最终咱就返一些信息。也就是返回我们的用户名称,包括ton也是里边的这个内容,那这段话给各位我就是直接复制过来了啊,因为这个。逻辑就比较简单了,咱看一下啊,首先我的做法就是new上一个哈希map,然后通过user info得到它的用户名称,因为咱要返回,如果名称等于空,我们得到它的昵称,如果这个还等于空,咱把手机号这给他返回,然后最终我们通过外往里边放这两值就可以了,第一个值就是这个name。
13:01
再放一下,然后第二个值就是咱我刚才说那个token token呢,比如咱会给它生出来,我先来一个空,比如咱会完成,然后最终把map做个返回就可以了,所以这样的话呢,咱就把这个S部分就完成了,也就是咱们这个登录的接口,咱做到了根据手机号加上验证码,最终完成登录,这是一个这个结构,在结口中咱有几个遗漏的地方,一会咱完成,我在里面都加这个注释啊,就是土图。这是那个token的生成,咱还有两个完善,第一个就是这个验证码的一个判断,一会儿咱会整合阿云个短信服务做到,然后第二个就是token的生成,然后用一个技术叫JWT生成一个token,最终完成这个用户的校验等等功能,所以现在咱就完成了一个最基本的接口开发,各位把这个能给他做到。
我来说两句