package com.nova.sankuai.infra.utils.sms.shandongMessage;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import lombok.AllArgsConstructor;
|
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpResponse;
|
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.methods.HttpPost;
|
import org.apache.http.entity.StringEntity;
|
import org.apache.http.impl.client.DefaultHttpClient;
|
import org.apache.http.util.EntityUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Component;
|
|
import java.io.UnsupportedEncodingException;
|
import java.security.MessageDigest;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @Author Lilinhong
|
* @Date 2022/6/13 15:28
|
*/
|
@Component
|
@AllArgsConstructor
|
public class ShanDongMessageSendUtil {
|
|
private static final Logger logger = LoggerFactory.getLogger("smsLogger");
|
|
private static final String appkey = "tGCOUa";
|
private static final String appsecret = "e2N9oH";
|
private static final String appcode = "1000";
|
private static final String URL = "http://39.103.200.133:9090/sms/distinct/v1";
|
|
|
|
public static boolean sendMessage(String phone, String content) {
|
HttpClient httpClient = null;
|
HttpPost httppost = null;
|
String response = null;
|
Map<String, Object> map = new HashMap<>();
|
map.put("appkey", ShanDongMessageSendUtil.appkey);
|
map.put("appcode", ShanDongMessageSendUtil.appcode);
|
String timestamp = System.currentTimeMillis() + "";
|
map.put("timestamp", timestamp);
|
ArrayList<SmsParam> smsParams = new ArrayList<>();
|
SmsParam sms = new SmsParam();
|
sms.setMsg(content);
|
sms.setPhone(phone);
|
smsParams.add(sms);
|
map.put("sms", smsParams);
|
String sign = null;
|
try {
|
sign = md5(ShanDongMessageSendUtil.appkey + ShanDongMessageSendUtil.appsecret + timestamp);
|
} catch (Exception e) {
|
logger.info("山东商帮登录验证码日志: 用户手机:" + phone + "参数md5加密失败");
|
e.printStackTrace();
|
return false;
|
}
|
map.put("sign", sign);
|
logger.info("山东商帮登录验证码日志: 用户手机:" + phone + "验证码发送参数:" + map);
|
try {
|
httpClient = new DefaultHttpClient();
|
httppost = new HttpPost(ShanDongMessageSendUtil.URL);
|
String json = JSONObject.toJSONString(map);
|
StringEntity formEntity = new StringEntity(json, "utf-8");
|
httppost.setEntity(formEntity);
|
HttpResponse httpresponse = null;
|
httpresponse = httpClient.execute(httppost);
|
HttpEntity httpEntity = httpresponse.getEntity();
|
response = EntityUtils.toString(httpEntity, "utf-8");
|
logger.info("山东商帮登录验证码日志: 用户手机:" + phone + "验证码发送返回结果:" + response);
|
} catch (Exception e) {
|
logger.info("山东商帮登录验证码日志: 用户手机:" + phone + "验证码发送返回失败");
|
e.printStackTrace();
|
return false;
|
} finally {
|
if (httppost != null) {
|
httppost.abort();
|
}
|
if (httpClient != null) {
|
httpClient.getConnectionManager().shutdown();
|
}
|
}
|
ShanDongMessageResponse shanDongMessageResponse = null;
|
try {
|
shanDongMessageResponse = JSON.parseObject(response, ShanDongMessageResponse.class);
|
} catch (Exception e) {
|
logger.info("山东商帮登录验证码日志: 用户手机:" + phone + "验证码发送返回结果转换失败");
|
e.printStackTrace();
|
return false;
|
}
|
if (shanDongMessageResponse != null) {
|
logger.info("山东商帮登录验证码日志: 用户手机:" + phone + "验证码发送返回结果转换:" + shanDongMessageResponse.toString());
|
}
|
if (shanDongMessageResponse != null && "00000".equals(shanDongMessageResponse.getCode())
|
&& shanDongMessageResponse.getResult() != null && "00000".equals(shanDongMessageResponse.getResult().get(0).getStatus())) {
|
return true;
|
}
|
return false;
|
}
|
|
public static boolean sendSMSContent(String phone, String content) {
|
HttpClient httpClient = null;
|
HttpPost httppost = null;
|
String response = null;
|
Map<String, Object> map = new HashMap<>();
|
map.put("appkey", ShanDongMessageSendUtil.appkey);
|
map.put("appcode", ShanDongMessageSendUtil.appcode);
|
String timestamp = System.currentTimeMillis() + "";
|
map.put("timestamp", timestamp);
|
ArrayList<SmsParam> smsParams = new ArrayList<>();
|
SmsParam sms = new SmsParam();
|
sms.setMsg(content);
|
sms.setPhone(phone);
|
smsParams.add(sms);
|
map.put("sms", smsParams);
|
String sign = null;
|
try {
|
sign = md5(ShanDongMessageSendUtil.appkey + ShanDongMessageSendUtil.appsecret + timestamp);
|
} catch (Exception e) {
|
logger.info("山东供应商发送自定义短信内容日志: 用户手机:" + phone + "参数md5加密失败");
|
e.printStackTrace();
|
return false;
|
}
|
map.put("sign", sign);
|
logger.info("山东供应商发送自定义短信内容日志: 用户手机:" + phone + "验证码发送参数:" + map);
|
try {
|
httpClient = new DefaultHttpClient();
|
httppost = new HttpPost(ShanDongMessageSendUtil.URL);
|
String json = JSONObject.toJSONString(map);
|
StringEntity formEntity = new StringEntity(json, "utf-8");
|
httppost.setEntity(formEntity);
|
HttpResponse httpresponse = null;
|
httpresponse = httpClient.execute(httppost);
|
HttpEntity httpEntity = httpresponse.getEntity();
|
response = EntityUtils.toString(httpEntity, "utf-8");
|
logger.info("山东供应商自定义短信内容日志: 用户手机:" + phone + "自定义短信内容发送返回结果:" + response);
|
} catch (Exception e) {
|
logger.info("山东供应商自定义短信内容日志: 用户手机:" + phone + "自定义短信内容发送返回失败");
|
e.printStackTrace();
|
return false;
|
} finally {
|
if (httppost != null) {
|
httppost.abort();
|
}
|
if (httpClient != null) {
|
httpClient.getConnectionManager().shutdown();
|
}
|
}
|
ShanDongMessageResponse shanDongMessageResponse = null;
|
try {
|
shanDongMessageResponse = JSON.parseObject(response, ShanDongMessageResponse.class);
|
} catch (Exception e) {
|
logger.info("山东供应商自定义短信内容日志: 用户手机:" + phone + "自定义短信内容发送返回结果转换失败");
|
e.printStackTrace();
|
return false;
|
}
|
if (shanDongMessageResponse != null) {
|
logger.info("山东供应商自定义短信内容日志: 用户手机:" + phone + "自定义短信内容发送返回结果转换:" + shanDongMessageResponse.toString());
|
}
|
if (shanDongMessageResponse != null && "00000".equals(shanDongMessageResponse.getCode())
|
&& shanDongMessageResponse.getResult() != null && "00000".equals(shanDongMessageResponse.getResult().get(0).getStatus())) {
|
return true;
|
}
|
return false;
|
}
|
|
private static String md5(String param) throws NoSuchAlgorithmException, UnsupportedEncodingException {
|
MessageDigest md5 = MessageDigest.getInstance("MD5");
|
byte[] md5Byte = md5.digest(param.getBytes("utf8"));
|
String result = byteToHex(md5Byte);
|
return result;
|
}
|
|
private static String byteToHex(byte[] md5Byte) {
|
String result = "";
|
StringBuilder sb = new StringBuilder();
|
for (byte each : md5Byte) {
|
int value = each & 0xff;
|
String hex = Integer.toHexString(value);
|
if (value < 16) {
|
sb.append("0");
|
}
|
sb.append(hex);
|
}
|
result = sb.toString();
|
return result;
|
}
|
|
public static int byte4ToInteger(byte[] b, int offset) {
|
return (0xff & b[offset]) << 24 | (0xff & b[offset + 1]) << 16 |
|
(0xff & b[offset + 2]) << 8 | (0xff & b[offset + 3]);
|
}
|
|
|
}
|