|
|
@@ -0,0 +1,63 @@
|
|
|
+package nju.seec.helper.util;
|
|
|
+
|
|
|
+import com.aliyuncs.CommonRequest;
|
|
|
+import com.aliyuncs.CommonResponse;
|
|
|
+import com.aliyuncs.DefaultAcsClient;
|
|
|
+import com.aliyuncs.IAcsClient;
|
|
|
+import com.aliyuncs.exceptions.ClientException;
|
|
|
+import com.aliyuncs.http.MethodType;
|
|
|
+import com.aliyuncs.profile.DefaultProfile;
|
|
|
+import lombok.Data;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import nju.seec.helper.config.properties.SmsProperties;
|
|
|
+import nju.seec.helper.util.enums.ExceptionType;
|
|
|
+import nju.seec.helper.util.exception.HelperException;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author cst
|
|
|
+ */
|
|
|
+@Component
|
|
|
+@Slf4j
|
|
|
+public class SmsUtils {
|
|
|
+ private static final String OK = "ok";
|
|
|
+ private final SmsProperties smsProperties;
|
|
|
+
|
|
|
+ public SmsUtils(SmsProperties smsProperties) {
|
|
|
+ this.smsProperties = smsProperties;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendSmsCode(String to, String code) {
|
|
|
+ DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", smsProperties.getAccessKeyId(), smsProperties.getAccessSecret());
|
|
|
+ IAcsClient client = new DefaultAcsClient(profile);
|
|
|
+
|
|
|
+ CommonRequest request = new CommonRequest();
|
|
|
+ request.setMethod(MethodType.POST);
|
|
|
+ request.setDomain("dysmsapi.aliyuncs.com");
|
|
|
+ request.setVersion("2017-05-25");
|
|
|
+ request.setAction("SendSms");
|
|
|
+ request.putQueryParameter("RegionId", "cn-hangzhou");
|
|
|
+ request.putQueryParameter("PhoneNumbers", to);
|
|
|
+ request.putQueryParameter("SignName", smsProperties.getSignName());
|
|
|
+ request.putQueryParameter("TemplateCode", smsProperties.getTemplateCode());
|
|
|
+ request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}");
|
|
|
+ try {
|
|
|
+ CommonResponse response = client.getCommonResponse(request);
|
|
|
+ SendSmsResult sendSmsResult = JsonUtils.fromJson(response.getData(), SendSmsResult.class);
|
|
|
+ if (!OK.equals(sendSmsResult.Code)) {
|
|
|
+ log.error(sendSmsResult.Message);
|
|
|
+ throw HelperException.of(ExceptionType.ERROR, "短信验证码发送失败");
|
|
|
+ }
|
|
|
+ } catch (ClientException e) {
|
|
|
+ log.error(e.getErrCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Data
|
|
|
+ public static class SendSmsResult {
|
|
|
+ private String Message;
|
|
|
+ private String RequestId;
|
|
|
+ private String BizId;
|
|
|
+ private String Code;
|
|
|
+ }
|
|
|
+}
|