// 传入手机号 xxxx ,返回验证码 xxx
// 并且将验证码存入 redis
// 根据用户传入的验证码 ,返回前端token
//传入手机号passengerPhone
public ResponseResult generatorCode(String passengerPhone){
// 返回 6位数的验证码 serviceVefifcationcodeClient.getNumberCode(6);
ResponseResult<NumberCodeResponse> numberCodeRespons = serviceVefifcationcodeClient.getNumberCode(6);
// code 验证码
int code = numberCodeRespons.getData().getNumberCode();
System.out.println("调用验证码服务获取验证码 code = " + code);
// 设置 redis key值
String key = generatorKeyByPhone(passengerPhone);
System.out.println("存入redis中key"+key);
//存入 redis,设置key 手机号,过期时间2分钟
stringRedisTemplate.opsForValue().set(key,code+"",2, TimeUnit.MINUTES);
// 传入手机号 xxxx ,返回验证码 xxx
return ResponseResult.success("将验证码存入redis"+code);
}
// 根据前端传入的,手机号,验证码 ,返回前端token
public ResponseResult checkCode(String passengerPhone,String verificationCode){
System.out.println("获取手机号 = " + passengerPhone+";验证码 = "+verificationCode);
// 读取redis存入的 验证码
// 获取 key值
String key = generatorKeyByPhone(passengerPhone);
System.out.println("传入生成key"+key);
//根据 key值获取value 值
String codeRedis = stringRedisTemplate.opsForValue().get(key);
System.out.println("获取redis中的value值 = " + codeRedis);
//校验验证码 - redis中验证码过期
if(StringUtils.isEmpty(codeRedis)){
return ResponseResult.fail(CommonStatusEnum.VERIFICTION_CODE_ERROR.getCode(),CommonStatusEnum.VERIFICTION_CODE_ERROR.getValue());
}
//校验验证码 - redis中验证码不符
if(!(codeRedis.trim()).equals(verificationCode.trim())){ // Stirng中的trim()方法的作用就是去掉字符串前面和后面的空格
return ResponseResult.fail(CommonStatusEnum.VERIFICTION_CODE_ERROR.getCode(),CommonStatusEnum.VERIFICTION_CODE_ERROR.getValue());
}
// 判断是否有用户 并进行处理 (对手机信息进行存储)
VerificationCodeDTO verificationCodeDTO = new VerificationCodeDTO();
verificationCodeDTO.setPassengerPhone(passengerPhone);
servicePassengerUserClient.loginOrRegister(verificationCodeDTO);
// 颁发 token 令牌 JwtUtil.genertorToken
String token = JwtUtil.genertorToken(passengerPhone, IdentityConstant.PASSENGER_IDENTITY);
TokenResponse tokenResponse = new TokenResponse();
tokenResponse.setToken(token);
return ResponseResult.success(tokenResponse);
}
验证码服务返回token--token在接口中的使用
发布时间 2023-12-15 11:00:28作者: 爱豆技术部