disclosure_report.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use strict';
  2. const _ = require('lodash');
  3. const { ObjectId } = require('mongoose').Types;
  4. const checkReport = async (ctx, data) => {
  5. return await ctx.service.patent.report.checkReport(data);
  6. };
  7. module.exports = options => {
  8. return async function disclosure_report(ctx, next) {
  9. await next();
  10. const { method } = ctx.request;
  11. if (method === 'GET') {
  12. let { data } = ctx.body;
  13. if (data || data.length > 0) {
  14. data = JSON.parse(JSON.stringify(data));
  15. const ids = [];
  16. if (_.isArray(data)) {
  17. for (const i of data) {
  18. ids.push(i._id);
  19. }
  20. } else {
  21. ids.push(data._id);
  22. }
  23. const res = await checkReport(ctx, ids);
  24. if (_.isArray(data)) {
  25. for (const i of data) {
  26. const r = res.find(f => ObjectId(f.disclosure_id).equals(i._id));
  27. if (r) i.has_report = r._id;
  28. else i.has_report = false;
  29. }
  30. } else {
  31. if (res.length > 0) data.has_report = res[0]._id;
  32. else data.has_report = false;
  33. }
  34. ctx.body.data = data;
  35. }
  36. }
  37. };
  38. };