package com.fdkankan.cloud.acl.aop; import com.alibaba.fastjson.JSON; import com.fdkankan.cloud.acl.entity.Log; import com.fdkankan.cloud.acl.service.ILogService; import com.fdkankan.web.util.WebUtil; import lombok.extern.log4j.Log4j2; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; 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.io.IOException; import java.util.Map; @Log4j2 @Aspect @Component @Order(100) public class SaveLogAspect { @Autowired private ILogService logService; @Pointcut("@annotation(com.fdkankan.cloud.acl.annotation.SaveLog)") public void saveEditLogAspect() { } /** * @param joinPoint * 切点 * @throws IOException */ @Around("saveEditLogAspect()") public Object around(ProceedingJoinPoint joinPoint) throws Throwable { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String signature = request.getHeader("signature"); //获取请求参数 Map params = WebUtil.getParameter(joinPoint, request); Log log = new Log(); log.setIp(WebUtil.getIpAddress(request)); log.setUri(request.getRequestURI()); log.setMethod(request.getMethod()); log.setUserAgent(request.getHeader("User-Agent")); log.setSignature(signature); log.setParams(JSON.toJSONString(params)); logService.save(log); //放行 Object proceed = joinPoint.proceed(); log.setResult(JSON.toJSONString(proceed)); logService.updateById(log); return proceed; } }