From 454e8c85ee7f47ff82fa93d502bde832c8f888f9 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 22 Dec 2017 16:18:08 +0800
Subject: [PATCH] Merge branch 'master' of ssh://blit.7drlb.com:29418/screen_api_v2
---
src/main/java/com/moral/common/aop/ControllerAOP.java | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 44 insertions(+), 12 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..8c90a0b 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,13 +24,15 @@
@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();
+ 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>();
-
- // ������������
+ @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("���������������������������");
+ }
+ msig = (MethodSignature) sig;
+ Object target = pjp.getTarget();
+ Method currentMethod = target.getClass().getMethod(msig.getName(), msig.getParameterTypes());
+ Type type = currentMethod.getGenericReturnType();
+ String message = "";
if (e instanceof BusinessException) {
- result.put("msg", e.getLocalizedMessage());
+ message = e.getLocalizedMessage();
+ } else if (e instanceof ValidateException) {
+ message = e.getLocalizedMessage();
} else {
log.error(pjp.getSignature() + " error ", e);
- result.put("msg", e.toString());
- //TODO ������������������������������������������������������������������
+ message = e.toString();
}
- return result;
+ if (type instanceof ParameterizedType) {
+ Type rawType = ((ParameterizedType) type).getRawType();
+ if (rawType == AppData.class) {
+ return new AppData(message,AppData.FAIL);
+ } else if (rawType == ResultBean.class) {
+ return new ResultBean(message,ResultBean.FAIL);
+ } else if (rawType == Map.class) {
+ Map<String, Object> resultMap = new HashMap<String, Object>();
+ resultMap.put("msg", message);
+ return resultMap;
+ }
+ }
+ return null;
+
}
}
--
Gitblit v1.8.0