diff --git a/acs/nladmin-system/src/main/java/org/nl/autotask/CleanLog.java b/acs/nladmin-system/src/main/java/org/nl/autotask/CleanLog.java new file mode 100644 index 0000000..3d82c43 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/autotask/CleanLog.java @@ -0,0 +1,26 @@ +package org.nl.wms.autotask; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.system.service.ParamService; +import org.nl.modules.wql.core.bean.WQLObject; +import org.springframework.stereotype.Component; + +/** + * 自动清除日志(操作日志、异常日志)数据 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class CleanLog { + private final ParamService paramService; + + public void run(){ + //delete from sys_log where DATE(create_time) <= DATE(DATE_SUB(NOW(),INTERVAL 30 day)) limit 10; + WQLObject logTab = WQLObject.getWQLObject("sys_log"); + int days = Integer.parseInt(paramService.findByCode("log_day").getValue()); + logTab.delete("DATE(create_time) <= DATE(DATE_SUB(NOW(),INTERVAL " + days + " day))"); + log.info("自动清理日志执行成功...!"); + } + +} diff --git a/acs/nladmin-ui/src/App.vue b/acs/nladmin-ui/src/App.vue index 3f8e408..2f82bcc 100644 --- a/acs/nladmin-ui/src/App.vue +++ b/acs/nladmin-ui/src/App.vue @@ -1,5 +1,5 @@ <template> - <div id="app"> + <div id="app" @mousemove="moveEvent" @click="moveEvent"> <router-view /> </div> </template> @@ -7,63 +7,29 @@ <script> export default { name: 'App', - created() { - this.webSocket() // token过期提示 + data() { + return { + timmer: null + } }, methods: { - webSocket() { - const that = this - if (typeof (WebSocket) === 'undefined') { - this.$notify({ - title: '提示', - message: '当前浏览器无法接收实时报警信息,请使用谷歌浏览器!', - type: 'warning', - duration: 0 - }) - } else { - const id = 'exp-token' - // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 - // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 - // const socketUrl = process.env.VUE_APP_WS_API + id - const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + id - this.socket = new WebSocket(wsUri) - // 监听socket打开 - this.socket.onopen = function() { - that.socket.send('测试客户端发送消息') - } - const _this = this - // 监听socket消息接收 - this.socket.onmessage = function(msg) { - const data = JSON.parse(msg.data) - _this.$confirm(data.msg, '提示', { - confirmButtonText: '确定', - closeOnClickModal: false, - showCancelButton: false, - type: 'warning' - }).then(() => { - _this.$router.push('/login') - }).catch(() => { - this.$message({ - type: 'info', - message: '已取消' - }) - }) - } - - // 监听socket错误 - this.socket.onerror = function() { - that.$notify({ - title: '错误', - message: '服务器错误,无法接收实时报警信息', - type: 'error', - duration: 0 - }) - } - // 监听socket关闭 - this.socket.onclose = function() { - console.log('WebSocket已关闭') - } + moveEvent: function() { + const path = ['/login'] + if (!path.includes(this.$route.path)) { + clearTimeout(this.timmer) + this.init() } + }, + init: function() { + this.timmer = setTimeout(() => { + sessionStorage.clear() + this.logout() + }, 1000 * 60 * 15) // 15分钟 https://blog.csdn.net/qq_42345108/article/details/103496456 + }, + logout() { + this.$store.dispatch('LogOut').then(() => { + location.reload() + }) } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/autotask/CleanLog.java b/lms/nladmin-system/src/main/java/org/nl/wms/autotask/CleanLog.java new file mode 100644 index 0000000..3d82c43 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/autotask/CleanLog.java @@ -0,0 +1,26 @@ +package org.nl.wms.autotask; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.system.service.ParamService; +import org.nl.modules.wql.core.bean.WQLObject; +import org.springframework.stereotype.Component; + +/** + * 自动清除日志(操作日志、异常日志)数据 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class CleanLog { + private final ParamService paramService; + + public void run(){ + //delete from sys_log where DATE(create_time) <= DATE(DATE_SUB(NOW(),INTERVAL 30 day)) limit 10; + WQLObject logTab = WQLObject.getWQLObject("sys_log"); + int days = Integer.parseInt(paramService.findByCode("log_day").getValue()); + logTab.delete("DATE(create_time) <= DATE(DATE_SUB(NOW(),INTERVAL " + days + " day))"); + log.info("自动清理日志执行成功...!"); + } + +} diff --git a/lms/nladmin-ui/src/App.vue b/lms/nladmin-ui/src/App.vue index 3f8e408..2f82bcc 100644 --- a/lms/nladmin-ui/src/App.vue +++ b/lms/nladmin-ui/src/App.vue @@ -1,5 +1,5 @@ <template> - <div id="app"> + <div id="app" @mousemove="moveEvent" @click="moveEvent"> <router-view /> </div> </template> @@ -7,63 +7,29 @@ <script> export default { name: 'App', - created() { - this.webSocket() // token过期提示 + data() { + return { + timmer: null + } }, methods: { - webSocket() { - const that = this - if (typeof (WebSocket) === 'undefined') { - this.$notify({ - title: '提示', - message: '当前浏览器无法接收实时报警信息,请使用谷歌浏览器!', - type: 'warning', - duration: 0 - }) - } else { - const id = 'exp-token' - // 获取token保存到vuex中的用户信息,此处仅适用于本项目,注意删除或修改 - // 实例化socket,这里我把用户名传给了后台,使后台能判断要把消息发给哪个用户,其实也可以后台直接获取用户IP来判断并推送 - // const socketUrl = process.env.VUE_APP_WS_API + id - const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + id - this.socket = new WebSocket(wsUri) - // 监听socket打开 - this.socket.onopen = function() { - that.socket.send('测试客户端发送消息') - } - const _this = this - // 监听socket消息接收 - this.socket.onmessage = function(msg) { - const data = JSON.parse(msg.data) - _this.$confirm(data.msg, '提示', { - confirmButtonText: '确定', - closeOnClickModal: false, - showCancelButton: false, - type: 'warning' - }).then(() => { - _this.$router.push('/login') - }).catch(() => { - this.$message({ - type: 'info', - message: '已取消' - }) - }) - } - - // 监听socket错误 - this.socket.onerror = function() { - that.$notify({ - title: '错误', - message: '服务器错误,无法接收实时报警信息', - type: 'error', - duration: 0 - }) - } - // 监听socket关闭 - this.socket.onclose = function() { - console.log('WebSocket已关闭') - } + moveEvent: function() { + const path = ['/login'] + if (!path.includes(this.$route.path)) { + clearTimeout(this.timmer) + this.init() } + }, + init: function() { + this.timmer = setTimeout(() => { + sessionStorage.clear() + this.logout() + }, 1000 * 60 * 15) // 15分钟 https://blog.csdn.net/qq_42345108/article/details/103496456 + }, + logout() { + this.$store.dispatch('LogOut').then(() => { + location.reload() + }) } } }