From aef4826e0ddb92c6a61ca4e5bf4b95bef0821e4e Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 22 Apr 2021 15:38:13 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java | 44 ++++++++++++++++++---
src/main/java/com/xcong/excoin/common/system/controller/CommonController.java | 15 +++++++
src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java | 29 ++++++++++----
3 files changed, 73 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java b/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java
index d88a301..4fe1e56 100644
--- a/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java
+++ b/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java
@@ -3,6 +3,7 @@
import com.xcong.excoin.common.exception.GlobalException;
import com.xcong.excoin.common.system.bean.SysExceptionDetailEntity;
import com.xcong.excoin.modules.platform.dao.SysExceptionDetailDao;
+import com.xcong.excoin.utils.ThreadPoolUtils;
import com.xcong.excoin.utils.dingtalk.DingTalkUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
@@ -17,6 +18,7 @@
import org.springframework.stereotype.Component;
import org.springframework.web.bind.MethodArgumentNotValidException;
+import javax.net.ssl.SSLException;
import javax.validation.ValidationException;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -49,7 +51,7 @@
@AfterThrowing(pointcut = "exceptionCatch()", throwing = "ex")
public void afterThrows(JoinPoint jp, Exception ex) throws Exception {
- if (ex instanceof GlobalException || ex instanceof MethodArgumentNotValidException || ex instanceof ValidationException || ex instanceof DuplicateKeyException || ex instanceof BadCredentialsException || ex instanceof UsernameNotFoundException) {
+ if (ex instanceof GlobalException || ex instanceof MethodArgumentNotValidException || ex instanceof ValidationException || ex instanceof DuplicateKeyException || ex instanceof BadCredentialsException || ex instanceof UsernameNotFoundException || ex instanceof SSLException) {
throw ex;
}
@@ -58,14 +60,25 @@
}
SysExceptionDetailEntity exceptionData = new SysExceptionDetailEntity();
- exceptionData.setCreateTime(new Date());
- exceptionData.setMachine(InetAddress.getLocalHost().getHostName()+"-"+profiles);
- exceptionData.setAddress(InetAddress.getLocalHost().getHostAddress());
- exceptionData.setExceptionMsg(printStackTraceToString(ex));
- exceptionData.setSimpleMsg(ex.getMessage());
- sysExceptionDetailDao.insert(exceptionData);
+ String exStr = printStackTraceToString(ex);
+ ThreadPoolUtils.EXECUTOR.execute(new Runnable(){
+ @Override
+ public void run() {
+ try {
+ log.info("插入");
+ exceptionData.setCreateTime(new Date());
+ exceptionData.setMachine(InetAddress.getLocalHost().getHostName() + "-" + profiles);
+ exceptionData.setAddress(InetAddress.getLocalHost().getHostAddress());
+ exceptionData.setExceptionMsg(exStr);
+ exceptionData.setSimpleMsg(ex.getMessage());
+ sysExceptionDetailDao.insert(exceptionData);
+ } catch (Exception e) {
+ log.error("exception aop");
+ }
+ }
+ });
- DingTalkUtils.sendActionCard(6);
+ DingTalkUtils.sendMsg(profiles + "--" + ex.getMessage(), exStr.substring(0, 200), exceptionData.getId());
throw ex;
}
diff --git a/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java b/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
index 3952716..04f19af 100644
--- a/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
+++ b/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
@@ -4,10 +4,12 @@
import cn.hutool.core.util.StrUtil;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.common.system.bean.SysExceptionDetailEntity;
import com.xcong.excoin.common.system.dto.Base64UploadDto;
import com.xcong.excoin.common.system.service.CommonService;
import com.xcong.excoin.configurations.properties.AliOssProperties;
import com.xcong.excoin.modules.blackchain.service.TrxUsdtUpdateService;
+import com.xcong.excoin.modules.platform.dao.SysExceptionDetailDao;
import com.xcong.excoin.utils.MessageSourceUtils;
import com.xcong.excoin.utils.OssUtils;
import com.xcong.excoin.utils.RedisUtils;
@@ -20,7 +22,9 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -116,6 +120,7 @@
private TrxUsdtUpdateService trxUsdtUpdateService;
@ApiOperation(value = "trc20测试")
+ @Transactional(rollbackFor = Exception.class)
@GetMapping(value = "/getTrc20Test")
public Result getTrc20Test() {
long start = System.currentTimeMillis();
@@ -126,6 +131,16 @@
TrxUsdtUpdateService.getblockbynum(BigInteger.valueOf(Long.parseLong(trc20BlockNum.toString())));
long end = System.currentTimeMillis();
System.out.println(end);
+ BigDecimal.ONE.divide(BigDecimal.ZERO);
return Result.ok(end - start);
}
+
+ @Autowired
+ private SysExceptionDetailDao sysExceptionDetailDao;
+
+ @GetMapping(value = "/getExceptionMsg")
+ public Result getExceptionMsg(@RequestParam(value = "id") Long id) {
+ SysExceptionDetailEntity sysExceptionDetailEntity = sysExceptionDetailDao.selectById(id);
+ return Result.ok(sysExceptionDetailEntity);
+ }
}
diff --git a/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
index 18a727c..45afca9 100644
--- a/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
+++ b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
@@ -1,5 +1,6 @@
package com.xcong.excoin.utils.dingtalk;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
@@ -23,14 +24,19 @@
private static final String SECRET = "SECbc84fd6c2edb9f2f440f9f969981ca310ba553e7c7994cf68cf26e4607cc5943";
- public static void sendActionCard(int type) {
- log.info("send dingtalk");
+ private static DingTalkClient initClient() throws Exception {
String url = "https://oapi.dingtalk.com/robot/send?access_token=54a0d627111f3667f7e98691c15becadb742c4da895e60f6d77392389e49658a";
Long timestamp = System.currentTimeMillis();
+ String sign = generateSign(timestamp);
+ url = url + "×tamp=" + timestamp + "&sign=" + sign;
+ return new DefaultDingTalkClient(url);
+ }
+
+ public static void sendActionCard(int type) {
+ log.info("send dingtalk");
+
try {
- String sign = generateSign(timestamp);
- url = url + "×tamp=" + timestamp + "&sign=" + sign;
- DingTalkClient client = new DefaultDingTalkClient(url);
+ DingTalkClient client = initClient();
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("actionCard");
OapiRobotSendRequest.Actioncard actionCard = new OapiRobotSendRequest.Actioncard();
@@ -49,8 +55,28 @@
log.info(JSONObject.toJSONString(response));
} catch (Exception e) {
log.error("#dingtalk send error#", e);
- } finally {
- log.error("#dingtalk finally#");
+ }
+ }
+
+ public static void sendMsg(String title, String msg, Long id) {
+ try {
+ String text = "### {} \n\n {}";
+ DingTalkClient client = initClient();
+
+ OapiRobotSendRequest request = new OapiRobotSendRequest();
+ request.setMsgtype("actionCard");
+ OapiRobotSendRequest.Actioncard actionCard = new OapiRobotSendRequest.Actioncard();
+ actionCard.setTitle("异常消息");
+ actionCard.setBtnOrientation("0");
+ actionCard.setText(StrUtil.format(text, title, msg));
+ actionCard.setSingleURL("http://123.60.45.251/common/getExceptionMsg?id=" + id);
+ actionCard.setSingleTitle("查询详情");
+
+ request.setActionCard(actionCard);
+ OapiRobotSendResponse response = client.execute(request);
+ log.info(JSONObject.toJSONString(response));
+ } catch (Exception e) {
+ log.error("#dingtalk send error#", e);
}
}
@@ -64,4 +90,8 @@
return sign;
}
+ public static void main(String[] args) {
+// sendMsg("测试一下", "内容");
+ }
+
}
--
Gitblit v1.9.1