util.js 1.9 KB

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