弹出礼包:购买

This commit is contained in:
陆莹
2022-03-15 21:01:21 +08:00
parent 319d4cf454
commit d9b907e80b
4 changed files with 72 additions and 67 deletions

View File

@@ -1,11 +1,11 @@
import { Application, BackendSession, HandlerService, } from 'pinus';
import { resResult, splitString } from '../../../pubUtils/util';
import { ACTIVITY_RESOURCES_TYPE, CURRENCY_BY_TYPE, STATUS, CURRENCY_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, } from '../../../consts';
import { checkPopUpCondition, getPopUpShopDataShow } from '../../../services/activity/popUpShopService';
import { ACTIVITY_RESOURCES_TYPE, CURRENCY_BY_TYPE, STATUS, CURRENCY_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, ACTIVITY_TYPE, } from '../../../consts';
import { checkPopUpCondition, getPopUpShopData, getPopUpShopDataShow } from '../../../services/activity/popUpShopService';
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
import { ActivityPopUpShopModel, ActivityPopUpShopModelType } from '../../../db/ActivityPopUpShop';
import { PopUpShopData } from '../../../domain/activityField/popUpShopField';
import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService';
import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService';
import { RewardParam } from '../../../domain/activityField/rewardField';
import { handleCost } from '../../../services/rewardService';
import moment = require('moment');
@@ -57,73 +57,50 @@ export class PopUpShopHandler {
}
// /**
// * @description 购买礼包
// * @param {{ activityId: number, id: number, beginTimeStamp: number}} msg
// * @param {BackendSession} session
// * @memberof PopUpShopHandler
// */
// async buyGift(msg: { activityId: number, id: number, beginTimeStamp: number }, session: BackendSession) {
// const { activityId, id, beginTimeStamp } = msg;
// const roleId = session.get('roleId');
// const serverId = session.get('serverId');
// const sid = session.get('sid');
// const roleName = session.get('roleName');
/**
* @description 购买礼包
* @param {{ activityId: number, id: number, beginTimeStamp: number}} msg
* @param {BackendSession} session
* @memberof PopUpShopHandler
*/
async buyGift(msg: { activityId: number, id: number, code: string }, session: BackendSession) {
const { activityId, code, id } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const sid = session.get('sid');
const roleName = session.get('roleName');
// let beginTime = moment(beginTimeStamp).toDate();
let playerData = await getPopUpShopData(activityId, serverId, roleId);
if (!playerData) {
return resResult(STATUS.ACTIVITY_MISSING);
}
if (playerData.type !== ACTIVITY_TYPE.POP_UP_SHOP) {
return resResult(STATUS.ACTIVITY_TYPE_ERROR);
}
// let activityData: ActivityModelType = await getActivityById(activityId);
// if (!activityData) {
// return resResult(STATUS.ACTIVITY_MISSING);
// }
let record = await ActivityPopUpShopModel.findByCode(serverId, activityId, roleId, code);
if(!record) return resResult(STATUS.ACTIVITY_TASK_NOT_COMPLETE);
let pkg = playerData.findPackageById(record.id);
let item = pkg?.findItemById(id);
if(!item) {
return resResult(STATUS.ACTIVITY_MISSING);
}
// let allTaskData: any[] = JSON.parse(activityData.data);
// let taskIndex = allTaskData.findIndex(obj => { return obj && obj.id == id });
// if (taskIndex == -1) {
// return resResult(STATUS.ACTIVITY_DATA_ERROR);
// }
let consume = stringToConsumeParam(item.consume);
let consumeResult = await handleCost(roleId, sid, consume, ITEM_CHANGE_REASON.POP_UP_BUY_GIFT);
if(!consumeResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
record = await ActivityPopUpShopModel.addRecordById(serverId, activityId, roleId, code, id);
let showItem = playerData.updateRecordById(record, id);
// let playerData = new PopUpShopData(allTaskData[taskIndex], activityId);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.POP_UP_BUY_GIFT)
// if (playerData.price) {
// return resResult(STATUS.ACTIVITY_NEED_PAY);
// }
// if (playerData.consume) {
// return resResult(STATUS.ACTIVITY_NEED_PAY);
// }
// let playerRecords: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findDataByBeginTime(serverId, activityId, roleId, id, playerData.taskType, beginTime);
// if (!playerRecords) {
// return resResult(STATUS.ACTIVITY_POP_UP_SHOP_EXPIRE);
// }
// if (playerRecords.buyCount >= playerData.count) {
// return resResult(STATUS.ACTIVITY_MAX_COUNT);
// }
// if (playerData.condition > playerRecords.totalCount) {
// return resResult(STATUS.ACTIVITY_TASK_UNCOMPLETED);
// }
// //元宝消费
// let arr = splitString(playerData.consume, '&')
// if (arr[0] != ACTIVITY_RESOURCES_TYPE.GOODS || arr[1] != CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD)) {
// return resResult(STATUS.ACTIVITY_GOLD_RESOURCE);
// }
// let price = arr[2];//数量
// let resourceResult = await handleCost(roleId, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD), count: price }], ITEM_CHANGE_REASON.POP_UP_BUY_GIFT);
// if (!resourceResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
// let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
// let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.POP_UP_BUY_GIFT)
// await ActivityPopUpShopModel.addRecord(serverId, activityId, roleId, id, playerData.taskType, 1, beginTime);
// playerData.buyCount += 1;
// return resResult(STATUS.SUCCESS, Object.assign(result, {
// param: { activityId, id },
// item: playerData
// }));
// }
return resResult(STATUS.SUCCESS, {
...result, param: { activityId, id },
item: showItem
});
}
}