From ee2ecbc0b4fe1900f0c2f71f34fc5dfe8b910d74 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期四, 16 二月 2023 10:22:46 +0800 Subject: [PATCH] 操作日志新增消耗时间属性 --- src/main/resources/mybatis/monitor/SysOperLogMapper.xml | 7 ++++--- src/main/java/com/ruoyi/project/monitor/domain/SysOperLog.java | 14 ++++++++++++++ sql/ry_20230216.sql | 1 + src/main/java/com/ruoyi/framework/aspectj/LogAspect.java | 20 ++++++++++++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/sql/ry_20220822.sql b/sql/ry_20230216.sql similarity index 99% rename from sql/ry_20220822.sql rename to sql/ry_20230216.sql index 83a33b9..d30cfbf 100644 --- a/sql/ry_20220822.sql +++ b/sql/ry_20230216.sql @@ -432,6 +432,7 @@ status int(1) default 0 comment '鎿嶄綔鐘舵�侊紙0姝e父 1寮傚父锛�', error_msg varchar(2000) default '' comment '閿欒娑堟伅', oper_time datetime comment '鎿嶄綔鏃堕棿', + cost_time bigint(20) default 0 comment '娑堣�楁椂闂�', primary key (oper_id) ) engine=innodb auto_increment=100 comment = '鎿嶄綔鏃ュ織璁板綍'; diff --git a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index c4d6eb8..088270c 100644 --- a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -8,8 +8,10 @@ import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.core.NamedThreadLocal; import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; import org.springframework.web.multipart.MultipartFile; @@ -40,6 +42,18 @@ /** 鎺掗櫎鏁忔劅灞炴�у瓧娈� */ public static final String[] EXCLUDE_PROPERTIES = { "password", "oldPassword", "newPassword", "confirmPassword" }; + + /** 璁$畻鎿嶄綔娑堣�楁椂闂� */ + private static final ThreadLocal<Long> TIME_THREADLOCAL = new NamedThreadLocal<Long>("Cost Time"); + + /** + * 澶勭悊璇锋眰鍓嶆墽琛� + */ + @Before(value = "@annotation(controllerLog)") + public void boBefore(JoinPoint joinPoint, Log controllerLog) + { + TIME_THREADLOCAL.set(System.currentTimeMillis()); + } /** * 澶勭悊瀹岃姹傚悗鎵ц @@ -96,6 +110,8 @@ operLog.setRequestMethod(ServletUtils.getRequest().getMethod()); // 澶勭悊璁剧疆娉ㄨВ涓婄殑鍙傛暟 getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); + // 璁剧疆娑堣�楁椂闂� + operLog.setCostTime(System.currentTimeMillis() - TIME_THREADLOCAL.get()); // 淇濆瓨鏁版嵁搴� AsyncManager.me().execute(AsyncFactory.recordOper(operLog)); } @@ -105,6 +121,10 @@ log.error("寮傚父淇℃伅:{}", exp.getMessage()); exp.printStackTrace(); } + finally + { + TIME_THREADLOCAL.remove(); + } } /** diff --git a/src/main/java/com/ruoyi/project/monitor/domain/SysOperLog.java b/src/main/java/com/ruoyi/project/monitor/domain/SysOperLog.java index 71d77fa..bd949b5 100644 --- a/src/main/java/com/ruoyi/project/monitor/domain/SysOperLog.java +++ b/src/main/java/com/ruoyi/project/monitor/domain/SysOperLog.java @@ -83,6 +83,10 @@ @Excel(name = "鎿嶄綔鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date operTime; + /** 娑堣�楁椂闂� */ + @Excel(name = "娑堣�楁椂闂�", suffix = "姣") + private Long costTime; + public Long getOperId() { return operId; @@ -252,4 +256,14 @@ { this.operTime = operTime; } + + public Long getCostTime() + { + return costTime; + } + + public void setCostTime(Long costTime) + { + this.costTime = costTime; + } } diff --git a/src/main/resources/mybatis/monitor/SysOperLogMapper.xml b/src/main/resources/mybatis/monitor/SysOperLogMapper.xml index 4e0aa8a..bad0d33 100644 --- a/src/main/resources/mybatis/monitor/SysOperLogMapper.xml +++ b/src/main/resources/mybatis/monitor/SysOperLogMapper.xml @@ -21,16 +21,17 @@ <result property="status" column="status" /> <result property="errorMsg" column="error_msg" /> <result property="operTime" column="oper_time" /> + <result property="costTime" column="cost_time" /> </resultMap> <sql id="selectOperLogVo"> - select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time + select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time from sys_oper_log </sql> <insert id="insertOperlog" parameterType="SysOperLog"> - insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time) - values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, sysdate()) + insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time) + values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate()) </insert> <select id="selectOperLogList" parameterType="SysOperLog" resultMap="SysOperLogResult"> -- Gitblit v1.9.3