xieb
2023-04-23 b82f8f6f82f0d9348997abb77e5d72deac078fa2
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
139
140
141
142
143
144
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.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.sm.sms.constant.SmsConstant.*;
 
@Component
public class SmsUtils {
 
    /**
     * 固定内容发送
     */
    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);
    }
 
//    public static void main(String[] args) {
//        SMSSendRequest sendRequest = new SMSSendRequest();
//        sendRequest.setMessageContent("你有一项编号为12349的事务需要处理;");
//        sendRequest.setTemplateId("2431012234034");
//        sendRequest.setUserNumber("15170720695");
//        String s = sendMsg(sendRequest);
//        System.out.println("s = " + s);
//    }
 
    /**
     * 获取随机字符串
     * @return
     */
    public static String getRandNumber() {
        // 计算token
//        Date date = new Date();
//        String dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(date);
        Random random = new Random();
        //把随机生成的数字转成字符串
        String str = String.valueOf(random.nextInt(9));
        for (int i = 0; i < 5; i++) {
            str += random.nextInt(9);
        }
        return String.valueOf(System.currentTimeMillis()) + 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));
//    }
}