SaveLogAspect.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.fdkankan.cloud.acl.aop;
  2. import com.alibaba.fastjson.JSON;
  3. import com.fdkankan.cloud.acl.entity.Log;
  4. import com.fdkankan.cloud.acl.service.ILogService;
  5. import com.fdkankan.web.util.WebUtil;
  6. import lombok.extern.log4j.Log4j2;
  7. import org.aspectj.lang.ProceedingJoinPoint;
  8. import org.aspectj.lang.annotation.Around;
  9. import org.aspectj.lang.annotation.Aspect;
  10. import org.aspectj.lang.annotation.Pointcut;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.core.annotation.Order;
  13. import org.springframework.stereotype.Component;
  14. import org.springframework.web.context.request.RequestContextHolder;
  15. import org.springframework.web.context.request.ServletRequestAttributes;
  16. import javax.servlet.http.HttpServletRequest;
  17. import java.io.IOException;
  18. import java.util.Map;
  19. @Log4j2
  20. @Aspect
  21. @Component
  22. @Order(100)
  23. public class SaveLogAspect {
  24. @Autowired
  25. private ILogService logService;
  26. @Pointcut("@annotation(com.fdkankan.cloud.acl.annotation.SaveLog)")
  27. public void saveEditLogAspect() {
  28. }
  29. /**
  30. * @param joinPoint
  31. * 切点
  32. * @throws IOException
  33. */
  34. @Around("saveEditLogAspect()")
  35. public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
  36. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  37. String signature = request.getHeader("signature");
  38. //获取请求参数
  39. Map<String, Object> params = WebUtil.getParameter(joinPoint, request);
  40. Log log = new Log();
  41. log.setIp(WebUtil.getIpAddress(request));
  42. log.setUri(request.getRequestURI());
  43. log.setMethod(request.getMethod());
  44. log.setUserAgent(request.getHeader("User-Agent"));
  45. log.setSignature(signature);
  46. log.setParams(JSON.toJSONString(params));
  47. logService.save(log);
  48. //放行
  49. Object proceed = joinPoint.proceed();
  50. log.setResult(JSON.toJSONString(proceed));
  51. logService.updateById(log);
  52. return proceed;
  53. }
  54. }