duplicate.js 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. 'use strict';
  2. const _ = require('lodash');
  3. const { ObjectId } = require('mongoose').Types;
  4. module.exports = options => {
  5. return async function duplicate(ctx, next) {
  6. const data = _.get(ctx.request, 'body');
  7. const id = _.get(ctx.params, 'id');
  8. const status = data.status;
  9. if (status === '2') {
  10. // 创建副本数据
  11. let oData = await ctx.model.Apply.findById(id);
  12. if (!oData) return;
  13. oData = JSON.parse(JSON.stringify(oData));
  14. oData = { ...oData, ...data };
  15. const duplicateData = _.cloneDeep(oData);
  16. duplicateData.apply_id = id;
  17. delete duplicateData._id;
  18. delete duplicateData.id;
  19. const q = { apply_id: duplicateData.apply_id, user_id: duplicateData.user_id };
  20. // // 先查询有没有,有就更新
  21. const result = await ctx.model.Duplicate.findOne(q);
  22. if (result) {
  23. // 修改
  24. ctx.model.Duplicate.updateOne({ _id: result._id || result.id }, duplicateData);
  25. } else {
  26. // 一切都复制一份,将原数据id放到apply_id上,用来追溯/对比
  27. ctx.model.Duplicate.create(duplicateData);
  28. }
  29. }
  30. await next();
  31. };
  32. };