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

简介: 快速学习 注册功能(接口)

开发者学堂课程【微服务+全栈在线教育实战项目演练(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

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

相关文章
QGS
|
前端开发 easyexcel Java
手拉手EasyExcel实现web上传下载(全栈)
EasyExcel实现web上传下载
QGS
563 2
|
Java 关系型数据库 Linux
Linux|Java|jar包的解压和重新打包(更新配置)
Linux|Java|jar包的解压和重新打包(更新配置)
731 0
|
域名解析 弹性计算 运维
【运维】阿里云宝塔面板域名DNS解析(如何配置用域名访问网站)
【运维】阿里云宝塔面板域名DNS解析(如何配置用域名访问网站)
7313 0
【运维】阿里云宝塔面板域名DNS解析(如何配置用域名访问网站)
|
6月前
|
存储 算法 关系型数据库
数据库主键与索引详解
本文介绍了主键与索引的核心特性及其区别。主键具有唯一标识、数量限制、存储类型和自动排序等特点,用于确保数据完整性和提升查询效率;而索引通过特殊数据结构(如B+树、哈希)优化查询速度,适用于不同场景。文章分析了主键与索引的优劣、适用场景及工作原理,并对比两者在唯一性、数量限制、功能定位等方面的差异,为数据库设计提供指导。
|
9月前
|
存储 机器学习/深度学习 缓存
🚀 力扣热题 394:字符串解码(详细解析)(Go语言版)
文章提供了两种解法:栈结构和递归解法。栈解法通过维护数字栈与字符串栈,依次处理 `[` 和 `]`,构造解码结果;递归解法则利用函数调用逐层解析嵌套结构。两者时间复杂度均为 $O(n)$,空间复杂度也为 $O(n)$。栈解法直观易懂,适合初学者;递归解法优雅简洁,适合处理深度嵌套规则。掌握这两种方法,可灵活应对类似问题,提升解题能力。
319 11
|
6月前
|
缓存 Java 索引
|
6月前
|
Java 数据库 Spring
如何使用 SpringBoot 实现动态增删启停定时任务?
我是小假 期待与你的下一次相遇 ~
299 5
|
前端开发 JavaScript 数据库连接
一、Flask入门介绍
一、Flask入门介绍
432 1
|
JavaScript 前端开发 API
如何使用Next.js构建应用
【8月更文挑战第4天】如何使用Next.js构建应用
414 2
|
9月前
|
SQL 存储 运维
【赵渝强老师】达梦数据库的客户端工具
本文介绍了达梦数据库的多种工具及其使用方法,包括disql交互式查询工具、数据库配置助手DBCA、DM管理工具、DM服务查看器、DM控制台工具、DM数据迁移工具、DM性能监视工具以及DM审计分析工具。每种工具的功能和操作步骤均有详细说明,并配有相关图片和代码示例,帮助用户更好地理解和使用这些工具,提升数据库管理和维护效率。
1019 1