lrf 2 anni fa
parent
commit
f841b22959
2 ha cambiato i file con 37 aggiunte e 17 eliminazioni
  1. 1 1
      app/model/race/eliminate.js
  2. 36 16
      app/service/eliminate.js

+ 1 - 1
app/model/race/eliminate.js

@@ -17,7 +17,7 @@ const eliminate = {
   player_two: { type: String, required: false, zh: '选手二' }, //
   player_two_score: { type: String, required: false, zh: '选手二比分' }, //
   player_two_node: { type: String, required: false, zh: '选手二节点' }, //
-  is_change: { type: String, required: false, zh: '是否交换' }, //
+  is_change: { type: String, required: false, default: '0', zh: '是否交换' }, //
   status: { type: String, required: false, default: '0', zh: '赛程状态' }, // 0:待开始,1:已开始,2:已结束
   winner: { type: String, required: false, zh: '胜者' }, //
 };

+ 36 - 16
app/service/eliminate.js

@@ -309,11 +309,10 @@ class EliminateService extends CrudService {
       sort = sort.map(f => ({ [f]: desc ? -1 : 1 })).reduce((p, c) => ({ ...p, ...c }), {});
     }
     // 过滤出ref字段
-    console.log('line 309 in function:');
-    const { refMods, populate } = this.getRefMods();
+    const { populate } = this.getRefMods();
     let res = await this.model.findOne(filter, projection).populate(populate).exec();
     res = JSON.parse(JSON.stringify(res));
-    const { player_type, player_one, player_two, referee_id, match_id, group_id, project_id, address_id } = res;
+    const { referee_id, match_id, group_id, project_id, address_id } = res;
     if (match_id) {
       res.match_id_name = _.get(res, 'match_id.name');
       res.match_id = _.get(res, 'match_id._id');
@@ -331,26 +330,47 @@ class EliminateService extends CrudService {
       res.address_id = _.get(res, 'address_id._id');
     }
     if (referee_id) {
-      res.referee_id_name = _.get(res, 'referee_id.name');
+      res.referee_id_name = _.get(res, 'referee_id.user_id.name');
       res.referee_id = _.get(res, 'referee_id._id');
     }
-
+    res = await this.getPlayerName(res);
+    res = await this.afterFetch(filter, res);
+    return res;
+  }
+  // 换选手名称
+  async getPlayerName(data) {
+    const { player_type, player_one, player_two } = data;
+    if (!player_type) return data;
     // 人处理
     if (player_type === 'Race.User') {
-      const p1 = await this.userModel.findById(player_one, { user_id: 1 }).populate({ path: 'user_id', model: this.baseUserModel, select: 'name' });
-      const p2 = await this.userModel.findById(player_two, { user_id: 1 }).populate({ path: 'user_id', model: this.baseUserModel, select: 'name' });
-      res.player_one_name = _.get(p1, 'user_id.name');
-      res.player_two_name = _.get(p2, 'user_id.name');
+      console.log('line 348 in function:');
+      if (player_one) {
+        const p1 = await this.userModel.findById(player_one, { user_id: 1 }).populate({ path: 'user_id', model: this.baseUserModel, select: 'name' });
+        data.player_one_name = _.get(p1, 'user_id.name');
+      }
+      if (player_two) {
+        const p2 = await this.userModel.findById(player_two, { user_id: 1 }).populate({ path: 'user_id', model: this.baseUserModel, select: 'name' });
+        data.player_two_name = _.get(p2, 'user_id.name');
+      }
     } else if (player_type === 'Race.TeamApply') {
-      const p1 = await this.teamApplyModel.findById(player_one, { one_member_name: 1, two_member_name: 1 });
-      const p2 = await this.teamApplyModel.findById(player_two, { one_member_name: 1, two_member_name: 1 });
-      res.player_one_name = `${_.get(p1, 'one_member_name')}-${_.get(p1, 'two_member_name')}`;
-      res.player_two_name = `${_.get(p2, 'one_member_name')}-${_.get(p2, 'two_member_name')}`;
+      if (player_one) {
+        const p1 = await this.teamApplyModel.findById(player_one, { one_member_name: 1, two_member_name: 1 });
+        data.player_one_name = `${_.get(p1, 'one_member_name')}-${_.get(p1, 'two_member_name')}`;
+      }
+      if (player_two) {
+        const p2 = await this.teamApplyModel.findById(player_two, { one_member_name: 1, two_member_name: 1 });
+        data.player_two_name = `${_.get(p2, 'one_member_name')}-${_.get(p2, 'two_member_name')}`;
+      }
     }
-    res = await this.afterFetch(filter, res);
-    return res;
+    return data;
+  }
+  async afterQuery(filter, data) {
+    if (data) data = JSON.parse(JSON.stringify(data));
+    for (let d of data) {
+      d = await this.getPlayerName(d);
+    }
+    return data;
   }
-
   // 如果打完比赛,则自动推进
   async afterUpdate(filter, data) {
     const { status } = data;