util.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. dealQuery(query) {
  15. return this.turnFilter(this.turnDateRangeQuery(query));
  16. }
  17. /**
  18. * 将查询条件中模糊查询的标识转换成对应object
  19. * @param {Object} filter 查询条件
  20. */
  21. turnFilter(filter) {
  22. const str = /^%\S*%$/;
  23. const keys = Object.keys(filter);
  24. for (const key of keys) {
  25. const res = key.match(str);
  26. if (res) {
  27. const newKey = key.slice(1, key.length - 1);
  28. filter[newKey] = new RegExp(filter[key]);
  29. delete filter[key];
  30. }
  31. }
  32. return filter;
  33. }
  34. /**
  35. * 将时间转换成对应查询Object
  36. * @param {Object} filter 查询条件
  37. */
  38. turnDateRangeQuery(filter) {
  39. const keys = Object.keys(filter);
  40. const times = [];
  41. for (const k of keys) {
  42. if (k.includes('@')) {
  43. const karr = k.split('@');
  44. if (karr.length === 2) {
  45. const prefix = karr[0];
  46. const type = karr[1];
  47. if (type === 'start') {
  48. if (filter[k] && filter[k] !== '') {
  49. const obj = { key: prefix, opera: '$gte', value: new Date(filter[k]) };
  50. times.push(obj);
  51. }
  52. } else {
  53. if (filter[k] && filter[k] !== '') {
  54. const obj = { key: prefix, opera: '$lte', value: new Date(filter[k]) };
  55. times.push(obj);
  56. }
  57. }
  58. delete filter[k];
  59. }
  60. }
  61. }
  62. for (const i of times) {
  63. const { key, opera, value } = i;
  64. if (!filter[key]) {
  65. filter[key] = {};
  66. }
  67. filter[key][opera] = value;
  68. }
  69. return filter;
  70. }
  71. }
  72. module.exports = UtilService;