SmsControl.java
5.61 KB
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
package com.sincere.haikang.control;
import com.sincere.haikang.bean.SmsBean;
import com.sincere.haikang.bean.StudentBean;
import com.sincere.haikang.utils.EncodeUtils;
import com.sincere.haikang.utils.FileUtils;
import com.sincere.haikang.utils.SmsHttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import org.springframework.boot.actuate.trace.http.HttpTrace;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@Api("短信发送")
@RequestMapping(value = "sms/*")
public class SmsControl {
@RequestMapping(value = "sendMsg", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
@ResponseBody
@ApiImplicitParam(name = "ExtendAccessNum",required = false)
public String sendMsg(@RequestParam("SpCode") String SpCode, @RequestParam("LoginName") String LoginName, @RequestParam("Password") String Password
, @RequestParam("MessageContent") String MessageContent, @RequestParam("MessageType") String MessageType
, @RequestParam("UserNumber") String UserNumber, @RequestParam("SerialNumber") String SerialNumber
, @RequestParam("ScheduleTime") String ScheduleTime, String ExtendAccessNum
, @RequestParam("f") String f) {
System.out.println("接口请求");
return sendSms(SpCode, LoginName, Password, MessageContent, MessageType, UserNumber, SerialNumber, ScheduleTime, ExtendAccessNum, f);
// return "success";
}
@PostMapping(value = "sendMsgs")
public String sendMags(@RequestBody SmsBean smsBean){
System.out.println("接口请求POST:"+smsBean.toString());
return sendSms(smsBean.getSpCode(), smsBean.getLoginName(), smsBean.getPassword(),
smsBean.getMessageContent(), smsBean.getMessageType(), smsBean.getUserNumber(), smsBean.getSerialNumber(),
smsBean.getScheduleTime(), "", smsBean.getF());
}
// @PostMapping(value = "sendMsg")
// public String sendMsg(@RequestBody MultiValueMap<String,String> multiValueMap){
//
// String SpCode = multiValueMap.
//
//
// }
private String sendSms(String spCode, String loginName, String password, String messageContent, String messageType, String userNumber, String serialNumber, String scheduleTime, String extendAccessNum, String f) {
String url = "http://ytx.zj165.com:9098/api/send";
Map<String, Object> params = initSmsParams(spCode, loginName, password, messageContent, messageType, userNumber, serialNumber, scheduleTime, extendAccessNum, f);
String result = null;
try {
result = SmsHttpUtils.doGet(url, params);
} catch (IOException e) {
FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应失败【%s】",e.toString()),FileUtils.liantong);
e.printStackTrace();
}
System.out.println(String.format("GET短信发送的响应报文【%s】",result)+" messageContent:"+messageContent);
FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应报文【%s】",result),FileUtils.liantong);
return result;
}
/**
* 功能描述:初始化短信参数
*
* @param
* @param spCode
* @param loginName
* @param password
* @param messageContent
* @param messageType
* @param userNumber
* @param serialNumber
* @param scheduleTime
* @param extendAccessNum
* @param f
* @return java.util.Map<java.lang.String , java.lang.Object>
* @author uccp
* @date 2019/3/22 23:09
*/
private Map<String, Object> initSmsParams(String spCode, String loginName, String password, String messageContent, String messageType, String userNumber, String serialNumber, String scheduleTime, String extendAccessNum, String f) {
Map<String, Object> params = new HashMap<>(9);
//企业编号
params.put("SpCode", spCode);
//用户名称
params.put("LoginName", loginName);
//用户密码
params.put("Password", password);
//短信内容, 最大480个字(短信内容要求的编码为gbk)
params.put("MessageContent",EncodeUtils.encodeStr(messageContent));
//短信类型,1=验证码、2=通知、3=广告 (没传或者非1、2、3系统会默认为4=其他)
params.put("MessageType", messageType);
//手机号码(多个号码用”,”分隔),最多1000个号码
params.put("UserNumber", userNumber);
//流水号,20位数字,唯一 (规则自定义,建议时间格式精确到毫秒)
params.put("SerialNumber", serialNumber);
//预约发送时间,格式:yyyyMMddhhmmss,如‘20090901010101’
params.put("ScheduleTime", scheduleTime);
//接入号扩展号(默认不填,扩展号为数字,扩展位数由当前所配的接入号长度决定,整个接入号最长4位)
if (extendAccessNum!=null)
params.put("ExtendAccessNum", extendAccessNum);
/*
* 提交时检测方式
* 为1时,提交号码中有效的号码仍正常发出短信,无效的号码在返回参数faillist中列出
* 不为1或该参数不存在,提交号码中只要有无效的号码,那么所有的号码都不发出短信,所有的号码在返回参数faillist中列出
*/
params.put("f", f);
return params;
}
private int getThreeRandomNumbers() {
return new java.util.Random().nextInt(900) + 100;
}
}