Эх сурвалжийг харах

Merge branch 'refs/heads/test-1111' into test

wks 1 жил өмнө
parent
commit
ae1b89ab97

+ 9 - 0
pom.xml

@@ -652,12 +652,21 @@
             <artifactId>quartz</artifactId>
             <version>2.3.2</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dysmsapi20170525</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+
         <dependency>
             <groupId>ttqf.api.sdk</groupId>
             <artifactId>ttqf-api-1.1.0</artifactId>
             <version>1.0.0</version>
         </dependency>
 
+
+
     </dependencies>
 
 

+ 22 - 0
src/main/java/com/ydtech/components/aliyun/AliyunApiSmsProperties.java

@@ -0,0 +1,22 @@
+package com.ydtech.components.aliyun;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "aliyun.api.sms")
+public class AliyunApiSmsProperties {
+
+    //
+    private String accessKeyId;
+
+    //
+    private String accessKeySecret;
+
+    // 签名
+    private String signName;
+
+}

+ 69 - 0
src/main/java/com/ydtech/components/aliyun/SendSmsComponents.java

@@ -0,0 +1,69 @@
+package com.ydtech.components.aliyun;
+
+
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
+import com.aliyun.tea.TeaException;
+import com.aliyun.teaopenapi.models.Config;
+import com.aliyun.teautil.models.RuntimeOptions;
+import com.ydtech.exception.SystemException;
+import com.ydtech.utils.aliyun.SendSms;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class SendSmsComponents {
+
+    private final AliyunApiSmsProperties properties;
+
+    /**
+     * @description: TODO
+     * @author: wenks 
+     * @date: 2024/11/6 8:46
+     * @return:
+     **/
+    private Client createClient() throws Exception {
+        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
+        // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
+        Config config = new Config()
+                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+                .setAccessKeyId(properties.getAccessKeyId())
+                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+                .setAccessKeySecret(properties.getAccessKeyId());
+        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
+        config.endpoint = "dysmsapi.aliyuncs.com";
+        return new Client(config);
+    }
+
+
+    public void sendSms(String phoneNumber, SendSmsEnum sendSmsEnum) throws Exception {
+        Client client = SendSms.createClient();
+        SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                .setPhoneNumbers(phoneNumber)
+                .setSignName(properties.getSignName())
+                .setTemplateCode(sendSmsEnum.getCode());
+
+        try {
+            // 复制代码运行请自行打印 API 的返回值
+            client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions());
+        } catch (TeaException error) {
+            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+            // 错误 message
+            log.info(error.getMessage());
+            // 诊断地址
+            log.info((String) error.getData().get("Recommend"));
+        } catch (Exception _error) {
+            TeaException error = new TeaException(_error.getMessage(), _error);
+            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+            // 错误 message
+            log.info(error.getMessage());
+            // 诊断地址
+            log.info((String) error.getData().get("Recommend"));
+        }
+        throw new SystemException("发送短信异常请重试");
+    }
+}

+ 18 - 0
src/main/java/com/ydtech/components/aliyun/SendSmsEnum.java

@@ -0,0 +1,18 @@
+package com.ydtech.components.aliyun;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum SendSmsEnum {
+
+    SMS_220650023("SMS_220650023", "验证码短信");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 64 - 0
src/main/java/com/ydtech/utils/aliyun/SendSms.java

@@ -0,0 +1,64 @@
+package com.ydtech.utils.aliyun;
+
+import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import com.aliyun.tea.TeaException;
+import com.aliyun.teaopenapi.models.Config;
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyun.teautil.models.RuntimeOptions;
+import com.ydtech.exception.SystemException;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Slf4j
+public class SendSms {
+
+    /**
+     * <b>description</b> :
+     * <p>使用AK&amp;SK初始化账号Client</p>
+     *
+     * @return Client
+     * @throws Exception
+     */
+    public static Client createClient() throws Exception {
+        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
+        // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
+        Config config = new Config()
+                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
+                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
+        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
+        config.endpoint = "dysmsapi.aliyuncs.com";
+        return new Client(config);
+    }
+
+    public static void sendSms(String phoneNumber, String signName, String templateCode) throws Exception {
+        Client client = SendSms.createClient();
+        SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                .setPhoneNumbers(phoneNumber)
+                .setSignName(signName)
+                .setTemplateCode(templateCode);
+
+        try {
+            // 复制代码运行请自行打印 API 的返回值
+            client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions());
+        } catch (TeaException error) {
+            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+            // 错误 message
+            log.info(error.getMessage());
+            // 诊断地址
+            log.info((String) error.getData().get("Recommend"));
+        } catch (Exception _error) {
+            TeaException error = new TeaException(_error.getMessage(), _error);
+            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+            // 错误 message
+            log.info(error.getMessage());
+            // 诊断地址
+            log.info((String) error.getData().get("Recommend"));
+        }
+        throw new SystemException("发送短信异常请重试");
+    }
+
+}

+ 11 - 0
src/main/resources/application-pre.yml

@@ -20,6 +20,17 @@ baidu:
   vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
   idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
 
+
+## 阿里云
+aliyun:
+  api:
+    # 发送短信
+    sms:
+      access-key-id:
+      access-key-secret:
+      sign-name:
+
+
 #银联API参数配置
 unionPay:
   api:

+ 10 - 0
src/main/resources/application-prod.yml

@@ -20,6 +20,16 @@ baidu:
   vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
   idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
 
+## 阿里云
+aliyun:
+  api:
+    # 发送短信
+    sms:
+      access-key-id:
+      access-key-secret:
+      sign-name:
+
+
 #银联API参数配置
 unionPay:
   api:

+ 10 - 1
src/main/resources/application-test.yml

@@ -22,6 +22,15 @@ baidu:
   vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
   idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
 
+## 阿里云
+aliyun:
+  api:
+    # 发送短信
+    sms:
+      access-key-id:
+      access-key-secret:
+      sign-name:
+
 #银联API参数配置
 unionPay:
   api:
@@ -356,7 +365,7 @@ zijin:
     # 下载保单地址
     downLoadDocument: http://test-open.zking.com/temp/api/v1/insurance/nonAutoMobile/queryPolicy/downLoadDocument
     # 对接三方渠道验车链接接口
-    sendCheckCarLink:  http://open.zking.com/api/v1/open/open-aggregate/auth/wanJiaYun/sendCheckCarLink
+    sendCheckCarLink: http://open.zking.com/api/v1/open/open-aggregate/auth/wanJiaYun/sendCheckCarLink
 
 image:
   # 验证码识别