package cn.wisenergy.web.aspect; import cn.wisenergy.common.utils.exception.Result; import cn.wisenergy.common.utils.ip.IpUtils; import com.alibaba.fastjson.JSON; import org.apache.shiro.SecurityUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.util.Date; /** * 系统日志,切面处理类 */ @Aspect @Component public class SysLogAspect { // @Autowired // private SysLogService sysLogService; // // @Pointcut("@annotation(cn.wisenergy.common.annotation.SysLog)") // public void logPointCut() { // } // // @Around("logPointCut()") // public Object around(ProceedingJoinPoint point) throws Throwable { // long beginTime = System.currentTimeMillis(); // //执行方法 // Object result = point.proceed(); // //执行时长(毫秒) // long time = System.currentTimeMillis() - beginTime; // // //保存日志 // saveSysLog(point, time, result); // // return result; // } // // private void saveSysLog(ProceedingJoinPoint joinPoint, long time,Object result) { // MethodSignature signature = (MethodSignature) joinPoint.getSignature(); // Method method = signature.getMethod(); // // SysLogEntity sysLog = new SysLogEntity(); // cn.wisenergy.common.annotation.SysLog syslog = method.getAnnotation(cn.wisenergy.common.annotation.SysLog.class); // if(syslog != null){ // //注解上的描述 // sysLog.setOperation(syslog.value()); // } // // //请求的方法名 // String className = joinPoint.getTarget().getClass().getName(); // String methodName = signature.getName(); // sysLog.setMethod(className + "." + methodName + "()"); // // //请求的参数 // Object[] args = joinPoint.getArgs(); // String params = JSON.toJSONString(args); // sysLog.setParams(params); // // //返回值 // Result<?> r= (Result<?>) result; // if("success".equals(r.getResult())) { // sysLog.setState("成功"); // }else { // sysLog.setState("失败"); // } // //获取request // HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); // //设置IP地址 // sysLog.setIp(IpUtils.getIpAddr(request)); // //用户名 // SysUserEntity principal = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); // String username =principal.getUsername(); // sysLog.setUsername(username); // sysLog.setTime(time); // sysLog.setCreateDate(new Date()); // //保存系统日志 // try { // sysLogService.save(sysLog); // } catch (Exception e) { // e.printStackTrace(); // } // } }