From d6075e7ec88fcbf5b4677e6fc9007a4a53288f0e Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 10 十月 2024 09:20:41 +0800 Subject: [PATCH] 钉钉发送消息改为不同机构有不同的发送钉钉群(可以是相同的群) --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java | 162 +++++++++++++++++++++++--------- pipIrr-platform/pipIrr-global/src/main/resources/application-global(ym元谋系统).yml | 30 ++++- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java | 5 pipIrr-platform/pipIrr-global/src/main/resources/application-global(test测试系统).yml | 31 ++++- pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java | 2 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml | 30 ++++- 6 files changed, 192 insertions(+), 68 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java index e66f22b..863695f 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java @@ -7,7 +7,7 @@ import com.taobao.api.ApiException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import javax.crypto.Mac; @@ -17,6 +17,8 @@ import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; /** * @author ZhuBaoMin @@ -27,6 +29,18 @@ @Slf4j @Component public class DingTalk { + private static final String dingTalkConfigPriFix = "dingtalk"; + private static final Map<String, Option> optionsMap = new HashMap(); + + class Option{ + public Boolean enable ; + public String robotUrl ; + public String robotAccessToken ; + public String secret ; + public Boolean atAll ; + public String mobile ; + } + /* @Value("${dingtalk.robot.url}") private String URL; @@ -41,54 +55,108 @@ @Value("${dingtalk.mobile}") private String MOBILE; + */ - public void sendMessage(String message) { - try { - Long timestamp = System.currentTimeMillis(); - String secret = SECRET; - String stringToSign = timestamp + "\n" + secret; - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); - byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); - String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); - - //sign瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭� - DingTalkClient client = new DefaultDingTalkClient( URL + "?sign=" + sign + "×tamp=" + timestamp); - OapiRobotSendRequest req = new OapiRobotSendRequest(); - /** - * 鍙戦�佹枃鏈秷鎭� - */ - //瀹氫箟鏂囨湰鍐呭 - OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); - text.setContent(message); - //瀹氫箟 @瀵硅薄 - OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); - if(AT_ALL) { - at.setIsAtAll(true); - }else { - at.setAtMobiles(Collections.singletonList(MOBILE)); + private Option getOptions(String orgTag, Environment env){ + Option vo = null ; + try{ + vo = optionsMap.get(orgTag); + if(vo == null){ + vo = new Option(); + String enableStr = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".enable"); + if(enableStr != null && !enableStr.trim().equals("")){ + vo.enable = Boolean.valueOf(enableStr); + }else{ + vo.enable = true ; + } + vo.robotUrl = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".robot.url"); + vo.robotAccessToken = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".robot.access-token"); + vo.secret = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".robot.secret"); + String atAllStr = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".at-all"); + if(atAllStr != null && !atAllStr.trim().equals("")){ + vo.atAll = Boolean.valueOf(atAllStr); + }else{ + vo.atAll = true ; + } + vo.mobile = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".mobile"); + optionsMap.put(orgTag, vo) ; } - //璁剧疆娑堟伅绫诲瀷 - req.setMsgtype("text"); - req.setText(text); - req.setAt(at); - OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN); - log.info(rsp.getBody()); - } catch (ApiException e) { - log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); - //e.printStackTrace(); - } catch (UnsupportedEncodingException e) { - log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); - //e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); - //e.printStackTrace(); - } catch (InvalidKeyException e) { - log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); - //e.printStackTrace(); - } catch (Exception e){ - log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); - //e.printStackTrace(); + }catch (Exception e){ + vo = null ; + } + return vo ; + } + + /** + * 鍚戦拤閽夌兢鍙戦�佹秷鎭� + * @param orgTag + * @param env + * @param message + */ + public void sendMessage(String orgTag, Environment env, String message) { + if(orgTag == null || orgTag.trim().equals("")){ + log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝鏈烘瀯鏍囩涓虹┖"); + return; + } + if(env == null){ + log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝Spring鐜涓虹┖"); + return; + } + if(message == null || message.trim().equals("")){ + log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝娑堟伅涓虹┖"); + return; + } + Option vo = this.getOptions(orgTag, env) ; + if(vo == null){ + log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝閽夐拤閰嶇疆閿欒"); + return; + } + if(vo.enable){ + try { + Long timestamp = System.currentTimeMillis() ; + String stringToSign = timestamp + "\n" + vo.secret; + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(vo.secret.getBytes("UTF-8"), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); + + //瀹氫箟鏂囨湰鍐呭 + OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); + text.setContent(message); + //瀹氫箟 @瀵硅薄 + OapiRobotSendRequest.At at = new OapiRobotSendRequest.At(); + if(vo.atAll) { + at.setIsAtAll(true); + }else { + at.setAtMobiles(Collections.singletonList(vo.mobile)); + } + + OapiRobotSendRequest req = new OapiRobotSendRequest(); + //璁剧疆娑堟伅绫诲瀷 + req.setMsgtype("text"); + req.setText(text); + req.setAt(at); + + //sign瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭� + DingTalkClient client = new DefaultDingTalkClient( vo.robotUrl + "?sign=" + sign + "×tamp=" + timestamp); + OapiRobotSendResponse rsp = client.execute(req, vo.robotAccessToken); + log.info(rsp.getBody()); + } catch (ApiException e) { + log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); + //e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); + //e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); + //e.printStackTrace(); + } catch (InvalidKeyException e) { + log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); + //e.printStackTrace(); + } catch (Exception e){ + log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e); + //e.printStackTrace(); + } } } } diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml" index d8417c5..fa2694e 100644 --- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml" +++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050test\346\265\213\350\257\225\347\263\273\347\273\237\051.yml" @@ -178,13 +178,30 @@ #閽夐拤娑堟伅鎺ㄩ�� dingtalk: - robot: - url: https://oapi.dingtalk.com/robot/send - access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f - secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 - at-all: true - mobile: 18602657034 - + ym: + enable: true #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 + pj: + enable: false #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 + test: + enable: false #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 #闃�鎺у櫒鍙傛暟 rtu: batteryVolt: 17 diff --git "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml" "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml" index 610b648..962df65 100644 --- "a/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml" +++ "b/pipIrr-platform/pipIrr-global/src/main/resources/application-global\050ym\345\205\203\350\260\213\347\263\273\347\273\237\051.yml" @@ -178,12 +178,30 @@ #閽夐拤娑堟伅鎺ㄩ�� dingtalk: - robot: - url: https://oapi.dingtalk.com/robot/send - access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f - secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 - at-all: true - mobile: 18602657034 + ym: + enable: true #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 + pj: + enable: false #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 + test: + enable: false #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 #闃�鎺у櫒鍙傛暟 rtu: diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml index 610b648..962df65 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml @@ -178,12 +178,30 @@ #閽夐拤娑堟伅鎺ㄩ�� dingtalk: - robot: - url: https://oapi.dingtalk.com/robot/send - access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f - secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 - at-all: true - mobile: 18602657034 + ym: + enable: true #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 + pj: + enable: false #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 + test: + enable: false #鏄惁鍚敤 + robot: + url: https://oapi.dingtalk.com/robot/send + access-token: fecef8e7725998f8912af05419580861aafc73413c4920036c07c050fa33055f + secret: SEC6042bc964d08899a5853eb321eb5a4d842a395982777f815bd07451c879228b7 + at-all: true + mobile: 18602657034 #闃�鎺у櫒鍙傛暟 rtu: diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java index 1d267ee..130ebe9 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forMs/MsObj4Ding.java @@ -3,8 +3,10 @@ import com.dy.common.queue.NodeObj; import com.dy.common.springUtil.SpringContextUtil; import com.dy.pipIrrGlobal.config.DingTalk; +import com.dy.rtuMw.server.ServerProperties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.springframework.core.env.Environment; /** * @Author: liurunyu @@ -27,7 +29,8 @@ */ public boolean dealSelf(){ DingTalk dingTalk = SpringContextUtil.getBean(DingTalk.class) ; - dingTalk.sendMessage(ms); + Environment env = SpringContextUtil.getApplicationContext().getEnvironment() ; + dingTalk.sendMessage(ServerProperties.orgTag, env, ms); return true ; } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java index 7684816..f35f3f1 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java @@ -68,7 +68,7 @@ public String sendMessage(String message) { try { - dingTalk.sendMessage(message); + dingTalk.sendMessage(DataSourceContext.get(), this.env, message); } catch (Exception e) { return "鍙戦�佸け璐�"; } -- Gitblit v1.8.0