|
|
@@ -0,0 +1,73 @@
|
|
|
+package seecoder.devcloud.web.aspect;
|
|
|
+
|
|
|
+import org.aspectj.lang.JoinPoint;
|
|
|
+import org.aspectj.lang.annotation.AfterReturning;
|
|
|
+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 seecoder.devcloud.web.aop.TreeLogging;
|
|
|
+import seecoder.devcloud.web.dao.tree.TreeLogMapper;
|
|
|
+import seecoder.devcloud.web.enums.ResponseEnums;
|
|
|
+import seecoder.devcloud.web.po.tree.TreeLog;
|
|
|
+import seecoder.devcloud.web.vo.Response;
|
|
|
+import seecoder.devcloud.web.vo.TreeNodeVO;
|
|
|
+
|
|
|
+import java.lang.reflect.Method;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 树操作日志类切面,关联@TreeLogging注解
|
|
|
+ */
|
|
|
+@Aspect
|
|
|
+@Component
|
|
|
+public class TreeLoggingAspect {
|
|
|
+ @Autowired
|
|
|
+ TreeLogMapper treeLogMapper;
|
|
|
+
|
|
|
+ @Pointcut("@annotation(seecoder.devcloud.web.aop.TreeLogging)")
|
|
|
+ public void logPointCut() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @AfterReturning(pointcut = "logPointCut()", returning = "result")
|
|
|
+ public void doAfterReturning(JoinPoint joinPoint, Response result) {
|
|
|
+ // 只处理成功的情况
|
|
|
+ if (result.getCode().equals(ResponseEnums.OK.getCode())) {
|
|
|
+ TreeLog log = new TreeLog();
|
|
|
+ //从切面织入点处通过反射机制获取织入点处的方法
|
|
|
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
|
|
+ //获取切入点所在的方法
|
|
|
+ Method method = signature.getMethod();
|
|
|
+ //获取注解,提取操作类型属性
|
|
|
+ TreeLogging logging = method.getAnnotation(TreeLogging.class);
|
|
|
+ if (logging != null) {
|
|
|
+ log.setOperation(logging.value());
|
|
|
+ }
|
|
|
+ //请求的参数
|
|
|
+ Object[] args = joinPoint.getArgs();
|
|
|
+ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ for (Object arg : args) {
|
|
|
+ if (arg instanceof TreeNodeVO) {
|
|
|
+ TreeNodeVO node = (TreeNodeVO) arg;
|
|
|
+ log.setTreeId(node.getId());
|
|
|
+// log.setUserId();
|
|
|
+// log.setUserName();
|
|
|
+// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
|
+// HttpSession session = request.getSession();
|
|
|
+// 读取session中的用户
|
|
|
+// User user = (User) session.getAttribute("user");
|
|
|
+// 请求的IP
|
|
|
+// String ip = request.getRemoteAddr();
|
|
|
+// TODO:从session中获取userId和userName
|
|
|
+ log.setTime(sf.format(new Date()));
|
|
|
+ System.out.println(log);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ treeLogMapper.insertTreeLog(log);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|