diff --git a/src/main/java/com/zcloud/service/messages/impl/InsideMessagesImpl.java b/src/main/java/com/zcloud/service/messages/impl/InsideMessagesImpl.java index f7dab12c..e5a56c5d 100644 --- a/src/main/java/com/zcloud/service/messages/impl/InsideMessagesImpl.java +++ b/src/main/java/com/zcloud/service/messages/impl/InsideMessagesImpl.java @@ -21,7 +21,7 @@ public class InsideMessagesImpl implements PushMessages { @Transactional(rollbackFor = Exception.class) public void push(PushRecords pushRecords, String userId) throws Exception { PageData mes = new PageData(); - mes.put("BIANMA", pushRecords.getMessageTitle()); + mes.put("BIANMA", pushRecords.getTemplateId()); mes.put("SENDER_ID", "九公司应急管理"); mes.put("SENDER_NAME", "九公司应急管理"); mes.put("SYNOPSIS", pushRecords.getMessageTitle()); @@ -29,7 +29,7 @@ public class InsideMessagesImpl implements PushMessages { mes.put("RECEIVER_ID", userId); PageData content = new PageData(); content.putAll(pushRecords.getMessageContentMap()); - mes.put("CONTENT", content);// 站内信内容 + mes.put("CONTENT", content); noticeCorpService.sendNotice(mes); } } diff --git a/src/main/java/com/zcloud/util/SendSmsUtil.java b/src/main/java/com/zcloud/util/SendSmsUtil.java index 9bc40ee8..4937e4f8 100644 --- a/src/main/java/com/zcloud/util/SendSmsUtil.java +++ b/src/main/java/com/zcloud/util/SendSmsUtil.java @@ -1,9 +1,8 @@ package com.zcloud.util; import cn.hutool.core.convert.Convert; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; @@ -17,7 +16,6 @@ import org.springframework.http.MediaType; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.HashMap; import java.util.Map; /** @@ -82,23 +80,39 @@ public class SendSmsUtil { System.out.println(result); } + /** + * 发送自定义短信 无需模版 + * + * @param mobile 手机号 + * @param template 模板 例如 xxx${var}xxx + * @param content 替换内容 + * @return 是否成功 + */ public static boolean customizeSMSSending(String mobile, String template, Map content) { - String value = SIGNATURE + template; + // 替换模版中的变量 如 ${xxx} for (String key : content.keySet()) { - value = StrUtil.replace(value, "${" + key + "}", Convert.toStr(content.get(key))); + template = StrUtil.replace(template, "${" + key + "}", Convert.toStr(content.get(key))); } - JSONObject json = new JSONObject(); - json.put("username", USERNAME); - json.put("tKey", System.currentTimeMillis() / 1000); - json.put("password", MD5.md5(PASSWORD + json.getLong("tKey"))); - json.put("mobile", mobile); - json.put("content", value); - HttpRequest request = HttpRequest.post("https://api-bj-shss01-mix2.zthysms.com/v2/sendSms"); - request.body(json.toJSONString(), MediaType.APPLICATION_JSON_UTF8_VALUE); - request.timeout(60000); + return customizeSMSSending(mobile, template); + } + + /** + * 发送自定义短信 无需模版 + * + * @param mobile 手机号 + * @param content 发送内容 + * @return 是否成功 + */ + private static boolean customizeSMSSending(String mobile, String content) { + if (content.length() >= 1000) { + throw new RuntimeException("短信内容,最多支持1000个字符"); + } + JSONObject json = createRequestJson(mobile, content); + HttpRequest request = createHttpRequest(json, "https://api-bj-shss01-mix2.zthysms.com/v2/sendSms"); String body; try (HttpResponse response = request.execute()) { body = response.body(); + log.info("短信发送结果:【{}】", body); } catch (Exception e) { log.error("短信发送异常", e); return false; @@ -107,6 +121,37 @@ public class SendSmsUtil { return object == null || object.getInteger("code") == 200; } + /** + * 封装请求参数 + * + * @param mobile 手机号 + * @param content 发送内容 + * @return JSONObject + */ + private static JSONObject createRequestJson(String mobile, String content) { + JSONObject json = new JSONObject(); + json.put("username", USERNAME); + json.put("tKey", System.currentTimeMillis() / 1000); + json.put("password", DigestUtil.md5(PASSWORD + json.getLong("tKey"))); + json.put("mobile", mobile); + // 短信内容 必须要带上备案好的签名 + json.put("content", SIGNATURE + content); + return json; + } + + /** + * 创建请求对象 + * + * @param json 请求参数 + * @return HttpRequest + */ + private static HttpRequest createHttpRequest(JSONObject json,String url) { + HttpRequest request = HttpRequest.post(url); + request.body(json.toJSONString(), MediaType.APPLICATION_JSON_UTF8_VALUE); + request.timeout(60000); + return request; + } + /** * 封装要发送的电话以及要替换的内容 @@ -133,44 +178,44 @@ public class SendSmsUtil { }//d22f8a5d4a35b3761dc9525186e652a0 //测试接口 - public static void main(String[] args) throws ParseException { - //定义替换参数 - Map map = new HashMap<>(); - map.put("acci_date", DateUtil.format(new Date(), DatePattern.CHINESE_DATE_PATTERN)); - map.put("acci_addr", "xx省xx市xxx"); - map.put("acci_type", "测试类型"); - map.put("inju_member", "0"); - map.put("task_post", "测试"); - String value = SIGNATURE + "安全事故通知:${acci_date},在${acci_addr}发生了${acci_type}的安全事故,有${inju_member}的伤亡人数,您的职责是:${task_post}"; - for (String key : map.keySet()) { - value = StrUtil.replace(value, "${" + key + "}", Convert.toStr(map.get(key))); - } - if (value.length() >= 1000) { - throw new RuntimeException("短信内容,最多支持1000个字符"); - } - Long tKey = System.currentTimeMillis() / 1000; - String passWord = MD5.md5(PASSWORD + tKey); - JSONObject map2 = new JSONObject(); - map2.put("username", USERNAME); - map2.put("tKey", tKey); - map2.put("password", passWord); - map2.put("mobile", "18630387571"); - map2.put("content", value); - HttpRequest request = HttpRequest.post("https://api-bj-shss01-mix2.zthysms.com/v2/sendSms"); - request.body(map2.toJSONString(), MediaType.APPLICATION_JSON_UTF8_VALUE); - System.out.println(map2.toJSONString()); - request.timeout(60000); - String s = request.execute().body(); - System.out.println(s); -// JSONArray jsonArray = new JSONArray(); -// //接受返回结果 -// JSONObject records = new JSONObject(); +// public static void main(String[] args) throws ParseException { // //定义替换参数 -// JSONObject tpContent = new JSONObject(); -// tpContent.put("OUTSOURCEDNAME","测试"); -// records = SendSmsUtil.getRecords("18630387571",tpContent); -// jsonArray.add(records); -// SendSmsUtil.sendSms("121451",jsonArray,null); - } +// Map map = new HashMap<>(); +// map.put("acci_date", DateUtil.format(new Date(), DatePattern.CHINESE_DATE_PATTERN)); +// map.put("acci_addr", "xx省xx市xxx"); +// map.put("acci_type", "测试类型"); +// map.put("inju_member", "0"); +// map.put("task_post", "测试"); +// String value = SIGNATURE + "安全事故通知:${acci_date},在${acci_addr}发生了${acci_type}的安全事故,有${inju_member}的伤亡人数,您的职责是:${task_post}"; +// for (String key : map.keySet()) { +// value = StrUtil.replace(value, "${" + key + "}", Convert.toStr(map.get(key))); +// } +// if (value.length() >= 1000) { +// throw new RuntimeException("短信内容,最多支持1000个字符"); +// } +// Long tKey = System.currentTimeMillis() / 1000; +// String passWord = MD5.md5(PASSWORD + tKey); +// JSONObject map2 = new JSONObject(); +// map2.put("username", USERNAME); +// map2.put("tKey", tKey); +// map2.put("password", passWord); +// map2.put("mobile", "18630387571"); +// map2.put("content", value); +// HttpRequest request = HttpRequest.post("https://api-bj-shss01-mix2.zthysms.com/v2/sendSms"); +// request.body(map2.toJSONString(), MediaType.APPLICATION_JSON_UTF8_VALUE); +// System.out.println(map2.toJSONString()); +// request.timeout(60000); +// String s = request.execute().body(); +// System.out.println(s); +//// JSONArray jsonArray = new JSONArray(); +//// //接受返回结果 +//// JSONObject records = new JSONObject(); +//// //定义替换参数 +//// JSONObject tpContent = new JSONObject(); +//// tpContent.put("OUTSOURCEDNAME","测试"); +//// records = SendSmsUtil.getRecords("18630387571",tpContent); +//// jsonArray.add(records); +//// SendSmsUtil.sendSms("121451",jsonArray,null); +// } }