util.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. const assert = require('assert');
  3. const _ = require('lodash');
  4. const { ObjectId } = require('mongoose').Types;
  5. const { CrudService } = require('naf-framework-mongoose/lib/service');
  6. const { BusinessError, ErrorCode } = require('naf-core').Error;
  7. class UtilService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx);
  10. this.mq = this.ctx.mq;
  11. }
  12. /**
  13. * 获取字段前置函数
  14. * @param {String} param0 {model字段名
  15. */
  16. async findModel({ model }) {
  17. if (model !== 'all') return await this.getModel(model);
  18. const modelList = this.ctx.model;
  19. const keys = Object.keys(modelList);
  20. const arr = [];
  21. for (const key of keys) {
  22. if (key !== 'Test') { arr.push({ zh: this.modelToZh(key), table: key, value: await this.getModel(key) }); }
  23. }
  24. return arr;
  25. }
  26. /**
  27. * 获取字段
  28. * @param {String} model 表名
  29. */
  30. async getModel(model) {
  31. const _model = _.capitalize(model);
  32. const data = this.ctx.model[_model].prototype.schema.obj;
  33. const keys = Object.keys(data);
  34. let res = [];
  35. for (const k of keys) {
  36. const field = _.get(data[k], 'field');
  37. if (field && _.get(field, 'label')) {
  38. field.model = k;
  39. res.push(field);
  40. }
  41. }
  42. res = _.orderBy(res, [ 'row' ], [ 'asc' ]);
  43. return res;
  44. }
  45. /**
  46. * 表名换成中文
  47. * @param {String} model 表名
  48. */
  49. modelToZh(model) {
  50. const obj = {
  51. car: '车辆表',
  52. client: '客户/供应商表',
  53. daily: '车辆日常维修表',
  54. dictionary: '字典表',
  55. driver: '司机表',
  56. item: '项目表',
  57. mode: '计费方式表',
  58. order: '订单表',
  59. route: '路线表',
  60. transport: '运输表',
  61. treaty: '合同表',
  62. };
  63. return obj[_.lowerCase(model)];
  64. }
  65. async utilMethod(query, body) {
  66. }
  67. }
  68. module.exports = UtilService;