SmsUtils.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package nju.seec.helper.util;
  2. import com.aliyuncs.CommonRequest;
  3. import com.aliyuncs.CommonResponse;
  4. import com.aliyuncs.DefaultAcsClient;
  5. import com.aliyuncs.IAcsClient;
  6. import com.aliyuncs.exceptions.ClientException;
  7. import com.aliyuncs.http.MethodType;
  8. import com.aliyuncs.profile.DefaultProfile;
  9. import lombok.Data;
  10. import lombok.extern.slf4j.Slf4j;
  11. import nju.seec.helper.config.properties.SmsProperties;
  12. import nju.seec.helper.enums.ExceptionType;
  13. import nju.seec.helper.exception.HelperException;
  14. import org.springframework.stereotype.Component;
  15. /**
  16. * @author cst
  17. */
  18. @Component
  19. @Slf4j
  20. public class SmsUtils {
  21. private static final String OK = "OK";
  22. private final SmsProperties smsProperties;
  23. public SmsUtils(SmsProperties smsProperties) {
  24. this.smsProperties = smsProperties;
  25. }
  26. public void sendSmsCode(String to, String code) {
  27. DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", smsProperties.getAccessKeyId(), smsProperties.getAccessSecret());
  28. IAcsClient client = new DefaultAcsClient(profile);
  29. CommonRequest request = new CommonRequest();
  30. request.setMethod(MethodType.POST);
  31. request.setDomain("dysmsapi.aliyuncs.com");
  32. request.setVersion("2017-05-25");
  33. request.setAction("SendSms");
  34. request.putQueryParameter("RegionId", "cn-hangzhou");
  35. request.putQueryParameter("PhoneNumbers", to);
  36. request.putQueryParameter("SignName", smsProperties.getSignName());
  37. request.putQueryParameter("TemplateCode", smsProperties.getTemplateCode());
  38. request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}");
  39. try {
  40. CommonResponse response = client.getCommonResponse(request);
  41. SendSmsResult sendSmsResult = JsonUtils.fromJson(response.getData(), SendSmsResult.class);
  42. if (!OK.equals(sendSmsResult.Code)) {
  43. log.error(sendSmsResult.Message);
  44. throw HelperException.of(ExceptionType.ERROR, "短信验证码发送失败");
  45. }
  46. } catch (ClientException e) {
  47. log.error(e.getErrCode());
  48. }
  49. }
  50. @Data
  51. public static class SendSmsResult {
  52. private String Message;
  53. private String RequestId;
  54. private String BizId;
  55. private String Code;
  56. }
  57. }