|
@@ -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} 与该寝室已分配的学生性别不符!`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|