diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts index 4043bfb99..32ce7e1a1 100644 --- a/game-server/app/servers/activity/handler/activityHandler.ts +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -29,422 +29,7 @@ export class ActivityHandler { const sid: string = session.get('sid'); const funcs: number[] = session.get('funcs'); - let test = true; let playerActivityArray = []; - // //七天乐活动-成长任务 1 2 3 - // { - // let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate(); - // if (new Date() < endTime || test) {//开启中,开服7天后过期 - // let sevenData = []; - // let growthData = await growthActivity(serverId, roleId); - // if (growthData) { - // sevenData.push({ - // type: ACTIVITY_TYPE.TASK_GROWTH, - // activityId: growthData.activityId, - // data: growthData, - // }); - // } - // let dailyChallengesData = await dailyChallengesActivity(serverId, roleId); - // if (dailyChallengesData) { - // sevenData.push({ - // type: ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, - // activityId: dailyChallengesData.activityId, - // data: dailyChallengesData, - // }); - // } - // let dailyGiftsData = await dailyGiftsActivity(serverId, roleId); - // if (dailyGiftsData) { - // sevenData.push({ - // type: ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT, - // activityId: dailyGiftsData.activityId, - // data: dailyGiftsData, - // }); - // } - // if (sevenData.length > 0) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.SEVEN_DAY, - // activityId: 0, - // data: sevenData, - // }); - // } - // } - // } - //14天乐活动-成长任务 1 2 3 - // { - // let beginTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate(); - // let endTime = moment(SERVER_OPEN_TIME).startOf('d').add(7, 'd').toDate(); - // let curDate = new Date() - // if (curDate > beginTime && curDate < endTime) {//开启中,开服7天后开启,开服第21天结束 - // let sevenData = []; - // let growthData = await growthActivity(serverId, roleId); - // if (growthData) { - // sevenData.push({ - // type: ACTIVITY_TYPE.TASK_GROWTH, - // activityId: growthData.activityId, - // data: growthData, - // }); - // } - // let dailyChallengesData = await dailyChallengesActivity(serverId, roleId); - // if (dailyChallengesData) { - // sevenData.push({ - // type: ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, - // activityId: dailyChallengesData.activityId, - // data: dailyChallengesData, - // }); - // } - // let dailyGiftsData = await dailyGiftsActivity(serverId, roleId); - // if (dailyGiftsData) { - // sevenData.push({ - // type: ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT, - // activityId: dailyGiftsData.activityId, - // data: dailyGiftsData, - // }); - // } - // if (sevenData.length > 0) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.FOURTEEN_DAY, - // activityId: 0, - // data: sevenData, - // }); - // } - // } - // } - // //签到 4 - // { - // let data = await signInActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.SIGN_IN, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //高级签到 5 - // { - // let data = await signInVIPActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.SIGN_IN_VIP, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //成长基金 6 - // { - // let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN, serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.GROWTH_FUND_MAIN, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //高阶成长基金 7 - // { - // let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP, serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //镇念塔成长基金 8 - // { - // let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER, serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.GROWTH_FUND_TOWER, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //高阶镇念塔成长基金 9 - // { - // let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP, serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //精英成长基金 10 - // { - // let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //高阶精英成长基金 11 - // { - // let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP, serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //30天目标活动 12 - // { - // let data = await thirtyDaysActivity(ACTIVITY_TYPE.THIRTY_DAYS, serverId, roleId); - // if (data) { - // let todayIndex = await playerThirtyDaysActivityDays(roleId); - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.THIRTY_DAYS, - // activityId: data.activityId, - // data: { playerData: data, todayIndex }, - // }); - // } - // } - - // //自选商店 糜家商队 13 - // { - // let data = await getSelfServiceShopActivityData(serverId, roleId); - // if (data) { - // let playerGoods = await ActivitySelfServiceGoodsModel.findData(data.activityId, roleId, data.roundIndex, true); - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.SELF_SERVICE_SHOP, - // activityId: data.activityId, - // data: { playerData: data, playerGoods: playerGoods ? playerGoods : [] }, - // }); - // } - // } - - - // //首冲礼包活动 14 - // { - // let data = await firstGiftActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.FIRST_GIFT, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //新手限定RMB购买礼包 15 - // { - // let { createTime } = await RoleModel.findByRoleId(roleId); - // let createDate = moment(createTime * 1000).toDate(); - // let endTime = moment(createDate).startOf('d').add(7, 'd').add(5, 'h').toDate(); - // if (new Date() <= endTime) { - // let data = await newPlayerLimitPackageActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, - // activityId: data.activityId, - // data, - // }); - // } - // } - // } - // //每日限购礼包,RMB购买礼包 16 - // { - // let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //每日限购礼包,RMB购买礼包 17 - // { - // let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //元宝商店 18 - // { - // let data = await yuanbaoActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.YUAN_BAO_SHOP, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //月卡1 19 - // { - // let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_1); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.MONTHLY_TICKET_1, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //月卡2 20 - // { - // let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.MONTHLY_TICKET_2, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //累计充值RMB活动 21 - // { - // let data = await rechargeMoneyActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.RECHARGE_MONEY, - // activityId: data.activityId, - // data, - // }); - // } - // } - // //每日特惠RMB购买,一次性购买7天礼包 22 - // { - // let data = await dailyRMBGiftsActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.DAILY_RMB_GIFTS, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //寻宝骑兵活动 23 - // { - // let data = await treasureHuntActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.TREASURE_HUNT, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //弹出商店 24 - // { - // let data = await popUpShopActivity(serverId, roleId); - // if (data && data.length > 0) { - // for (let obj of data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.POP_UP_SHOP, - // activityId: obj.activityId, - // data: obj, - // }); - // } - // } - // } - - // //新手签到 25 - // { - // let data = await newPlayerSignInActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.NEW_PLAYER_SIGN_IN, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //vip累计充值活动 26 - // { - // let data = await vipRechargeMoneyActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.VIP_RECHARGE_MONEY, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //七天乐活动 27 - // { - // let data = await sevenDaysActivity(serverId, roleId, ACTIVITY_TYPE.SEVEN_DAY); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.SEVEN_DAY, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //十四天乐活动 28 - // { - // let data = await sevenDaysActivity(serverId, roleId, ACTIVITY_TYPE.FOURTEEN_DAY); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.FOURTEEN_DAY, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //通用七天乐活动 29 - // { - // let data = await sevenDaysActivity(serverId, roleId, ACTIVITY_TYPE.COMMON_SEVEN_DAY); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.COMMON_SEVEN_DAY, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //每日领取免费午饭、晚饭活动 30 - // { - // let data = await dailyMealActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.DAILY_MEAL, - // activityId: data.activityId, - // data, - // }); - // } - // } - - // //每日兑换铜币活动 31 - // { - // let data = await dailyCoinActivity(serverId, roleId); - // if (data) { - // playerActivityArray.push({ - // type: ACTIVITY_TYPE.DAILY_COIN, - // activityId: data.activityId, - // data, - // }); - // } - // } let { activityGroupId } = await ServerlistModel.findByServerId(serverId); let groups = await ActivityGroupModel.findGroupsData(activityGroupId); diff --git a/game-server/app/servers/activity/handler/activityMonopolyHandler.ts b/game-server/app/servers/activity/handler/activityMonopolyHandler.ts index e09488d75..4575c5958 100644 --- a/game-server/app/servers/activity/handler/activityMonopolyHandler.ts +++ b/game-server/app/servers/activity/handler/activityMonopolyHandler.ts @@ -1,14 +1,13 @@ import { Application, BackendSession } from 'pinus'; import { resResult } from '../../../pubUtils/util'; -import { ACTIVITY_TYPE, LAND_TYPE, SERVER_OPEN_TIME, STATUS, TASK_TYPE, CURRENCY_TYPE, CURRENCY_BY_TYPE, BANK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../../consts'; +import { LAND_TYPE, STATUS, CURRENCY_TYPE, CURRENCY_BY_TYPE, BANK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../../consts'; import { ActivityMonopolyModel, ActivityMonopolyModelType } from '../../../db/ActivityMonopoly'; import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../../../db/ActivityMonopolyLand'; -import { ActivityModel } from '../../../db/Activity'; import { getPlayerMonopolyData, nextPosition } from '../../../services/activity/monopolyService'; import { random } from 'underscore'; import { handleCost } from '../../../services/rewardService'; import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService'; -import { getPlayerRefreshShopData, getPlayerRefreshShopDataByRoundIndex } from '../../../services/activity/refreshShopService'; +import { getPlayerRefreshShopDataByRoundIndex } from '../../../services/activity/refreshShopService'; import { ActivityRefreshShopModel } from '../../../db/ActivityRefreshShop'; export default function (app: Application) { @@ -199,25 +198,25 @@ export class ActivityMonopolyHandler { /** * @description 购买非RMB商品 - * @param {{ activityId: number, roundIndex: number, id: number, pageIndex: number}} msg + * @param {{ monopolyActivityId:number, shopActivityId: number, roundIndex: number, id: number, pageIndex: number}} msg * @param {BackendSession} session * @memberof RefreshShopHandler */ - async buyGood(msg: { activityId: number, roundIndex: number, id: number, pageIndex: number }, session: BackendSession) { - const { activityId, roundIndex, id, pageIndex } = msg; + async buyGood(msg: { monopolyActivityId, shopActivityId: number, roundIndex: number, id: number, pageIndex: number }, session: BackendSession) { + const { monopolyActivityId, shopActivityId, roundIndex, id, pageIndex } = msg; const roleId = session.get('roleId'); const serverId = session.get('serverId'); const sid = session.get('sid'); const roleName = session.get('roleName'); const funcs: number[] = session.get('funcs'); - let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityId, roleId); - let playerData = await getPlayerMonopolyData(activityId, serverId, roleId) + let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, monopolyActivityId, roleId); + let playerData = await getPlayerMonopolyData(monopolyActivityId, serverId, roleId) if (!playerData) return resResult(STATUS.ACTIVITY_MISSING); let landItem = playerData.findMonopolyItem(playerMonopolyData.curPosition) if (landItem.stopCount > landItem.shoppingCountMax) { return resResult(STATUS.SHOP_CLOSED); } - let playerShopData = await getPlayerRefreshShopDataByRoundIndex(activityId, serverId, roleId, landItem.stopCount); + let playerShopData = await getPlayerRefreshShopDataByRoundIndex(shopActivityId, serverId, roleId, landItem.stopCount); if (!playerShopData) { return resResult(STATUS.ACTIVITY_MISSING); } @@ -245,11 +244,11 @@ export class ActivityMonopolyHandler { let rewardArray = stringToRewardParam(item.reward) let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardArray); - await ActivityRefreshShopModel.addRecord(activityId, roleId, roundIndex, pageIndex, id); + await ActivityRefreshShopModel.addRecord(shopActivityId, roleId, roundIndex, pageIndex, id); item.buyCount += 1; return resResult(STATUS.SUCCESS, Object.assign(result, { - param: { activityId, roundIndex, id }, + param: { shopActivityId, monopolyActivityId, roundIndex, id }, item: item })); } diff --git a/game-server/app/servers/activity/handler/newHeroGachaHandler.ts b/game-server/app/servers/activity/handler/newHeroGachaHandler.ts index 174d3b19f..7da761dff 100644 --- a/game-server/app/servers/activity/handler/newHeroGachaHandler.ts +++ b/game-server/app/servers/activity/handler/newHeroGachaHandler.ts @@ -13,6 +13,8 @@ import { addItems, createHeroes, handleCost } from '../../../services/rewardServ import { ActivityNewHeroGachaModel } from '../../../db/ActivityNewHeroGacha'; import { addReward, stringToRewardParam } from '../../../services/activity/giftPackageService'; import { RewardParam } from '../../../domain/activityField/rewardField'; +import { ActivityModel, ActivityModelType } from '../../../db/Activity'; +import { NewHeroGachaData } from '../../../domain/activityField/newHeroGachaField'; export default function (app: Application) { @@ -43,6 +45,25 @@ export class NewHeroGachaHandler { return resResult(STATUS.SUCCESS, playerData); } + /** + * @description 选中武将 + * @param {{ activityId: number, hid:number}} msg + * @param {BackendSession} session + * @memberof NewHeroGachaHandler + */ + async selectedHero(msg: { activityId: number, hid: number }, session: BackendSession) { + const { activityId, hid } = msg; + const roleId = session.get('roleId'); + const serverId = session.get('serverId'); + + let activityData: ActivityModelType = await ActivityModel.findActivity(activityId); + let playerData = new NewHeroGachaData(activityData); + for (let pageData of playerData.list) { + await ActivityNewHeroGachaModel.selectedHero(serverId, activityId, roleId, hid, pageData.hid == hid); + } + return resResult(STATUS.SUCCESS); + } + /** * @description 抽卡 * @param {{ activityId: number, hid: number, count: number}} msg diff --git a/shared/db/ActivityNewHeroGacha.ts b/shared/db/ActivityNewHeroGacha.ts index d2819800f..6fe57e5c6 100644 --- a/shared/db/ActivityNewHeroGacha.ts +++ b/shared/db/ActivityNewHeroGacha.ts @@ -23,6 +23,8 @@ export default class Activity_New_Hero_Gacha extends BaseModel { @prop({ required: true }) roleId: string; // 用户Id @prop({ required: true }) + selected: boolean; // 是否选中默认false + @prop({ required: true }) hid: number; // 武将id @prop({ required: true }) count: number; // 抽卡次数,抽中大奖后重新统计 @@ -43,6 +45,13 @@ export default class Activity_New_Hero_Gacha extends BaseModel { return result; } + //设置选中武将 + public static async selectedHero(serverId: number, activityId: number, roleId: string, hid: number, selected: boolean) { + let result: ActivityNewHeroGachaModelType[] = await ActivityNewHeroGachaModel.findOneAndUpdate( + { serverId, roleId, activityId, hid }, { $set: { selected } }, { upsert: true, new: true }).lean(true); + return result; + } + //根据活动id查询活动数据 public static async findDataByHid(serverId: number, activityId: number, roleId: string, hid: number) { let result: ActivityNewHeroGachaModelType = await ActivityNewHeroGachaModel.findOne({ serverId, roleId, activityId, hid }).lean(true); diff --git a/shared/domain/activityField/newHeroGachaField.ts b/shared/domain/activityField/newHeroGachaField.ts index ce3b57c1f..746869ab3 100644 --- a/shared/domain/activityField/newHeroGachaField.ts +++ b/shared/domain/activityField/newHeroGachaField.ts @@ -7,6 +7,7 @@ import { ActivityBase } from './activityField'; // 每个英雄的奖池配置数据 export class NewHeroGachaItem { + selected: boolean = false;//选中武将 floorCount: number = 0;//保底最大的次数,一定会出现一次 count: number = 0;//多少次没有抽中 hid: number = 0;//武将id @@ -25,6 +26,7 @@ export class NewHeroGachaItem { this.percent = []; this.floorReward = data.floorReward - 1; this.count = 0; + this.selected = false; let arr = data.percent.split('|').filter(obj => { return obj && obj != '' }); for (let obj of arr) { let numArr = splitString(obj, '&'); @@ -54,6 +56,7 @@ export class NewHeroGachaData extends ActivityBase { let index = data.findIndex(obj => { return obj.hid == item.hid }); if (index != -1) { item.count = data[index].count ? data[index].count : 0; + item.selected = data[index].selected ? data[index].selected : false; } } }