当前位置:网站首页>使用切面实现记录操作日志
使用切面实现记录操作日志
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();
}边栏推荐
- Graphical tools package yolov5 and generate executable files exe
- [safe office and productivity application] Shanghai daoning provides you with onlyoffice download, trial and tutorial
- CMB's written test - quantitative relationship
- QT thread and other 01 concepts
- 机器学习笔记 - 使用机器学习进行鸟类物种分类
- 再AD 的 界面顶部(菜单栏)创建常用的快捷图标
- [leetcode] 700 and 701 (search and insert of binary search tree)
- 20. (ArcGIS API for JS) ArcGIS API for JS surface collection (sketchviewmodel)
- [leetcode] 450 and 98 (deletion and verification of binary search tree)
- What is the experience of maintaining Wanxing open source vector database
猜你喜欢

Ubuntu20 installation redisjson record
Docker部署Mysql8的实现步骤

史上最全学习率调整策略lr_scheduler

Hisilicon 3559 universal platform construction: RTSP real-time playback support

QT thread and other 01 concepts

Sub pixel corner detection opencv cornersubpix

Ubuntu 20 installation des enregistrements redisjson
![[hcie TAC] question 3](/img/d2/38a7286be7780a60f5311b2fcfaf0b.jpg)
[hcie TAC] question 3

Graphical tools package yolov5 and generate executable files exe

【安全攻防】序列化与反序列,你了解多少?
随机推荐
qt-线程等01概念
QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
Free PHP online decryption tool source code v1.2
浅谈网络安全之文件上传
VHDL implementation of arbitrary size matrix multiplication
【mysql】mysql中行排序
Preprocessing - interpolation
[leetcode] 450 and 98 (deletion and verification of binary search tree)
What is Ba? How about Ba? What is the relationship between Ba and Bi?
我的勇敢对线之路--详细阐述,浏览器输入URL发生了什么
Confirm the future development route! Digital economy, digital transformation, data This meeting is very important
Hisilicon 3559 universal platform construction: RTSP real-time playback support
Index of MySQL
QT opens a file and uses QFileDialog to obtain the file name, content, etc
About Confidence Intervals
NoSQL之Redis配置与优化
25. (ArcGIS API for JS) ArcGIS API for JS line modification line editing (sketchviewmodel)
ubuntu20安裝redisjson記錄
[security attack and Defense] how much do you know about serialization and deserialization?
1200.Minimum Absolute Difference