util.js 1.7 KB

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