From a13c1c27d7b6be72b1883b0120e2d4c11168db6e Mon Sep 17 00:00:00 2001 From: zhangxy102 Date: Sat, 6 Aug 2022 23:16:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=97=A5=E5=BF=97=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/www | 2 + controllers/logController.js | 25 +++++++++++ model/logModel.js | 55 ++++++++++++++++++++++++ router/log.js | 55 ++++++++++++++++++++++++ services/logServices.js | 82 ++++++++++++++++++++++++++++++++++++ utils/index.js | 10 ++++- 6 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 controllers/logController.js create mode 100644 model/logModel.js create mode 100644 router/log.js create mode 100644 services/logServices.js diff --git a/bin/www b/bin/www index c260633..de77799 100644 --- a/bin/www +++ b/bin/www @@ -35,6 +35,7 @@ const menuRouter = require("../router/menu"); const dictionaryType = require("../router/dictionaryType"); const dictionary = require("../router/dictionary"); const dept = require("../router/dept"); +const log = require("../router/log"); app.use(indexRouter); app.use(loginRouter); app.use(userRouter); @@ -43,6 +44,7 @@ app.use(menuRouter); app.use(dictionaryType); app.use(dictionary); app.use(dept); +app.use(log); app.use(logErrorHandler) app.use(errorHandler) diff --git a/controllers/logController.js b/controllers/logController.js new file mode 100644 index 0000000..d59217c --- /dev/null +++ b/controllers/logController.js @@ -0,0 +1,25 @@ +const { + getLogPageList, + addOperateLog, + addErrorLog, + removeLog, + batchRemoveLog +} = require("../services/logServices"); + +class LogController { + constructor() { } + getPageList(query) { + const { current, size,operateUserId ,startTime,endTime} = query + return getLogPageList(current, size,operateUserId,startTime,endTime) + } + remove(body) { + const { id } = body + return removeLog(id) + } + batchRemove(body){ + const {ids}=body + return batchRemoveLog(ids) + } + +} +module.exports = new LogController(); diff --git a/model/logModel.js b/model/logModel.js new file mode 100644 index 0000000..636755c --- /dev/null +++ b/model/logModel.js @@ -0,0 +1,55 @@ +const db = require("../config/dbPool"); +const {getDateTime}=require("../utils/index") +class LogModel { + selectPage(current, size, operateUserId, startTime, endTime) { + let whereStr = `1=1` + if (operateUserId) { + whereStr = `${whereStr} and operate_user_id=${operateUserId}` + } + if (startTime && endTime) { + startTime = getDateTime(startTime) + endTime = getDateTime(endTime) + whereStr = `${whereStr} and log_time>='${startTime}' and log_time<'${endTime}'` + } + + const sql = `select * from sys_logs where ${whereStr} order by id desc limit ?,?` + const sqlArr = [current, size] + return db.queryAsync(sql, sqlArr) + } + selectTotal(operateUserId, startTime, endTime) { + let whereStr = `1=1` + if (operateUserId) { + whereStr = `${whereStr} and operate_user_id=${operateUserId}` + } + if (startTime && endTime) { + startTime = getDateTime(startTime) + endTime = getDateTime(endTime) + whereStr = `${whereStr} and log_time>='${startTime}' and log_time<'${endTime}'` + } + + const sql = `select count(id) as total from sys_logs where ${whereStr}` + const sqlArr = [] + return db.queryAsync(sql, sqlArr) + } + insert(log) { + const sql = `insert into sys_logs(log_time,operate_api,requst_params,error_message,exception_message,log_type,ip,operate_user_id) values(?,?,?,?,?,?,?,?)` + const sqlArr = [ + log.logTime, + log.operateApi, + log.requstParams, + log.errorMessage, + log.exceptionMessage, + log.logType, + log.ip, + log.operateUserId + ] + return db.queryAsync(sql, sqlArr) + } + remove(ids) { + const sql = `delete from sys_logs where id in (${ids})` + const sqlArr = [] + return db.queryAsync(sql, sqlArr) + } + +} +module.exports = new LogModel(); diff --git a/router/log.js b/router/log.js new file mode 100644 index 0000000..9163e18 --- /dev/null +++ b/router/log.js @@ -0,0 +1,55 @@ +const express = require("express"); +const { query } = require("../config/dbPool"); +const router = express.Router(); +const { + getPageList, + remove, + batchRemove + +} = require("../controllers/logController"); + +router.get("/api/log/getPageList", (req, res, next) => { + const { query } = req + getPageList(query).then((data) => { + res.send(data) + }).catch((err) => { + res.send({ + data: null, + msg: "获取日志分页列表失败", + status: 1, + }); + next(err) + }) +}) + +router.post("/api/log/remove", (req, res, next) => { + const { body } = req + remove(body).then((data) => { + res.send(data) + }).catch((err) => { + res.send({ + data: null, + msg: "删除日志失败", + status:1 + }) + next(err) + }) +}) + +router.post("/api/log/batchRemove", (req, res, next) => { + const { body } = req; + batchRemove(body) + .then((data) => { + res.send(data); + }) + .catch((err) => { + res.send({ + data: null, + msg: "删除日志失败", + status: 1, + }); + next(err); + }); +}); + +module.exports = router; diff --git a/services/logServices.js b/services/logServices.js new file mode 100644 index 0000000..f585d3a --- /dev/null +++ b/services/logServices.js @@ -0,0 +1,82 @@ +const { getDate } = require("../utils/index"); +const { success } = require("../utils/jsonResult"); +const { + selectTotal, + selectPage, + insert, + remove, +} = require("../model/logModel"); + +class LogServices { + constructor() { } + async getLogPageList(current, size,operateUserId ,startTime,endTime) { + try { + let pageIndex = 1; + let pageSize = 10; + if (current < 1) { + current = 1 + } + if (size < 1) { + size = 10; + } + current = parseInt(current) + size = parseInt(size) + pageIndex = size * (current - 1) + pageSize = size + const pageListResult = await selectPage(pageIndex, pageSize,operateUserId ,startTime,endTime) + const pageList = pageListResult.results; + const totalResult = await selectTotal(operateUserId ,startTime,endTime) + console.log(totalResult) + const total = totalResult.results && totalResult.results[0].total + return success('日志分页列表', pageList, { + current, + size, + total + }) + } catch (error) { + throw error + } + } + async addOperateLog(log) { + try { + log.logTime = getDate(); + log.logType = 0 + await insert(log) + return success(`添加操作日志成功`) + } catch (error) { + throw error + } + } + + async addErrorLog(log) { + try { + log.logTime = getDate(0); + log.logType = 1 + await insert(log) + return success(`添加错误日志成功`) + } catch (error) { + throw error + } + } + + async removeLog(id) { + try { + await remove(id); + return success("删除日志成功"); + } catch (error) { + throw error; + } + } + + async batchRemoveLog(ids) { + try { + await remove(ids); + return success("删除日志成功"); + } catch (error) { + throw error; + } + } + + +} +module.exports = new LogServices(); diff --git a/utils/index.js b/utils/index.js index 2c0925e..bc1b528 100644 --- a/utils/index.js +++ b/utils/index.js @@ -24,6 +24,13 @@ const getDate = (date = new Date(), format = "YYYY-MM-DD HH:mm:ss") => { return moment(date).format(format); }; +const getDateTime = (timeStamp, format = "YYYY-MM-DD HH:mm:ss") => { + return moment(timeStamp/1000).format(format) +}; + +const getTimeStamp = () => { + return moment().format('x'); +}; const getIPAddress = () => { const interfaces = os.networkInterfaces(); for (const devName in interfaces) { @@ -47,6 +54,7 @@ const quickMd5 = (str) => { module.exports = { orderNumber, getDate, + getDateTime, getIPAddress, - quickMd5 + quickMd5, }; -- Gitee