当前位置:网站首页>使用切面实现记录操作日志
使用切面实现记录操作日志
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(); }
边栏推荐
- 什么是 BA ?BA怎么样?BA和BI是什么关系?
- [leetcode] 700 and 701 (search and insert of binary search tree)
- ubuntu20安装redisjson记录
- C task expansion method
- 2022夏每日一题(一)
- QT opens a file and uses QFileDialog to obtain the file name, content, etc
- Ubuntu 20 installation des enregistrements redisjson
- Set WiFi automatic connection for raspberry pie
- Clock in during winter vacation
- QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
猜你喜欢
自适应非欧表征广告检索系统AMCAD
Open3D 网格滤波
【安全攻防】序列化与反序列,你了解多少?
web服务性能监控方案
小程序能运行在自有App中,且实现直播和连麦?
Implementation steps of docker deploying mysql8
Enumeration general interface & enumeration usage specification
20. (ArcGIS API for JS) ArcGIS API for JS surface collection (sketchviewmodel)
leetcode:面试题 17.24. 子矩阵最大累加和(待研究)
21. (article ArcGIS API for JS) ArcGIS API for JS rectangular acquisition (sketchviewmodel)
随机推荐
Arduino droplet detection
Kotlin Android environment construction
Principle of attention mechanism
About Estimation Statistics
MySQL的存储引擎
接口数据安全保证的10种方式
HW-小记(二)
小程序能运行在自有App中,且实现直播和连麦?
华为小米互“抄作业”
25.(arcgis api for js篇)arcgis api for js线修改线编辑(SketchViewModel)
U.S. Air Force Research Laboratory, "exploring the vulnerability and robustness of deep learning systems", the latest 85 page technical report in 2022
Flutter3.0, the applet is not only run across mobile applications
map和set的实现
【安全攻防】序列化与反序列,你了解多少?
22. (ArcGIS API for JS) ArcGIS API for JS Circle Collection (sketchviewmodel)
How to detect whether the MySQL code runs deadlock +binlog view
ubuntu20安装redisjson记录
[security attack and Defense] how much do you know about serialization and deserialization?
About Confidence Intervals
海思万能平台搭建:颜色空间转换YUV2RGB