diff --git a/bin/www b/bin/www index c260633c8cbe7868179330e5cf2bdce9fec06361..de77799a5290c61932c0fa501ec999a0581eecf2 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 0000000000000000000000000000000000000000..d59217c414b0e6f2e8d222a7fce8090f74a0d03a --- /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 0000000000000000000000000000000000000000..636755ca6b10a0749c1bbb9c78c63c33748806f5 --- /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 0000000000000000000000000000000000000000..9163e182a25b568dbb5d348d9e7c2659044a4b5b --- /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 0000000000000000000000000000000000000000..f585d3ad23a4a3037b4aecc2f2074ba7ba3a394a --- /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 2c0925ec986a9708654295e6915b0729eb855a8b..bc1b528f2f8af455c46d998cbf87d242c6fcc7d4 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, };