From 204dae5860caf72df67f264f9192e3ac3238f93d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Thu, 4 Sep 2025 17:38:27 +0800 Subject: [PATCH] 1 --- .../business/controller/DCController.java | 2 +- .../business/controller/WXController.java | 18 ++--- .../cn/van333/wxsend/util/WxSendUtil.java | 81 ++++++++++++++++++- 3 files changed, 88 insertions(+), 13 deletions(-) diff --git a/src/main/java/cn/van333/wxsend/business/controller/DCController.java b/src/main/java/cn/van333/wxsend/business/controller/DCController.java index 37672e3..60e54a4 100644 --- a/src/main/java/cn/van333/wxsend/business/controller/DCController.java +++ b/src/main/java/cn/van333/wxsend/business/controller/DCController.java @@ -38,7 +38,7 @@ public class DCController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.TY); + String result = WxSendUtil.sendNotifyForMpnews(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.TY); return R.ok(result); } } diff --git a/src/main/java/cn/van333/wxsend/business/controller/WXController.java b/src/main/java/cn/van333/wxsend/business/controller/WXController.java index 41a2a2a..dfe02bc 100644 --- a/src/main/java/cn/van333/wxsend/business/controller/WXController.java +++ b/src/main/java/cn/van333/wxsend/business/controller/WXController.java @@ -49,7 +49,7 @@ public class WXController { if (ObjectUtil.isEmpty(WXMessageType.valueOf(message.getMessageType()))) { return R.error("消息类型不存在"); } - String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.valueOf(message.getMessageType())); + String result = WxSendUtil.sendNotifyForMpnews(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.valueOf(message.getMessageType())); return R.ok(result); } @@ -88,7 +88,7 @@ public class WXController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.QL); + String result = WxSendUtil.sendNotifyForMpnews("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.QL); logger.info("result 打印---{}",result); return R.ok(result); @@ -106,7 +106,7 @@ public class WXController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.QH); + String result = WxSendUtil.sendNotifyForMpnews(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.QH); return R.ok(result); } @@ -122,7 +122,7 @@ public class WXController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.MT); + String result = WxSendUtil.sendNotifyForMpnews(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.MT); return R.ok(result); } @@ -138,7 +138,7 @@ public class WXController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.IMT); + String result = WxSendUtil.sendNotifyForMpnews(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.IMT); return R.ok(result); } @@ -154,7 +154,7 @@ public class WXController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.TY); + String result = WxSendUtil.sendNotifyForMpnews(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.TY); return R.ok(result); } @@ -183,7 +183,7 @@ public class WXController { if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.JENKINS); + String result = WxSendUtil.sendNotifyForMpnews("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.JENKINS); logger.info("result 打印---{}",result); return R.ok(result); @@ -210,11 +210,11 @@ public class WXController { } logger.info("vanToken 打印---{}",vanToken); logger.info("source 打印---{}",source); - String sourceForQL = SourceForQLUtil.transferSource(source); + //String sourceForQL = SourceForQLUtil.transferSource(source); if (!StrUtil.isAllNotEmpty(message.getTitle(), message.getText())) { return R.error("缺少标题和内容"); } - String result = WxSendUtil.sendNotify("("+sourceForQL+") "+message.getTitle(), message.getText(), message.getTouser(), WXMessageType.JD); + String result = WxSendUtil.sendNotifyForText(message.getTitle(), message.getText(), message.getTouser(), WXMessageType.JD); logger.info("result 打印---{}",result); return R.ok(result); diff --git a/src/main/java/cn/van333/wxsend/util/WxSendUtil.java b/src/main/java/cn/van333/wxsend/util/WxSendUtil.java index 874a899..78f2c68 100644 --- a/src/main/java/cn/van333/wxsend/util/WxSendUtil.java +++ b/src/main/java/cn/van333/wxsend/util/WxSendUtil.java @@ -66,7 +66,7 @@ public class WxSendUtil { } } - public static String sendNotify(String title, String text, String touser, WXMessageType wxMessageType) throws Exception { + public static String sendNotifyForMpnews(String title, String text, String touser, WXMessageType wxMessageType) throws Exception { if (!StrUtil.isAllNotEmpty(title, text)) { return "title,text不能为空!"; } @@ -75,10 +75,10 @@ public class WxSendUtil { String[] split = touser.split(","); touserList.addAll(Arrays.asList(split)); } - return sendNotify(title, text, touserList, wxMessageType); + return sendNotifyForMpnews(title, text, touserList, wxMessageType); } - public static String sendNotify(String title, String text, List touser, WXMessageType wxMessageType) throws Exception { + public static String sendNotifyForMpnews(String title, String text, List touser, WXMessageType wxMessageType) throws Exception { if (!StrUtil.isAllNotEmpty(title, text)) { return "title,text不能为空!"; @@ -145,6 +145,81 @@ public class WxSendUtil { } + } + public static String sendNotifyForText(String title, String text, String touser, WXMessageType wxMessageType) throws Exception { + if (!StrUtil.isAllNotEmpty(title, text)) { + return "title,text不能为空!"; + } + ArrayList touserList = new ArrayList<>(); + if (StringUtils.isNotEmpty(touser)) { + String[] split = touser.split(","); + touserList.addAll(Arrays.asList(split)); + } + return sendNotifyForText(title, text, touserList, wxMessageType); + } + + public static String sendNotifyForText(String title, String content, List touser, WXMessageType wxMessageType) throws Exception { + + if (!StrUtil.isAllNotEmpty(title, content)) { + return "title,text不能为空!"; + } + + HashMap jsonMap = new HashMap<>(); + StringBuilder touserStringBuilder = new StringBuilder(); + String touserStr = "@all"; + if (ObjectUtil.isNotEmpty(touser)) { + + if (touser.size() > 1) { + touser.forEach(t -> + touserStringBuilder.append(t).append("|") + ); + touserStr = touserStringBuilder.substring(0, touser.size() - 1); + } else { + touserStr = touserStringBuilder.append(touser.get(0)).toString(); + } + + } + jsonMap.put("touser", touserStr); + jsonMap.put("agentid", wxMessageType.getAgentid()); + jsonMap.put("safe", "0"); + jsonMap.put("msgtype", "text"); + HashMap text = new HashMap<>(); + // 刘亦菲 + //articles.put("thumb_media_id", "258F4sbTUwwHLRtKDDr4yqH2PzfYPlHPbOLCazHou_3JCgq7Dh1f9PMvrIaIv2oHk"); + // 李星云 + //articles.put("thumb_media_id", "2ES5cuBiuNKcbFp7RKsjebNM3joCIloIr1QWYwGS86SQzgG_7uxGrJpFlmuHXZl75"); + content = content.replaceAll("\\\\n", "
"); + if (content.contains("\n")){ + content = content.replaceAll("\\n", "
"); + } + text.put("content",title + "
" + content); + + jsonMap.put("text", text); + // 表示是否开启id转译,0表示否,1表示是,默认0 + jsonMap.put("enable id trans",1); + String finalSendStr = JSON.toJSONString(jsonMap); + //finalSendStr = finalSendStr.replaceAll("\\\\n", "

"); + + logger.info("发送的消息内容: \n" + finalSendStr); + + String token = getToken(wxMessageType.getCorpid(), wxMessageType.getCorpsecret()); + //logger.info("获取的token"+token); + if (StrUtil.isEmptyIfStr(token)) { + throw new Exception(); + } + String responseStr = HttpRequest.post(SEND + getToken(wxMessageType.getCorpid(), wxMessageType.getCorpsecret())) + .body(finalSendStr)//头信息,多个头信息多次调用此方法即可 + .execute().body(); + logger.info("发送消息的响应: \n" + responseStr); + + SendRespones sendRespones = JSON.parseObject(responseStr, SendRespones.class); + if (sendRespones.getErrcode().equals(0)) { + return "企业微信应用消息发送通知消息成功\uD83C\uDF89。"; + } else { + return sendRespones.getErrmsg(); + } + + } }