当前位置:   article > 正文

Spring Boot+Redis 整合阿里云短信服务_redis + 阿里云短信服务实现

redis + 阿里云短信服务实现

1.登录阿里云


www.aliyun.com

2.产品->短信服务->免费开通


3.国内消息->签名管理->添加签名


4.模板管理->添加模板


5.快速学习->绑定测试手机号


6.主账号->AccessKey管理->申请AccessKey


7.业务层代码规范


  1. @Service
  2. public class MsmServiceImpl implements MsmService {
  3. @Override
  4. public boolean sendMessage(String phone, String code) {
  5. //判断手机号是否为空
  6. if (StringUtils.isEmpty(phone)) {
  7. return false;
  8. }
  9. //整合aliyun短信服务
  10. //设置参数
  11. DefaultProfile profile = DefaultProfile.
  12. getProfile(ConstantPropertiesUtils.REGION_Id,
  13. ConstantPropertiesUtils.ACCESS_KEY_ID,
  14. ConstantPropertiesUtils.SECRECT);
  15. IAcsClient client = new DefaultAcsClient(profile);
  16. CommonRequest request = new CommonRequest();
  17. //request.setProtocol(ProtocolType.HTTPS);
  18. request.setMethod(MethodType.POST);
  19. request.setDomain("dysmsapi.aliyuncs.com");
  20. request.setVersion("2017-05-25");//api的版本号是 2017-05-25和当前日期无关
  21. request.setAction("SendSms");
  22. //手机号
  23. request.putQueryParameter("PhoneNumbers", phone);
  24. //签名名称
  25. request.putQueryParameter("SignName", "我的在线预约挂号系统网站");
  26. //模板code
  27. request.putQueryParameter("TemplateCode", "SMS_269235376");
  28. //验证码 使用json格式 {"code":"123456"}
  29. Map<String, Object> param = new HashMap();
  30. //生成验证码
  31. param.put("code", code);
  32. request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));
  33. //调用方法进行短信发送
  34. try {
  35. CommonResponse response = client.getCommonResponse(request);
  36. return response.getHttpResponse().isSuccess();
  37. } catch (ServerException e) {
  38. e.printStackTrace();
  39. } catch (ClientException e) {
  40. e.printStackTrace();
  41. }
  42. return false;
  43. }
  44. }

8.控制器代码规范


  1. @RestController
  2. @RequestMapping("/api/msm")
  3. public class MsmApiController {
  4. @Autowired
  5. private RedisTemplate<String,String> redisTemplate;
  6. @Autowired
  7. MsmService msmService;
  8. @GetMapping("/send/{phone}")
  9. public Result sendCode(@PathVariable String phone){
  10. //从Redis中获取验证码
  11. String code = redisTemplate.opsForValue().get(phone);
  12. //如果获取到 返回ok
  13. if(!StringUtils.isEmpty(code)){
  14. return Result.ok();
  15. }
  16. //如果Redis获取不到
  17. //生成验证码,整合阿里云短信服务进行发送
  18. code = RandomUtil.getSixBitRandom();
  19. boolean isSend = msmService.sendMessage(phone,code);
  20. //发送短信成功,生成验证码存入Redis,设置有时间为两分钟
  21. if(isSend){
  22. redisTemplate.opsForValue().set(phone,code,2, TimeUnit.MINUTES);
  23. return Result.ok();
  24. }else {
  25. return Result.fail().message("发送短信失败!");
  26. }
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/511204
推荐阅读
相关标签
  

闽ICP备14008679号