1,先发短信
2,给手机号设置一个标识,为的是不允许重复发送,我用的是前后端分离的项目,所以代码中不会返回404,500,之类的。
@Autowired
private RedisTemplate<String, String> redisTemplate;
@PostMapping("/sms")
public ResponseEntity<BaseResult> sendSms(@RequestBody User user) {
BaseResult br = null;
try {
String mobile = user.getMobile();
String code = GetRandomCodeUtil.getNumber();
String redisCode = redisTemplate.opsForValue().get(mobile);
if (redisCode != null) {
br = new BaseResult(1, "验证码在30分钟内只能发送一次");
return ResponseEntity.ok(br);
}
//SmsUtil.sendSms(mobile, code);
System.out.println(code);
// 30分钟内只能发送一次
redisTemplate.opsForValue().set(mobile, code, 30, TimeUnit.MINUTES);
br = new BaseResult(0, "成功");
return ResponseEntity.ok(br);
} catch (Exception e) {
e.printStackTrace();
br = new BaseResult(1, "失败");
return ResponseEntity.ok(br);
}
}
redisTemplate.opsForValue().set(mobile,code,30,TimeUnit.MINUTES);
return null;
}
测试,OK