package com.zy.crm.manager.utils;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.aliyun.auth.credentials.Credential;
|
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
|
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
|
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest;
|
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse;
|
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponseBody;
|
import darabonba.core.client.ClientOverrideConfiguration;
|
|
import java.util.HashMap;
|
import java.util.Random;
|
import java.util.concurrent.CompletableFuture;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* 短信发送工具
|
*/
|
public class SmsUtils {
|
|
public static AsyncClient getClient() {
|
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
|
.accessKeyId("LTAI4GBCtqGZAn5XDEREh1Pp")
|
.accessKeySecret("SQQkh2kps3wxfbNXUg5nLZgWS2CMjm")
|
.build());
|
|
// Configure the Client
|
AsyncClient client = AsyncClient.builder()
|
//.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
|
.credentialsProvider(provider)
|
//.serviceConfiguration(Configuration.create()) // Service-level configuration
|
// Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
|
.overrideConfiguration(
|
ClientOverrideConfiguration.create()
|
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
|
.setEndpointOverride("dysmsapi.aliyuncs.com")
|
//.setConnectTimeout(Duration.ofSeconds(30))
|
)
|
.build();
|
|
return client;
|
}
|
|
/**
|
* 发送短信验证码
|
*/
|
public static boolean sendSmsCode(String phone, String code) {
|
AsyncClient client = getClient();
|
try {
|
HashMap<String, Object> templateParam = new HashMap<>();
|
templateParam.put("code", code);
|
|
// Parameter settings for API request
|
SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
|
.phoneNumbers(phone)
|
.signName("某某商场")
|
.templateCode("SMS_195220399")
|
.templateParam(JSON.toJSONString(templateParam))
|
// Request-level configuration rewrite, can set Http request parameters, etc.
|
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
|
.build();
|
|
// Asynchronously get the return value of the API request
|
CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
|
// Synchronously get the return value of the API request
|
SendSmsResponse resp = response.get();
|
SendSmsResponseBody body = resp.getBody();
|
// System.out.println(body.getCode());
|
// System.out.println(body.getMessage());
|
if (body.getCode().equals("OK")) {
|
return true;
|
}
|
return false;
|
} catch (Exception e) {
|
return false;
|
} finally {
|
// Finally, close the client
|
client.close();
|
}
|
}
|
|
/**
|
* 获取随机数
|
* @param length 随机数长度
|
*/
|
public static String getRandomNum(Integer length) {
|
Random random = new Random();
|
StringBuffer buffer = new StringBuffer();
|
for (int i = 0; i < length; i++) {
|
buffer.append(random.nextInt(10));
|
}
|
return buffer.toString();
|
}
|
|
/**
|
* 正则验证手机号
|
*/
|
public static boolean verifyPhone(String phone) {
|
// 定义手机号码的正则表达式
|
String regex = "^1[3456789]\\d{9}$";
|
// 编译正则表达式
|
Pattern pattern = Pattern.compile(regex);
|
// 创建 Matcher 对象
|
Matcher matcher = pattern.matcher(phone);
|
// 进行匹配
|
if (!matcher.matches()) {
|
return false;
|
}
|
return true;
|
}
|
|
public static void main(String[] args) throws Exception {
|
sendSmsCode("17788886666","666666");
|
}
|
|
}
|