feat: 新增复制功能 (#40)
This commit is contained in:
parent
83cfd57245
commit
908537ea0b
@ -35,6 +35,33 @@ export default class SurveyManage {
|
||||
};
|
||||
}
|
||||
|
||||
@SurveyServer({ type: 'http', method: 'post', routerName: '/create' })
|
||||
async create({ req }) {
|
||||
const params = getValidateValue(Joi.object({
|
||||
remark: Joi.string().required(),
|
||||
title: Joi.string().required(),
|
||||
questionType: Joi.string().when('createMethod', {
|
||||
is: 'copy',
|
||||
then: Joi.allow(null),
|
||||
otherwise: Joi.required(),
|
||||
}),
|
||||
createMethod: Joi.string().allow(null).default('basic'),
|
||||
createFrom: Joi.string().when('createMethod', {
|
||||
is: 'copy',
|
||||
then: Joi.required(),
|
||||
otherwise: Joi.allow(null),
|
||||
}),
|
||||
}).validate(req.body, { allowUnknown: true }));
|
||||
params.userData = await userService.checkLogin({ req });
|
||||
const addRes = await surveyService.create(params);
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
id: addRes.pageId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@SurveyServer({ type: 'http', method: 'post', routerName: '/update' })
|
||||
async update({ req }) {
|
||||
const surveyParams = getValidateValue(Joi.object({
|
||||
|
@ -78,6 +78,48 @@ class SurveyService {
|
||||
};
|
||||
}
|
||||
|
||||
async create(surveyMetaInfo: { remark: string, questionType: QUESTION_TYPE, title: string, userData: UserType, createMethod: string; createFrom: string; }) {
|
||||
const surveyMeta = await mongo.getCollection({ collectionName: 'surveyMeta' });
|
||||
const now = Date.now();
|
||||
const surveyPath = await this.getNewSurveyPath();
|
||||
|
||||
let originSurvey;
|
||||
if (surveyMetaInfo.createMethod === 'copy') {
|
||||
originSurvey = await this.get({ surveyId: surveyMetaInfo.createFrom, userData: surveyMetaInfo.userData });
|
||||
surveyMetaInfo.questionType = originSurvey.surveyMetaRes.questionType;
|
||||
}
|
||||
|
||||
const surveyMetaRes = await surveyMeta.insertOne({
|
||||
surveyPath,
|
||||
remark: surveyMetaInfo.remark,
|
||||
questionType: surveyMetaInfo.questionType,
|
||||
createMethod: surveyMetaInfo.createMethod || 'basic',
|
||||
createFrom: surveyMetaInfo.createFrom || '',
|
||||
title: surveyMetaInfo.title,
|
||||
creator: surveyMetaInfo.userData.username,
|
||||
owner: surveyMetaInfo.userData.username,
|
||||
curStatus: getStatusObject({ status: SURVEY_STATUS.new }),
|
||||
createDate: now,
|
||||
updateDate: now,
|
||||
});
|
||||
const pageId = surveyMetaRes.insertedId.toString();
|
||||
const surveyConf = await mongo.getCollection({ collectionName: 'surveyConf' });
|
||||
const code = originSurvey ? originSurvey.surveyConfRes.code : await this.getCodeData({
|
||||
questionType: surveyMetaInfo.questionType,
|
||||
});
|
||||
const surveyConfRes = await surveyConf.insertOne({
|
||||
pageId,
|
||||
pageType: surveyMetaInfo.questionType,
|
||||
curStatus: getStatusObject({ status: SURVEY_STATUS.new }),
|
||||
code,
|
||||
});
|
||||
return {
|
||||
pageId,
|
||||
surveyMetaRes,
|
||||
surveyConfRes
|
||||
};
|
||||
}
|
||||
|
||||
async update(surveyParams: { surveyId: string, remark: string, title: string, userData: UserType }) {
|
||||
const surveyMeta = await mongo.getCollection({ collectionName: 'surveyMeta' });
|
||||
const _id = mongo.getObjectIdByStr(surveyParams.surveyId);
|
||||
|
Loading…
Reference in New Issue
Block a user