1234567891011121314151617181920212223242526272829303132 |
- 'use strict';
- const _ = require('lodash');
- const { ObjectId } = require('mongoose').Types;
- module.exports = options => {
- return async function duplicate(ctx, next) {
- const data = _.get(ctx.request, 'body');
- const id = _.get(ctx.params, 'id');
- const status = data.status;
- 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();
- };
- };
|