活动:招财进宝改为领取箱子

This commit is contained in:
luying
2022-05-27 20:46:39 +08:00
parent 7139ce700d
commit 1452e8b800
8 changed files with 152 additions and 77 deletions

View File

@@ -1,6 +1,6 @@
import { Application, BackendSession, HandlerService } from 'pinus';
import { resResult } from '../../../pubUtils/util';
import { ACTIVITY_RESOURCES_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, ITEM_CHANGE_REASON, STATUS } from '../../../consts';
import { ACTIVITY_RESOURCES_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, DAILY_COIN_BOX_STATUS, ITEM_CHANGE_REASON, STATUS } from '../../../consts';
import { getGoldObject, handleCost } from '../../../services/role/rewardService';
import { getPlayerDailyCoinData, mergeData } from '../../../services/activity/dailyCoinService';
import { ConsumeExchangeFormulaItem, CoinRewardFormulaItem } from '../../../domain/activityField/dailyCoinField';
@@ -91,13 +91,6 @@ export class DailyCoinHandler {
reward.count = reward.count * rate;
}
allReward = allReward.concat(baseRewardParamArr);
let extraIndex = playerData.isExtra(index);
if (extraIndex != -1) {//额外奖励
let extraRewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.extraReward);
let extraReward = extraRewardParamArr[extraIndex];
// console.log('额外奖励', JSON.stringify(extraReward))
allReward.push(extraReward);
}
}
let newConsume = mergeData(allConsume);
@@ -128,13 +121,47 @@ export class DailyCoinHandler {
//免费期间
let time = moment(new Date()).valueOf();
let result = await addReward(roleId, roleName, sid, serverId, newReward, ITEM_CHANGE_REASON.DAILY_COIN_EXCHANGE);
await ActivityDailyCoinModel.addExchangeRecord(serverId, activityId, roleId, playerData.roundIndex, count, addCoin, `${count}&${consumeGold}&${addCoin}&${time}`);
let record = await ActivityDailyCoinModel.addExchangeRecord(serverId, activityId, roleId, playerData.roundIndex, count, addCoin, `${count}&${consumeGold}&${addCoin}&${time}`);
let extraReward = playerData.setAllBoxStatus(record);
let exchangeCount = playerData.exchangeCount + count;
return resResult(STATUS.SUCCESS, Object.assign(result, {
param: { activityId, count },
param: { activityId, count, extraReward },
item: { exchangeCount, recordMsg: `${count}&${consumeGold}&${addCoin}&${time}`, rateArray },
}));
}
/**
* @description 领取宝箱
* @param {{ activityId: number, cellIndex:number}} msg
* @param {BackendSession} session
* @memberof DailyCoinHandler
*/
async receiveExtraReward(msg: { activityId: number, cellIndex: number }, session: BackendSession) {
const { activityId, cellIndex } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const sid = session.get('sid');
const roleName = session.get('roleName');
let playerData = await getPlayerDailyCoinData(activityId, serverId, roleId)
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
let box = await playerData.findBoxByCellIndex(cellIndex);
if(!box) return resResult(STATUS.DAILY_COIN_BOX_NOT_FOUND);
if(box.status != DAILY_COIN_BOX_STATUS.CAN_OPEN) return resResult(STATUS.DAILY_COIN_BOX_CANNOT_RECEIVE);
let rewardArray = stringToRewardParam(box.reward)
let result = await addReward(roleId, roleName, sid, serverId, rewardArray, ITEM_CHANGE_REASON.ACT_DAILY_COIN_RECEIVE_BOX);
let record = await ActivityDailyCoinModel.receiveBox(serverId, activityId, roleId, playerData.roundIndex, cellIndex);
let item = playerData.setBoxStatus(cellIndex, record);
return resResult(STATUS.SUCCESS, Object.assign(result, {
item,
param: { activityId },
}));
}
}