'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 StudentService extends CrudService { constructor(ctx) { super(ctx, 'student'); this.model = this.ctx.model.Student; } // 查询 async seek({ termid, skip, limit }) { const students = await this.model.find({ termid, classid: null }); const data = await this.model.find({ termid, classid: null }).skip(Number(skip)).limit(Number(limit)); const total = await students.length; const result = { total, data }; return result; } async findbedroom(data) { const { batchid, classid } = data; const result = []; // 如果传的是批次id if (batchid) { // 查询该批次下的所有学生 const students = await this.model.find({ batchid }); const bedroomList = new Set(); // 查询该批次的所有寝室号 for (const student of students) { bedroomList.add(student.bedroom); } let studentList = []; // 查询该批次所有寝室下的学生名单 for (const bedroom of bedroomList) { const newstudents = await this.model.find({ bedroom }); for (const newstudent of newstudents) { studentList.push(newstudent.name); } result.push({ bedroom, studentList }); studentList = []; } } // 如果传的是班级id if (classid) { // 查询该班级所有学生 const students = await this.model.find({ classid }); const bedroomList = new Set(); // 查询该班级所有寝室号 for (const student of students) { bedroomList.add(student.bedroom); } let studentList = []; // 查询该班级所有寝室的学生名单 for (const bedroom of bedroomList) { const newstudents = await this.model.find({ bedroom }); for (const newstudent of newstudents) { // 如果寝室中有非本班级学生(混寝),则过滤掉不予显示 if (newstudent.classid === classid) { studentList.push(newstudent.name); } } result.push({ bedroom, studentList }); studentList = []; } } return result; } } module.exports = StudentService;