123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- '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();
- }
- // 根据学生id删除班级
- async deleteclass(data) {
- for (const el of data) {
- const student = await this.model.findById(el);
- if (student) {
- student.classid = '';
- await student.save();
- }
- }
- }
- }
- module.exports = StudentService;
|