SysLogAspect.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.kmall.admin.aop;
  2. import com.alibaba.fastjson.JSON;
  3. import com.kmall.common.annotation.SysLog;
  4. import com.kmall.manager.entity.SysLogEntity;
  5. import com.kmall.admin.fromcomm.entity.SysUserEntity;
  6. import com.kmall.manager.service.SysLogService;
  7. import com.kmall.common.utils.HttpContextUtils;
  8. import com.kmall.common.utils.IPUtils;
  9. import com.kmall.admin.utils.ShiroUtils;
  10. import org.aspectj.lang.JoinPoint;
  11. import org.aspectj.lang.annotation.Aspect;
  12. import org.aspectj.lang.annotation.Before;
  13. import org.aspectj.lang.annotation.Pointcut;
  14. import org.aspectj.lang.reflect.MethodSignature;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import javax.servlet.http.HttpServletRequest;
  18. import java.lang.reflect.Method;
  19. import java.util.Date;
  20. /**
  21. * 系统日志,切面处理类
  22. *
  23. * @author Scott
  24. * @email
  25. * @date 2017年3月8日 上午11:07:35
  26. */
  27. @Aspect
  28. @Component
  29. public class SysLogAspect {
  30. @Autowired
  31. private SysLogService sysLogService;
  32. @Pointcut("@annotation(com.kmall.common.annotation.SysLog)")
  33. public void logPointCut() {
  34. }
  35. @Before("logPointCut()")
  36. public void saveSysLog(JoinPoint joinPoint) {
  37. MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  38. Method method = signature.getMethod();
  39. SysLogEntity sysLog = new SysLogEntity();
  40. SysLog syslog = method.getAnnotation(SysLog.class);
  41. if (syslog != null) {
  42. //注解上的描述
  43. sysLog.setOperation(syslog.value());
  44. }
  45. //请求的方法名
  46. String className = joinPoint.getTarget().getClass().getName();
  47. String methodName = signature.getName();
  48. sysLog.setMethod(className + "." + methodName + "()");
  49. //请求的参数
  50. Object[] args = joinPoint.getArgs();
  51. String params = JSON.toJSONString(args[0]);
  52. sysLog.setParams(params);
  53. //获取request
  54. HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
  55. //设置IP地址
  56. sysLog.setIp(IPUtils.getIpAddr(request));
  57. //用户名
  58. SysUserEntity sysUserEntity = ShiroUtils.getUserEntity();
  59. String username = "";
  60. if ("login".equals(methodName)) {
  61. username = params;
  62. }
  63. if (null != sysUserEntity) {
  64. username = ShiroUtils.getUserEntity().getUsername();
  65. }
  66. sysLog.setUsername(username);
  67. sysLog.setCreateDate(new Date());
  68. //保存系统日志
  69. sysLogService.save(sysLog);
  70. }
  71. }