Browse Source

修改问题

zs 8 months ago
parent
commit
0529f1f603

+ 0 - 9
src/controller/tool.controller.ts

@@ -1,9 +0,0 @@
-import { Controller, Get, Inject, Query } from '@midwayjs/decorator';
-import { ApiResponse, ApiTags } from '@midwayjs/swagger';
-import { ToolService } from '../service/tool.service';
-@ApiTags(['工具'])
-@Controller('/tool')
-export class ToolController {
-  @Inject()
-  service: ToolService;
-}

+ 1 - 1
src/decorator/checkPermissionCode.ts

@@ -1,5 +1,5 @@
 import { JoinPoint, MidwayDecoratorService, REQUEST_OBJ_CTX_KEY, createCustomMethodDecorator } from '@midwayjs/core';
-import { FrameworkErrorEnum, ServiceError } from 'free-midway-component';
+import { ServiceError } from 'free-midway-component';
 import { get } from 'lodash';
 import { RoleService } from '../service/system/role.service';
 import { I18nService } from '../service/i18n.service';

+ 0 - 69
src/decorator/dataRecord.ts

@@ -1,69 +0,0 @@
-import { JoinPoint, MidwayDecoratorService, REQUEST_OBJ_CTX_KEY, createCustomMethodDecorator } from '@midwayjs/core';
-import { MidwayI18nService } from '@midwayjs/i18n';
-import { get } from 'lodash';
-import { DataRecordService } from '../service/record/dataRecord.service';
-export const DATARECORD_KEY = 'decorator:data_record';
-export const dataRecord = (options?: any) => {
-  return createCustomMethodDecorator(DATARECORD_KEY, options);
-};
-
-const getMethodName = (mapping: Map<string, any>, controller: string, path: string) => {
-  const map = mapping.get(controller);
-  if (!map) return;
-  return get(map, path);
-};
-// const i18n = await ctx.requestContext.getAsync(MidwayI18nService);
-// const mapping = i18n.getLocaleMapping(ctx.locale, 'methods');
-// const i18nName = getMethodName(mapping, controllerName, methodName);
-// console.log(i18nName);
-
-const defaultMethods = ['create', 'update', 'delete'];
-export const DataRecordInit = (decoratorService: MidwayDecoratorService) => {
-  decoratorService.registerMethodHandler(DATARECORD_KEY, options => {
-    return {
-      around: async (joinPoint: JoinPoint) => {
-        let recordPreData = null;
-        let recordService = null;
-        try {
-          const instance = joinPoint.target;
-          const controllerName = options.target.name;
-          const methodName = options.propertyName;
-          const metaData = options.metadata;
-          const ctx = instance[REQUEST_OBJ_CTX_KEY];
-          recordService = await ctx.requestContext.getAsync(DataRecordService);
-          // 组织记录数据
-          recordPreData = await recordService.makeLogs(controllerName, methodName);
-          if (get(metaData, 'before')) {
-            recordPreData.origin_data = await instance.service[get(metaData, 'before')]();
-          } else if (defaultMethods.includes(methodName)) {
-            // 如果是create,update,delete 默认方法.那就默认处理.自己写的自己处理
-
-            recordPreData.origin_data = await recordService.getDefaultMethodOriginData(instance.service, methodName);
-          }
-          // 执行原函数
-          const result = await joinPoint.proceed(...joinPoint.args);
-          // 如果是create,update,delete 默认方法.那就默认处理.自己写的自己处理
-          if (get(metaData, 'after')) {
-            recordPreData.new_data = await instance.service[get(metaData, 'after')]();
-          } else if (defaultMethods.includes(methodName)) {
-            let od = null;
-            if (methodName === 'create') od = result;
-            else od = recordPreData.origin_data;
-            recordPreData.new_data = await recordService.getDefaultMethodNewData(instance.service, methodName, od);
-          }
-          recordPreData.status = '0';
-          return result;
-        } catch (error) {
-          if (recordPreData) {
-            // 有数据的情况下存日志有意义,否则就是只有个status没意义
-            recordPreData.status = '1';
-          }
-          throw error;
-        } finally {
-          // save logs
-          if (recordPreData) await recordService.create(recordPreData);
-        }
-      },
-    };
-  });
-};

+ 0 - 106
src/service/db.service.ts

@@ -1,106 +0,0 @@
-import { App, Config, Init, Inject, Logger, Provide, Singleton } from '@midwayjs/decorator';
-import { Application, Context } from '@midwayjs/koa';
-import { InjectEntityModel } from '@midwayjs/typegoose';
-import { ReturnModelType } from '@typegoose/typegoose';
-import { get, head, last } from 'lodash';
-import { DataLogs } from '../entityRecord/dataLogs.entity';
-import { mongoose } from '@typegoose/typegoose';
-import * as dayjs from 'dayjs';
-import { Types } from 'mongoose';
-import { DataRecordService } from './record/dataRecord.service';
-import { GetModel } from 'free-midway-component';
-import { ILogger } from '@midwayjs/core';
-const ObjectId = Types.ObjectId;
-
-@Provide()
-@Singleton()
-export class DBService {
-  @Config('dbName')
-  dbName: string;
-  @Logger()
-  logger: ILogger;
-  @Config('mongoose.dataSource')
-  mongooseConfig: any;
-  @InjectEntityModel(DataLogs)
-  dataLogsModel: ReturnModelType<typeof DataLogs>;
-  @Inject()
-  dataRecordService: DataRecordService;
-
-  conn: any;
-  @App()
-  app: Application;
-  @Init()
-  async init() {
-    const conns = mongoose.connections;
-    const conn = conns.find(f => f.name === this.dbName);
-    console.log('change stream init');
-    conn.watch([], { fullDocument: 'updateLookup' }).on('change', async data => {
-      const record_id: string = this.app.getAttr('record_id');
-      if (!record_id) return;
-      // 查询日志数据,没有直接返回
-      const record: any = await this.dataRecordService.fetch(record_id);
-      if (!record) return;
-      const { operationType } = data;
-      const modelName: string = get(data, 'ns.coll');
-      // 没有表名不能继续
-      if (!modelName) return;
-      const model = GetModel(modelName);
-      // 未找到model不能继续
-      if (!model) return;
-      const allowOpera = ['insert', 'update', 'delete'];
-      // 只对表数据变化做处理
-      if (!allowOpera.includes(operationType)) return;
-      let data_id;
-      if (get(data, 'documentKey._id') && ObjectId.isValid(get(data, 'documentKey._id'))) data_id = new ObjectId(get(data, 'documentKey._id')).toString();
-      else {
-        console.log('id error');
-        return false;
-      }
-      const logsObj = { coll: modelName, time: dayjs().format('YYYY-MM-DD HH:mm:ss'), data_id, data: get(data, 'fullDocument'), method: operationType };
-      // 多个数据同步,不过根据logsObj去查询.不重复添加记录.一个数据同一个时间只允许记录一个,先来先记
-      const num = await this.dataLogsModel.count(logsObj);
-      if (num > 0) {
-        console.log('多个变更记录');
-        return;
-      }
-      let new_data, origin_data;
-      if (operationType === 'insert') {
-        // 无原数据
-        // 可以直接创建数据
-        await this.dataLogsModel.create(logsObj);
-        new_data = logsObj.data;
-      } else if (operationType === 'update') {
-        // 可以直接创建数据并且取最后两条
-        await this.dataLogsModel.create(logsObj);
-        const logs = await this.dataLogsModel.find({ coll: logsObj.coll, data_id: logsObj.data_id }).sort({ time: -1 }).limit(2).lean();
-        const newLogs = head(logs);
-        const originLogs = last(logs);
-        if (newLogs) new_data = get(newLogs, 'data');
-        if (originLogs) origin_data = get(originLogs, 'data');
-      } else if (operationType === 'delete') {
-        // 无新数据
-        // 先取最后一条,再创建
-        const logs = await this.dataLogsModel.find({ coll: logsObj.coll, data_id: logsObj.data_id }).sort({ time: -1 }).limit(1).lean();
-        const originLogs = head(logs);
-        if (originLogs) origin_data = get(originLogs, 'data');
-        await this.dataLogsModel.create(logsObj);
-      }
-      // 处理数据
-      if (origin_data) {
-        const rod = get(record, 'origin_data', {});
-        if (!rod[modelName]) rod[modelName] = [];
-        rod[modelName].push(origin_data);
-        record.origin_data = rod;
-      }
-      if (new_data) {
-        const nod = get(record, 'new_data', {});
-        if (!nod[modelName]) nod[modelName] = [];
-        nod[modelName].push(new_data);
-        record.new_data = nod;
-      }
-      // 更新记录
-      await this.dataRecordService.updateOne(record_id, record);
-      this.logger.warn('record success')
-    });
-  }
-}

+ 0 - 7
src/service/tool.service.ts

@@ -1,7 +0,0 @@
-import { Inject, Provide } from '@midwayjs/core';
-import { Context } from '@midwayjs/koa';
-@Provide()
-export class ToolService {
-  @Inject()
-  ctx: Context;
-}