package org.jeecg.modules.aop;
|
|
import org.apache.shiro.SecurityUtils;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.annotation.AfterThrowing;
|
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.jeecg.common.api.dto.LogDTO;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.modules.base.service.BaseCommonService;
|
import org.jeecg.modules.system.entity.SysTenantPack;
|
import org.jeecg.modules.system.entity.SysTenantPackUser;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.lang.reflect.Method;
|
import java.util.Date;
|
|
/**
|
* @Author taoYan
|
* @Date 2023/2/16 14:27
|
**/
|
@Aspect
|
@Component
|
public class TenantPackUserLogAspect {
|
|
@Resource
|
private BaseCommonService baseCommonService;
|
|
@Pointcut("@annotation(org.jeecg.modules.aop.TenantLog)")
|
public void tenantLogPointCut() {
|
|
}
|
|
@Around("tenantLogPointCut()")
|
public Object aroundMethod(ProceedingJoinPoint joinPoint)throws Throwable {
|
//System.out.println("环绕通知>>>>>>>>>");
|
|
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
Method method = signature.getMethod();
|
TenantLog log = method.getAnnotation(TenantLog.class);
|
if(log != null){
|
int opType = log.value();
|
Integer logType = null;
|
String content = null;
|
Integer tenantId = null;
|
//获取参数
|
Object[] args = joinPoint.getArgs();
|
if(args.length>0){
|
for(Object obj: args){
|
if(obj instanceof SysTenantPack){
|
// logType=3 租户操作日志
|
logType = 3;
|
SysTenantPack pack = (SysTenantPack)obj;
|
if(opType==2){
|
content = "创建了角色权限 "+ pack.getPackName();
|
}
|
tenantId = pack.getTenantId();
|
break;
|
}else if(obj instanceof SysTenantPackUser){
|
logType = 3;
|
SysTenantPackUser packUser = (SysTenantPackUser)obj;
|
if(opType==2){
|
content = "将 "+packUser.getRealname()+" 添加到角色 "+ packUser.getPackName();
|
}else if(opType==4){
|
content = "移除了 "+packUser.getPackName()+" 成员 "+ packUser.getRealname();
|
}
|
tenantId = packUser.getTenantId();
|
}
|
}
|
}
|
if(logType!=null){
|
LogDTO dto = new LogDTO();
|
dto.setLogType(logType);
|
dto.setLogContent(content);
|
dto.setOperateType(opType);
|
dto.setTenantId(tenantId);
|
//获取登录用户信息
|
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
if(sysUser!=null){
|
dto.setUserid(sysUser.getUsername());
|
dto.setUsername(sysUser.getRealname());
|
|
}
|
dto.setCreateTime(new Date());
|
//保存系统日志
|
baseCommonService.addLog(dto);
|
}
|
}
|
return joinPoint.proceed();
|
}
|
|
@AfterThrowing("tenantLogPointCut()")
|
public void afterThrowing()throws Throwable{
|
System.out.println("异常通知");
|
}
|
}
|