当前位置:网站首页>使用切面实现记录操作日志
使用切面实现记录操作日志
2022-07-06 21:08:00 【&友情岁月&】
@Aspect
@Component
public class SysLogAspect {
@Autowired
private SysLogService sysLogService;
/**
* 切点
*/
@Pointcut("@annotation(com.platform.annotation.SysLog)")
public void logPointCut() {
}
/**
* 前置通知
*
* @param joinPoint 连接点
*/
@Before("logPointCut()")
public void saveSysLog(JoinPoint joinPoint) {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
SysLogEntity sysLog = new SysLogEntity();
SysLog syslog = method.getAnnotation(SysLog.class);
if (syslog != null) {
//注解上的描述
sysLog.setOperation(syslog.value());
}
//请求的方法名
String className = joinPoint.getTarget().getClass().getName();
String methodName = signature.getName();
sysLog.setMethod(className + "." + methodName + "()");
//请求的参数
Object[] args = joinPoint.getArgs();
String params = JSON.toJSONString(args[0]);
sysLog.setParams(params);
//获取request
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
//设置IP地址
sysLog.setIp(IPUtils.getIpAddr(request));
//用户名
SysUserEntity sysUserEntity = ShiroUtils.getUserEntity();
String username = "";
if ("login".equals(methodName)) {
username = params;
}
if (null != sysUserEntity) {
username = ShiroUtils.getUserEntity().getUsername();
}
sysLog.setUsername(username);
sysLog.setCreateDate(new Date());
//保存系统日志
sysLogService.save(sysLog);
}
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLog {
String value() default "操作日志";
}@SysLog("删除菜单")
@RequestMapping("/delete")
@RequiresPermissions("sys:menu:delete")
public R delete(@RequestBody Long[] menuIds) {
for (Long menuId : menuIds) {
if (menuId.longValue() <= 30) {
return R.error("系统菜单,不能删除");
}
}
sysMenuService.deleteBatch(menuIds);
return R.ok();
}边栏推荐
猜你喜欢
随机推荐
QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
如何检测mysql代码运行是否出现死锁+binlog查看
2022夏每日一题(一)
Class常量池与运行时常量池
Que savez - vous de la sérialisation et de l'anti - séquence?
卡尔曼滤波-1
Depth analysis of compilation constants, classloader classes, and system class loaders
SSL证书部署
AVL树插入操作与验证操作的简单实现
QT thread and other 01 concepts
SQL injection -day15
pip只下载不安装
【安全攻防】序列化与反序列,你了解多少?
Mobile measurement and depth link platform - Branch
leetcode:面试题 17.24. 子矩阵最大累加和(待研究)
GPT-3当一作自己研究自己,已投稿,在线蹲一个同行评议
Open3D 网格滤波
21. (article ArcGIS API for JS) ArcGIS API for JS rectangular acquisition (sketchviewmodel)
力扣------路径总和 III
VHDL实现任意大小矩阵加法运算









![[hcie TAC] question 3](/img/d2/38a7286be7780a60f5311b2fcfaf0b.jpg)