'use strict'; const assert = require('assert'); const _ = require('lodash'); const moment = require('moment'); const { ObjectId } = require('mongoose').Types; const { CrudService } = require('naf-framework-mongoose/lib/service'); const { BusinessError, ErrorCode } = require('naf-core').Error; class UtilService extends CrudService { constructor(ctx) { super(ctx); this.mq = this.ctx.mq; } /** * 获取字段前置函数 * @param {String} param0 {model字段名 */ async findModel({ model }) { if (model !== 'all') return await this.getModel(model); const modelList = this.ctx.model; const keys = Object.keys(modelList); const arr = []; for (const key of keys) { if (key !== 'Test') { const zh = this.modelToZh(key); if (!zh) continue; arr.push({ zh, table: key, value: await this.getModel(key), }); } } return arr; } /** * 获取字段 * @param {String} model 表名 */ async getModel(model) { const _model = _.capitalize(model); const data = this.ctx.model[_model].prototype.schema.obj; const keys = Object.keys(data); let res = []; for (const k of keys) { const field = _.get(data[k], 'field'); if (field && _.get(field, 'label')) { field.model = k; res.push(field); } } res = _.orderBy(res, [ 'row' ], [ 'asc' ]); return res; } /** * 表名换成中文 * @param {String} model 表名 */ modelToZh(model) { const obj = { car: '车辆表', client: '客户/供应商表', daily: '车辆日常维修表', dictionary: '字典表', driver: '司机表', item: '项目表', mode: '计费方式表', order: '订单表', route: '路线表', transport: '运输表', treaty: '合同表', }; return obj[_.lowerCase(model)]; } async utilMethod(query, body) {} } module.exports = UtilService;