|
@@ -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;
|