questionnaire.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. 'use strict';
  2. const assert = require('assert');
  3. const _ = require('lodash');
  4. const { ObjectId } = require('mongoose').Types;
  5. const { CrudService } = require('naf-framework-mongoose/lib/service');
  6. const { BusinessError, ErrorCode } = require('naf-core').Error;
  7. class QuestionnaireService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx, 'qusetionnaire');
  10. this.questionnairemodel = this.ctx.model.Questionnaire;
  11. this.questionmodel = this.ctx.model.Question;
  12. }
  13. // 插入问卷
  14. async create(data) {
  15. const { name, question } = data;
  16. assert(name, '问卷名称不能为空');
  17. const quedata = [];
  18. for (const elm of question) {
  19. const ques = await this.questionmodel.findById(elm);
  20. if (ques) {
  21. quedata.push(ques);
  22. }
  23. }
  24. data.question = quedata;
  25. return await this.questionnairemodel.create(data);
  26. }
  27. // 根据id删除问卷
  28. async delete({ id }) {
  29. await this.questionnairemodel.findByIdAndDelete(id);
  30. return 'deleted';
  31. }
  32. // 根据id更新问卷信息
  33. async update({ id }, data) {
  34. const { name, num, type, question } = data;
  35. const questionnaire = await this.questionnairemodel.findById(id);
  36. if (name) {
  37. questionnaire.name = name;
  38. }
  39. if (num) {
  40. questionnaire.num = num;
  41. }
  42. if (type) {
  43. questionnaire.type = type;
  44. }
  45. if (question) {
  46. questionnaire.question = question;
  47. }
  48. return await questionnaire.save();
  49. }
  50. // 查询
  51. async query({ skip, limit, ...num }) {
  52. const total = await this.questionnairemodel.count(num);
  53. const data = await this.questionnairemodel.find(num).skip(Number(skip)).limit(Number(limit));
  54. const result = { total, data };
  55. return result;
  56. }
  57. // 查询详情
  58. async show({ id }) {
  59. const questionnaire = await this.questionnairemodel.findById(id);
  60. return questionnaire;
  61. }
  62. }
  63. module.exports = QuestionnaireService;