diff --git a/game-server/app/servers/activity/handler/popUpShopHandler.ts b/game-server/app/servers/activity/handler/popUpShopHandler.ts index fe4eb1590..5f342af72 100644 --- a/game-server/app/servers/activity/handler/popUpShopHandler.ts +++ b/game-server/app/servers/activity/handler/popUpShopHandler.ts @@ -1,17 +1,13 @@ 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, ACTIVITY_TYPE, DEBUG_MAGIC_WORD, PUSH_ROUTE, } from '../../../consts'; +import { resResult, } from '../../../pubUtils/util'; +import { STATUS, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, ACTIVITY_TYPE, DEBUG_MAGIC_WORD, PUSH_ROUTE, } 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 { ActivityPopUpShopModel } from '../../../db/ActivityPopUpShop'; import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService'; import { RewardParam } from '../../../domain/activityField/rewardField'; import { handleCost } from '../../../services/role/rewardService'; -import moment = require('moment'); -import { getActivitiesByType, getActivityById, pushActivities } from '../../../services/activity/activityService'; import { setInterval } from 'timers'; -import { sendMessageToUser, sendMessageToUserWithSuc } from '../../../services/pushService'; +import { sendMessageToUserWithSuc } from '../../../services/pushService'; export default function (app: Application) { new HandlerService(app, {}); diff --git a/game-server/app/servers/battle/handler/towerBattleHandler.ts b/game-server/app/servers/battle/handler/towerBattleHandler.ts index c87b5ab46..cdd98d33c 100644 --- a/game-server/app/servers/battle/handler/towerBattleHandler.ts +++ b/game-server/app/servers/battle/handler/towerBattleHandler.ts @@ -1,5 +1,5 @@ import { STATUS } from './../../../consts/statusCode'; -import { HANG_UP_CONSTS, ITEM_CHANGE_REASON, MSG_SOURCE, REDIS_KEY } from './../../../consts'; +import { HANG_UP_CONSTS, ITEM_CHANGE_REASON, MSG_SOURCE, POP_UP_SHOP_CONDITION_TYPE, REDIS_KEY } from './../../../consts'; import { TaskHero, TowerTaskRecModel, TowerTaskRecType } from './../../../db/TowerTaskRec'; import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec'; import { HangUpRecordModel } from './../../../db/HangUpRecord'; @@ -20,6 +20,7 @@ import { RewardInter } from '../../../pubUtils/interface'; import { combineItems } from '../../../services/role/util'; import { checkTaskInSkipTower } from '../../../services/task/taskService'; import { Rank } from '../../../services/rankService'; +import { checkPopUpCondition } from '../../../services/activity/popUpShopService'; export default function(app: Application) { return new TowerBattleHandler(app); @@ -297,12 +298,13 @@ export class TowerBattleHandler { let sid = session.get('sid'); let role = await RoleModel.findByRoleId(roleId); - let dicTower = gameData.tower.get(role.towerLv); + let oldTowerLv = role.towerLv; + let dicTower = gameData.tower.get(oldTowerLv); if(!dicTower.canSkip) { return resResult(STATUS.TOWER_CANNOT_SKIP); } - let { warStatus, heroes: recHeroes } = await getTowerRecByLv(roleId, role.towerLv); + let { warStatus, heroes: recHeroes } = await getTowerRecByLv(roleId, oldTowerLv); // 检查战力是否足够 let heroes = await HeroModel.findByRole(roleId, [{ field: 'ce', sortBy: -1 }], 'hid ce job', true); @@ -344,6 +346,7 @@ export class TowerBattleHandler { let r = new Rank(REDIS_KEY.TOWER_RANK, { serverId }); await r.setRankWithRoleInfo(roleId, role.towerLv - 1, role.towerUpTime.getTime(), role); await checkTaskInSkipTower(serverId, roleId, sid, role.towerLv); + await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.TOWER, { oldLv: oldTowerLv - 1, newLv: role.towerLv - 1 }) return resResult(STATUS.SUCCESS, { ...data, goods }); } diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index 676d18dad..de00436e1 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -11,7 +11,7 @@ import { findIndex, pick } from 'underscore'; import { SclResultInter, SclPosInter } from '../../../pubUtils/interface'; import { SchoolModel } from '../../../db/School'; import { getTeraphStrengthenResult, getSchoolList } from '../../../services/roleService' -import { HERO_SYSTEM_TYPE, LINEUP_NUM, ROLE_SELECT, REDIS_KEY, TASK_TYPE, DEFAULT_HEROES, DEFAULT_HERO_LV, DEFAULT_ITEMS, DEFAULT_EQUIPS, DEFAULT_GOLD, DEFAULT_COIN, DEBUG_MAGIC_WORD, COUNTER, DEFAULT_LV, ITEM_CHANGE_REASON, PUSH_ROUTE } from '../../../consts'; +import { HERO_SYSTEM_TYPE, LINEUP_NUM, ROLE_SELECT, REDIS_KEY, TASK_TYPE, DEFAULT_HEROES, DEFAULT_HERO_LV, DEFAULT_ITEMS, DEFAULT_EQUIPS, DEFAULT_GOLD, DEFAULT_COIN, DEBUG_MAGIC_WORD, COUNTER, DEFAULT_LV, ITEM_CHANGE_REASON, PUSH_ROUTE, POP_UP_SHOP_CONDITION_TYPE } from '../../../consts'; import { checkBattleHeroesByHid, roleLevelup } from '../../../services/normalBattleService'; import { Rank } from '../../../services/rankService'; import { updateUserInfo } from '../../../services/redisService'; @@ -28,6 +28,7 @@ import { createHeroes } from '../../../services/role/createHero'; import { calculateCeWithHero, calculateCeWithRole } from '../../../services/playerCeService'; import { sendMessageToUserWithSuc } from '../../../services/pushService'; import { GuildLeader } from '../../../domain/rank'; +import { checkPopUpCondition } from '../../../services/activity/popUpShopService'; export default function (app: Application) { new HandlerService(app, {}); @@ -100,7 +101,8 @@ export class RoleHandler { let { curRole } = await calculateCeWithRole(HERO_SYSTEM_TYPE.TITLE, roleId, serverId, sid, update); // 任务 - await checkTask(serverId, roleId, sid, TASK_TYPE.ROLE_TITLE, { oldTitle: title, title: update.title }); + await checkTask(serverId, roleId, sid, TASK_TYPE.ROLE_TITLE, { oldTitle: title, title: update.title }); // 弹出礼包 + await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.TITLE, { oldLv: title, newLv: update.title }); return resResult(STATUS.SUCCESS, { roleId, title: curRole.title }); } diff --git a/game-server/app/services/activity/popUpShopService.ts b/game-server/app/services/activity/popUpShopService.ts index 324c49a96..7ee4f2321 100644 --- a/game-server/app/services/activity/popUpShopService.ts +++ b/game-server/app/services/activity/popUpShopService.ts @@ -72,9 +72,9 @@ export async function checkPopUpConditionWhenGuildActivityEnd() { let i = -1; let interval = setInterval(async () => { if (++i < n) { - console.log('****', i) + // console.log('****', i) let users = allOnlineUsers.slice(i * PUSH_BATCH, (i + 1) * PUSH_BATCH - 1); - console.log('****', users) + // console.log('****', users) for(let { serverId, roleId, sid } of users) { await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.AUCTION, {}, sid); } diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index 7bfbb2edc..1396b2cea 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -1,6 +1,6 @@ import { HeroModel, HeroType } from './../db/Hero'; import { HangUpRecordModel } from './../db/HangUpRecord'; -import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TOWER_FORBIDDEN_CHARA_TYPE, TOWER_TASK_STATUS, MAIL_TYPE, MSG_SOURCE } from './../consts'; +import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TOWER_FORBIDDEN_CHARA_TYPE, TOWER_TASK_STATUS, MAIL_TYPE, MSG_SOURCE, POP_UP_SHOP_CONDITION_TYPE } from './../consts'; import { BattleRecordModel } from './../db/BattleRecord'; import { TowerRecordModel } from './../db/TowerRecord'; import { RoleModel, RoleType } from './../db/Role'; @@ -19,6 +19,7 @@ import { DicTowerTask } from '../pubUtils/dictionary/DicTowerTask'; import * as dicParam from '../pubUtils/dicParam'; import { getVipHungupReward } from './activity/monthlyTicketService'; import { pushTowerMsg } from './sysChatService'; +import { checkPopUpCondition } from './activity/popUpShopService'; /** * 获取当前镇念塔状态 @@ -240,6 +241,8 @@ export async function towerBattleEnd(sid: string, roleId: string, serverId: numb await checkAndStartHungUp(roleId, roleName, role.towerLv); // 任务 await checkTask(serverId, roleId, sid, TASK_TYPE.BATTLE_TOWER_LV, { towerLv: role.towerLv - 1 }); + await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.TOWER, { oldLv: towerLv - 1, newLv: role.towerLv - 1 }) + pushTowerMsg(roleId, roleName, serverId, MSG_SOURCE.TOWER_SUC, role.towerLv - 1); } return { diff --git a/shared/consts/constModules/activityConst.ts b/shared/consts/constModules/activityConst.ts index 46a96eb6d..3b15af5bd 100644 --- a/shared/consts/constModules/activityConst.ts +++ b/shared/consts/constModules/activityConst.ts @@ -195,6 +195,8 @@ export enum POP_UP_SHOP_CONDITION_TYPE { PVP = 6, // pvp EQUIP_STAR = 7, // 装备精炼 AUCTION = 8, // 拍卖行 + TITLE = 9, // 爵位到达x + TOWER = 10, // 镇念塔到达x层 } export enum POP_UP_SHOP_REFRESH_TIME_TYPE { diff --git a/shared/domain/activityField/newHeroGiftField.ts b/shared/domain/activityField/newHeroGiftField.ts index 9f34fbc62..cc8f28c13 100644 --- a/shared/domain/activityField/newHeroGiftField.ts +++ b/shared/domain/activityField/newHeroGiftField.ts @@ -62,6 +62,7 @@ export class NewHeroGiftData extends ActivityBase { let dataObj: NewHeroGiftDataInDb = JSON.parse(data); this.hid = dataObj.hid; this.position = dataObj.position; + this.consumePoint = dataObj.consumePoint; this.explain = dataObj.explain let arr = dataObj.rewards||[]; for (let obj of arr) { diff --git a/shared/domain/activityField/popUpShopField.ts b/shared/domain/activityField/popUpShopField.ts index a8f4cc702..def9c17b7 100644 --- a/shared/domain/activityField/popUpShopField.ts +++ b/shared/domain/activityField/popUpShopField.ts @@ -83,6 +83,10 @@ export class PopUpShopData extends ActivityBase { } } + public findByConditionType(conditionType: number) { + return this.packages.filter(cur => cur.conditionType == conditionType); + } + //解析玩家开启的商店记录 public setPlayerRecords(datas: ActivityPopUpShopModelType[], latestRecords: ActivityPopUpShopModelType[], totalPay: number, lv: number) { if (!datas) return; @@ -221,10 +225,9 @@ export class PopUpShopPackage { if(data.beginTime <= now && data.endTime > now) { // 正在进行中 for(let itemData of data.items) { - let item = this.findItemByProductID(itemData.productID); + let item = this.findItemById(itemData.id); if(item) { item.setPlayerRecords(data, itemData); - console.log('#### item.isPushing', item.isPushing) if(item.isPushing) this.isPushing = true; } } @@ -237,7 +240,7 @@ export class PopUpShopPackage { } for(let itemData of data.items) { - let item = this.findItemByProductID(itemData.productID); + let item = this.findItemById(itemData.id); if(item) { item.addPushCnt(); } @@ -332,7 +335,7 @@ export class PopUpShopPackage { this.addPlayerRecord(popUpShopRec); let items: PopUpShopItemShow[] = []; for(let item of popUpShopRec.items) { - let itemObj = this.findItemByProductID(item.productID); + let itemObj = this.findItemById(item.id); if(itemObj && itemObj.isPushing) { let obj = new PopUpShopItemShow(itemObj); items.push(obj); @@ -432,6 +435,10 @@ export class PopShopItem { return param.equipStar >= this.conditionParam[0]; case POP_UP_SHOP_CONDITION_TYPE.AUCTION: return true; + case POP_UP_SHOP_CONDITION_TYPE.TITLE: + return param.oldLv < this.conditionParam[0] && param.newLv >= this.conditionParam[0]; + case POP_UP_SHOP_CONDITION_TYPE.TOWER: + return param.oldLv < this.conditionParam[0] && param.newLv >= this.conditionParam[0]; default: return false; } @@ -439,10 +446,10 @@ export class PopShopItem { public checkKeyTime() { let keyItem = this.parent.keyItem; - console.log('####', keyItem) + // console.log('####', keyItem) for(let key of keyItem) { let hasCurKey = this.rewardInter.find(cur => cur.id == key.gid); - console.log('#### hasCurKey', hasCurKey, key.hasBoughtCnt, key.max) + // console.log('#### hasCurKey', hasCurKey, key.hasBoughtCnt, key.max) if(hasCurKey && key.hasBoughtCnt > key.max) return false; } return true; @@ -469,7 +476,7 @@ export class PopUpShopKeyItem { } addHasBoughtCnt(items: ActivityPopUpShopItem[]) { - console.log('###### addHasBoughtCnt', items) + // console.log('###### addHasBoughtCnt', items) for(let { rewards, hasBoughtCnt } of items) { for(let { id, count } of rewards) { if(id == this.gid) this.hasBoughtCnt += count * hasBoughtCnt;