活动:统计获得铜币的总数量

This commit is contained in:
qiaoxin
2021-06-10 20:21:53 +08:00
parent d5242ee9dd
commit f1fa6ae354
4 changed files with 19 additions and 4 deletions
@@ -1,6 +1,6 @@
import { Application, BackendSession } from 'pinus'; import { Application, BackendSession } from 'pinus';
import { resResult } from '../../../pubUtils/util'; import { resResult } from '../../../pubUtils/util';
import { STATUS } from '../../../consts'; import { CURRENCY_BY_TYPE, CURRENCY_TYPE, STATUS } from '../../../consts';
import { handleCost } from '../../../services/rewardService'; import { handleCost } from '../../../services/rewardService';
import { getPlayerDailyCoinData, mergeData } from '../../../services/dailyCoinService'; import { getPlayerDailyCoinData, mergeData } from '../../../services/dailyCoinService';
import { DailyCoinItem } from '../../../domain/activityField/dailyCoinField'; import { DailyCoinItem } from '../../../domain/activityField/dailyCoinField';
@@ -36,6 +36,7 @@ export class DailyCoinHandler {
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING); if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
delete playerData.list;
return resResult(STATUS.SUCCESS, playerData); return resResult(STATUS.SUCCESS, playerData);
} }
@@ -92,9 +93,17 @@ export class DailyCoinHandler {
let consumeResult = await handleCost(roleId, sid, newConsume); let consumeResult = await handleCost(roleId, sid, newConsume);
if (!consumeResult) return resResult(STATUS.ACTIVITY_RES_NOT_ENOUGH); if (!consumeResult) return resResult(STATUS.ACTIVITY_RES_NOT_ENOUGH);
let addCoin = 0
let coinId = CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN);
for (let obj of newReward) {
if (obj.id === coinId) {
addCoin += obj.count;
}
}
//免费期间 //免费期间
let result = await addReward(roleId, roleName, sid, serverId, funcs, newReward) let result = await addReward(roleId, roleName, sid, serverId, funcs, newReward)
await ActivityDailyCoinModel.addExchangeRecord(serverId, activityId, roleId, playerData.beginTime, count); await ActivityDailyCoinModel.addExchangeRecord(serverId, activityId, roleId, playerData.beginTime, count, addCoin);
let exchangeCount = playerData.exchangeCount + count; let exchangeCount = playerData.exchangeCount + count;
return resResult(STATUS.SUCCESS, Object.assign(result, { return resResult(STATUS.SUCCESS, Object.assign(result, {
@@ -24,6 +24,7 @@ export async function dailyCoinActivity(serverId: number, roleId: string) {
let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.beginTime); let playerRecord: ActivityDailyCoinModelType = await ActivityDailyCoinModel.findData(serverId, activityData.activityId, roleId, playerData.beginTime);
playerData.setPlayerRecords(playerRecord); playerData.setPlayerRecords(playerRecord);
delete playerData.list;
return playerData; return playerData;
} }
+4 -2
View File
@@ -17,11 +17,13 @@ export default class Activity_Daily_Coin extends BaseModel {
beginTime: number; // 开始统计的时间 beginTime: number; // 开始统计的时间
@prop({ required: true }) @prop({ required: true })
exchangeCount: number; // 兑换次数 exchangeCount: number; // 兑换次数
@prop({ required: true })
coinCount: number; // 兑换获得铜币数量
//兑换记录 //兑换记录
public static async addExchangeRecord(serverId: number, activityId: number, roleId: string, beginTime: number, count: number) { public static async addExchangeRecord(serverId: number, activityId: number, roleId: string, beginTime: number, count: number, coinCount: number) {
let result = await ActivityDailyCoinModel.findOneAndUpdate({ serverId, activityId, roleId, beginTime }, { $inc: { exchangeCount: count } }, { upsert: true, new: true }).lean(true) let result = await ActivityDailyCoinModel.findOneAndUpdate({ serverId, activityId, roleId, beginTime }, { $inc: { exchangeCount: count, coinCount: coinCount } }, { upsert: true, new: true }).lean(true)
return result; return result;
} }
@@ -46,6 +46,7 @@ export class DailyCoinData extends ActivityBase {
list: Array<DailyCoinItem> = []; list: Array<DailyCoinItem> = [];
name: string = '';//名字 name: string = '';//名字
exchangeCount: number = 0;//已经兑换次数 exchangeCount: number = 0;//已经兑换次数
coinCount: number = 0;//已经兑换获得铜币数量
public findItem(index: number) { public findItem(index: number) {
let itemIndex = this.list.findIndex(obj => { return obj.index === index }); let itemIndex = this.list.findIndex(obj => { return obj.index === index });
@@ -55,10 +56,12 @@ export class DailyCoinData extends ActivityBase {
//解析玩家领取记录 //解析玩家领取记录
public setPlayerRecords(data: ActivityDailyCoinModelType) { public setPlayerRecords(data: ActivityDailyCoinModelType) {
this.exchangeCount = data && data.exchangeCount ? data.exchangeCount : 0; this.exchangeCount = data && data.exchangeCount ? data.exchangeCount : 0;
this.coinCount = data && data.coinCount ? data.coinCount : 0;
} }
public initData(data: string) { public initData(data: string) {
this.exchangeCount = 0; this.exchangeCount = 0;
this.coinCount = 0;
let dataObj = JSON.parse(data); let dataObj = JSON.parse(data);
let arr = dataObj; let arr = dataObj;
for (let obj of arr) { for (let obj of arr) {