🐞 fix(gvg): 后加入的玩家不可领取之前的遗迹奖励
This commit is contained in:
@@ -4,6 +4,7 @@ import Role, { RoleType } from '../db/Role';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { GuildType } from './Guild';
|
||||
import { LEAGUE_AUTH } from '../consts';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
|
||||
class Member {
|
||||
@prop({ required: true })
|
||||
@@ -12,6 +13,8 @@ class Member {
|
||||
guildCode: string;
|
||||
@prop({ required: true })
|
||||
auth: number;
|
||||
@prop({ required: true })
|
||||
time: number;
|
||||
}
|
||||
|
||||
@index({ leagueCode: 1, status: 1 })
|
||||
@@ -68,7 +71,7 @@ export default class GVGLeague extends BaseModel {
|
||||
const doc = new GVGLeagueModel();
|
||||
const leagueCode = genCode(6);
|
||||
let _leader = <RoleType>leader;
|
||||
let _members = members.map(roleId => ({ roleId, auth: _leader.roleId == roleId? LEAGUE_AUTH.LEADER: LEAGUE_AUTH.MEMBER, guildCode: code }));
|
||||
let _members = members.map(roleId => ({ roleId, auth: _leader.roleId == roleId? LEAGUE_AUTH.LEADER: LEAGUE_AUTH.MEMBER, guildCode: code, time: nowSeconds() }));
|
||||
const update = Object.assign(doc.toJSON(), { guildCodes: [code], name: `${name}联军`, guildCnt: 1, memberCnt, isAuto: true, leader: _leader?._id, members: _members, leagueCode }, params);
|
||||
delete update._id;
|
||||
|
||||
@@ -128,7 +131,7 @@ export default class GVGLeague extends BaseModel {
|
||||
public static async joinGuild(leagueCode: string, guild: GuildType) {
|
||||
const { code, memberCnt, leader, members } = guild;
|
||||
let _leader = <RoleType>leader;
|
||||
let _members = members.map(roleId => ({ roleId, auth: _leader.roleId == roleId? LEAGUE_AUTH.SUB_LEADER: LEAGUE_AUTH.MEMBER, guildCode: code }));
|
||||
let _members = members.map(roleId => ({ roleId, auth: _leader.roleId == roleId? LEAGUE_AUTH.SUB_LEADER: LEAGUE_AUTH.MEMBER, guildCode: code, time: nowSeconds() }));
|
||||
|
||||
const league: GVGLeagueType = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1 },
|
||||
{ $push: { guildCodes: code, members: { $each: _members } }, $inc: { guildCnt: 1, memberCnt: memberCnt }
|
||||
@@ -185,7 +188,7 @@ export default class GVGLeague extends BaseModel {
|
||||
}
|
||||
|
||||
public static async joinMember(leagueCode: string, roleId: string, guildCode: string) {
|
||||
const league: GVGLeagueType = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1 }, { $push: { members: { roleId, auth: LEAGUE_AUTH.MEMBER, guildCode } }, $inc: { memberCnt: 1 } }, { new: true }).lean();
|
||||
const league: GVGLeagueType = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1 }, { $push: { members: { roleId, auth: LEAGUE_AUTH.MEMBER, guildCode, time: nowSeconds() } }, $inc: { memberCnt: 1 } }, { new: true }).lean();
|
||||
return league;
|
||||
}
|
||||
|
||||
@@ -207,6 +210,11 @@ export default class GVGLeague extends BaseModel {
|
||||
let leagues: GVGLeagueType[] = await GVGLeagueModel.find({ isAuto: true, status: 1 }).lean();
|
||||
return leagues
|
||||
}
|
||||
|
||||
public static async setMemberTime(leagueCode: string, roleId: string, time: number) {
|
||||
let league: GVGLeagueType = await GVGLeagueModel.findOneAndUpdate({ leagueCode, status: 1, 'members.roleId': roleId }, { $set: { 'members.$.time': time} }, { new: true }).lean();
|
||||
return league
|
||||
}
|
||||
}
|
||||
|
||||
export const GVGLeagueModel = getModelForClass(GVGLeague);
|
||||
|
||||
@@ -61,8 +61,9 @@ export default class GVGVestigeLeagueRank extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getCanReceiveRanks(configId: number, leagueCode: string, roleId: string) {
|
||||
let result: GVGVestigeLeagueRankType[] = await GVGVestigeLeagueRankModel.find({ configId, leagueCode, rank: { $gt: 0 }, receiveMembers: { $nin: [roleId] } }).lean();
|
||||
public static async getCanReceiveRanks(configId: number, leagueCode: string, roleId: string, joinTime: number) {
|
||||
console.log('##### joinTime', joinTime);
|
||||
let result: GVGVestigeLeagueRankType[] = await GVGVestigeLeagueRankModel.find({ configId, leagueCode, rank: { $gt: 0 }, day: { $gt: joinTime }, receiveMembers: { $nin: [roleId] } }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user