🐞 fix(guild): 练兵场-挑战奖励不能重复领取

This commit is contained in:
dingchaolin
2023-03-07 20:25:15 +08:00
parent bf2a409a93
commit 94b75fbc1b
3 changed files with 38 additions and 12 deletions

View File

@@ -35,6 +35,13 @@ class RefineRecord {
count: number;
}
export class TrainBoxRewardRecord {
@prop({ required: true })
hid: number;
@prop({ required: true })
guildCode: string;
}
@index({ roleId: 1 })
@index({ guildCode: 1 })
export default class UserGuild extends BaseModel {
@@ -86,8 +93,8 @@ export default class UserGuild extends BaseModel {
@prop({ required: true, default: [] })
trainRewards: Array<number>;//领取过的进阶等级
@prop({ required: true, default: [] })
trainBoxRewards: Array<number>;//领取过的挑战奖励
@prop({ required: true, default: [], type: TrainBoxRewardRecord, _id: false })
trainBoxRewards: Array<TrainBoxRewardRecord>;//领取过的挑战奖励
//捐献所
@prop({ required: true, default: [], type: Number })
@@ -176,7 +183,7 @@ export default class UserGuild extends BaseModel {
delete update._id;
const result: UserGuildType = await UserGuildModel.findOneAndUpdate({ roleId: role.roleId, guildCode, status: USER_GUILD_STATUS.ON }, { $set: update }, { upsert: true, new: true })
.select('activeDaily activeRecord activeWeekly activeUpdateTime job auth receivedActive guildCode')
.select('activeDaily activeRecord activeWeekly activeUpdateTime job auth receivedActive guildCode trainBoxRewards')
.lean();
return result;
@@ -225,7 +232,7 @@ export default class UserGuild extends BaseModel {
}
/**
* 记录玩家领取过的试炼宝箱奖励(每个boss都有一个抽卡奖励)
* 记录玩家领取过的试炼宝箱奖励(每个武将都有一个抽卡奖励)
*
* @static
* @param {string} roleId
@@ -234,9 +241,9 @@ export default class UserGuild extends BaseModel {
* @return {*}
* @memberof UserGuild
*/
public static async receiveTrainBoxRewards(roleId: string, trainId: number, lean = true) {
public static async receiveTrainBoxRewards(roleId: string, hid: number, guildCode: string, lean = true) {
const result = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON},
{ $push:{trainBoxRewards: trainId} },{new: true}).lean(lean);
{ $push:{trainBoxRewards: {hid, guildCode}} },{new: true}).lean(lean);
return result;
}