'use strict'; const assert = require('assert'); const _ = require('lodash'); const { CrudService } = require('naf-framework-mongoose/lib/service'); const { BusinessError, ErrorCode } = require('naf-core').Error; class TeacherService extends CrudService { constructor(ctx) { super(ctx, 'teacher'); this.model = this.ctx.model.Teacher; } // 创建教师用户 async create(data) { const { name, password, phone, id_number } = data; assert(name, '姓名不能为空'); assert(password, '密码不能为空'); assert(phone, '手机号不能为空'); assert(id_number, '身份证号不能为空'); // 检查是否已经注册 const teacher = await this.model.findOne({ id_number }); if (teacher) { throw new BusinessError(ErrorCode.DATA_EXIST, '已经注册,无需重复注册'); } // 插入数据时默认状态为0 const newdata = { ...data, status: '0' }; newdata.password = { secret: password }; const entity = await this.model.create(newdata); return await this.fetch({ id: entity.id }); } // 根据id删除教师信息 async delete({ id }) { await this.model.findByIdAndDelete(id); return 'deleted'; } // 根据状态删除教师信息 async deleteByStatus({ status }) { const teacher = await this.model.findOne(status); this.model.deleteOne(teacher); return 'deleted'; } // 根据id更新信息 async update({ id }, data) { const teacher = await this.model.findById(id); if (data.name) { teacher.name = data.name; } if (data.phone) { teacher.phone = data.phone; } if (data.id_number) { teacher.id_number = data.id_number; } if (data.password) { teacher.password = { secret: data.password }; } teacher.gender = data.gender; teacher.profession_number = data.profession_number; teacher.profession_number_file = data.profession_number_file; teacher.school_code = data.school_code; teacher.school_name = data.school_name; teacher.email = data.email; teacher.openid = data.openid; teacher.age = data.age; teacher.birthday = data.birthday; teacher.entry_time = data.entry_time; teacher.job = data.job; teacher.major = data.major; teacher.status = data.status; teacher.file_score = data.file_score; teacher.is_etiquette_teacher = data.is_etiquette_teacher; teacher.interview_score = data.interview_score; teacher.student_score = data.student_score; return await teacher.save(); } // 根据参数查询信息 async query({ skip, limit, ...number }) { const teacher = await this.model.find(number).skip(Number(skip)).limit(Number(limit)); return teacher; } // 查询详情 async fetchTeacher({ id }) { // 将文件拼到查询到的数据后 return await this.model.findById(id, '+file'); } } module.exports = TeacherService;