skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml
@@ -24,6 +24,14 @@ <artifactId>artemis-http-client</artifactId> <version>1.1.3</version> </dependency> <!--引入 sms 短信 sdk --> <dependency> <groupId>cn.com.flaginfo.sdk.cmc</groupId> <artifactId>send-api-sdk</artifactId> <version>1.2.1</version> <scope>system</scope> <systemPath>${project.basedir}/libs/send-api-sdk-1.2.1.jar</systemPath> </dependency> </dependencies> <build> @@ -47,6 +55,13 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/constant/CallConstant.java
New file @@ -0,0 +1,40 @@ package cn.gistack.sm.intelligentCall.constant; /** * 智能呼叫配置信息常量 * @author zhongrj * @since 2023-04-21 */ public class CallConstant { /** * post */ public static final String HOST = "http://64.97.209.77:80"; /** * appKey */ public static final String AppKey = "app_qufenqi_eolb"; /** * appSecret */ public static final String AppSecret = "ea3b23ecdb2247e9bcbccbdee7d5dbf4"; /** * 创建会话url */ public static final String createTaskUrl = "/api/task/createTask"; /** * 创建会话url */ public static final String createTaskUrl1 = "/api/task/createTask.json"; /** * 会话详情url */ public static final String taskDetailUrl = "/api/task/callDetail.json"; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/controller/CallController.java
New file @@ -0,0 +1,178 @@ package cn.gistack.sm.intelligentCall.controller; import cn.gistack.sm.intelligentCall.constant.CallConstant; import cn.gistack.sm.intelligentCall.entity.User; import cn.gistack.sm.intelligentCall.util.HttpClientUtils; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.*; /** * 智能呼叫控制层 * @author zhongrj * @date 2023-04-21 */ @Slf4j @Api(tags = "智能呼叫") @RestController @RequestMapping("/call/call") @AllArgsConstructor public class CallController { /** * 创建任务 * @return */ @GetMapping("/createCall1") public R createCall1(){ String url1 = CallConstant.HOST + CallConstant.createTaskUrl; // 请求2 Map<String, Object> map = new HashMap<>(); map.put("p1",createCall(url1)); // 返回 return R.data(map); } /** * 创建任务 * @return */ @GetMapping("/createCall2") public R createCall2(){ String url2 = CallConstant.HOST + CallConstant.createTaskUrl1; // 请求2 Map<String, Object> map = new HashMap<>(); map.put("p2",createCall(url2)); // 返回 return R.data(map); } /** * 创建任务 * @param url * @return */ public String createCall(String url){ // 计算token Date date = new Date(); String dateFormat0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); String dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(date); String dateFormats = 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); } String formatString ="appId" + CallConstant.AppKey + "timestamp" + dateFormat + "transId" + dateFormats + str; // 请求参数拼接 Map<String, Object> map = new HashMap<>(); map.put("taskName","测试"); map.put("sceneId",1); map.put("callingNumbers", Arrays.asList(101,102)); map.put("taskScheduleTime",dateFormat0); List<User> list = new ArrayList<>(); User user = new User(); user.setName("张三"); user.setPhone("15170720695"); user.setName("先生"); list.add(user); map.put("calleeData",list); String jsonString = JSON.toJSONString(map); String lastString = formatString + jsonString + CallConstant.AppSecret; // md5 小写,md5 生成token String encryption = encryption(lastString); String httpPost = HttpClientUtils.httpPost(url, CallConstant.AppKey, dateFormat, dateFormats + str, encryption, map); // 返回 return httpPost; } // /** // * 测试 // * @param args // */ // public static void main(String[] args) { // // 计算token // Date date = new Date(); // String dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(date); // String dateFormats = 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); // } // String formatString ="appId" + CallConstant.AppKey // + "timestamp" + dateFormat // + "transId" + dateFormats // + str; // // 请求参数拼接 // Map<String, Object> map = new HashMap<>(); // map.put("taskName","测试"); // map.put("sceneId",1); // map.put("callingNumbers", Arrays.asList(101,102)); // map.put("taskScheduleTime","2020-02-29 14:00:00"); // List<User> list = new ArrayList<>(); // User user = new User(); // user.setName("张三"); // user.setPhone("15170720695"); // user.setName("先生"); // list.add(user); // map.put("calleeData",list); // String jsonString = JSON.toJSONString(map); // String lastString = formatString + jsonString + CallConstant.AppSecret; // // md5 小写,md5 生成token // String encryption = encryption(lastString); // String url = CallConstant.HOST + CallConstant.createTaskUrl; // String httpPost = HttpClientUtils.httpPost(url, CallConstant.AppKey, dateFormat, dateFormats + str, encryption, map); // // // System.out.println("encryption = " + encryption); // // } /** * md5加密 32位 小写 * @param plainText * @return */ public static String encryption(String plainText) { String re_md5 = new String(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) { i += 256; } if (i < 16) { buf.append("0"); } buf.append(Integer.toHexString(i)); } re_md5 = buf.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return re_md5; } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/entity/User.java
New file @@ -0,0 +1,15 @@ package cn.gistack.sm.intelligentCall.entity; import lombok.Data; import java.io.Serializable; @Data public class User implements Serializable { private String name; private String phone; private String sex; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/CallService.java
New file @@ -0,0 +1,4 @@ package cn.gistack.sm.intelligentCall.service; public interface CallService { } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
New file @@ -0,0 +1,7 @@ package cn.gistack.sm.intelligentCall.service.impl; import org.springframework.stereotype.Service; @Service public class CallServiceImpl { } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/util/HttpClientUtils.java
New file @@ -0,0 +1,462 @@ package cn.gistack.sm.intelligentCall.util; import com.alibaba.fastjson.JSON; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.TrustStrategy; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.LaxRedirectStrategy; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.ssl.SSLContextBuilder; import org.apache.http.util.EntityUtils; import javax.net.ssl.SSLContext; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.*; public class HttpClientUtils { /** * 执行有参GET请求 * * @param url * @param params * @return */ public static String doGet(String url, Map<String, String> params) { //获取httpclient客户端 CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { URIBuilder builder = new URIBuilder(url); if (null != params) { for (String key : params.keySet()) { builder.setParameter(key, params.get(key)); } } HttpGet get = new HttpGet(builder.build()); response = httpclient.execute(get); if (200 == response.getStatusLine().getStatusCode()) { HttpEntity entity = response.getEntity(); resultString = EntityUtils.toString(entity, "utf-8"); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != httpclient) { try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } } return resultString; } /** * 执行有参GET请求,带请求头 * * @param url 请求url * @param params 参数 * @param key 请求头Key * @param secretKey 秘钥 * @return */ public static String doGetHeader(String url, String key, String secretKey, Map<String, String> params) { //获取httpclient客户端 CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { URIBuilder builder = new URIBuilder(url); if (null != params) { for (String keys : params.keySet()) { builder.addParameter(keys,params.get(keys)); //builder.setParameter(keys, params.get(keys)); } } HttpGet httpGet = new HttpGet(builder.build()); //设置请求头 httpGet.addHeader(key,secretKey); // 传输的类型 httpGet.addHeader("Content-Type", "application/x-www-form-urlencoded"); //执行Http请求调用 response = httpclient.execute(httpGet); //判断是否请求成功返回 if (200 == response.getStatusLine().getStatusCode()) { HttpEntity entity = response.getEntity(); resultString = EntityUtils.toString(entity, "utf-8"); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != httpclient) { try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } } return resultString; } /** * 执行无参GET请求 * * @param url * @return */ public static String doGet(String url) { return doGet(url, null); } /** * 执行有参POST请求 * * @param url * @param params * @return */ public static String doPost(String url, Map<String, String> params) { /** * 在4.0及以上httpclient版本中,post需要指定重定向的策略,如果不指定则按默认的重定向策略。 * * 获取httpclient客户端 */ CloseableHttpClient httpclient = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build(); String resultString = ""; CloseableHttpResponse response = null; try { HttpPost post = new HttpPost(url); List<NameValuePair> paramaters = new ArrayList<>(); if (null != params) { for (String key : params.keySet()) { paramaters.add(new BasicNameValuePair(key, params.get(key))); } // 构造一个form表单式的实体 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(paramaters); // 将请求实体设置到httpPost对象中 post.setEntity(formEntity); } /** * HTTP/1.1 403 Forbidden * 原因: * 有些网站,设置了反爬虫机制 * 解决的办法: * 设置请求头,伪装浏览器 */ post.addHeader("user-agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"); response = httpclient.execute(post); if (200 == response.getStatusLine().getStatusCode()) { HttpEntity entity = response.getEntity(); resultString = EntityUtils.toString(entity, "utf-8"); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != httpclient) { try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } } return resultString; } public static String doPost(String url) { return doPost(url, null); } // public static void main(String[] args) { // // Map<String, String> params = new HashMap<>(); // params.put("scope", "project"); // params.put("q", "数据库"); // // /** // * 有一部分网站,禁止爬虫技术访问网站。 // * // * 解决方案: // * 伪装浏览器 // * post.addHeader("user-agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"); // */ // System.out.println(doPost("http://www.oschina.net/search", params)); // } /** * post 请求 header 带 秘钥 * @param url * @param appId * @param timestamp * @param transId * @param token * @param map * @return */ public static String httpPost(String url, String appId, String timestamp, String transId, String token, Map<String, Object> map) { // 返回body String body = null; // 获取连接客户端工具 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse httpResponse = null; // 2、创建一个HttpPost请求 HttpPost post = new HttpPost(url); // 5、设置header信息 /**header中通用属性*/ post.setHeader("Accept", "application/json"); post.setHeader("Accept-Encoding", ""); // post.setHeader("Cache-Control", "no-cache"); // post.setHeader("Connection", "keep-alive"); post.setHeader("Content-Type", "application/json;charset=UTF-8"); /**业务参数*/ post.setHeader("appId",appId); post.setHeader("timestamp",timestamp); post.setHeader("transId",transId); post.setHeader("token",token); // 设置参数 if (map != null) { try { StringEntity entity1 = new StringEntity(JSON.toJSONString(map), "UTF-8"); entity1.setContentEncoding("UTF-8"); entity1.setContentType("json/form-data"); post.setEntity(entity1); // 7、执行post请求操作,并拿到结果 httpResponse = httpClient.execute(post); // 获取结果实体 HttpEntity entity = httpResponse.getEntity(); if (entity != null) { // 按指定编码转换结果实体为String类型 body = EntityUtils.toString(entity, "UTF-8"); } try { httpResponse.close(); httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } return body; } public static SSLContext createIgnoreVerifySSL() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException { SSLContext sc = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { return true; } }).build(); return sc; } //适用于post请求并传送form-data数据(同样适用于post的Raw类型的application-json格式) public static String postParams(String url, String appKey, String appKeyValue, Map<String, String> map) { SSLContext sslcontext = null; try { sslcontext = createIgnoreVerifySSL(); } catch (KeyManagementException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } // 设置协议http和https对应的处理socket链接工厂的对象 Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", new SSLConnectionSocketFactory(sslcontext)) .build(); PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); //创建自定义的httpclient对象 CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).build(); HttpPost post = new HttpPost(url); post.setHeader(appKey, appKeyValue); CloseableHttpResponse res = null; try { List<NameValuePair> nvps = new ArrayList<NameValuePair>(); Set<String> keySet = map.keySet(); for (String key : keySet) { nvps.add(new BasicNameValuePair(key, map.get(key))); } post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); res = client.execute(post); HttpEntity entity = res.getEntity(); return EntityUtils.toString(entity, "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { res.close(); client.close(); } catch (IOException e) { e.printStackTrace(); } } return ""; } /** * 向指定 URL 发送POST方法的请求 * * @param url 发送请求的 URL * @param params 请求的参数集合 * @return 远程资源的响应结果 */ @SuppressWarnings("unused") public static String sendPost(String url, Map<String, String> params) { OutputStreamWriter out = null; BufferedReader in = null; StringBuilder result = new StringBuilder(); try { URL realUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // POST方法 conn.setRequestMethod("POST"); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.connect(); // 获取URLConnection对象对应的输出流 out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); // 发送请求参数 if (params != null) { StringBuilder param = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) { if (param.length() > 0) { param.append("&"); } param.append(entry.getKey()); param.append("="); param.append(entry.getValue()); } out.write(param.toString()); } // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null) { result.append(line); } } catch (Exception e) { e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result.toString(); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/constant/SmsConstant.java
New file @@ -0,0 +1,34 @@ package cn.gistack.sm.sms.constant; /** * 短信常量 * @author zhongrj * @date 2023-04-21 */ public class SmsConstant { /** * post */ public static final String HOST = "https://api.ums86.com"; /** * 企业码 */ public static final String SpCode = "214596"; /** * appKey */ public static final String AppKey = "hbsl_zhsk"; /** * appSecret */ public static final String AppSecret = "ec4ad8f3a5627e93c49803c90a18eb53"; /** * 发送短信url */ public static final String sendUrl = "/api/sms/send"; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
New file @@ -0,0 +1,27 @@ package cn.gistack.sm.sms.controller; import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; import cn.gistack.sm.sms.util.SmsUtils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 短信发送控制层 * @author zhongrj * @date 2023-04-22 */ @Slf4j @RestController @RequestMapping("/sms/sms") @AllArgsConstructor public class SmsController { @GetMapping("/test") public R test(SMSSendRequest request){ return R.data(SmsUtils.sendMsg(request)); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/util/SmsUtils.java
New file @@ -0,0 +1,167 @@ 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); // } // /** // * 固定内容发送 // */ // public void testSendMethod() { // // x-sp-code // String xspcode = "214596"; // // x-app-key // String xappkey = "hbsl_zhsk"; // // 计算 x-request-id // String xrequestid = getRandNumber(); // // x-sign // String xsign = ""; // // // //请求参数 // SMSSendRequest sendRequest = new SMSSendRequest(); // sendRequest.setMessageContent("你有一项编号为12349的事务需要处理;"); // sendRequest.setTemplateId("2431012234034"); // sendRequest.setUserNumber("15170720695"); // sendRequest.setSerialNumber("20210801120000123456"); // // } /** * 获取随机字符串 * @return */ private 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 void testDynSendMethod() { // //请求接口 // DynSMSAPI api = (DynSMSAPI) provider.getApi(ApiEnum.SENDDYNSMS); // api.setRequestUrl(SmsConstant.HOST + "/api/sms-var/send"); // //请求参数 // DynSMSSendRequest sendRequest = new DynSMSSendRequest(); // sendRequest.setTemplateId("1011012028688"); // sendRequest.setDynData(new String[][]{{"手机号码", "编号"}, {"13000000000", "456"}}); // sendRequest.setSerialNumber("20210804120000123457"); // ComResult<DynSMSSendDataResult> result = api.request(sendRequest); // System.out.println(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)); // } }