package com.dg.core.util;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.aliyuncs.CommonRequest;
|
import com.aliyuncs.CommonResponse;
|
import com.aliyuncs.DefaultAcsClient;
|
import com.aliyuncs.IAcsClient;
|
import com.aliyuncs.exceptions.ClientException;
|
import com.aliyuncs.http.MethodType;
|
import com.aliyuncs.profile.DefaultProfile;
|
import com.dg.core.AliyunConfig;
|
import com.dg.core.ResultData;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.squareup.okhttp.OkHttpClient;
|
import com.squareup.okhttp.Request;
|
import com.squareup.okhttp.Response;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.io.IOException;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Random;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* 阿里云短信工具类
|
*/
|
@Component
|
public class SmsUtil {
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(SmsUtil.class);
|
|
// 注入阿里云配置
|
@Resource
|
AliyunConfig aliyunConfig;
|
|
// 注入redisTemplate
|
@Resource
|
RedisTemplate<String, Object> redisTemplate;
|
|
private String LoginName="DSC1210052";
|
|
private String Pwd="pzhsjj@123";
|
|
private String FeeType="2";
|
|
/**
|
* 发送短信登录验证码
|
*
|
* @param tel
|
* 电话
|
*/
|
public ResultData<Object> sendSms(String tel) {
|
//cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
|
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
|
/*阿里云提供的短信发送api的近期的相关代码,代码以最新的阿里api提供为准*/
|
IAcsClient client = new DefaultAcsClient(profile);
|
CommonRequest request = new CommonRequest();
|
request.setSysMethod(MethodType.POST);
|
request.setSysDomain("dysmsapi.aliyuncs.com");
|
request.setSysVersion("2017-05-25");
|
request.setSysAction("SendSms");
|
request.putQueryParameter("RegionId", "cn-hangzhou");
|
// 接收人电话
|
request.putQueryParameter("PhoneNumbers", tel);
|
// 短信签名
|
request.putQueryParameter("SignName", "集慧科技");
|
// 短信模板
|
request.putQueryParameter("TemplateCode", aliyunConfig.getTemplateCode());
|
Random rd = new Random();
|
int code = rd.nextInt(900000) + 100000;
|
// 短信内容
|
request.putQueryParameter("TemplateParam", "{code:" + code + "}");
|
// 获取短信发送的响应结果
|
try {
|
CommonResponse rs = client.getCommonResponse(request);
|
LOGGER.debug(rs.getData().toString());
|
// 把json格式的字符串装换成java的map的数据类型
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
HashMap<String, Object> m = mapper.readValue(rs.getData().toString(), HashMap.class);
|
if (m.get("Message").equals("OK")) {
|
redisTemplate.opsForValue().set(tel, code + "", 5, TimeUnit.MINUTES);
|
return ResultData.success("短信发送成功!");
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
} catch (ClientException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
return ResultData.error("短信发送失败");
|
}
|
|
/**
|
* 发送短信登录验证码(电信平台)
|
*
|
* @param tel
|
* 电话
|
*/
|
|
public ResultData sendSmsNew(String tel) {
|
String url =
|
"https://dxsdk.028lk.com:8082/Api/SendSms?"+"LoginName="+LoginName+"&Pwd="+Pwd+"&FeeType="+FeeType+"&Mobile="+tel+"&Content=";
|
Random rd = new Random();
|
int code = rd.nextInt(900000) + 100000;
|
String content="您的验证码为:"+code+",用于手机验证,15分钟内有效,请勿泄露于他人!";
|
url=url+content;
|
OkHttpClient client = new OkHttpClient();
|
Response response;
|
//解密数据
|
String rsa = null;
|
Request request = new Request.Builder()
|
.url(url)
|
.get()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.build();
|
try {
|
response = client.newCall(request).execute();
|
redisTemplate.opsForValue().set(tel, code + "", 5, TimeUnit.MINUTES);
|
// rsa = response.body().string().split("|")[0];
|
rsa = response.message();
|
if (!rsa.equals("OK")){
|
return ResultData.success("短信发送失败");
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
return ResultData.success("短信发送失败");
|
}
|
return ResultData.success("短信发送成功");
|
}
|
|
/**
|
* 发送工单超时短信
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsOvertime(String tel,String name) {
|
//cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
|
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
|
/*阿里云提供的短信发送api的近期的相关代码,代码以最新的阿里api提供为准*/
|
IAcsClient client = new DefaultAcsClient(profile);
|
CommonRequest request = new CommonRequest();
|
request.setSysMethod(MethodType.POST);
|
request.setSysDomain("dysmsapi.aliyuncs.com");
|
request.setSysVersion("2017-05-25");
|
request.setSysAction("SendSms");
|
request.putQueryParameter("RegionId", "cn-hangzhou");
|
// 接收人电话
|
request.putQueryParameter("PhoneNumbers", tel);
|
// 短信签名
|
request.putQueryParameter("SignName", "集慧科技");
|
// 短信模板
|
request.putQueryParameter("TemplateCode", aliyunConfig.getTemplateCodeOvertime());
|
Random rd = new Random();
|
// 短信内容
|
request.putQueryParameter("TemplateParam", "{name:'" + name + "'}");
|
// 获取短信发送的响应结果
|
try {
|
CommonResponse rs = client.getCommonResponse(request);
|
LOGGER.debug(rs.getData().toString());
|
// 把json格式的字符串装换成java的map的数据类型
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
HashMap<String, Object> m = mapper.readValue(rs.getData().toString(), HashMap.class);
|
if (m.get("Message").equals("OK")) {
|
return ResultData.success("短信发送成功!");
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
} catch (ClientException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
return ResultData.error("短信发送失败");
|
}
|
|
|
/**
|
* 发送工单超时短信(电信)
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsOvertimeNew(String tel,String name) {
|
String url =
|
"https://dxsdk.028lk.com:8082/Api/SendSms?"+"LoginName="+LoginName+"&Pwd="+Pwd+"&FeeType="+FeeType+"&Mobile="+tel+"&Content=";
|
Random rd = new Random();
|
String content=name+"的导办工单超时未处理,请及时通知!";
|
url=url+content;
|
OkHttpClient client = new OkHttpClient();
|
Response response;
|
//解密数据
|
String rsa = null;
|
Request request = new Request.Builder()
|
.url(url)
|
.get()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.build();
|
try {
|
response = client.newCall(request).execute();
|
rsa = response.message();
|
if (!rsa.equals("OK")){
|
return ResultData.success("短信发送失败");
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
return ResultData.success("短信发送失败");
|
}
|
return ResultData.success("短信发送成功");
|
}
|
|
/**
|
* 发送工单完成短信
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsComplete(String tel,String name) {
|
//cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
|
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
|
/*阿里云提供的短信发送api的近期的相关代码,代码以最新的阿里api提供为准*/
|
IAcsClient client = new DefaultAcsClient(profile);
|
CommonRequest request = new CommonRequest();
|
request.setSysMethod(MethodType.POST);
|
request.setSysDomain("dysmsapi.aliyuncs.com");
|
request.setSysVersion("2017-05-25");
|
request.setSysAction("SendSms");
|
request.putQueryParameter("RegionId", "cn-hangzhou");
|
// 接收人电话
|
request.putQueryParameter("PhoneNumbers", tel);
|
// 短信签名
|
request.putQueryParameter("SignName", "集慧科技");
|
// 短信模板
|
request.putQueryParameter("TemplateCode", aliyunConfig.getTemplateCodeComplete());
|
Random rd = new Random();
|
// 短信内容
|
request.putQueryParameter("TemplateParam", "{name:'" + name + "'}");
|
// 获取短信发送的响应结果
|
try {
|
CommonResponse rs = client.getCommonResponse(request);
|
LOGGER.debug(rs.getData().toString());
|
// 把json格式的字符串装换成java的map的数据类型
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
HashMap<String, Object> m = mapper.readValue(rs.getData().toString(), HashMap.class);
|
if (m.get("Message").equals("OK")) {
|
return ResultData.success("短信发送成功!");
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
} catch (ClientException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
return ResultData.error("短信发送失败");
|
}
|
|
|
/**
|
* 发送工单完成短信
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsCompleteNew(String tel,String name) {
|
String url =
|
"https://dxsdk.028lk.com:8082/Api/SendSms?"+"LoginName="+LoginName+"&Pwd="+Pwd+"&FeeType="+FeeType+"&Mobile="+tel+"&Content=";
|
Random rd = new Random();
|
String content="您的"+name+"导办工单已由工作人员处理完成,请通过个人中心-我的申请导办查询。";
|
url=url+content;
|
OkHttpClient client = new OkHttpClient();
|
Response response;
|
//解密数据
|
String rsa = null;
|
Request request = new Request.Builder()
|
.url(url)
|
.get()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.build();
|
try {
|
response = client.newCall(request).execute();
|
rsa = response.message();
|
if (!rsa.equals("OK")){
|
return ResultData.success("短信发送失败");
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
return ResultData.success("短信发送失败");
|
}
|
return ResultData.success("短信发送成功");
|
}
|
|
|
/**
|
* 发送工单提交短信
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsSubmit(String tel,String name) {
|
//cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
|
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
|
/*阿里云提供的短信发送api的近期的相关代码,代码以最新的阿里api提供为准*/
|
IAcsClient client = new DefaultAcsClient(profile);
|
CommonRequest request = new CommonRequest();
|
request.setSysMethod(MethodType.POST);
|
request.setSysDomain("dysmsapi.aliyuncs.com");
|
request.setSysVersion("2017-05-25");
|
request.setSysAction("SendSms");
|
request.putQueryParameter("RegionId", "cn-hangzhou");
|
// 接收人电话
|
request.putQueryParameter("PhoneNumbers", tel);
|
// 短信签名
|
request.putQueryParameter("SignName", "集慧科技");
|
// 短信模板
|
request.putQueryParameter("TemplateCode", aliyunConfig.getTemplateCodeSubmit());
|
Random rd = new Random();
|
// 短信内容
|
request.putQueryParameter("TemplateParam", "{name:'" + name + "'}");
|
// 获取短信发送的响应结果
|
try {
|
CommonResponse rs = client.getCommonResponse(request);
|
LOGGER.debug(rs.getData().toString());
|
// 把json格式的字符串装换成java的map的数据类型
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
HashMap<String, Object> m = mapper.readValue(rs.getData().toString(), HashMap.class);
|
if (m.get("Message").equals("OK")) {
|
return ResultData.success("短信发送成功!");
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
} catch (ClientException e) {
|
e.printStackTrace();
|
return ResultData.error("短信发送失败");
|
}
|
return ResultData.error("短信发送失败");
|
}
|
|
|
/**
|
* 发送工单提交短信(电信平台)
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsSubmitNew(String tel,String name) {
|
String url =
|
"https://dxsdk.028lk.com:8082/Api/SendSms?"+"LoginName="+LoginName+"&Pwd="+Pwd+"&FeeType="+FeeType+"&Mobile="+tel+"&Content=";
|
Random rd = new Random();
|
String content="您有新的导办工单,请"+name+"尽快处理。";
|
url=url+content;
|
OkHttpClient client = new OkHttpClient();
|
Response response;
|
//解密数据
|
String rsa = null;
|
Request request = new Request.Builder()
|
.url(url)
|
.get()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.build();
|
try {
|
response = client.newCall(request).execute();
|
rsa = response.message();
|
if (!rsa.equals("OK")){
|
return ResultData.success("短信发送失败");
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
return ResultData.success("短信发送失败");
|
}
|
return ResultData.success("短信发送成功");
|
}
|
|
|
/**
|
* 发送工单提交短信(电信平台)
|
*
|
* @param tel
|
* 电话
|
* @param name
|
* 工单名
|
*/
|
public ResultData<Object> sendSmsOvertimeRemind(String tel,String name) {
|
String url =
|
"https://dxsdk.028lk.com:8082/Api/SendSms?"+"LoginName="+LoginName+"&Pwd="+Pwd+"&FeeType="+FeeType+"&Mobile="+tel+"&Content=";
|
Random rd = new Random();
|
String content="您的待处理导办工单已超时,请 "+name+"尽快处理。";
|
url=url+content;
|
OkHttpClient client = new OkHttpClient();
|
Response response;
|
//解密数据
|
String rsa = null;
|
Request request = new Request.Builder()
|
.url(url)
|
.get()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.build();
|
try {
|
response = client.newCall(request).execute();
|
rsa = response.message();
|
if (!rsa.equals("OK")){
|
return ResultData.success("短信发送失败");
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
return ResultData.success("短信发送失败");
|
}
|
return ResultData.success("短信发送成功");
|
}
|
}
|