lrf402788946 4 gadi atpakaļ
vecāks
revīzija
0beb086ba6
1 mainītis faili ar 29 papildinājumiem un 7 dzēšanām
  1. 29 7
      app/service/bedroom.js

+ 29 - 7
app/service/bedroom.js

@@ -233,16 +233,38 @@ class BedroomService extends CrudService {
     const { code, ids, bedroomid, termid } = body;
     const bedroom = await this.model.findById(bedroomid);
     if (!bedroom) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '不存在该寝室');
-    const { number } = bedroom;
+    let { number, gender } = bedroom;
+    console.log(gender);
     // 找到多少人在这个寝室
-    const inRoom = await this.ctx.model.Student.count({ termid, bedroomid });
-    const ifTotal = inRoom * 1 + ids.length;
-    if (ifTotal >= number * 1) throw new BusinessError(ErrorCode.BUSINESS, `超出人数,该寝室人最多为${number}人`);
+    const inRoom = await this.ctx.model.Student.find({ termid, bedroomid });
+    const ifTotal = inRoom.length * 1 + ids.length;
+    if (ifTotal > number * 1) throw new BusinessError(ErrorCode.BUSINESS, `超出人数,该寝室人最多为${number}人`);
+    if (!gender) {
+      // 寝室没设置性别,从这个寝室的学生中取出性别
+      const stu = _.head(inRoom);
+      gender = _.get(stu, 'gender');
+    }
+    console.log(gender);
     for (const id of ids) {
       const r = await this.ctx.model.Student.findById(id);
-      r.bedroom = code;
-      r.bedroomid = bedroomid;
-      await r.save();
+      // 性别查询,是否有误
+      const { gender: sg, name } = r;
+      // 寝室或有已入住学生,产生的性别结果,
+      if (!gender) {
+        r.bedroom = code;
+        r.bedroomid = bedroomid;
+        await r.save();
+      } else {
+        if (sg && sg.includes(gender)) {
+        // 有性别判断
+          r.bedroom = code;
+          r.bedroomid = bedroomid;
+          await r.save();
+        } else {
+          throw new BusinessError(ErrorCode.BusinessError, `${name} 与该寝室已分配的学生性别不符!`);
+        }
+      }
+
     }
   }
 }