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