浏览代码

修改记录

zs 7 月之前
父节点
当前提交
ffc77946ca

+ 2 - 13
src/config/config.local.ts

@@ -1,10 +1,9 @@
 import { MidwayConfig } from '@midwayjs/core';
-const ip = '120.48.146.1'; //120.48.146.1
-const redisHost = '120.48.146.1';
+const ip = '127.0.0.1'; //120.48.146.1
+const redisHost = '127.0.0.1';
 const redisPwd = '123456';
 const redisDB = 6;
 const projectDB = 'video';
-const recordDB = 'video-record'
 const loginSign = 'videoDev';
 export default {
   // use for cookie sign key, should change to your own and keep security
@@ -33,16 +32,6 @@ export default {
           useNewUrlParser: true,
         },
         entities: ['./entity'],
-      },
-      record:{
-        uri: `mongodb://${ip}:27017/${recordDB}`,
-        options: {
-          user: 'admin',
-          pass: 'admin',
-          authSource: 'admin',
-          useNewUrlParser: true,
-        },
-        entities: ['./entityRecord'],
       }
     },
   },

+ 1 - 12
src/config/config.prod.ts

@@ -4,7 +4,6 @@ const redisHost = ip;
 const redisPwd = '123456';
 const redisDB = 1;
 const projectDB = 'video';
-const recordDB = 'video-record'
 const loginSign = 'video_demand';
 export default {
   // use for cookie sign key, should change to your own and keep security
@@ -30,17 +29,7 @@ export default {
           useNewUrlParser: true,
         },
         entities: ['./entity'],
-      },
-      record: {
-        uri: `mongodb://${ip}:27017/${recordDB}`,
-        options: {
-          user: 'admin',
-          pass: 'admin',
-          authSource: 'admin',
-          useNewUrlParser: true,
-        },
-        entities: ['./entityRecord'],
-      },
+      }
     },
   },
   redis: {

+ 0 - 2
src/configuration.ts

@@ -15,7 +15,6 @@ import { newsQueryMiddleware } from './middleware/newsQuery.middleware';
 import * as i18n from '@midwayjs/i18n';
 import { SetLocaleToCtxMiddleware } from './middleware/setLocaleToCtx.middleware';
 import * as bull from '@midwayjs/bull';
-import { DataRecordMiddleware } from './middleware/dataRecord.middleware';
 @Configuration({
   imports: [
     koa,
@@ -46,7 +45,6 @@ export class MainConfiguration {
   async onReady() {
     this.app.getMiddleware().insertFirst(SetLocaleToCtxMiddleware)
     this.app.getMiddleware().insertAfter(CheckOnePointLoginMiddleware, 'checkToken');
-    this.app.getMiddleware().insertAfter(DataRecordMiddleware, 'checkOnePonitLogin');
     this.app.getMiddleware().insertAfter(newsQueryMiddleware, 'newsQuery');
     // 注解
     VerifyTokenInit(this.decoratorService);

+ 0 - 68
src/controller/record/dataLogs.controller.ts

@@ -1,68 +0,0 @@
-import { Body, Controller, Del, Get, Inject, Param, Post, Query } from '@midwayjs/decorator';
-import { BaseController } from 'free-midway-component';
-import { DataLogsService } from '../../service/record/dataLogs.service';
-import { CDTO_dataLogs, CVO_dataLogs, FVO_dataLogs, QDTO_dataLogs, QVO_dataLogs, UDTO_dataLogs, UVAO_dataLogs } from '../../interface/record/dataLogs.interface';
-import { ApiResponse, ApiTags, ApiQuery } from '@midwayjs/swagger';
-import { Validate } from '@midwayjs/validate';
-@ApiTags(['mongodb oplog'])
-@Controller('/dataLogs')
-export class DataLogsController extends BaseController {
-  @Inject()
-  service: DataLogsService;
-
-  @Post('/')
-  @Validate()
-  @ApiResponse({ type: CVO_dataLogs })
-  async create(@Body() data: CDTO_dataLogs) {
-    const dbData = await this.service.create(data);
-    const result = new CVO_dataLogs(dbData);
-    return result;
-  }
-  @Get('/')
-  @ApiQuery({ name: 'query' })
-  @ApiResponse({ type: QVO_dataLogs })
-  async query(@Query() filter: QDTO_dataLogs, @Query('skip') skip: number, @Query('limit') limit: number) {
-    const list = await this.service.query(filter, { skip, limit });
-    const data = [];
-    for (const i of list) {
-      const newData = new QVO_dataLogs(i);
-      data.push(newData);
-    }
-    const total = await this.service.count(filter);
-    return { data, total };
-  }
-
-  @Get('/:id')
-  @ApiResponse({ type: FVO_dataLogs })
-  async fetch(@Param('id') id: string) {
-    const data = await this.service.fetch(id);
-    const result = new FVO_dataLogs(data);
-    return result;
-  }
-
-  @Post('/:id')
-  @Validate()
-  @ApiResponse({ type: UVAO_dataLogs })
-  async update(@Param('id') id: string, @Body() body: UDTO_dataLogs) {
-    const result = await this.service.updateOne(id, body);
-    return result;
-  }
-
-  @Del('/:id')
-  @Validate()
-  async delete(@Param('id') id: string) {
-    await this.service.delete(id);
-    return 'ok';
-  }
-  async createMany(...args: any[]) {
-    throw new Error('Method not implemented.');
-  }
-
-  async updateMany(...args: any[]) {
-    throw new Error('Method not implemented.');
-  }
-
-  async deleteMany(...args: any[]) {
-    throw new Error('Method not implemented.');
-  }
-}

+ 0 - 68
src/controller/record/dataRecord.controller.ts

@@ -1,68 +0,0 @@
-import { Body, Controller, Del, Get, Inject, Param, Post, Query } from '@midwayjs/decorator';
-import { BaseController } from 'free-midway-component';
-import { DataRecordService } from '../../service/record/dataRecord.service';
-import { CDTO_dataRecord, CVO_dataRecord, FVO_dataRecord, QDTO_dataRecord, QVO_dataRecord, UDTO_dataRecord, UVAO_dataRecord } from '../../interface/record/dataRecord.interface';
-import { ApiResponse, ApiTags, ApiQuery } from '@midwayjs/swagger';
-import { Validate } from '@midwayjs/validate';
-@ApiTags(['数据操作记录'])
-@Controller('/dataRecord')
-export class DataRecordController extends BaseController {
-  @Inject()
-  service: DataRecordService;
-
-  @Post('/')
-  @Validate()
-  @ApiResponse({ type: CVO_dataRecord })
-  async create(@Body() data: CDTO_dataRecord) {
-    const dbData = await this.service.create(data);
-    const result = new CVO_dataRecord(dbData);
-    return result;
-  }
-  @Get('/')
-  @ApiQuery({ name: 'query' })
-  @ApiResponse({ type: QVO_dataRecord })
-  async query(@Query() filter: QDTO_dataRecord, @Query('skip') skip: number, @Query('limit') limit: number) {
-    const list = await this.service.query(filter, { skip, limit });
-    const data = [];
-    for (const i of list) {
-      const newData = new QVO_dataRecord(i);
-      data.push(newData);
-    }
-    const total = await this.service.count(filter);
-    return { data, total };
-  }
-
-  @Get('/:id')
-  @ApiResponse({ type: FVO_dataRecord })
-  async fetch(@Param('id') id: string) {
-    const data = await this.service.fetch(id);
-    const result = new FVO_dataRecord(data);
-    return result;
-  }
-
-  @Post('/:id')
-  @Validate()
-  @ApiResponse({ type: UVAO_dataRecord })
-  async update(@Param('id') id: string, @Body() body: UDTO_dataRecord) {
-    const result = await this.service.updateOne(id, body);
-    return result;
-  }
-
-  @Del('/:id')
-  @Validate()
-  async delete(@Param('id') id: string) {
-    await this.service.delete(id);
-    return 'ok';
-  }
-  async createMany(...args: any[]) {
-    throw new Error('Method not implemented.');
-  }
-
-  async updateMany(...args: any[]) {
-    throw new Error('Method not implemented.');
-  }
-
-  async deleteMany(...args: any[]) {
-    throw new Error('Method not implemented.');
-  }
-}

+ 0 - 17
src/entityRecord/dataLogs.entity.ts

@@ -1,17 +0,0 @@
-import { modelOptions, prop } from '@typegoose/typegoose';
-import { BaseModel } from 'free-midway-component';
-@modelOptions({
-  schemaOptions: { collection: 'dataLogs' },
-})
-export class DataLogs extends BaseModel {
-  @prop({ required: false, index: true, zh: '表' }) //, esType: 'keyword'
-  coll: string;
-  @prop({ required: false, index: false, zh: '数据id' })
-  data_id: string;
-  @prop({ required: false, index: false, zh: '时间' })
-  time: string;
-  @prop({ required: false, index: false, zh: '数据库操作方法' })
-  method: string;
-  @prop({ required: false, index: false, zh: '数据' })
-  data: object;
-}

+ 0 - 29
src/entityRecord/dataRecord.entity.ts

@@ -1,29 +0,0 @@
-import { modelOptions, prop } from '@typegoose/typegoose';
-import { BaseModel } from 'free-midway-component';
-@modelOptions({
-  schemaOptions: { collection: 'dataRecord' },
-})
-export class DataRecord extends BaseModel {
-  @prop({ required: false, index: false, zh: '操作人' })
-  operator: object;
-  @prop({ required: false, index: false, zh: 'ip地址' })
-  ip: string;
-  @prop({ required: false, index: false, zh: '时间' })
-  time: string;
-  @prop({ required: false, index: false, zh: '对象', remark: 'controller' })
-  controller: string;
-  @prop({ required: false, index: false, zh: '函数', remark: '函数名,记录code.i18n兑换用' })
-  method: string;
-  @prop({ required: false, index: false, zh: '原数据', remark: '多个表关联性处理时需要先将修改的数据都查出来,key:表名;value:数组(本表修改的数据都放里面)' })
-  origin_data: object;
-  @prop({ required: false, index: false, zh: '新数据' })
-  new_data: object;
-  @prop({ required: false, index: false, zh: '页面路由' })
-  router: string;
-  @prop({ required: false, index: false, zh: '设备' })
-  device: string;
-  @prop({ required: false, index: false, zh: '状态', remark: '0:成功;-1失败' })
-  status: string;
-  @prop({ required: false, index: false, zh: 'es是否同步', default: false })
-  es_sync: boolean;
-}

+ 0 - 49
src/middleware/dataRecord.middleware.ts

@@ -1,49 +0,0 @@
-import { App, Config, IMiddleware, Inject, MidwayWebRouterService } from '@midwayjs/core';
-import { Middleware } from '@midwayjs/decorator';
-import { NextFunction, Context, Application } from '@midwayjs/koa';
-import { RedisService } from '@midwayjs/redis';
-import { get } from 'lodash';
-import { DataRecordService } from '../service/record/dataRecord.service';
-import { Types } from 'mongoose';
-const ObjectId = Types.ObjectId;
-@Middleware()
-export class DataRecordMiddleware implements IMiddleware<Context, NextFunction> {
-  @App()
-  app: Application;
-  @Inject()
-  webRouterService: MidwayWebRouterService;
-  @Inject()
-  redisService: RedisService;
-  @Config('requestTimeLimit')
-  requestTimeLimit: number;
-  recordRequestList = ['post', 'delete'];
-  resolve() {
-    return async (ctx: Context, next: NextFunction) => {
-      const routeInfo = await this.webRouterService.getMatchedRouterInfo(ctx.path, ctx.method);
-      if (!routeInfo) {
-        await next();
-        return;
-      }
-      if (!this.recordRequestList.includes(routeInfo.requestMethod)) await next();
-      else {
-        // 只记录post和delete请求的数据变化
-        const controller = get(routeInfo, 'controllerClz.name');
-        const method = get(routeInfo, 'method') as string;
-        // 实例操作记录服务
-        const dataRecordService = await ctx.requestContext.getAsync(DataRecordService);
-        // 组织操作记录数据
-        const dataRecord = await dataRecordService.makeLogs(controller, method);
-        // 生成操作记录数据
-        const result = await dataRecordService.create(dataRecord);
-        if (result) {
-          const id = get(result, '_id');
-          if (id) {
-            // 将id放到app中.因为单例模式只能通过app获取;而不用单例模式,会引发多个监听.会重复记录
-            this.app.setAttr('record_id', new ObjectId(id).toString());
-          }
-        }
-        await next();
-      }
-    };
-  }
-}

+ 0 - 11
src/service/record/dataLogs.service.ts

@@ -1,11 +0,0 @@
-import { Provide } from '@midwayjs/decorator';
-import { InjectEntityModel } from '@midwayjs/typegoose';
-import { ReturnModelType } from '@typegoose/typegoose';
-import { BaseService } from 'free-midway-component';
-import { DataLogs } from '../../entityRecord/dataLogs.entity';
-type modelType = ReturnModelType<typeof DataLogs>;
-@Provide()
-export class DataLogsService extends BaseService<modelType> {
-  @InjectEntityModel(DataLogs)
-  model: modelType;
-}

+ 0 - 74
src/service/record/dataRecord.service.ts

@@ -1,74 +0,0 @@
-import { Provide, Scope, ScopeEnum } from '@midwayjs/decorator';
-import { InjectEntityModel } from '@midwayjs/typegoose';
-import { ReturnModelType } from '@typegoose/typegoose';
-import { BaseService } from 'free-midway-component';
-import { DataRecord } from '../../entityRecord/dataRecord.entity';
-import { get } from 'lodash';
-import dayjs = require('dayjs');
-
-type modelType = ReturnModelType<typeof DataRecord>;
-@Provide()
-@Scope(ScopeEnum.Request, { allowDowngrade: true })
-export class DataRecordService extends BaseService<modelType> {
-  @InjectEntityModel(DataRecord)
-  model: modelType;
-
-  async makeLogs(controllerName: string, methodName: string) {
-    const req = this.ctx.request;
-    const user = this.ctx.user;
-    const data = {
-      operator: user,
-      ip: get(req, 'header.x-forwarded-for', req.ip),
-      device: get(req, 'header.user-agent'),
-      time: dayjs().format('YYYY-MM-DD HH:mm:ss'),
-      controller: controllerName,
-      method: methodName,
-      router: get(req, 'header.referer'),
-    };
-    return data;
-  }
-  /**
-   * 为默认函数提供原数据
-   * defaultMethod: create, update, delete
-   * @param service 中间件提供的controller的默认service
-   * @param method 当前执行函数名
-   * @returns {object} 原数据
-   */
-  async getDefaultMethodOriginData(service: any, method: string) {
-    let data = null;
-    if (method === 'create') return data;
-    const id = get(this.ctx.request, 'params.id');
-    const modelName = get(service, 'model.modelName');
-    data = await service.fetch(id);
-    return { [modelName]: [data] };
-  }
-
-  /**
-   * 为默认函数提供新数据
-   * defaultMethod: create, update, delete
-   * @param service 中间件提供的controller的默认service
-   * @param method 当前执行函数名
-   * @param origin_data 原数据
-   * @returns {object} 新数据
-   */
-  async getDefaultMethodNewData(service: any, method: string, origin_data: object) {
-    let data = null;
-    if (method === 'delete') return data;
-    const modelName = get(service, 'model.modelName');
-    if (method === 'update' || method === 'status') {
-      if (origin_data) {
-        const list = get(origin_data, modelName);
-        const arr = [];
-        for (const i of list) {
-          const d = await service.fetch(i._id);
-          arr.push(d);
-        }
-        data = arr;
-      }
-    } else if (method === 'create') {
-      data = [origin_data];
-    }
-
-    return { [modelName]: data };
-  }
-}