|
@ -0,0 +1,378 @@
|
|
|
|
package com.yihu.jw.sms.util.ykyy.client;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.yihu.jw.sms.util.ykyy.util.HttpClient;
|
|
|
|
import com.yihu.jw.sms.util.ykyy.util.MD5;
|
|
|
|
import com.yihu.jw.sms.util.ykyy.vo.*;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 短信服务相关方法
|
|
|
|
*/
|
|
|
|
public class SmsClient {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取token信息
|
|
|
|
* @param custCode 客户账号
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
private ResultMsg getToken(String custCode, String serviceBaseUrl){
|
|
|
|
ResultMsg resultMsg = new ResultMsg();
|
|
|
|
try {
|
|
|
|
//发送token请求
|
|
|
|
QueryReq getTokenReq = new QueryReq();
|
|
|
|
|
|
|
|
getTokenReq.setCust_code(custCode);
|
|
|
|
|
|
|
|
String postData = JSON.toJSONString(getTokenReq);
|
|
|
|
String getTokenResp = HttpClient.post(serviceBaseUrl + "/getToken", postData,
|
|
|
|
"application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject = JSON.parseObject(getTokenResp);
|
|
|
|
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {//判断是否获取token信息成功
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getTokenResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 发送短信
|
|
|
|
* @param smsReq SmsReq实体类
|
|
|
|
* @param password 客户密码
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg sendSms(SmsReq smsReq, String password, String serviceBaseUrl){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(smsReq.getCust_code(), serviceBaseUrl);
|
|
|
|
|
|
|
|
try {
|
|
|
|
String sign = MD5.getMD5((smsReq.getContent() + password).getBytes("utf-8"));
|
|
|
|
smsReq.setSign(sign);
|
|
|
|
String postData = JSON.toJSONString(smsReq);
|
|
|
|
String sendSmsResp = HttpClient.post(serviceBaseUrl + "/sendSms", postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject = JSON.parseObject(sendSmsResp);
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {//判断是否获取token信息成功
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(sendSmsResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 发送短信
|
|
|
|
* @param uid [选填] 业务标识,由贵司自定义32为数字透传至我司
|
|
|
|
* @param custCode [必填] 用户账号
|
|
|
|
* @param content [必填] 短信内容
|
|
|
|
* @param destMobiles [必填] 接收号码,同时发送给多个号码时,号码之间用英文半角逗号分隔(,)
|
|
|
|
* @param needReport [选填] 状态报告需求与否,是 yes 否 no 默认yes
|
|
|
|
* @param spCode [选填] 长号码
|
|
|
|
* @param msgFmt [选填] 信息格式,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;默认8
|
|
|
|
* @param serviceBaseUrl [必填] http://ip:port
|
|
|
|
* @param password [必填] 账号密码
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg sendSms(String uid, String custCode, String content, String destMobiles,
|
|
|
|
String needReport, String spCode, String msgFmt, String serviceBaseUrl,String password){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(custCode, serviceBaseUrl);
|
|
|
|
try {
|
|
|
|
SmsReq req = new SmsReq();
|
|
|
|
req.setUid(uid);
|
|
|
|
req.setCust_code(custCode);
|
|
|
|
req.setContent(content);
|
|
|
|
req.setDestMobiles(destMobiles);
|
|
|
|
req.setNeed_report(needReport);
|
|
|
|
req.setSp_code(spCode);
|
|
|
|
req.setMsgFmt(msgFmt);
|
|
|
|
|
|
|
|
String sign = MD5.getMD5((req.getContent() + password).getBytes("utf-8"));
|
|
|
|
req.setSign(sign);
|
|
|
|
String postData = JSON.toJSONString(req);
|
|
|
|
String sendSmsResp = HttpClient.post(serviceBaseUrl + "/sendSms", postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject = JSON.parseObject(sendSmsResp);
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {//判断是否获取token信息成功
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(sendSmsResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 发送变量短信
|
|
|
|
* @param variantSmsReq VariantSmsReq实体类
|
|
|
|
* @param password 客户密码
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg sendVariantSms(VariantSmsReq variantSmsReq, String serviceBaseUrl, String password){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(variantSmsReq.getCust_code(), serviceBaseUrl);
|
|
|
|
try {
|
|
|
|
String sign = MD5.getMD5((variantSmsReq.getContent() + password).getBytes("utf-8"));
|
|
|
|
variantSmsReq.setSign(sign);
|
|
|
|
String postData = JSON.toJSONString(variantSmsReq);
|
|
|
|
String sendSmsResp = HttpClient.post(serviceBaseUrl + "/sendVariantSms", postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject = JSON.parseObject(sendSmsResp);
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {//判断是否获取token信息成功
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(sendSmsResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 查询账户余额
|
|
|
|
* @param custCode 客户账号
|
|
|
|
* @param password 客户密码
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg queryAccount(String custCode, String password, String serviceBaseUrl){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(custCode, serviceBaseUrl);
|
|
|
|
try {
|
|
|
|
if (resultMsg.isSuccess()) {
|
|
|
|
GetTokenResp gtResp = JSON.parseObject(resultMsg.getData(), GetTokenResp.class);
|
|
|
|
QueryReq queryAccountReq = new QueryReq();
|
|
|
|
String sign = MD5.getMD5((gtResp.getToken() + password).getBytes("utf-8"));
|
|
|
|
|
|
|
|
queryAccountReq.setToken_id(gtResp.getToken_id());
|
|
|
|
queryAccountReq.setCust_code(custCode);
|
|
|
|
queryAccountReq.setSign(sign);
|
|
|
|
|
|
|
|
String postData = JSON.toJSONString(queryAccountReq);
|
|
|
|
String queryAccountResp = HttpClient.post(serviceBaseUrl + "/queryAccount",
|
|
|
|
postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject = JSON.parseObject(queryAccountResp);
|
|
|
|
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(queryAccountResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取上行记录
|
|
|
|
* @param custCode 客户账号
|
|
|
|
* @param password 客户密码
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg getMo(String custCode, String password, String serviceBaseUrl){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(custCode, serviceBaseUrl);
|
|
|
|
try {
|
|
|
|
if (resultMsg.isSuccess()) {
|
|
|
|
GetTokenResp gtResp = JSON.parseObject(resultMsg.getData(), GetTokenResp.class);
|
|
|
|
QueryReq queryAccountReq = new QueryReq();
|
|
|
|
String sign = MD5.getMD5((gtResp.getToken() + password).getBytes("utf-8"));
|
|
|
|
|
|
|
|
queryAccountReq.setToken_id(gtResp.getToken_id());
|
|
|
|
queryAccountReq.setCust_code(custCode);
|
|
|
|
queryAccountReq.setSign(sign);
|
|
|
|
|
|
|
|
String postData = JSON.toJSONString(queryAccountReq);
|
|
|
|
String getMoResp = HttpClient.post(serviceBaseUrl + "/getMO",
|
|
|
|
postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject;
|
|
|
|
try {
|
|
|
|
JSON.parseArray(getMoResp);//无异常代表是json数组,即正常返回数据
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getMoResp);
|
|
|
|
} catch (Exception e) {
|
|
|
|
jsonObject = JSON.parseObject(getMoResp);
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getMoResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取状态报告
|
|
|
|
* @param custCode 客户账号
|
|
|
|
* @param password 客户密码
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg getReport(String custCode, String password, String serviceBaseUrl){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(custCode, serviceBaseUrl);
|
|
|
|
try {
|
|
|
|
if (resultMsg.isSuccess()) {
|
|
|
|
GetTokenResp gtResp = JSON.parseObject(resultMsg.getData(), GetTokenResp.class);
|
|
|
|
QueryReq queryAccountReq = new QueryReq();
|
|
|
|
String sign = MD5.getMD5((gtResp.getToken() + password).getBytes("utf-8"));
|
|
|
|
|
|
|
|
queryAccountReq.setToken_id(gtResp.getToken_id());
|
|
|
|
queryAccountReq.setCust_code(custCode);
|
|
|
|
queryAccountReq.setSign(sign);
|
|
|
|
|
|
|
|
String postData = JSON.toJSONString(queryAccountReq);
|
|
|
|
String getReportResp = HttpClient.post(serviceBaseUrl + "/getReport",
|
|
|
|
postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject;
|
|
|
|
try {
|
|
|
|
JSON.parseArray(getReportResp);//无异常代表是json数组,即正常返回数据
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getReportResp);
|
|
|
|
} catch (Exception e) {
|
|
|
|
jsonObject = JSON.parseObject(getReportResp);
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getReportResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取某手机号码的黑名单类型
|
|
|
|
* @param custCode 客户账号
|
|
|
|
* @param password 客户密码
|
|
|
|
* @param serviceBaseUrl http://ip:port
|
|
|
|
* @param mobile 手机号码
|
|
|
|
* @return ResultMsg
|
|
|
|
*/
|
|
|
|
public ResultMsg getBlacklist(String custCode, String password, String serviceBaseUrl, String mobile){
|
|
|
|
|
|
|
|
SmsClient smsClient = new SmsClient();
|
|
|
|
ResultMsg resultMsg = smsClient.getToken(custCode, serviceBaseUrl);
|
|
|
|
try {
|
|
|
|
if (resultMsg.isSuccess()) {
|
|
|
|
GetTokenResp gtResp = JSON.parseObject(resultMsg.getData(), GetTokenResp.class);
|
|
|
|
QueryReq queryAccountReq = new QueryReq();
|
|
|
|
String sign = MD5.getMD5((gtResp.getToken() + password).getBytes("utf-8"));
|
|
|
|
|
|
|
|
queryAccountReq.setToken_id(gtResp.getToken_id());
|
|
|
|
queryAccountReq.setCust_code(custCode);
|
|
|
|
queryAccountReq.setSign(sign);
|
|
|
|
queryAccountReq.setMobile(mobile);
|
|
|
|
|
|
|
|
String postData = JSON.toJSONString(queryAccountReq);
|
|
|
|
String getReportResp = HttpClient.post(serviceBaseUrl + "/getBlacklist",
|
|
|
|
postData, "application/json", "utf-8");
|
|
|
|
|
|
|
|
JSONObject jsonObject;
|
|
|
|
try {
|
|
|
|
JSON.parseArray(getReportResp);//无异常代表是json数组,即正常返回数据
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getReportResp);
|
|
|
|
} catch (Exception e) {
|
|
|
|
System.out.println(getReportResp);
|
|
|
|
jsonObject = JSON.parseObject(getReportResp);
|
|
|
|
if (!"failed".equals(jsonObject.getString("status"))) {
|
|
|
|
resultMsg.setSuccess(true);
|
|
|
|
resultMsg.setData(getReportResp);
|
|
|
|
} else {
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode(jsonObject.getString("respCode"));
|
|
|
|
resultMsg.setMsg(jsonObject.getString("respMsg"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
resultMsg.setSuccess(false);
|
|
|
|
resultMsg.setCode("1000");
|
|
|
|
resultMsg.setMsg("服务器出现未知异常");
|
|
|
|
}
|
|
|
|
return resultMsg;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|