util.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. const _ = require('lodash');
  3. const moment = require('moment');
  4. const { CrudService } = require('naf-framework-mongoose/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. this.ctx.service.patent.patentearly.needWarning();
  14. }
  15. dealQuery(filter, { skip, limit, sort, desc, projection } = {}) {
  16. // 处理排序
  17. if (sort && _.isString(sort)) {
  18. sort = { [sort]: desc ? -1 : 1 };
  19. } else if (sort && _.isArray(sort)) {
  20. sort = sort.map((f) => ({ [f]: desc ? -1 : 1 })).reduce((p, c) => ({ ...p, ...c }), {});
  21. }
  22. const options = { skip, limit, sort, desc, projection };
  23. filter = this.turnFilter(this.turnDateRangeQuery(filter));
  24. return { filter, options };
  25. }
  26. dealFilter(filter) {
  27. return this.turnFilter(this.turnDateRangeQuery(filter));
  28. }
  29. /**
  30. * 将查询条件中模糊查询的标识转换成对应object
  31. * @param {Object} filter 查询条件
  32. */
  33. turnFilter(filter) {
  34. const str = /^%\S*%$/;
  35. const keys = Object.keys(filter);
  36. for (const key of keys) {
  37. const res = key.match(str);
  38. if (res) {
  39. const newKey = key.slice(1, key.length - 1);
  40. filter[newKey] = new RegExp(filter[key]);
  41. delete filter[key];
  42. }
  43. }
  44. return filter;
  45. }
  46. /**
  47. * 将时间转换成对应查询Object
  48. * @param {Object} filter 查询条件
  49. */
  50. turnDateRangeQuery(filter) {
  51. const keys = Object.keys(filter);
  52. for (const k of keys) {
  53. if (k.includes('@')) {
  54. const karr = k.split('@');
  55. if (karr.length === 2) {
  56. const type = karr[1];
  57. if (type === 'start') {
  58. if (filter[k] && filter[k] !== '') {
  59. filter[karr[0]] = {
  60. ..._.get(filter, karr[0], {}),
  61. $gte: filter[k],
  62. };
  63. }
  64. } else {
  65. if (filter[k] && filter[k] !== '') {
  66. filter[karr[0]] = {
  67. ..._.get(filter, karr[0], {}),
  68. $lte: filter[k],
  69. };
  70. }
  71. }
  72. delete filter[k];
  73. }
  74. }
  75. }
  76. return filter;
  77. }
  78. }
  79. module.exports = UtilService;