|
@@ -1,20 +1,32 @@
|
|
|
'use strict';
|
|
|
const _ = require('lodash');
|
|
|
+const { ObjectId } = require('mongoose').Types;
|
|
|
module.exports = options => {
|
|
|
return async function duplicate(ctx, next) {
|
|
|
- await next();
|
|
|
- const body = ctx.response.body;
|
|
|
- const { data } = body;
|
|
|
+ const data = _.get(ctx.request, 'body');
|
|
|
+ const id = _.get(ctx.params, 'id');
|
|
|
const status = data.status;
|
|
|
- if (status !== '2') return;
|
|
|
- // 创建副本数据
|
|
|
- const duplicateData = _.cloneDeep(data);
|
|
|
- duplicateData.apply_id = data._id || data.id;
|
|
|
- delete duplicateData._id;
|
|
|
- delete duplicateData.id;
|
|
|
- const q = { apply_id: duplicateData.apply_id, user_id: duplicateData.user_id };
|
|
|
- // 先查询有没有,有就更新
|
|
|
- // 一切都复制一份,将原数据id放到apply_id上,用来追溯/对比
|
|
|
- // ctx.model.Duplicate.create(duplicateData);
|
|
|
+ if (status === '2') {
|
|
|
+ // 创建副本数据
|
|
|
+ let oData = await ctx.model.Apply.findById(id);
|
|
|
+ if (!oData) return;
|
|
|
+ oData = JSON.parse(JSON.stringify(oData));
|
|
|
+ oData = { ...oData, ...data };
|
|
|
+ const duplicateData = _.cloneDeep(oData);
|
|
|
+ duplicateData.apply_id = id;
|
|
|
+ delete duplicateData._id;
|
|
|
+ delete duplicateData.id;
|
|
|
+ const q = { apply_id: duplicateData.apply_id, user_id: duplicateData.user_id };
|
|
|
+ // // 先查询有没有,有就更新
|
|
|
+ const result = await ctx.model.Duplicate.findOne(q);
|
|
|
+ if (result) {
|
|
|
+ // 修改
|
|
|
+ ctx.model.Duplicate.updateOne({ _id: result._id || result.id }, duplicateData);
|
|
|
+ } else {
|
|
|
+ // 一切都复制一份,将原数据id放到apply_id上,用来追溯/对比
|
|
|
+ ctx.model.Duplicate.create(duplicateData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ await next();
|
|
|
};
|
|
|
};
|