zhongrj
2023-04-25 81dca23c275d3bd111a07d925f8bf6cf0c22dd2a
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package cn.gistack.sm.sms.util;
 
import cn.com.flaginfo.sdk.cmc.api.ApiProvider;
import cn.com.flaginfo.sdk.cmc.api.request.ApiConfig;
import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSAPI;
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
import cn.com.flaginfo.sdk.cmc.api.sms.reply.SMSReplyAPI;
import cn.com.flaginfo.sdk.cmc.api.sms.reply.SMSReplyDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.reply.SMSReplyRequest;
import cn.com.flaginfo.sdk.cmc.api.sms.replyconfirm.SMSReplyConfirmAPI;
import cn.com.flaginfo.sdk.cmc.api.sms.replyconfirm.SMSReplyConfirmRequest;
import cn.com.flaginfo.sdk.cmc.api.sms.report.SMSReportAPI;
import cn.com.flaginfo.sdk.cmc.api.sms.report.SMSReportRequest;
import cn.com.flaginfo.sdk.cmc.api.sms.report.SMSReportResult;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSApi;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.com.flaginfo.sdk.cmc.common.ApiEnum;
import cn.gistack.sm.sms.constant.SmsConstant;
import com.alibaba.fastjson.JSON;
import org.aspectj.lang.annotation.Before;
import org.springblade.core.redis.cache.BladeRedis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;
 
import static cn.gistack.common.cache.CacheNames.PHONE_KEY;
import static cn.gistack.sm.sms.constant.SmsConstant.*;
 
@Component
public class SmsUtils {
 
    @Autowired
    private BladeRedis bladeRedis;
 
    /**
     * 固定内容发送
     */
    public static String sendMsg(SMSSendRequest sendRequest) {
        ApiConfig apiConfig = new ApiConfig(SpCode, AppKey, AppSecret);
        ApiProvider provider = ApiProvider.getInstance(apiConfig);
        //请求接口
        SMSApi api = (SMSApi) provider.getApi(ApiEnum.SENDSMS);
        api.setRequestUrl(SmsConstant.HOST + SmsConstant.sendUrl);
        //请求参数
        sendRequest.setSerialNumber(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
        ComResult<SMSSendDataResult> request = api.request(sendRequest);
        // 返回
        return JSON.toJSONString(request);
    }
 
    /**
     * 获取随机字符串
     * @return
     */
    public static String getRandNumber() {
        Random random = new Random();
        //把随机生成的数字转成字符串
        String str = String.valueOf(random.nextInt(9));
        for (int i = 0; i < 5; i++) {
            str += random.nextInt(9);
        }
        return str;
    }
 
    /**
     * 动态短信内容批量发送
     */
    public static String dynSendMethod(DynSMSSendRequest sendRequest) {
        ApiConfig apiConfig = new ApiConfig(SpCode, AppKey, AppSecret);
        ApiProvider provider = ApiProvider.getInstance(apiConfig);
        //请求接口
        DynSMSAPI api = (DynSMSAPI) provider.getApi(ApiEnum.SENDDYNSMS);
        api.setRequestUrl(SmsConstant.HOST + SmsConstant.sendVarUrl);
        //请求参数
//        sendRequest.setDynData(new String[][]{{"手机号码", "编号"}, {"13000000000", "456"}});
        sendRequest.setSerialNumber(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
        ComResult<DynSMSSendDataResult> result = api.request(sendRequest);
        return JSON.toJSONString(result);
    }
 
    /**
     * 状态报告
     */
//    public void testReportMethod() {
//        //请求接口
//        SMSReportAPI api = (SMSReportAPI) provider.getApi(ApiEnum.REPORTSMS);
//        api.setRequestUrl(SmsConstant.HOST + "/info/sms/report");
//        //请求
//        ComResult<List<SMSReportResult>> result = api.request(new SMSReportRequest());
//        List<SMSReportResult> data = result.getData();
//        if (data.size() > 0) {
//            System.out.println(data.get(0).getResult());
//        }
//        System.out.println(JSON.toJSONString(data));
//        System.out.println(JSON.toJSONString(result));
//
//    }
 
    /**
     * 上行回复查询
     */
//    public void testReplyMethod() {
//        //请求接口
//        SMSReplyAPI api = (SMSReplyAPI) provider.getApi(ApiEnum.REPLYSMS);
//        api.setRequestUrl(SmsConstant.HOST + "/info/sms/reply/query");
//        SMSReplyRequest smsReplyRequest = new SMSReplyRequest();
//        //请求
//        ComResult<SMSReplyDataResult> result = api.request(smsReplyRequest);
//        System.out.println(result.getData().getMaxId());
//        if (result.getData().getApiSmsReplyBoList() != null && result.getData().getApiSmsReplyBoList().size() > 0) {
//            System.out.println(result.getData().getApiSmsReplyBoList().get(0).getContent());
//        }
//        System.out.println(JSON.toJSONString(result));
//    }
 
    /**
     * 上行回复查询数据收到确认
     */
//    public void testReplyConfirmMethod() {
//        //请求接口
//        SMSReplyConfirmAPI api = (SMSReplyConfirmAPI) provider.getApi(ApiEnum.REPLYSMSCONFIRM);
//        //请求Url
//        SMSReplyConfirmRequest req = new SMSReplyConfirmRequest();
//        api.setRequestUrl(SmsConstant.HOST + "/info/sms/reply/confirm");
//        req.setMaxId("10110572149");
//        ComResult request = api.request(req);
//        System.out.println(request.isSucc());
//        System.out.println(JSON.toJSONString(request));
//    }
}