answer.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict';
  2. const { CrudService } = require('naf-framework-mongoose/lib/service');
  3. const { BusinessError, ErrorCode } = require('naf-core').Error;
  4. const _ = require('lodash');
  5. const assert = require('assert');
  6. // 问卷回答
  7. class AnswerService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx, 'answer');
  10. this.model = this.ctx.model.Answer;
  11. }
  12. async create(body) {
  13. const { phone, user_id, create_user = true } = body;
  14. if (!user_id && phone && create_user) {
  15. // 没有用户id,但是有电话,且需要注册
  16. // 查询用户
  17. let user = await this.ctx.service.util.httpUtil.cpost('/spm', 'live', { model: 'personal', method: 'findOne', query: { phone } }, { method: 'useModel' });
  18. if (user) {
  19. body.user_id = user._id;
  20. delete body.phone;
  21. } else {
  22. user = await this.ctx.service.util.httpUtil.cpost('/spm', 'live', { service: 'users.personal', method: 'create', body: { phone, name: '个人', code: 'WJDCXT', password: '123456', status: '1' } }, { method: 'useService' });
  23. if (user) {
  24. body.user_id = user._id;
  25. delete body.phone;
  26. } else throw new BusinessError(ErrorCode.SERVICE_FAULT, '创建用户失败');
  27. }
  28. }
  29. const res = await this.model.create(body);
  30. return res;
  31. }
  32. async findOne({ questionnaire_id, user_id }) {
  33. assert(questionnaire_id, '缺少问卷信息');
  34. assert(user_id, '缺少填写人信息');
  35. const res = await this.model.findOne({ questionnaire_id, user_id });
  36. return res;
  37. }
  38. }
  39. module.exports = AnswerService;