注册功能(接口)| 学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 注册功能(接口)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)注册功能(接口)学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11449


注册功能(接口)


内容介绍:

一、创建实体类

二、controller 创建注册的方法

三、编写 service

四、运行并测试


注册是传数据到接口中,在接口中得到数据,再把数据加入数据库中。在注册过程中除了最基本数据外,还有手机的验证码需要判断。


一、创建实体类

用于封装注册数据,包含验证码属性

打开 Service-ucenter——src——main——java——entity,创建一个包用于写创建类,写上相关的属性。

@Data

//类的注解

public class Registervo{

@ApiModelProperty(value =“昵称")

private String nickname;

@ApiModelProperty(value =“手机号)

private String mobile;

@ApiModelProperty(value =“密码)

private String password;

@ApiModelProperty(value =“验证码)

private String code;


二、controller 创建注册的方法

//注册

@PostMapping("register")

//传入第一步创建的数据类“registervo”

public R registerUser(@RequestBody RegisterVo registerVo){

//得到数据后,调用 service 中的方法把数据加入数据库。

//方法名为“register”,register( )方法中传入registerVo对象

memberService.register(registerVo) :

return R. ok();


三、编写 service

编写 service 来对最终的方法进行实现

1.注册的方法

在实现类中创建注册的方法,写出具体功能并不复杂,只需要实现将数据放入数据库中,其中最重要的是加入手机验证码判断。

@Override

public void register(RegisterVo registerVo){

//获取注册的敷据

String code = registerVo.getCode( ;

//手机验证码通过code传递

String mobile = registerVo. getMobileo;

//手机号通过Mobileo传递

String nickname = registerVo.getNickname( ;

//用户昵称

String password = registerVo.getPasswordo ;

//用户密码

2.非空判断

上面依次得到需要的数据,接着依次判断以上值是否为空值。

if(StringUtils.isEmpty(mobile) ||StringUtils.isEmpty(password)

||StringUtils.isEmpty(code)||StringUtils.isEmpty(nickname)){

throw new GuliException(20001,"注册失败);

}

//如果任意值为空值,就显示注册失败,因为注册时这些值都不能为空

3.获取 redis 验证码

判断验证码是否正确,即判断输入的验证码与发送到手机上的验证码是否相同,前面等步骤把验证码存放入了 redis中,故可以直接将输入的验证码与 redis 中的验证码作比较,判断是否相同,相同继续向下执行,不相同即失败。

//先向 Msmcontroller 中注入对象

@Autowired

private RedisTemplate <string,string>redisTeamplate;

//通过 redisTemplate 从 redis 中将数据取出来,根据手机号取验证码

String redisCode = redisTemplate. opsForValueO.get (mobile);

//如果不相同或者验证码失效,提示失败。

if(!code. equals(redisCode)){

throw new GuliException(20001,"注册失败");

}

4.判断手机号是否重复,表里面存在相同手机号就不会进行添加

注册手机号不能重复,即手机号注册一次后不能再次注册相同手机号,如果注册的手机号已经在数据库中存在,则不会再添加,如果不存在才可以向数据库中添加手机号数据。

//查询用户表UcenterMember,根据手机号查询。

QueryWrapper<UcenterMember> wrapper = new QueryWrapper<>();

wrapper.eq( column:"mobile" , mobile) :

//判断里面是否有数据,值等于0代表没有数据,值大于等于1代表有数据

Integer count = baseMapper.selectCount(wrapper) ;

//判断值是否大于1,大于1则代表有重复值,提示注册失败。

if(count > 0) {

throw new GuliException (20001,"注册失败");

}

5.数据添加数据库中

//传入数据

UcenterMember member = new UcenterMember() :

member. setMobile(mobile);

member. setNickname(nickname) ;

member. setPassword (MD5. encrypt(password)) ;

//密码需要加密 MD5. encrypt(password)

member. setIsDisabled(false) ;//用户不禁用

member. setAvatar(“图片地址”)

//Avatar 用户头像,头像默认为“图片地址”

baseMapper. Insert(member)

//调用方法将以上数据都加入数据库中。

6.在实体类中修改以下内容

ApiModelProperty(value =“创建时间")

@TableField(fill = FieldFill.INSERT)private Date gntCreate;

@ApiModelProperty(value =“更新时间")

CTableField(fill = FieldFill,INSERT

)

private Date gmntModified;

总体过程:

第一步建立一个实体类,传入几个属性,其中最主要的是验证码;

第二步在 controller 中得到这些个值,在 service 中写上具体过程(先判断是否为空值,再判断验证码,redis 中的验证码是否与 code 中的验证码相同,相同继续向下执行,不相同则程序异常;

最后判断用户表中是否有相同手机号,有相同手机号则提示异常,没有相同手机号则将所有数据加到数据库中。)


四、运行并测试

1.运行

打开 Swagger UI,

image.png

controllerr 中找到注册的方法。

image.png

在注册中传入数值,因为测试需要判断验证码,所以需要启动 MsmApplication(测试手机验证码)。

2. 测试

访问 http://localhost:8005/swagger-ui.html

image.png

点击短信 msm-controller,填入手机号,并点击发送短信。

image.png

获取手机验证码填入数据。

image.png

做判断,提示成功后加入数据库。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
前端开发 API
前端学习笔记202305学习笔记第二十二天-新增修改api的封装
前端学习笔记202305学习笔记第二十二天-新增修改api的封装2
34 0
|
8月前
|
前端开发 API
前端学习笔记202305学习笔记第二十二天-新增修改api的封装2
前端学习笔记202305学习笔记第二十二天-新增修改api的封装2
41 0
前端学习笔记202305学习笔记第二十二天-新增修改api的封装2
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十二天-新增修改弹框复用1
前端学习笔记202305学习笔记第二十二天-新增修改弹框复用1
33 0
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十二天-新增修改弹框复用5
前端学习笔记202305学习笔记第二十二天-新增修改弹框复用5
39 0
|
8月前
|
前端开发 API
前端学习笔记202305学习笔记第二十二天-新增修改api的封装1
前端学习笔记202305学习笔记第二十二天-新增修改api的封装1
37 0
|
8月前
|
前端开发
前端学习笔记202305学习笔记第二十二天-新增修改弹框复用3
前端学习笔记202305学习笔记第二十二天-新增修改弹框复用3
39 0
|
10月前
|
敏捷开发 前端开发 Ruby
RailsAdmin如何实现自定义操作
RailsAdmin如何实现自定义操作
67 0
|
10月前
|
安全
接口开发文档及注意事项
接口开发是指通过定义一组接口,使不同的系统或设备之间能够进行数据通信和互操作的过程。
145 0
|
JavaScript 小程序 计算机视觉
记录一次小程序卡片组件封装的实战
来分析一下我这次所做项目的需求,首先重要的是卡片内部的布局需要卡片组件需要应用在两个场景下,每个场景的部分文本内容有区别,所以需要进行文本控制,而又要考虑到文本长度的问题,所以需要对文本内容进行一些处理,整理一下得出以下三个点
142 0
记录一次小程序卡片组件封装的实战
|
前端开发 JavaScript API
注册前端整合(1)| 学习笔记
快速学习 注册前端整合(1)
161 0