开发者学堂课程【微服务+全栈在线教育实战项目演练(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,
在 controllerr 中找到注册的方法。
在注册中传入数值,因为测试需要判断验证码,所以需要启动 MsmApplication(测试手机验证码)。
2. 测试
访问 http://localhost:8005/swagger-ui.html
点击短信 msm-controller,填入手机号,并点击发送短信。
获取手机验证码填入数据。
做判断,提示成功后加入数据库。