package com.thhy.general.config;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.thhy.general.common.enums.LogTypeEnums;
|
import com.thhy.general.entity.SysLogVo;
|
import com.thhy.general.utils.UserInfoUtils;
|
import lombok.Data;
|
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
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.beans.factory.annotation.Value;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.messaging.Message;
|
import org.springframework.messaging.support.MessageBuilder;
|
import org.springframework.stereotype.Component;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.Map;
|
|
@Component
|
@Aspect
|
@ConditionalOnProperty(prefix = "rocketmq",value = "enable",havingValue = "true")
|
public class SysLogExec {
|
|
@Pointcut("execution(public * com.thhy.*.modules.*.*.service.impl.*.*(..))")
|
public void pointcut(){
|
|
}
|
|
@Autowired
|
private RocketMQTemplate rocketMQTemplate;
|
|
@Value("${spring.application.name}")
|
private String moduleName;
|
|
private String topic = "syslog";
|
|
@Around("pointcut()")
|
public Object invoke(ProceedingJoinPoint invocation) throws Throwable {
|
|
String methodName = invocation.getSignature().getName();
|
Map<String,Object> map = UserInfoUtils.getInstance().currentPath();
|
String ip = map.get("ip").toString();
|
String path = map.get("path").toString();
|
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"___"+ip+"---"+path);
|
if(methodName.contains("add")||methodName.contains("Add")||methodName.contains("update")||methodName.contains("Update")
|
||methodName.contains("delete")||methodName.contains("insert")
|
||methodName.contains("Insert")){
|
System.out.println("拦截到需要日志"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
SysLogVo sysLogVo = new SysLogVo();
|
sysLogVo.setLogIp(ip);
|
sysLogVo.setLoginUser(userInfo.getUserId());
|
sysLogVo.setLogUrl(path);
|
sysLogVo.setOpTime(new Date());
|
sysLogVo.setOpType(getOpType(methodName));
|
sysLogVo.setModuleName(moduleName);
|
Object obj = invocation.proceed();
|
|
Message<String> message = MessageBuilder.withPayload(JSONObject.toJSONString(sysLogVo)).build();
|
rocketMQTemplate.send(topic,message);
|
return obj;
|
}
|
return invocation.proceed();
|
}
|
|
public String getOpType(String methodName){
|
if(methodName.contains("add")||methodName.contains("Add")||methodName.contains("insert")||methodName.contains("Insert")){
|
return LogTypeEnums.add.getValue();
|
}else if(methodName.contains("update")||methodName.contains("Update")){
|
return LogTypeEnums.update.getValue();
|
}else if(methodName.contains("delete")){
|
return LogTypeEnums.delete.getValue();
|
}
|
return "";
|
}
|
}
|