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(); 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(printStackTraceToString(ex)); 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; } 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); } } 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(); try { String sign = generateSign(timestamp); url = url + "×tamp=" + timestamp + "&sign=" + sign; DingTalkClient client = new DefaultDingTalkClient(url); return new DefaultDingTalkClient(url); } public static void sendActionCard(int type) { log.info("send dingtalk"); try { 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("测试一下", "内容"); } }