package com.geekmore.modules.device.aop;
import com.alibaba.fastjson.JSON;
import com.geekmore.modules.device.constant.LogsConstant;
import com.geekmore.modules.device.eneity.LogsDeviceEneity;
import com.geekmore.modules.device.service.ILogsDeviceService;
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.omg.PortableInterceptor.RequestInfo;
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 org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* @author sz
* @version V1.0
* @Description: 请求切面(用一句话描述该文件做什么)
* @date 2021/2/6
*/
@Component
@Aspect
public class DeviceLogAspect {
@Autowired
private ILogsDeviceService logsDeviceService;
@Pointcut("@annotation(com.geekmore.modules.device.aop.DeviceLog)")
public void logPointCut() {
}
@Around("logPointCut()")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
Method method = methodSignature.getMethod();
Object result = proceedingJoinPoint.proceed();
DeviceLog logger = method.getAnnotation(DeviceLog.class);
//获取参数
Object typeId = AnnotationResolver.newInstance().resolver(proceedingJoinPoint, logger.typeId());
Object devid = AnnotationResolver.newInstance().resolver(proceedingJoinPoint, logger.devid());
Object deviceName = AnnotationResolver.newInstance().resolver(proceedingJoinPoint, logger.deviceName());
LogsDeviceEneity logsDeviceEneity = new LogsDeviceEneity();
//根据类型插入不同日志
if (typeId.toString().equals(LogsConstant.SAVE_TYPE)) {
logsDeviceEneity.setTypeId(LogsConstant.SAVE_TYPE);
logsDeviceEneity.setTypeName(LogsConstant.SAVE_NAME);
logsDeviceEneity.setText(LogsConstant.SAVE_NAME + " : id : " + devid + " name :" + deviceName);
} else if (typeId.toString().equals(LogsConstant.DELETE_TYPE)) {
logsDeviceEneity.setTypeId(LogsConstant.DELETE_TYPE);
logsDeviceEneity.setTypeName(LogsConstant.DELETE_NAME);
logsDeviceEneity.setText(LogsConstant.DELETE_NAME + " : id : " + devid + " name :" + deviceName);
} else if (typeId.toString().equals(LogsConstant.GET_TYPE)) {
logsDeviceEneity.setTypeId(LogsConstant.GET_TYPE);
logsDeviceEneity.setTypeName(LogsConstant.GET_NAME);
logsDeviceEneity.setText(LogsConstant.GET_NAME + " : id : " + devid + " name :" + deviceName);
} else {
logsDeviceEneity.setTypeId(LogsConstant.UPDATE_TYPE);
logsDeviceEneity.setTypeName(LogsConstant.UPDATE_NAME);
logsDeviceEneity.setText(LogsConstant.UPDATE_NAME + " : id : " + devid + " name :" + deviceName);
}
logsDeviceService.save(logsDeviceEneity);
return result;
}
}