lrf %!s(int64=2) %!d(string=hai) anos
pai
achega
1c45efe905
Modificáronse 1 ficheiros con 59 adicións e 0 borrados
  1. 59 0
      app/service/eliminate.js

+ 59 - 0
app/service/eliminate.js

@@ -3,6 +3,7 @@ const { CrudService } = require('naf-framework-mongoose-free/lib/service');
 const { BusinessError, ErrorCode } = require('naf-core').Error;
 const _ = require('lodash');
 const assert = require('assert');
+const { ObjectId } = require('mongoose').Types;
 
 class EliminateService extends CrudService {
   constructor(ctx) {
@@ -10,6 +11,9 @@ class EliminateService extends CrudService {
     this.model = this.ctx.model.Race.Eliminate;
     this.matchModel = this.ctx.model.Race.Match;
     this.matchGroupModel = this.ctx.model.Race.MatchTeamGroup;
+    this.baseUserModel = this.ctx.model.Base.User;
+    this.userModel = this.ctx.model.Race.User;
+    this.teamApplyModel = this.ctx.model.Race.TeamApply;
   }
   /**
    * 获取流程图数据
@@ -292,6 +296,61 @@ class EliminateService extends CrudService {
     return i;
   }
 
+  async fetch(filter, { sort, desc, projection } = {}) {
+    assert(filter);
+    filter = await this.beforeFetch(filter);
+    const { _id, id } = filter;
+    if (_id || id) filter = { _id: ObjectId(_id || id) };
+
+    // 处理排序
+    if (sort && _.isString(sort)) {
+      sort = { [sort]: desc ? -1 : 1 };
+    } else if (sort && _.isArray(sort)) {
+      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();
+    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;
+    if (match_id) {
+      res.match_id_name = _.get(res, 'match_id.name');
+      res.match_id = _.get(res, 'match_id._id');
+    }
+    if (group_id) {
+      res.group_id_name = _.get(res, 'group_id.name');
+      res.group_id = _.get(res, 'group_id._id');
+    }
+    if (project_id) {
+      res.project_id_name = _.get(res, 'project_id.name');
+      res.project_id = _.get(res, 'project_id._id');
+    }
+    if (address_id) {
+      res.address_id_name = _.get(res, 'address_id.name');
+      res.address_id = _.get(res, 'address_id._id');
+    }
+    if (referee_id) {
+      res.referee_id_name = _.get(res, 'referee_id.name');
+      res.referee_id = _.get(res, 'referee_id._id');
+    }
+
+    // 人处理
+    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');
+    } 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')}`;
+    }
+    res = await this.afterFetch(filter, res);
+    return res;
+  }
+
   // 如果打完比赛,则自动推进
   async afterUpdate(filter, data) {
     const { status } = data;