123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { Inject, MidwayWebRouterService, Provide } from '@midwayjs/core';
- import { InjectEntityModel } from '@midwayjs/typeorm';
- import { Repository } from 'typeorm';
- import { get } from 'lodash';
- import dayjs = require('dayjs');
- import { Context } from '@midwayjs/koa';
- import { TypeORMDataSourceManager } from '@midwayjs/typeorm';
- import { Opera } from '../../entityLogs/opera.entity';
- @Provide()
- export class OperaService {
- @Inject()
- ctx: Context;
- @InjectEntityModel(Opera, 'logs')
- model: Repository<Opera>;
- @Inject()
- webRouterService: MidwayWebRouterService;
- @Inject()
- dataSourceManager: TypeORMDataSourceManager;
- /**
- * 生成日志
- * 原数据和新数据格式:
- * {
- * [表名]:[数据,...数据]
- * }
- * @param origin_data 原数据
- * @param new_data 新数据
- */
- async toMakeLogs(origin_data?: object, new_data?: object) {
- const req = this.ctx.request;
- const user = this.ctx.user;
- const logInfo: any = {
- // 操作人
- operator_id: user.id,
- operator_name: get(user, 'nick_name', get(user, 'name')),
- // ip
- ip: get(req, 'header.x-forwarded-for', req.ip),
- // 设备
- device: get(req, 'header.user-agent'),
- // 操作时间
- time: dayjs().format('YYYY-MM-DD HH:mm:ss'),
- // 操作地址
- referer: get(req, 'header.referer'),
- // 请求地址uri
- path: get(req, 'path'),
- // 地址参数
- params: get(req, 'params'),
- // 请求参数
- query: get(req, 'query'),
- // 方法体参数
- body: get(req, 'body'),
- // 操作业务:可以通过路由注解的routerName来获取
- opera: null,
- // 变动值: 表:[数据] 需要自己组织
- origin_data: origin_data,
- new_data: new_data,
- };
- const routeInfo = await this.webRouterService.getMatchedRouterInfo(this.ctx.path, this.ctx.method);
- if (routeInfo) logInfo.opera = get(routeInfo, 'routerName');
- await this.model.insert(logInfo);
- }
- }
|