'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; this.umodel = this.ctx.model.User; } // 查询 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; } async upjob(data) { const { stuid, job } = data; const student = await this.model.findById(stuid); student.job = job; if (job === '班长' || job === '学委') { const user = await this.umodel.findOne({ uid: stuid, type: '4' }); const date = await this.ctx.service.util.updatedate(); const openid = user.openid; const detail = '你已被班主任设置为' + job + ',请及时登录查看'; const remark = '感谢您的使用'; if (openid) { this.ctx.service.weixin.sendTemplateMsg(this.ctx.app.config.REVIEW_TEMPLATE_ID, openid, '您有一个新的通知', detail, date, remark); } } return await student.save(); } } module.exports = StudentService;