中扬CRM客户关系管理系统
Junjie
2023-09-06 67f39351a5571b822f93c09e8c6e7986fe91e758
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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");
    }
 
}