소스 검색

阿里云短信通知

徐滕 1 개월 전
부모
커밋
1ce3ccf544
1개의 변경된 파일126개의 추가작업 그리고 0개의 파일을 삭제
  1. 126 0
      jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/utils/ALiYunSmsUtil.java

+ 126 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/utils/ALiYunSmsUtil.java

@@ -0,0 +1,126 @@
+package com.jeeplus.sys.utils;
+
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import com.aliyun.tea.TeaException;
+import com.aliyun.teaopenapi.models.Config;
+
+import java.util.HashMap;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-09-06 11:20
+ */
+public class ALiYunSmsUtil {
+    private static final String ACCESS_KEY_ID = "LTAI5tPcDWKAh5iG7z8veXfk";//AccessKey自己账号的
+    private static final String ACCESS_KEY_SECRET = "GrY2L9GegHNKB2y62V5RcRtJU6iYr2";
+    private static final String ENDPOINT = "dysmsapi.aliyuncs.com";//固定死
+    private static final String SIGNNAME = "大屏展示";//签名名称
+    private static final String TCODE = "";//模版的编号
+
+
+
+    /**
+     * 登录验证码
+     * @param phoneNumbers
+     * @param randomCode
+     * @return
+     * @throws Exception
+     */
+    public static HashMap<String,Object> loginSendSms(String phoneNumbers, String randomCode) throws Exception {
+        HashMap<String,Object> map = new HashMap<>();
+        Config config = new Config()
+                .setAccessKeyId(ACCESS_KEY_ID)
+                .setAccessKeySecret(ACCESS_KEY_SECRET)
+                .setEndpoint(ENDPOINT);
+
+        Client client = new Client(config);
+        SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                .setPhoneNumbers(phoneNumbers)
+                .setSignName(SIGNNAME)
+                /*.setTemplateCode("SMS_472770050")*/
+                .setTemplateCode("SMS_482810075")
+                //此处是设计模版的时候预留的变量${code}就验证码,用下面的随机生成4位数字传入
+                .setTemplateParam(String.format("{\"code\":\"%s\"}", randomCode));
+
+        try {
+            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
+            System.out.println(sendSmsResponse);
+            if(sendSmsResponse.body.code.equals("isv.BUSINESS_LIMIT_CONTROL")){
+                if(sendSmsResponse.body.message.contains("触发分钟级流控")){
+                    map.put("message","手机号获取验证码次数已触发每分钟可发送数量上限,请稍后进行重试!");
+                }else if(sendSmsResponse.body.message.contains("触发小时级流控")){
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }else{
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }
+                //触发云通信流控限制 每小时限量
+                map.put("statusCode",10001);
+            }else if(sendSmsResponse.body.code.contains("isv.AMOUNT_NOT_ENOUGH")){
+                //触发账户余额不足
+                map.put("statusCode",10002);
+            }else if(sendSmsResponse.body.code.contains("isv.DAY_LIMIT_CONTROL")){
+                //触发触发日发送限额
+                map.put("statusCode",10003);
+            }else if(sendSmsResponse.body.code.contains("OK")){
+                map.put("statusCode",sendSmsResponse.getStatusCode());
+            }
+            return map;
+        } catch (TeaException error) {
+            return map;
+        }
+    }
+
+    /**
+     * 修改密码验证码
+     * @param phoneNumbers
+     * @param randomCode
+     * @return
+     * @throws Exception
+     */
+    public static HashMap<String,Object> updatePasswordSendSms(String phoneNumbers, String randomCode) throws Exception {
+        HashMap<String,Object> map = new HashMap<>();
+        Config config = new Config()
+                .setAccessKeyId(ACCESS_KEY_ID)
+                .setAccessKeySecret(ACCESS_KEY_SECRET)
+                .setEndpoint(ENDPOINT);
+
+        Client client = new Client(config);
+        SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                .setPhoneNumbers(phoneNumbers)
+                .setSignName(SIGNNAME)
+                /*.setTemplateCode("SMS_472770050")*/
+                .setTemplateCode("SMS_482810075")
+                //此处是设计模版的时候预留的变量${code}就验证码,用下面的随机生成4位数字传入
+                .setTemplateParam(String.format("{\"code\":\"%s\"}", randomCode));
+
+        try {
+            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
+            System.out.println(sendSmsResponse);
+            if(sendSmsResponse.body.code.equals("isv.BUSINESS_LIMIT_CONTROL")){
+                if(sendSmsResponse.body.message.contains("触发分钟级流控")){
+                    map.put("message","手机号获取验证码次数已触发每分钟可发送数量上限,请稍后进行重试!");
+                }else if(sendSmsResponse.body.message.contains("触发小时级流控")){
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }else{
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }
+                //触发云通信流控限制 每小时限量
+                map.put("statusCode",10001);
+            }else if(sendSmsResponse.body.code.contains("isv.AMOUNT_NOT_ENOUGH")){
+                //触发账户余额不足
+                map.put("statusCode",10002);
+            }else if(sendSmsResponse.body.code.contains("isv.DAY_LIMIT_CONTROL")){
+                //触发触发日发送限额
+                map.put("statusCode",10003);
+            }else if(sendSmsResponse.body.code.contains("OK")){
+                map.put("statusCode",sendSmsResponse.getStatusCode());
+            }
+            return map;
+        } catch (TeaException error) {
+            return map;
+        }
+    }
+
+}