12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 'use strict';
- const assert = require('assert');
- const _ = require('lodash');
- const { ObjectId } = require('mongoose').Types;
- const { CrudService } = require('naf-framework-mongoose/lib/service');
- const { BusinessError, ErrorCode } = require('naf-core').Error;
- class QuestionnaireService extends CrudService {
- constructor(ctx) {
- super(ctx, 'qusetionnaire');
- this.questionnairemodel = this.ctx.model.Questionnaire;
- this.questionmodel = this.ctx.model.Question;
- }
- // 插入问卷
- async create(data) {
- const { name, num } = data;
- assert(name, '问卷名称不能为空');
- assert(num, '问卷序号不能为空');
- return await this.questionnairemodel.create(data);
- }
- // 根据id删除问卷
- async delete({ id }) {
- await this.questionnairemodel.findByIdAndDelete(id);
- return 'deleted';
- }
- // 根据id更新问卷信息
- async update({ id }, data) {
- console.log(data);
- const questionnaire = await this.questionnairemodel.findById(id);
- if (questionnaire.name) {
- questionnaire.name = data.name;
- }
- if (questionnaire.num) {
- questionnaire.num = data.num;
- }
- questionnaire.question = data.question;
- console.log(questionnaire);
- return await questionnaire.save();
- }
- // 查询
- async query({ skip, limit, ...num }) {
- const total = await (await this.questionnairemodel.find(num)).length;
- const data = await this.questionnairemodel.find(num).skip(Number(skip)).limit(Number(limit));
- const result = { total, data };
- return result;
- }
- // 查询详情
- async show({ id }) {
- const questionnaire = await this.questionnairemodel.findById(id);
- const questions = await questionnaire.question;
- const datas = [];
- // 根据问卷中保存的问卷题目id查询题目详情
- for (const code of questions) {
- const question = await this.questionmodel.findById(code);
- // 将查询出的题目放入一个数组中
- datas.push(question);
- }
- questionnaire.question = datas;
- // 将查询到的问卷id,名称,序号,查询到的问卷题目数组放到一个新的数据中
- const newdata = { id, name: questionnaire.name, num: questionnaire.num, question: datas };
- return newdata;
- }
- }
- module.exports = QuestionnaireService;
|