Browse Source

短信改为使用飞鸽传书

zhaopeiqing 4 years ago
parent
commit
50d4051718

+ 1 - 1
pom.xml

@@ -31,7 +31,7 @@
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpclient</artifactId>
-			<version>4.2.5</version>
+			<version>4.5.2</version>
 		</dependency>
 		
 		<dependency>

+ 16 - 18
src/main/java/com/ssm/controller/business/SendMessageContorller.java

@@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import com.alibaba.fastjson.JSON;
 import net.sf.json.JSONObject;
 
 import org.apache.log4j.Logger;
@@ -110,41 +111,38 @@ public class SendMessageContorller {
 	
 	/**
 	 * 发送短信
+	 *
 	 * @param request
 	 * @return
 	 */
 	@RoleLimit(pid = Const.SYSTEM_ROLE_LIMIT_PID, mid = Const.SYSTEM_ROLE_LIMIT_MID)
-	@Transactional(value="txManager")
-	@RequestMapping(value="sendMessage")
-	public Map<String, Object> sendMessage(HttpServletRequest request){
+	@Transactional(value = "txManager")
+	@RequestMapping(value = "sendMessage")
+	public Map<String, Object> sendMessage(HttpServletRequest request) {
 		SysUser sysuser = Util.getUserSession(request);
-		Map<String,Object> map = new HashMap<String, Object>();
-		if(sysuser != null){
+		Map<String, Object> map = new HashMap<String, Object>();
+		if (sysuser != null) {
 			try {
 				request.setCharacterEncoding("utf-8");
 				String smsUserPhoens = request.getParameter("smsUserPhoens");
 				String content = request.getParameter("content");
-				String[] smsuserIdsArray = smsUserPhoens.split(",");
-				String msgid = SmsUtil.SendSmsPost(smsUserPhoens, content,smsuserIdsArray.length);
+				String res = SmsUtil.sendNewSmsPost(smsUserPhoens, content);
+				Map mapObj = JSON.parseObject(res, Map.class);
+				String msgNo = mapObj.get("msg_no").toString();
+				int code = (int) map.get("code");
 				//将短信记录保存进数据库
 				SmsRecord smsRecord = new SmsRecord();
 				smsRecord.setContent(content);
 				smsRecord.setCreateDate(new Date());
 				smsRecord.setPhoens(smsUserPhoens);
-				smsRecord.setMsgid(msgid);
+				smsRecord.setMsgid(msgNo);
 				smsRecordService.insertSelective(smsRecord);
-				
-				//查询返回值状态
-				map = SmsUtil.verifyValue(msgid);
-				
-				if("success".equals(map.get("status"))){//提交供应商成功,查询发送是否成功
-					String result = SmsUtil.StatusReportPost(msgid);
+				if (code == 0) {// 提交供应商成功,查询发送是否成功
 					SmsSendState sss = new SmsSendState();
-					sss.setMsgid(msgid);
+					sss.setMsgid(msgNo);
 					sss.setCreateDate(new Date());
-					sss.setContents(result);
+					sss.setContents(res);
 					smsSendStateService.insertSelective(sss);
-					
 					map.put("status", SmsConst.SUCCESS);
 					map.put("message", "发送成功");
 				}
@@ -153,7 +151,7 @@ public class SendMessageContorller {
 				map.put("message", "发送异常");
 				e.printStackTrace();
 			}
-		}else{
+		} else {
 			map.put("status", SmsConst.FAILURE);
 			map.put("message", "请登录以后再执行此操作");
 		}

+ 30 - 0
src/main/java/com/ssm/util/sms/SmsUtil.java

@@ -12,15 +12,20 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import com.alibaba.fastjson.JSON;
+import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 
 import com.ssm.util.sms.SmsConst;
+import org.apache.http.util.EntityUtils;
 
 public class SmsUtil {
 	/**
@@ -85,6 +90,31 @@ public class SmsUtil {
 		return msgid;
 	}
 
+	/**
+	 * post请求发送短信(新)
+	 *
+	 * @param phones  手机号码
+	 * @param content 发送的内容
+	 * @return res    json返回值
+	 */
+	public static String sendNewSmsPost(String phones, String content) throws IOException {
+		HttpClient httpClient = HttpClients.createDefault();
+		HttpPost httpPost = new HttpPost("https://api.4321.sh/sms/send");
+		httpPost.addHeader("Content-Type", "application/json");
+		Map<String, Object> map = new HashMap<>();
+		map.put("apikey", "N11727b332");// api接口账号
+		map.put("secret", "1172799e3242ebe1");// api接口秘钥
+		map.put("sign_id", "101760");// 签名id
+		map.put("mobile", phones);// 手机号
+		map.put("content", content);// 短信内容
+		String json = JSON.toJSONString(map);
+		httpPost.setEntity(new StringEntity(json, "UTF-8"));
+		HttpResponse response = httpClient.execute(httpPost);
+		HttpEntity entity = response.getEntity();
+		String res = EntityUtils.toString(entity);
+		return res;
+	}
+
 	/**
 	   * get请求发送的状态(根据发送信息时返回成功的编号查询)
 	   * @param msgid 编号