/* */ package com.archive.framework.aspectj; /* */ /* */ import com.alibaba.fastjson.JSONObject; /* */ import com.alibaba.fastjson.serializer.SerializeFilter; /* */ import com.alibaba.fastjson.support.spring.PropertyPreFilters; /* */ import com.archive.common.utils.ServletUtils; /* */ import com.archive.common.utils.StringUtils; /* */ import com.archive.common.utils.security.ShiroUtils; /* */ import com.archive.framework.aspectj.lang.annotation.Log; /* */ import com.archive.framework.aspectj.lang.enums.BusinessStatus; /* */ import com.archive.framework.manager.AsyncManager; /* */ import com.archive.framework.manager.factory.AsyncFactory; /* */ import com.archive.project.monitor.operlog.domain.OperLog; /* */ import com.archive.project.system.user.domain.User; /* */ import java.lang.reflect.Method; /* */ import java.util.Map; /* */ import org.aspectj.lang.JoinPoint; /* */ import org.aspectj.lang.Signature; /* */ import org.aspectj.lang.annotation.AfterReturning; /* */ import org.aspectj.lang.annotation.AfterThrowing; /* */ import org.aspectj.lang.annotation.Aspect; /* */ import org.aspectj.lang.annotation.Pointcut; /* */ import org.aspectj.lang.reflect.MethodSignature; /* */ import org.slf4j.Logger; /* */ import org.slf4j.LoggerFactory; /* */ import org.springframework.stereotype.Component; /* */ /* */ /* */ /* */ /* */ /* */ @Aspect /* */ @Component /* */ public class LogAspect /* */ { /* 36 */ private static final Logger log = LoggerFactory.getLogger(com.archive.framework.aspectj.LogAspect.class); /* */ /* */ /* 39 */ public static final String[] EXCLUDE_PROPERTIES = new String[] { "password", "oldPassword", "newPassword", "confirmPassword" }; /* */ /* */ /* */ /* */ /* */ /* */ /* */ @Pointcut("@annotation(com.archive.framework.aspectj.lang.annotation.Log)") /* */ public void logPointCut() {} /* */ /* */ /* */ /* */ /* */ /* */ @AfterReturning(pointcut = "logPointCut()", returning = "jsonResult") /* */ public void doAfterReturning(JoinPoint joinPoint, Object jsonResult) { /* 55 */ handleLog(joinPoint, null, jsonResult); /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ @AfterThrowing(value = "logPointCut()", throwing = "e") /* */ public void doAfterThrowing(JoinPoint joinPoint, Exception e) { /* 67 */ handleLog(joinPoint, e, null); /* */ } /* */ /* */ /* */ /* */ /* */ protected void handleLog(JoinPoint joinPoint, Exception e, Object jsonResult) { /* */ try { /* 75 */ Log controllerLog = getAnnotationLog(joinPoint); /* 76 */ if (controllerLog == null) { /* */ return; /* */ } /* */ /* */ /* */ /* 82 */ User currentUser = ShiroUtils.getSysUser(); /* */ /* */ /* 85 */ OperLog operLog = new OperLog(); /* 86 */ operLog.setStatus(Integer.valueOf(BusinessStatus.SUCCESS.ordinal())); /* */ /* 88 */ String ip = ShiroUtils.getIp(); /* 89 */ operLog.setOperIp(ip); /* */ /* 91 */ operLog.setJsonResult(StringUtils.substring(JSONObject.toJSONString(jsonResult), 0, 2000)); /* */ /* 93 */ operLog.setOperUrl(ServletUtils.getRequest().getRequestURI()); /* 94 */ if (currentUser != null) { /* */ /* 96 */ operLog.setOperName(currentUser.getLoginName()); /* 97 */ if (StringUtils.isNotNull(currentUser.getDept()) && /* 98 */ StringUtils.isNotEmpty(currentUser.getDept().getDeptName())) /* */ { /* 100 */ operLog.setDeptName(currentUser.getDept().getDeptName()); /* */ } /* */ } /* */ /* 104 */ if (e != null) { /* */ /* 106 */ operLog.setStatus(Integer.valueOf(BusinessStatus.FAIL.ordinal())); /* 107 */ operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000)); /* */ } /* */ /* 110 */ String className = joinPoint.getTarget().getClass().getName(); /* 111 */ String methodName = joinPoint.getSignature().getName(); /* 112 */ operLog.setMethod(className + "." + methodName + "()"); /* */ /* 114 */ operLog.setRequestMethod(ServletUtils.getRequest().getMethod()); /* */ /* 116 */ getControllerMethodDescription(controllerLog, operLog); /* */ /* 118 */ AsyncManager.me().execute(AsyncFactory.recordOper(operLog)); /* */ } /* 120 */ catch (Exception exp) { /* */ /* */ /* 123 */ log.error("==前置通知异常=="); /* 124 */ log.error("异常信息:{}", exp.getMessage()); /* 125 */ exp.printStackTrace(); /* */ } /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public void getControllerMethodDescription(Log log, OperLog operLog) throws Exception { /* 139 */ operLog.setBusinessType(Integer.valueOf(log.businessType().ordinal())); /* */ /* 141 */ operLog.setTitle(log.title()); /* */ /* 143 */ operLog.setOperatorType(Integer.valueOf(log.operatorType().ordinal())); /* */ /* 145 */ if (log.isSaveRequestData()) /* */ { /* */ /* 148 */ setRequestValue(operLog); /* */ } /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ private void setRequestValue(OperLog operLog) { /* 160 */ Map map = ServletUtils.getRequest().getParameterMap(); /* 161 */ if (StringUtils.isNotEmpty(map)) { /* */ /* 163 */ PropertyPreFilters.MySimplePropertyPreFilter excludefilter = (new PropertyPreFilters()).addFilter(); /* 164 */ excludefilter.addExcludes(EXCLUDE_PROPERTIES); /* 165 */ String params = JSONObject.toJSONString(map, (SerializeFilter)excludefilter, new com.alibaba.fastjson.serializer.SerializerFeature[0]); /* 166 */ operLog.setOperParam(StringUtils.substring(params, 0, 2000)); /* */ } /* */ } /* */ /* */ /* */ /* */ /* */ /* */ private Log getAnnotationLog(JoinPoint joinPoint) throws Exception { /* 175 */ Signature signature = joinPoint.getSignature(); /* 176 */ MethodSignature methodSignature = (MethodSignature)signature; /* 177 */ Method method = methodSignature.getMethod(); /* */ /* 179 */ if (method != null) /* */ { /* 181 */ return method.getAnnotation(Log.class); /* */ } /* 183 */ return null; /* */ } /* */ } /* Location: C:\Users\Administrator\Desktop\extracted.zip!\extracted\BOOT-INF\classes\com\archive\framework\aspectj\LogAspect.class * Java compiler version: 8 (52.0) * JD-Core Version: 1.1.3 */