当前位置:网站首页>使用切面实现记录操作日志
使用切面实现记录操作日志
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(); }
边栏推荐
- 25. (ArcGIS API for JS) ArcGIS API for JS line modification line editing (sketchviewmodel)
- ubuntu20安裝redisjson記錄
- 23. (ArcGIS API for JS) ArcGIS API for JS ellipse collection (sketchviewmodel)
- Set static IP for raspberry pie
- 1200.Minimum Absolute Difference
- First understand the principle of network
- Machine learning notes - bird species classification using machine learning
- leetcode:面试题 17.24. 子矩阵最大累加和(待研究)
- Flutter3.0, the applet is not only run across mobile applications
- 什么是 BA ?BA怎么样?BA和BI是什么关系?
猜你喜欢
【mysql】mysql中行排序
Que savez - vous de la sérialisation et de l'anti - séquence?
太方便了,钉钉上就可完成代码发布审批啦!
Depth analysis of compilation constants, classloader classes, and system class loaders
25. (ArcGIS API for JS) ArcGIS API for JS line modification line editing (sketchviewmodel)
10 ways of interface data security assurance
Preprocessing - interpolation
Baidu map JS development, open a blank, bmapgl is not defined, err_ FILE_ NOT_ FOUND
Class常量池与运行时常量池
Function reentry, function overloading and function rewriting are understood by yourself
随机推荐
20. (ArcGIS API for JS) ArcGIS API for JS surface collection (sketchviewmodel)
Not All Points Are Equal Learning Highly Efficient Point-based Detectors for 3D LiDAR Point
二进制、八进制、十六进制
Ubuntu 20 installation des enregistrements redisjson
.net中 接口可以有默认实现了
List interview common questions
It's too convenient. You can complete the code release and approval by nailing it!
About Estimation Statistics
Cryptography series: detailed explanation of online certificate status protocol OCSP
22. (ArcGIS API for JS) ArcGIS API for JS Circle Collection (sketchviewmodel)
HW-小记(二)
How to customize the shortcut key for latex to stop running
Enumeration general interface & enumeration usage specification
Implementation steps of docker deploying mysql8
你心目中的数据分析 Top 1 选 Pandas 还是选 SQL?
My brave way to line -- elaborate on what happens when the browser enters the URL
First understand the principle of network
QT opens a file and uses QFileDialog to obtain the file name, content, etc
VHDL实现任意大小矩阵加法运算
[development software] tilipa Developer Software