Search in sources :

Example 1 with AgileLoginUser

use of com.jeeagile.core.security.user.AgileLoginUser in project jeeagile by jeeagile.

the class AgileLoggerAspect method saveAgileLoggerOperate.

/**
 * 保存日志
 *
 * @param joinPoint
 * @param throwable
 * @param executeTime
 */
private void saveAgileLoggerOperate(ProceedingJoinPoint joinPoint, Throwable throwable, Object rtnObject, long executeTime) {
    try {
        // AgileLogger agileLogger = joinPoint.getTarget().getClass().getAnnotation(AgileLogger.class);
        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
        Method method = methodSignature.getMethod();
        AgileLogger agileLogger = method.getAnnotation(AgileLogger.class);
        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        if (agileLogger != null && servletRequestAttributes != null) {
            HttpServletRequest httpServletRequest = servletRequestAttributes.getRequest();
            if (agileLogger.type() == AgileLoggerType.LOGIN) {
                AgileLoginUser agileLoginUser = null;
                for (Object object : joinPoint.getArgs()) {
                    if (object instanceof AgileLoginUser) {
                        agileLoginUser = (AgileLoginUser) object;
                        break;
                    }
                }
                if (agileLoginUser == null) {
                    log.warn("用户登录接口参数不是《AgileLoggerLogin》,暂无法记录登录信息!");
                    return;
                }
                AgileLoggerLogin agileLoggerLogin = getAgileLoggerLogin(httpServletRequest, throwable);
                agileLoggerLogin.setLoginName(agileLoginUser.getUserName());
                agileLoggerLogin.setLoginModule(getModuleName(joinPoint, agileLogger));
                agileLoggerAsyncTask.saveAgileLoggerLogin(agileLoggerLogin);
            } else {
                AgileLoggerOperate agileLoggerOperate = getAgileLoggerOperate(httpServletRequest, throwable);
                agileLoggerOperate.setOperateModule(getModuleName(joinPoint, agileLogger));
                agileLoggerOperate.setOperateNotes(agileLogger.notes());
                agileLoggerOperate.setOperateType(agileLogger.type().name());
                agileLoggerOperate.setExecuteTime(executeTime);
                String className = joinPoint.getTarget().getClass().getName();
                String methodName = joinPoint.getSignature().getName();
                agileLoggerOperate.setExecuteMethod(className + ":" + methodName);
                if (this.isSaveParam(joinPoint, agileLogger)) {
                    this.putParam(joinPoint, rtnObject, agileLoggerOperate);
                }
                agileLoggerAsyncTask.saveAgileLoggerOperate(agileLoggerOperate);
            }
        }
    } catch (Exception ex) {
        log.warn("日志记录出现异常,异常信息:{}", ex.getMessage());
    }
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) AgileLoggerOperate(com.jeeagile.logger.entity.AgileLoggerOperate) MethodSignature(org.aspectj.lang.reflect.MethodSignature) ServletRequestAttributes(org.springframework.web.context.request.ServletRequestAttributes) AgileLoggerLogin(com.jeeagile.logger.entity.AgileLoggerLogin) AgileLoginUser(com.jeeagile.core.security.user.AgileLoginUser) Method(java.lang.reflect.Method) AgileLogger(com.jeeagile.frame.annotation.AgileLogger)

Aggregations

AgileLoginUser (com.jeeagile.core.security.user.AgileLoginUser)1 AgileLogger (com.jeeagile.frame.annotation.AgileLogger)1 AgileLoggerLogin (com.jeeagile.logger.entity.AgileLoggerLogin)1 AgileLoggerOperate (com.jeeagile.logger.entity.AgileLoggerOperate)1 Method (java.lang.reflect.Method)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 MethodSignature (org.aspectj.lang.reflect.MethodSignature)1 ServletRequestAttributes (org.springframework.web.context.request.ServletRequestAttributes)1