|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|