util.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. 'use strict';
  2. const _ = require('lodash');
  3. const moment = require('moment');
  4. const { CrudService } = require('naf-framework-mongoose-free/lib/service');
  5. const { ObjectId } = require('mongoose').Types;
  6. const fs = require('fs');
  7. class UtilService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx);
  10. this.mq = this.ctx.mq;
  11. }
  12. async utilMethod(query, body) {
  13. }
  14. async expertExport() {
  15. }
  16. dealQuery(query) {
  17. return this.turnFilter(this.turnDateRangeQuery(query));
  18. }
  19. /**
  20. * 将查询条件中模糊查询的标识转换成对应object
  21. * @param {Object} filter 查询条件
  22. */
  23. turnFilter(filter) {
  24. const str = /^%\S*%$/;
  25. const keys = Object.keys(filter);
  26. for (const key of keys) {
  27. const res = key.match(str);
  28. if (res) {
  29. const newKey = key.slice(1, key.length - 1);
  30. filter[newKey] = new RegExp(filter[key]);
  31. delete filter[key];
  32. }
  33. }
  34. return filter;
  35. }
  36. /**
  37. * 将时间转换成对应查询Object
  38. * @param {Object} filter 查询条件
  39. */
  40. turnDateRangeQuery(filter) {
  41. const keys = Object.keys(filter);
  42. for (const k of keys) {
  43. if (k.includes('@')) {
  44. const karr = k.split('@');
  45. if (karr.length === 2) {
  46. const type = karr[1];
  47. if (type === 'start') {
  48. if (filter[k] && filter[k] !== '') {
  49. filter[karr[0]] = {
  50. ..._.get(filter, karr[0], {}),
  51. $gte: filter[k],
  52. };
  53. }
  54. } else {
  55. if (filter[k] && filter[k] !== '') {
  56. filter[karr[0]] = {
  57. ..._.get(filter, karr[0], {}),
  58. $lte: filter[k],
  59. };
  60. }
  61. }
  62. delete filter[k];
  63. }
  64. }
  65. }
  66. return filter;
  67. }
  68. }
  69. module.exports = UtilService;