'use strict'; const Service = require('egg').Service; const assert = require('assert'); const moment = require('moment'); const routerMethod = require('../../config/routerMethod'); const routerMondel = require('../../config/routerMondel'); class LogService extends Service { async create({ mondel, method, data, result, userName, acct, date }) { assert(mondel, '模块不存在'); assert(method, '类型不存在'); assert(data, '数据不存在'); assert(result, '结果不存在'); assert(userName, '操作人不存在'); assert(acct, '操作帐号不存在'); assert(date, '时间不存在'); const { Log: model } = this.ctx.model; const createAt = moment().format('x'); try { await model.create({ data, method, createAt, mondel, result, userName, acct, date }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error('添加失败'); } } async del({ id }) { assert(id, 'id不存在'); const { Log: model } = this.ctx.model; try { await model.findById(id).remove(); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error('删除失败'); } } async query({ skip, limit, mondel, method, result }) { const { Log: model } = this.ctx.model; const filter = {}; if (mondel) filter.mondel = mondel; if (method) filter.method = method; if (result) filter.result = result; try { const total = await model.find({ ...filter }); let res; if (skip && limit) { res = await model.find({ ...filter }).skip(Number(skip) * Number(limit)).limit(Number(limit)); } else { res = await model.find({ ...filter }); } return { errmsg: '', errcode: 0, data: res, total: total.length }; } catch (error) { console.log(error); throw new Error('查询失败'); } } async init() { const { ctx } = this; const { url, method, body } = ctx.request; let mondel = ''; let methods = ''; let decode = {}; const { AdminUser: model } = ctx.model; const date = moment().format('YYYY-MM-DD HH:mm:ss'); if (method !== 'GET') { // token const tokenstr = ctx.request.header.authorization; if (tokenstr) { const token = tokenstr.substring(7); decode = ctx.app.jwt.verify(token, ctx.app.config.secret); } else { const { acct } = ctx.request.body; const res = await model.findOne({ acct }); if (!res) { decode = { acct, userName: '用户不存在' }; } else { decode = res; } } const str = url.split('/'); for (let i = 0; i < str.length; i++) { const e = str[i]; if (e !== '' && e !== 'api') { if (e === 'create' || e === 'update' || e === 'delete' || e === 'upload' || e === 'login' || e === 'pwdUpdate') { methods = routerMethod[e]; if (e === 'delete') { break; } } else { mondel = routerMondel[e]; } } } return { mondel, method: methods, data: body, acct: decode.acct, userName: decode && decode.userName, date }; } } } module.exports = LogService;