lrf402788946 4 anos atrás
pai
commit
974f79de40
1 arquivos alterados com 66 adições e 15 exclusões
  1. 66 15
      app/service/student.js

+ 66 - 15
app/service/student.js

@@ -18,18 +18,39 @@ class StudentService extends CrudService {
     this.gmodel = this.ctx.model.Group;
     this.psmodel = this.ctx.model.Personalscore;
     this.gsmodel = this.ctx.model.Groupscore;
+    this.uqmodel = this.ctx.model.Uploadquestion;
+    this.scoremodel = this.ctx.model.Score;
+    this.leavemodel = this.ctx.model.Leave;
+    this.attendmodel = this.ctx.model.Attendance;
   }
 
   async create(data) {
     const { name, phone: mobile, gender } = data;
     const res = await this.model.create(data);
     if (res) {
-      const obj = { name, mobile, gender, type: '4', passwd: '12345678', uid: res._id };
+      const obj = {
+        name,
+        mobile,
+        gender,
+        type: '4',
+        passwd: '12345678',
+        uid: res._id,
+      };
       const user = await this.ctx.service.user.create(obj);
     }
     return res;
   }
 
+  async delete({ id }) {
+    // 学生表,用户表,作业表,问卷表,评分,请假,考勤
+    await this.model.deleteOne({ _id: ObjectId(id) });
+    await this.umodel.deleteOne({ uid: id });
+    await this.upmodel.deleteMany({ studentid: id });
+    await this.uqmodel.deleteMany({ studentid: id });
+    await this.scoremodel.deleteMany({ stuid: id });
+    await this.leavemodel.deleteMany({ studentid: id });
+    await this.attendmodel.deleteMany({ studentid: id });
+  }
 
   // 查询
   async query({ skip, limit, ...info }) {
@@ -39,7 +60,9 @@ class StudentService extends CrudService {
       for (const cla of classes) {
         await this.arrangeNumber(cla._id);
       }
-    } else { await this.arrangeNumber(classid); }
+    } else {
+      await this.arrangeNumber(classid);
+    }
     const total = await this.model.count(info);
     const res = await this.model
       .find(info)
@@ -80,7 +103,12 @@ class StudentService extends CrudService {
       $or: [{ classid: null }, { classid: '' }],
     });
     const data = await this.model
-      .find({ termid, type, batchid, $or: [{ classid: null }, { classid: '' }] })
+      .find({
+        termid,
+        type,
+        batchid,
+        $or: [{ classid: null }, { classid: '' }],
+      })
       .skip(Number(skip))
       .limit(Number(limit));
     const result = { total, data };
@@ -202,15 +230,21 @@ class StudentService extends CrudService {
     const res = [];
     for (const stuid of data) {
       const stu = await this.model.findById(stuid);
-      if (stu)res.push(stu);
+      if (stu) res.push(stu);
     }
     return res;
   }
 
   // 根据学生id删除学生
   async deletestus(data) {
-    for (const el of data) {
-      await this.model.deleteOne({ _id: ObjectId(el) });
+    for (const id of data) {
+      await this.model.deleteOne({ _id: ObjectId(id) });
+      await this.umodel.deleteOne({ uid: id });
+      await this.upmodel.deleteMany({ studentid: id });
+      await this.uqmodel.deleteMany({ studentid: id });
+      await this.scoremodel.deleteMany({ stuid: id });
+      await this.leavemodel.deleteMany({ studentid: id });
+      await this.attendmodel.deleteMany({ studentid: id });
     }
   }
 
@@ -241,9 +275,13 @@ class StudentService extends CrudService {
       return i;
     });
     // 初始化后取出不需要算的人,他们就这样,没必要算
-    const reverseList = studentList.filter(f => !(f.is_fine !== '2' && f.job.includes('普通')));
+    const reverseList = studentList.filter(
+      f => !(f.is_fine !== '2' && f.job.includes('普通'))
+    );
     // 过滤出取消评优资格的学生和干部;干部就是优秀;被取消资格就别凑热闹了
-    studentList = studentList.filter(f => f.is_fine !== '2' && f.job.includes('普通'));
+    studentList = studentList.filter(
+      f => f.is_fine !== '2' && f.job.includes('普通')
+    );
     // 获取平时分
     const dailyScoreList = await this.psmodel.find({ classid });
     studentList = this.dealScoreList(dailyScoreList, studentList);
@@ -253,8 +291,14 @@ class StudentService extends CrudService {
     // 获取小组分,小组
     const groupList = await this.gmodel.find({ classid });
     const groupScoreList = await this.gsmodel.find({ classid });
-    studentList = this.dealGroupScoreList(groupList, groupScoreList, studentList);
-    studentList = studentList.sort((a, b) => (b.score * 1 || 0) - (a.score * 1 || 0));
+    studentList = this.dealGroupScoreList(
+      groupList,
+      groupScoreList,
+      studentList
+    );
+    studentList = studentList.sort(
+      (a, b) => (b.score * 1 || 0) - (a.score * 1 || 0)
+    );
     // 排名
     // eslint-disable-next-line no-unused-vars
     let num = 0;
@@ -273,7 +317,9 @@ class StudentService extends CrudService {
       // 处理同分的人也都变成is_fine
       for (const stud of rlist) {
         stud.is_fine = '1';
-        const sindex = studentList.findIndex(f => ObjectId(stud._id).equals(f._id));
+        const sindex = studentList.findIndex(f =>
+          ObjectId(stud._id).equals(f._id)
+        );
         if (sindex >= 0) {
           studentList[sindex] = stud;
           plus++;
@@ -293,7 +339,6 @@ class StudentService extends CrudService {
       // );
       console.log(res);
     }
-
   }
   /**
    * 将分数放到学生身上
@@ -304,7 +349,11 @@ class StudentService extends CrudService {
     scoreList = _.groupBy(scoreList, 'studentid');
     studentList = studentList.map(i => {
       const slist = scoreList[i._id];
-      if (slist)i.score = (i.score * 1 || 0) + slist.reduce((p, n) => p + (n.score * 1 || 0), 0);
+      if (slist) {
+        i.score =
+          (i.score * 1 || 0) +
+          slist.reduce((p, n) => p + (n.score * 1 || 0), 0);
+      }
       return i;
     });
     return studentList;
@@ -333,7 +382,9 @@ class StudentService extends CrudService {
     });
     // 每个学生加自己的组的平均分
     studentList = studentList.map(i => {
-      const r = groupList.find(f => f.students.find(sf => ObjectId(sf.stuid).equals(i._id)));
+      const r = groupList.find(f =>
+        f.students.find(sf => ObjectId(sf.stuid).equals(i._id))
+      );
       if (r) i.score = (i.score * 1 || 0) + (r.score * 1 || 0);
       return i;
     });
@@ -348,7 +399,7 @@ class StudentService extends CrudService {
     // 查每个学生的编号,如果没有,就给赋上值;有,就给number赋上值,然后继续下一位
     for (const stu of studList) {
       if (!stu.number) {
-        if (number * 1 < 10)stu.number = `0${number}`;
+        if (number * 1 < 10) stu.number = `0${number}`;
         else stu.number = number;
         await stu.save();
       } else {