From acfb2e830a7a60724c9d0232af9d7ec08a12a4e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B0=B8=E4=BA=AE?= Date: Thu, 10 Nov 2022 18:38:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20aos-robot=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aos-model-test/pom.xml | 10 +++--- .../src/main/resources/application.properties | 2 +- .../java/com/aos/test/ApplicationTest.java | 2 +- .../src/test/java/com/aos/test/BaseTest.java | 24 +++++++++++++- .../src/main/java/com/aos/robot/WXAlarm.java | 12 +++---- .../src/main/java/com/aos/robot/WxRobot.java | 25 ++++++++------ .../com/aos/robot/conf/AutoRobotConfig.java | 2 +- .../java/com/aos/robot/model/RobotConfig.java | 4 +-- .../java/com/aos/robot/model/RobotInfo.java | 10 ++++++ .../java/com/aos/robot/model/RobotPatam.java | 4 +++ .../java/com/aos/robot/model/RobotRes.java | 28 +++------------- .../{RobotParam.java => WxRobotParam.java} | 2 +- .../java/com/aos/robot/model/WxRobotRes.java | 33 +++++++++++++++++++ .../java/com/aos/robot/service/Robot.java | 16 +++++++++ 14 files changed, 123 insertions(+), 51 deletions(-) create mode 100644 aos-robot/src/main/java/com/aos/robot/model/RobotInfo.java create mode 100644 aos-robot/src/main/java/com/aos/robot/model/RobotPatam.java rename aos-robot/src/main/java/com/aos/robot/model/{RobotParam.java => WxRobotParam.java} (88%) create mode 100644 aos-robot/src/main/java/com/aos/robot/model/WxRobotRes.java create mode 100644 aos-robot/src/main/java/com/aos/robot/service/Robot.java diff --git a/aos-model-test/pom.xml b/aos-model-test/pom.xml index ff34b11..81cfe0b 100644 --- a/aos-model-test/pom.xml +++ b/aos-model-test/pom.xml @@ -35,10 +35,6 @@ org.springframework.boot spring-boot-starter-web - - org.springframework.boot - spring-boot-starter-web - com.aos aos-web @@ -49,6 +45,12 @@ aos-robot 1.0-SNAPSHOT + + cn.hutool + hutool-all + 5.8.9 + test + diff --git a/aos-model-test/src/main/resources/application.properties b/aos-model-test/src/main/resources/application.properties index c3d599d..e4dc345 100644 --- a/aos-model-test/src/main/resources/application.properties +++ b/aos-model-test/src/main/resources/application.properties @@ -1,2 +1,2 @@ -asura.robot.wx.ids.test=dc62c56e-c194-4a22-87ff-d9d0e30f56b4 +aos.robots.wx.id=dc62c56e-c194-4a22-87ff-d9d0e30f56b4 spring.profiles.active=dev diff --git a/aos-model-test/src/test/java/com/aos/test/ApplicationTest.java b/aos-model-test/src/test/java/com/aos/test/ApplicationTest.java index 18a560c..1c06f38 100644 --- a/aos-model-test/src/test/java/com/aos/test/ApplicationTest.java +++ b/aos-model-test/src/test/java/com/aos/test/ApplicationTest.java @@ -18,6 +18,6 @@ public class ApplicationTest { @Test public void test() throws InterruptedException { - wxAlarm.alarm("test", "qwe"); + wxAlarm.alarm("wx", "qwe"); } } diff --git a/aos-model-test/src/test/java/com/aos/test/BaseTest.java b/aos-model-test/src/test/java/com/aos/test/BaseTest.java index 0ce50a9..4411ab3 100644 --- a/aos-model-test/src/test/java/com/aos/test/BaseTest.java +++ b/aos-model-test/src/test/java/com/aos/test/BaseTest.java @@ -1,6 +1,8 @@ package com.aos.test; +import cn.hutool.json.JSONUtil; import com.aos.robot.WXAlarm; +import lombok.Data; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -8,6 +10,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.junit4.SpringRunner; +import java.text.MessageFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; + @RunWith(SpringRunner.class) @SpringBootTest(args = "--eureka.client.register-with-eureka=false", webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseTest.Application.class) public class BaseTest { @@ -22,6 +28,22 @@ public class BaseTest { @Test public void robotTest() { - wxAlarm.alarm("test", "123"); + tmp tmp = new tmp(); + tmp.setAge(1); + tmp.setName("wyl"); + String test = JSONUtil.toJsonStr(tmp); + String format = MessageFormat.format("测试 {0},{1}", test, test); + System.out.println(format); +// wxAlarm.alarm("test", "123"); + } + + @Data + public class tmp { + String name; + Integer age; + LocalDate date = LocalDate.now(); + LocalDateTime dateTime = LocalDateTime.now(); } } + + diff --git a/aos-robot/src/main/java/com/aos/robot/WXAlarm.java b/aos-robot/src/main/java/com/aos/robot/WXAlarm.java index 8cbc75a..6b9f811 100644 --- a/aos-robot/src/main/java/com/aos/robot/WXAlarm.java +++ b/aos-robot/src/main/java/com/aos/robot/WXAlarm.java @@ -1,7 +1,7 @@ package com.aos.robot; import com.aos.robot.model.MegTypeEnum; -import com.aos.robot.model.RobotParam; +import com.aos.robot.model.WxRobotParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.exception.ExceptionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -47,9 +47,9 @@ public class WXAlarm { } private void makeMarkdownMessage(String robotName, String message) { - RobotParam robotParam = new RobotParam(); + WxRobotParam robotParam = new WxRobotParam(); robotParam.setMsgtype(MegTypeEnum.MARKDOWN); - RobotParam.Markdown markdown = new RobotParam.Markdown(); + WxRobotParam.Markdown markdown = new WxRobotParam.Markdown(); message = "## 当前时间 " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "\n" + message; markdown.setContent(message); robotParam.setMarkdown(markdown); @@ -59,8 +59,8 @@ public class WXAlarm { private void makeTextMessage(String robotName, String message) { message = "当前环境:" + env + "\n" + "当前时间:" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "\n" + message; - RobotParam robotParam = new RobotParam(); - RobotParam.Text text = new RobotParam.Text(); + WxRobotParam robotParam = new WxRobotParam(); + WxRobotParam.Text text = new WxRobotParam.Text(); text.setContent(message); robotParam.setText(text); this.send(robotName, robotParam); @@ -75,7 +75,7 @@ public class WXAlarm { * @Date 2022/8/5 * @Author wangyl */ - private void send(String robotName, RobotParam robotParam) { + private void send(String robotName, WxRobotParam robotParam) { robot.sendMessage(robotName, robotParam); } diff --git a/aos-robot/src/main/java/com/aos/robot/WxRobot.java b/aos-robot/src/main/java/com/aos/robot/WxRobot.java index a5ed3e5..7c96a98 100644 --- a/aos-robot/src/main/java/com/aos/robot/WxRobot.java +++ b/aos-robot/src/main/java/com/aos/robot/WxRobot.java @@ -1,9 +1,12 @@ package com.aos.robot; import com.aos.robot.model.RobotConfig; -import com.aos.robot.model.RobotParam; -import com.aos.robot.model.RobotRes; +import com.aos.robot.model.RobotInfo; +import com.aos.robot.model.RobotPatam; +import com.aos.robot.model.WxRobotRes; +import com.aos.robot.service.Robot; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; @@ -14,10 +17,11 @@ import javax.annotation.Resource; @Slf4j @Component -public class WxRobot { +public class WxRobot implements Robot { + @Resource(name = "robotRestTemplate") RestTemplate restTemplate; - @Resource + @Autowired RobotConfig robotConfig; /** @@ -29,17 +33,18 @@ public class WxRobot { * @Date 2022/8/5 * @Author wangyl */ - public void sendMessage(String robotName, RobotParam robotParam) { - String key = robotConfig.getIds().get(robotName); - if (StringUtils.isEmpty(key)) { + @Override + public void sendMessage(String robotName, RobotPatam robotParam) { + RobotInfo robotInfo = robotConfig.getRobots().get(robotName); + if (StringUtils.isEmpty(robotInfo)) { throw new RuntimeException("获取机器人名称:" + robotName + "对应的id失败,请检查配置asura.robot.wx.ids." + robotName + "是否存在"); } - String url = RobotConfig.URL + key; - ResponseEntity stringResponseEntity = restTemplate.postForEntity(url, robotParam, RobotRes.class); + String url = robotInfo.getUrl() + robotInfo.getId(); + ResponseEntity stringResponseEntity = restTemplate.postForEntity(url, robotParam, WxRobotRes.class); if (stringResponseEntity.getStatusCode() != HttpStatus.OK) { throw new RuntimeException("消息发送异常,网络代码【" + stringResponseEntity.getStatusCodeValue() + "】"); } - RobotRes body = stringResponseEntity.getBody(); + WxRobotRes body = stringResponseEntity.getBody(); if (!body.succeed()) { log.error("消息发送异常【{}】,错误码【{}】", body.getErrmsg(), body.getErrcode()); throw new RuntimeException("消息发送异常,【" + body.getErrmsg() + "】"); diff --git a/aos-robot/src/main/java/com/aos/robot/conf/AutoRobotConfig.java b/aos-robot/src/main/java/com/aos/robot/conf/AutoRobotConfig.java index 5d4caf3..3616c48 100644 --- a/aos-robot/src/main/java/com/aos/robot/conf/AutoRobotConfig.java +++ b/aos-robot/src/main/java/com/aos/robot/conf/AutoRobotConfig.java @@ -36,7 +36,7 @@ public class AutoRobotConfig { } @Bean - @ConfigurationProperties(prefix = "asura.robot.wx") + @ConfigurationProperties(prefix = "aos") public RobotConfig readDruidDataSource() { return new RobotConfig(); } diff --git a/aos-robot/src/main/java/com/aos/robot/model/RobotConfig.java b/aos-robot/src/main/java/com/aos/robot/model/RobotConfig.java index 84f0e5b..264d215 100644 --- a/aos-robot/src/main/java/com/aos/robot/model/RobotConfig.java +++ b/aos-robot/src/main/java/com/aos/robot/model/RobotConfig.java @@ -8,7 +8,5 @@ import java.util.Map; @Data public class RobotConfig { - private Map ids = new HashMap<>(); - final static public String URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="; + private Map robots = new HashMap<>(); } - diff --git a/aos-robot/src/main/java/com/aos/robot/model/RobotInfo.java b/aos-robot/src/main/java/com/aos/robot/model/RobotInfo.java new file mode 100644 index 0000000..c91bf1a --- /dev/null +++ b/aos-robot/src/main/java/com/aos/robot/model/RobotInfo.java @@ -0,0 +1,10 @@ +package com.aos.robot.model; + +import lombok.Data; + + +@Data +public class RobotInfo { + private String id; + private String url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="; +} diff --git a/aos-robot/src/main/java/com/aos/robot/model/RobotPatam.java b/aos-robot/src/main/java/com/aos/robot/model/RobotPatam.java new file mode 100644 index 0000000..d1bc172 --- /dev/null +++ b/aos-robot/src/main/java/com/aos/robot/model/RobotPatam.java @@ -0,0 +1,4 @@ +package com.aos.robot.model; + +public interface RobotPatam { +} diff --git a/aos-robot/src/main/java/com/aos/robot/model/RobotRes.java b/aos-robot/src/main/java/com/aos/robot/model/RobotRes.java index b6bc6a6..cf4a185 100644 --- a/aos-robot/src/main/java/com/aos/robot/model/RobotRes.java +++ b/aos-robot/src/main/java/com/aos/robot/model/RobotRes.java @@ -1,32 +1,14 @@ package com.aos.robot.model; -import lombok.Data; - /** * @author: wangyl * @date: 2022/8/5 * @description: 企业微信机器人返回信息 */ -@Data -public class RobotRes { - /** - * 错误码 - */ - Integer errcode; - /** - * 错误信息 - */ - String errmsg; +public interface RobotRes { + String getErrcode(); - /** - * 判断是否成功 - * - * @param - * @return java.lang.Boolean - * @Date 2022/8/5 - * @Author wangyl - */ - public Boolean succeed() { - return errcode == 0; - } + String getErrmsg(); + + Boolean succeed(); } diff --git a/aos-robot/src/main/java/com/aos/robot/model/RobotParam.java b/aos-robot/src/main/java/com/aos/robot/model/WxRobotParam.java similarity index 88% rename from aos-robot/src/main/java/com/aos/robot/model/RobotParam.java rename to aos-robot/src/main/java/com/aos/robot/model/WxRobotParam.java index 6cae375..6774104 100644 --- a/aos-robot/src/main/java/com/aos/robot/model/RobotParam.java +++ b/aos-robot/src/main/java/com/aos/robot/model/WxRobotParam.java @@ -5,7 +5,7 @@ import lombok.Data; import java.util.List; @Data -public class RobotParam { +public class WxRobotParam implements RobotPatam { MegTypeEnum msgtype = MegTypeEnum.TEXT; Text text; Markdown markdown; diff --git a/aos-robot/src/main/java/com/aos/robot/model/WxRobotRes.java b/aos-robot/src/main/java/com/aos/robot/model/WxRobotRes.java new file mode 100644 index 0000000..b694e38 --- /dev/null +++ b/aos-robot/src/main/java/com/aos/robot/model/WxRobotRes.java @@ -0,0 +1,33 @@ +package com.aos.robot.model; + +import lombok.Data; + +/** + * @author: wangyl + * @date: 2022/8/5 + * @description: 企业微信机器人返回信息 + */ +@Data +public class WxRobotRes implements RobotRes { + /** + * 错误码 + */ + String errcode; + /** + * 错误信息 + */ + String errmsg; + + /** + * 判断是否成功 + * + * @param + * @return java.lang.Boolean + * @Date 2022/8/5 + * @Author wangyl + */ + @Override + public Boolean succeed() { + return "0".equals(errcode); + } +} diff --git a/aos-robot/src/main/java/com/aos/robot/service/Robot.java b/aos-robot/src/main/java/com/aos/robot/service/Robot.java new file mode 100644 index 0000000..083f172 --- /dev/null +++ b/aos-robot/src/main/java/com/aos/robot/service/Robot.java @@ -0,0 +1,16 @@ +package com.aos.robot.service; + +import com.aos.robot.model.RobotPatam; + +public interface Robot { + /** + * 发送消息 + * + * @param robotName + * @param robotParam + * @return void + * @Date 2022/11/10 + * @Author wangyl + */ + void sendMessage(String robotName, RobotPatam robotParam); +}