public Map loginVerification(String mobile, String code) {
//1. 从Redis中获取验证码
String redisCode = redisTemplate.opsForValue().get("CHECK_CODE_" + mobile);
//2. 校验验证码
if(StringUtils.isEmpty(code) || !code.equals(redisCode)) {
throw new RuntimeException("验证码校验失败");
}
//比对通过 , 删除验证码
redisTemplate.delete("CHECK_CODE_" + mobile);
//3. 判断用户是否注册
boolean isNew = false;
User user = userApi.findByMobile(mobile);
if (user == null) {
user = new User();
user.setMobile(mobile);
user.setPassword(DigestUtils.md5Hex("123456"));
Long id = userApi.save(user);
user.setId(id);
isNew = true;
}
//4. 登录成功, 生成token
Map<String, Object> tokenMap = new HashMap<String, Object>();
tokenMap.put("id", user.getId());
tokenMap.put("mobile", mobile);
String token = JwtUtils.getToken(tokenMap);
//5. 封装数据返回
Map<String, Object> result = new HashMap<>();
result.put("token", token);
result.put("isNew", isNew);
return result;
}