thumbs.js 907 B

12345678910111213141516171819202122232425262728
  1. 'use strict';
  2. const _ = require('lodash');
  3. const querystring = require('querystring');
  4. const { ObjectId } = require('mongoose').Types;
  5. module.exports = options => {
  6. return async function thumbs(ctx, next) {
  7. const url = ctx.request.url.split('?')[1];
  8. const query = JSON.parse(JSON.stringify(querystring.parse(url)));
  9. const { openid } = query;
  10. await next();
  11. let data = _.get(ctx.response, 'body.data');
  12. if (_.isArray(data) && data.length > 0) {
  13. data = JSON.parse(JSON.stringify(data));
  14. // 整合数据
  15. const ids = data.map(i => i._id);
  16. const res = await ctx.service.thumbs.getSum({ ids, openid });
  17. data = data.map(i => {
  18. const r = res.find(f => ObjectId(f._id).equals(i._id));
  19. if (r) i.thumbs = r.sum;
  20. else i.thumbs = 0;
  21. return i;
  22. });
  23. // 更新返回数据
  24. ctx.response.body.data = data;
  25. }
  26. };
  27. };