军团限时付费:退出军团后减少付费人数
This commit is contained in:
@@ -8,6 +8,8 @@ class MemberRecord {
|
||||
roleName: string;
|
||||
@prop({ required: true })
|
||||
price: number; // 金额
|
||||
@prop({ required: true })
|
||||
hasQuit: boolean; // 金额
|
||||
}
|
||||
|
||||
|
||||
@@ -40,11 +42,12 @@ export default class Activity_Guild_Pay extends BaseModel {
|
||||
result = await ActivityGuildPayModel.findOneAndUpdate({ serverId, guildCode, activityId, roundIndex }, { $push: { memberRecord } }, { new: true, upsert: true }).lean();
|
||||
} else {
|
||||
result = await ActivityGuildPayModel.findOneAndUpdate({ serverId, guildCode, activityId, roundIndex, 'memberRecord.roleId': memberRecord.roleId }, {
|
||||
$set: { 'memberRecord.$.roleName': memberRecord.roleName },
|
||||
$set: { 'memberRecord.$.roleName': memberRecord.roleName, 'memberRecord.$.hasQuit': false },
|
||||
$inc: { 'memberRecord.$.price': memberRecord.price }
|
||||
}, { new: true }).lean();
|
||||
}
|
||||
return { result, isNew: !hasUser };
|
||||
let isNew = hasUser? hasUser.hasQuit: true;
|
||||
return { result, isNew };
|
||||
}
|
||||
|
||||
//根据活动id查询活动数据
|
||||
@@ -52,6 +55,11 @@ export default class Activity_Guild_Pay extends BaseModel {
|
||||
let result: ActivityGuildPayModelType = await ActivityGuildPayModel.findOne({ serverId, activityId, roundIndex, guildCode }).lean(true);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async quitGuild(serverId: number, activityId: number, roundIndex: number, guildCode: string, roleId: string) {
|
||||
let result: ActivityGuildPayModelType = await ActivityGuildPayModel.findOneAndUpdate({ serverId, guildCode, activityId, roundIndex, 'memberRecord.roleId': roleId }, { $set: { 'memberRecord.$.hasQuit': true } }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const ActivityGuildPayModel = getModelForClass(Activity_Guild_Pay);
|
||||
|
||||
@@ -72,8 +72,9 @@ export class GuildPayData extends ActivityBase {
|
||||
|
||||
public setGuildRecord(guildRecord: ActivityGuildPayModelType) {
|
||||
if(!guildRecord) return;
|
||||
this.payMemberCnt = guildRecord.memberRecord.length;
|
||||
this.payRecord = guildRecord.memberRecord.map(cur => cur.roleName);
|
||||
let records = guildRecord.memberRecord.filter(cur => !cur.hasQuit);
|
||||
this.payMemberCnt = records.length;
|
||||
this.payRecord = records.map(cur => cur.roleName);
|
||||
}
|
||||
|
||||
public getShowResult() {
|
||||
@@ -105,4 +106,12 @@ export class GuildPayData extends ActivityBase {
|
||||
if(items.length <= 0) return false;
|
||||
return items
|
||||
}
|
||||
|
||||
public canPay() {
|
||||
if(!this.isEnable) return false;
|
||||
if(this.beginTime > Date.now() || this.endTime < Date.now()) return false;
|
||||
if(this.nextRefreshTime && this.nextRefreshTime < Date.now()) return false;
|
||||
if(this.payEndTime && this.payEndTime < Date.now()) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user