当前位置:网站首页>使用切面实现记录操作日志
使用切面实现记录操作日志
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();
}边栏推荐
- 【安全攻防】序列化与反序列,你了解多少?
- GPT-3当一作自己研究自己,已投稿,在线蹲一个同行评议
- 如何自定义Latex停止运行的快捷键
- QT opens a file and uses QFileDialog to obtain the file name, content, etc
- qt-线程等01概念
- Tencent cloud native database tdsql-c was selected into the cloud native product catalog of the Academy of communications and communications
- It's too convenient. You can complete the code release and approval by nailing it!
- Baidu map JS development, open a blank, bmapgl is not defined, err_ FILE_ NOT_ FOUND
- 【mysql】mysql中行排序
- Probability formula
猜你喜欢

22.(arcgis api for js篇)arcgis api for js圆采集(SketchViewModel)

R data analysis: how to predict Cox model and reproduce high score articles

Tencent cloud native database tdsql-c was selected into the cloud native product catalog of the Academy of communications and communications

Arduino droplet detection

RestClould ETL 社区版六月精选问答

Depth analysis of compilation constants, classloader classes, and system class loaders

On file uploading of network security

How to detect whether the MySQL code runs deadlock +binlog view

Kalman filter-1

Baidu map JS development, open a blank, bmapgl is not defined, err_ FILE_ NOT_ FOUND
随机推荐
预处理——插值
[leetcode] 450 and 98 (deletion and verification of binary search tree)
如何检测mysql代码运行是否出现死锁+binlog查看
未来发展路线确认!数字经济、数字化转型、数据...这次会议很重要
Tencent cloud native database tdsql-c was selected into the cloud native product catalog of the Academy of communications and communications
Ubuntu20 installation redisjson record
链表面试常见题
SSL certificate deployment
Enumeration general interface & enumeration usage specification
【DPDK】dpdk样例源码解析之三:dpdk-l3fwd_001
Vernacular high concurrency (2)
Open3D 网格滤波
1200.Minimum Absolute Difference
termux设置电脑连接手机。(敲打命令贼快),手机termux端口8022
QT thread and other 01 concepts
About Confidence Intervals
C task expansion method
Ubuntu 20 installation des enregistrements redisjson
About Confidence Intervals
ubuntu20安装redisjson记录