From c3e1f9b9af29647bd157f2ea268bc56b2d3b9df1 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Mon, 31 Aug 2020 14:47:46 +0800 Subject: [PATCH] 风场图update --- src/main/java/com/moral/common/aop/ControllerAOP.java | 66 ++++++++++++++++++++++++-------- 1 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/moral/common/aop/ControllerAOP.java b/src/main/java/com/moral/common/aop/ControllerAOP.java index bd542c7..0c1c441 100644 --- a/src/main/java/com/moral/common/aop/ControllerAOP.java +++ b/src/main/java/com/moral/common/aop/ControllerAOP.java @@ -1,14 +1,22 @@ package com.moral.common.aop; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; +import com.moral.common.bean.AppData; +import com.moral.common.bean.ResultBean; import com.moral.common.exception.BusinessException; +import com.moral.common.exception.ValidateException; import lombok.extern.log4j.Log4j; @@ -16,14 +24,16 @@ @Aspect @Component public class ControllerAOP { - + @Around("execution(* com.moral.controller.*Controller.*(..))") - public Object handlerControllerMethod(ProceedingJoinPoint pjp) { + public Object handlerControllerMethod(ProceedingJoinPoint pjp) throws Exception { + long startTime = System.currentTimeMillis(); - Map<String, Object> result; + Object result; + try { - result = (Map<String, Object>) pjp.proceed(); - log.info(pjp.getSignature() + "use time:" + (System.currentTimeMillis() - startTime)); + result = pjp.proceed(); + // log.info(pjp.getSignature() + "use time:" + (System.currentTimeMillis() - startTime)); } catch (Throwable e) { result = handlerException(pjp, e); } @@ -31,18 +41,40 @@ return result; } - private Map<String, Object> handlerException(ProceedingJoinPoint pjp, Throwable e) { - Map<String, Object> result = new HashMap<String, Object>(); - - // ������������ - if (e instanceof BusinessException) { - result.put("msg", e.getLocalizedMessage()); - } else { - log.error(pjp.getSignature() + " error ", e); - result.put("msg", e.toString()); - //TODO ������������������������������������������������������������������ + @SuppressWarnings("rawtypes") + private Object handlerException(ProceedingJoinPoint pjp, Throwable e) throws Exception { + Signature sig = pjp.getSignature(); + MethodSignature msig = null; + if (!(sig instanceof MethodSignature)) { + throw new IllegalArgumentException("���������������������������"); } - - return result; + msig = (MethodSignature) sig; + Object target = pjp.getTarget(); + Method currentMethod = target.getClass().getMethod(msig.getName(), msig.getParameterTypes()); + Type type = currentMethod.getGenericReturnType(); + String message = e.getMessage(); + Map<String, Object> resultMap = new HashMap<String, Object>(); + if (e instanceof BusinessException) { + log.error(e.getMessage()); + resultMap.put("msg", message); + } else if (e instanceof ValidateException) { + } else { + log.error(pjp.getSignature() + " error: " + e.toString(), e); + } + if (type instanceof ParameterizedType) { + type = ((ParameterizedType) type).getRawType(); + } + if (type == AppData.class) { + return new AppData(message, AppData.FAIL); + } else if (type == ResultBean.class) { + return new ResultBean(e); + } else if (type == Map.class) { + resultMap.put("msg", message); + return resultMap; + } else if (type == Void.TYPE) { + return null; + } else { + return type.getClass().newInstance(); + } } } -- Gitblit v1.8.0