00:01
好,接下来呢,我们来看一下,在这面呢,我们嗯要插入这个用户信息记录,然后要插入这个用户信息记录啊,之前其实大家再思考一下啊,我们注册呢,表面上看起来就是一个向数据库中插入记录的一个过程,但是实际上呢,我们也要保证它的严谨性,比如说你的手机号已经被别人注册过了,你能不能再拿着同样的手机号进行注册呢?一定是不能的。所以呢,在呃,插入用户信息记录之前,我们先要检验一下当前的这个手机号是否已经被注册过,所以呢,是判断用户是否被注册好。You carry rapper user in for。嗯,然后接下来呢,我们。
01:01
有一个user info user info que wrapper.eq怎么判断呀?就判断手机号重没重复就行了,Mobile。然后呢,register.vo.get mobile啊,判断这个手机号是否有重复,好,然后我们在数据库中进行一个查询,被map.select啊,One呀,Select by,呃,Select one呀,Select count呀,都行是吧,我们用select count select。然后呢,这面是叫做user in for carry wrapper,我们得到一个结果就是这个count,接下来呢,aer.is数啊,Count。
02:02
等于零,那接下来呢?Response en.mobile error。好,这个是什么呢?是手机号已被注册,那这样的话呢,我们的这个判断呢,就先告一段落,然后接下来呢,我们再插入用户的基本信息,那我们要往user info表里插数据,所以呢,就是new user INF for,好,然后呢,User in for.site一个一个值给它设置一下吧,User type,它的值呢,来源于点get user type啊。嗯,然后接下来呢,就是下面这个user ino.site nickname啊,它的值呢,我们先暂来源于我们的v.get mobile,那么后期呢,我们会用啊这个做一个实名认证哈,然后做一个用户绑定,然后这个,那nameme呢,我们再去修改,然后接下来呢,User in for.site name啊,啊,其实这个是实名啊,Register vo.get也先暂时用mobile来代替,就没做用户个人信息设置,没做实名认证之前呢,我们先都用mobile来代替,然后接下来呢,就是user in four.set password password这一块呢,嗯。
03:40
哎,还有一个啊,我先把mobile设置上mobile,那么就是will.get mobile。好了,然后接下来呢,我们在password user in food.set password password这块呢,我们不能够把用户输入的这个密码直接存到数据库当中,我们要对它进行加密,所以呢,我们去引一个这个加密工具啊,在咱们的这个。
04:08
呃,Java代码U求就是前两天发给过大家。嗯,他有个MD。把这个MD5的引进来。啊,引到我们的这个鼓励中就行了。好,这是一个使用MD5进行加密的一个工具类,那所以呢,在这面呢,我们就是用一下它,那么就是MD5点。加密哈,对吧?啊,然后呢,就是we just we.get password,所以这块呢,是一个密码的一个初始设置,注意要对密码进行加密,然后接下来呢,就是user in for.site我们这里面还有一个status啊,这个status是什么呢?
05:06
这status呢,就是用户的状态,这状态呢,我们有锁定状态啊,有正常状态,那么这种状态呢,解决方案有很多啊,有用枚举的,有用常量的,假设说我们先用啊常量的这个方式来解决这个用户状态,那么啊我的习惯呢,就是在这个。这个状态所在的这个类啊,因为它也就是可读性就比较高,这样好在状态所在的类呢,直接定义两个常量,那这两个常量呢,我们定义一个就叫做正常状态,一个呢就叫做锁定状态,所以public啊,Sta,嗯,Final啊,常量嘛,Final哈,IN7啊,然后接下来呢,就是status_normalal normal1啊,然后同样的方式我们再定义一个status。Lock好,然后呢,这边呢,我们就定义零啊,那跟刚才咱们看到的这个就一样啊,这个两个状态哈,一个状态呢是一是正常,一个状态呢是零是锁定啊。
06:15
好,这样的话怎么去用呢?在这面我们就可以设置用户的状态了,那默认情况下呢,我们让这个用户的状态呢,先是正常状态,User in four.no normal。User in four。点status应该是大写的哈,User in four.state normal对吧?啊,这样的话呢,我们就把它的这个状态呢设置上,设置上之后呢,我们在user in for,还有一个啊,就是set had had image,一般情况下这个地方呢,我们会给用户提供一个默认的头像,然后未来他这个如果想修改的话,它可以修改成像是不是啊,所以这块我们就简单的处理啊,直接给他提供一个默认头像,默认头像的话呢,一般这个头像我们肯定是先维护在我们自己的静态资源服务器上的啊,然后先事先上传一张照片,然后在这个地方我们就直接把那个今天资源服务器上的默认头像的地址拿过来就行了,好,我们呢,上传一个头像,比如说阿里云。
07:29
然后在这边呢,点登录。阿里云。为什么这么红啊,最近。有什么喜事发生吗?这是。然后点登录啊。然后点控制台。
08:01
好,接下来呢,我们呃,点击我们的oss。好。接下来呢,我们看一下我们的这个s rb file啊,我们在这里面呢啊,就是简单的上传一张头像,就用之前我们上传的这张吧哈,就作为一个用户的默认头像,当然你可以自己传一个你自己喜欢的,然后呢,地址呢就是它了,复制文件URL,然后呢,接下来呢,我们在这个地方就把它写在这就行了。当然了,这个头像呢,你也可以用这种,就是比如说配置常量的方案呢,或者是一个编码的方案呢,都可以啊,比如说假设说我把它优化一下啊,我把它配置到那个我们这个常量里面来。或者是你甚至可以把它配到你的配置文件当中啊,都可以。然后final对吧,这个是string啊,然后这个是U对吧?啊,那这样的话呢,我就给他做了一个优化,然后呢,后面这个头像呢,我就可以直接取这个优。
09:17
User in four.user want是吧?嗯,这头像,然后再接下来呢,就是对map.insert然后呢,这边呢,我们就把user in for呢给他存进去就可以了,所以呢,这块是插入啊用户的基本信息,然后呢插入用户账户这块也是一样的new user account,好,目前为止的用户账户呢,还没有余额啊,所以呢,User account点只set一下user ID就行了,让它和上面这个user INF for呢产生关联关系,所以user info.get ID,只要user INF for insert user in for的ID就会自动给生成出来,生成完了之后呢,它的ID我们就把它取出来,然后放在user count里面,但它们俩之间关联,那这样的话呢,我们先把user account呢先给它存进去,所以呢,我们这个时候呢,要用到user account matter了,那就不同于user matter啊,不同于base matter,我们呢,给它注。
10:17
注入一下,就在这个地方呢,我们写read source user account map user count map,好,然后接下来呢。我们在这面呢,给它调用一下user counter.insert嗯,User account,好,这样的话呢,我们这个就。写好了,写好了之后呢,上面这个位置我们呢,写一个transaction啊,Roll roll back for,嗯,Exception第2CLASS就可以了啊好,那这块呢,是我们啊整个的这样的一个业务层的一个。
11:11
处理啊,所以呢,呃。在接下来呢,我们再对它进行一个简单的测试。嗯。然后接下来呢,我们来看一下,在啊我们这上保证网站上,我们注册一个用户,注册一个投资人1376681663啊,然后获取验证码。好,然后我们来看一下这个验证码。
12:02
6309哈。然后这面呢,我们123456啊不谈了,然后接下来呢,点击下一步。好,然后这边呢,就恭喜您注册成功,我们来检查一下数据库。数据库中看看这两个表中是不是有这个内容插进来了这个数据对不对,还有呢,就是啊,有看。看看是不是插进来了这个数据,那么同样呢,我们也可以做一个啊,就是。另外的一个测试啊,13766816630好已经注册过了是吧,这个账号短信发送,然后在这个地方呢,我们可以看一下。这个。验证码5503。啊123456,然后点击下一步,然后手机号已被注册对吧,所以这个是已经被注册啊,这样的一个提示结果啊,啊当然了,你也可以把这个过程提前到获取验证码这块,就是啊我们之前的那个啊获取。
13:18
验证码的那个这个这个这个东西啊。大家思考一下,我获取验证码的代码在哪?获取验证码的代码好像是在这个位置吧。是吧,这是获取验证码,我如何在获取验证码的过程当中。去事先校验一下我的这个用户是否已经注册,能听明白吧?啊,因为刚才我是怎么做的,我是先获取了验证码,然后验证码拿到了,然后在这输入验证码,输入完验证码之后呢,点下一步,诶发现手机号也被注册了,那我们能不能在获取验证码的时候就去校验一下数据库当中到底这个手机号有没有注册,如果已经注册了,我验证码我连发都不发。
14:11
是这个意思吧,啊,所以大家思考一下这个问题啊,看一看这块怎么优化,这是我们后面要给大家讲的内容,好然后现在咱们就先按照。这个流程去做就可以了,那嗯,这是刚才的这个过程,那刚才这个过程有没有问题呢?大体上看来没有什么太大的问题啊,但是呢,还是希望大家能够多思考思考,对这个后台的功能呢做一个优化,那么大家想前端这块实际上呢,正常情况下我们是要做表单校验的啊,但是由于因为是前端的功能,我们就尽量能省则省了啊,就给他简化了,但是不意味着你不要写啊,我们至少是校验了一个什么呀,校验了一个这个手机号是否输入的这样一个功能啊,然后呢。呃,前端如果做表单校验,我们说是为了用户,提升用户体验的话,那么后端后端我们要不要做啊,后端也要做,后端做这个校验呢,是为了防止恶意攻击,所以呢,我们防止有些人绕过,假设说我们前端做了完整的这个表单校验啊,包括判判断了手机号对不对,包括判断了手机号存不存在,包括判断了用户验证码是没输入,包括判断了用户的密码是没设置,以及用户的密码是不是按照这个规则设置的啊,假设说我们前端都判断了,然后我们再点击下一步,那么后端要不要在做校验。
15:36
也是要的,那有的同学说前端都做了,后端有必要做吗?因为有一些恶意的用户,他可以绕过前端的校验,直接对你后端的接口发起请求,那这个时候如果你后端不做一些必要的处理的话,那么很有可能就会被攻击啊,所以说呢,我们后端呢,也要做一些校验,那么我们呢,在这个地方呢,对后端做一个简单的优化啊,啊怎么优化呢?就是啊给大家提供一个思路,就是一般情况下,像这种大量用户输入参与的操作呀,我们在这个地方呢,要对用户输入呢做一个判断啊,包括mobile,包括code,包括password哈。
16:15
String,然后password啊,等于just.get password好,然后我们怎么去判断呢?我们先呃ER第二啊,先判断一下not am not am啊,就是这个mobile呢,它不能为空。啊,所以如果一旦为空了的话呢,那么我们就response in um mobile呢,Not,我看一下啊,Mobile呢,Non I啊,这个是手机号不能为空对吧?啊,然后这个是判断手机号的啊,Not empty,然后另外呢,我们再判断一下这个password和coldd是不是都不能为空啊,如果是password为空的话呢,我们就password none,如果是code为空呢,我们就是code none error,然后最后呢,咱们再判断一下这个手机号正不正确第意啊,Third点嗯,Is true啊。
17:21
As处有一个正则,还记得吧,嗯。嗯。Validic YouTube哈,然后接下来呢,点check cell phone啊,然后呢,这块呢是mobile啊,然后呢,就检查一下这个输入的手机号是不是一个合法的手机号啊,如果不是呢,我们就返回一个错误信息,叫做response in um叫mobile还是吧啊那同时呢,大家这个呃,正则呢,可能跟你的这个互联网的这个手机号啊有点不一样,它这个就是幺就前面是。
18:01
就必须是幺三的是吧,幺三几或者是幺四几,或者是幺五几啊,或者是幺八几,有的同学手机号是幺七几,那你就补充一下的是吧?啊,比如说你手机号幺七几,你在这块补充一下幺七几,你说幺七那个可能是从零到九都有可能,那你就170到九对吧,你这个正则你自己给他优化一下就行了,因为现在互联网的这个运营商出的越来越多了,所以这个手机号的号段呢,就就越来越广泛了,那所以呢,我们就可能有一些这个手机号的这个校验规则呢,就是有一些跟不上互联网运营商的发展速度了哈,所以你把它扩充一下就可以了啊好,那这块呢是我们的。一个手机号的一个校验的一个过程啊,所以呢,我们来看一看吧,嗯。重新启动一下。
19:11
好,启动成功了,然后接下来呢,我们在做最后一遍测试,嗯,13766816630,当然了,这个是获取验证码的时候,我们还没有去这个做这个后端校验,我们先这样写5425。然后假设说这个密码我没输入对吧,然后点击下一步。然后他说密码不能为空,是不是啊,这个时候你验证码,比如说你忘输了,然后嗯。密码写的验证码不能为空是不是啊,所以就这样去写就可以,然后手机号也是一样的,比如说嗯100。就买什么来着,五是吧,啊下一步手机号码不正确,当然我们用户自己输入的时候,不可能就是像这种出现这种特别明显的错误,主要就是为了干嘛呀,防止恶意攻击啊,就有一些人恶意,他就想去搞你这个后台系统,那你就要做充分的这样的一个测试,做充分的这样的一个校验,好那这块呢,就是我们完整的啊用户注册啊的一个实现。
我来说两句