弹出礼包:添加两种条件
This commit is contained in:
@@ -1,17 +1,13 @@
|
|||||||
import { Application, BackendSession, HandlerService, } from 'pinus';
|
import { Application, BackendSession, HandlerService, } from 'pinus';
|
||||||
import { resResult, splitString } from '../../../pubUtils/util';
|
import { resResult, } 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 { 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 { checkPopUpCondition, getPopUpShopData, getPopUpShopDataShow } from '../../../services/activity/popUpShopService';
|
||||||
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
|
import { ActivityPopUpShopModel } from '../../../db/ActivityPopUpShop';
|
||||||
import { ActivityPopUpShopModel, ActivityPopUpShopModelType } from '../../../db/ActivityPopUpShop';
|
|
||||||
import { PopUpShopData } from '../../../domain/activityField/popUpShopField';
|
|
||||||
import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService';
|
import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService';
|
||||||
import { RewardParam } from '../../../domain/activityField/rewardField';
|
import { RewardParam } from '../../../domain/activityField/rewardField';
|
||||||
import { handleCost } from '../../../services/role/rewardService';
|
import { handleCost } from '../../../services/role/rewardService';
|
||||||
import moment = require('moment');
|
|
||||||
import { getActivitiesByType, getActivityById, pushActivities } from '../../../services/activity/activityService';
|
|
||||||
import { setInterval } from 'timers';
|
import { setInterval } from 'timers';
|
||||||
import { sendMessageToUser, sendMessageToUserWithSuc } from '../../../services/pushService';
|
import { sendMessageToUserWithSuc } from '../../../services/pushService';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
new HandlerService(app, {});
|
new HandlerService(app, {});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { STATUS } from './../../../consts/statusCode';
|
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 { TaskHero, TowerTaskRecModel, TowerTaskRecType } from './../../../db/TowerTaskRec';
|
||||||
import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec';
|
import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec';
|
||||||
import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
import { HangUpRecordModel } from './../../../db/HangUpRecord';
|
||||||
@@ -20,6 +20,7 @@ import { RewardInter } from '../../../pubUtils/interface';
|
|||||||
import { combineItems } from '../../../services/role/util';
|
import { combineItems } from '../../../services/role/util';
|
||||||
import { checkTaskInSkipTower } from '../../../services/task/taskService';
|
import { checkTaskInSkipTower } from '../../../services/task/taskService';
|
||||||
import { Rank } from '../../../services/rankService';
|
import { Rank } from '../../../services/rankService';
|
||||||
|
import { checkPopUpCondition } from '../../../services/activity/popUpShopService';
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function(app: Application) {
|
||||||
return new TowerBattleHandler(app);
|
return new TowerBattleHandler(app);
|
||||||
@@ -297,12 +298,13 @@ export class TowerBattleHandler {
|
|||||||
let sid = session.get('sid');
|
let sid = session.get('sid');
|
||||||
|
|
||||||
let role = await RoleModel.findByRoleId(roleId);
|
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) {
|
if(!dicTower.canSkip) {
|
||||||
return resResult(STATUS.TOWER_CANNOT_SKIP);
|
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);
|
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 });
|
let r = new Rank(REDIS_KEY.TOWER_RANK, { serverId });
|
||||||
await r.setRankWithRoleInfo(roleId, role.towerLv - 1, role.towerUpTime.getTime(), role);
|
await r.setRankWithRoleInfo(roleId, role.towerLv - 1, role.towerUpTime.getTime(), role);
|
||||||
await checkTaskInSkipTower(serverId, roleId, sid, role.towerLv);
|
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 });
|
return resResult(STATUS.SUCCESS, { ...data, goods });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { findIndex, pick } from 'underscore';
|
|||||||
import { SclResultInter, SclPosInter } from '../../../pubUtils/interface';
|
import { SclResultInter, SclPosInter } from '../../../pubUtils/interface';
|
||||||
import { SchoolModel } from '../../../db/School';
|
import { SchoolModel } from '../../../db/School';
|
||||||
import { getTeraphStrengthenResult, getSchoolList } from '../../../services/roleService'
|
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 { checkBattleHeroesByHid, roleLevelup } from '../../../services/normalBattleService';
|
||||||
import { Rank } from '../../../services/rankService';
|
import { Rank } from '../../../services/rankService';
|
||||||
import { updateUserInfo } from '../../../services/redisService';
|
import { updateUserInfo } from '../../../services/redisService';
|
||||||
@@ -28,6 +28,7 @@ import { createHeroes } from '../../../services/role/createHero';
|
|||||||
import { calculateCeWithHero, calculateCeWithRole } from '../../../services/playerCeService';
|
import { calculateCeWithHero, calculateCeWithRole } from '../../../services/playerCeService';
|
||||||
import { sendMessageToUserWithSuc } from '../../../services/pushService';
|
import { sendMessageToUserWithSuc } from '../../../services/pushService';
|
||||||
import { GuildLeader } from '../../../domain/rank';
|
import { GuildLeader } from '../../../domain/rank';
|
||||||
|
import { checkPopUpCondition } from '../../../services/activity/popUpShopService';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
new HandlerService(app, {});
|
new HandlerService(app, {});
|
||||||
@@ -100,7 +101,8 @@ export class RoleHandler {
|
|||||||
let { curRole } = await calculateCeWithRole(HERO_SYSTEM_TYPE.TITLE, roleId, serverId, sid, update);
|
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 });
|
return resResult(STATUS.SUCCESS, { roleId, title: curRole.title });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ export async function checkPopUpConditionWhenGuildActivityEnd() {
|
|||||||
let i = -1;
|
let i = -1;
|
||||||
let interval = setInterval(async () => {
|
let interval = setInterval(async () => {
|
||||||
if (++i < n) {
|
if (++i < n) {
|
||||||
console.log('****', i)
|
// console.log('****', i)
|
||||||
let users = allOnlineUsers.slice(i * PUSH_BATCH, (i + 1) * PUSH_BATCH - 1);
|
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) {
|
for(let { serverId, roleId, sid } of users) {
|
||||||
await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.AUCTION, {}, sid);
|
await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.AUCTION, {}, sid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { HeroModel, HeroType } from './../db/Hero';
|
import { HeroModel, HeroType } from './../db/Hero';
|
||||||
import { HangUpRecordModel } from './../db/HangUpRecord';
|
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 { BattleRecordModel } from './../db/BattleRecord';
|
||||||
import { TowerRecordModel } from './../db/TowerRecord';
|
import { TowerRecordModel } from './../db/TowerRecord';
|
||||||
import { RoleModel, RoleType } from './../db/Role';
|
import { RoleModel, RoleType } from './../db/Role';
|
||||||
@@ -19,6 +19,7 @@ import { DicTowerTask } from '../pubUtils/dictionary/DicTowerTask';
|
|||||||
import * as dicParam from '../pubUtils/dicParam';
|
import * as dicParam from '../pubUtils/dicParam';
|
||||||
import { getVipHungupReward } from './activity/monthlyTicketService';
|
import { getVipHungupReward } from './activity/monthlyTicketService';
|
||||||
import { pushTowerMsg } from './sysChatService';
|
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 checkAndStartHungUp(roleId, roleName, role.towerLv);
|
||||||
// 任务
|
// 任务
|
||||||
await checkTask(serverId, roleId, sid, TASK_TYPE.BATTLE_TOWER_LV, { towerLv: role.towerLv - 1 });
|
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);
|
pushTowerMsg(roleId, roleName, serverId, MSG_SOURCE.TOWER_SUC, role.towerLv - 1);
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ export enum POP_UP_SHOP_CONDITION_TYPE {
|
|||||||
PVP = 6, // pvp
|
PVP = 6, // pvp
|
||||||
EQUIP_STAR = 7, // 装备精炼
|
EQUIP_STAR = 7, // 装备精炼
|
||||||
AUCTION = 8, // 拍卖行
|
AUCTION = 8, // 拍卖行
|
||||||
|
TITLE = 9, // 爵位到达x
|
||||||
|
TOWER = 10, // 镇念塔到达x层
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum POP_UP_SHOP_REFRESH_TIME_TYPE {
|
export enum POP_UP_SHOP_REFRESH_TIME_TYPE {
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ export class NewHeroGiftData extends ActivityBase {
|
|||||||
let dataObj: NewHeroGiftDataInDb = JSON.parse(data);
|
let dataObj: NewHeroGiftDataInDb = JSON.parse(data);
|
||||||
this.hid = dataObj.hid;
|
this.hid = dataObj.hid;
|
||||||
this.position = dataObj.position;
|
this.position = dataObj.position;
|
||||||
|
this.consumePoint = dataObj.consumePoint;
|
||||||
this.explain = dataObj.explain
|
this.explain = dataObj.explain
|
||||||
let arr = dataObj.rewards||[];
|
let arr = dataObj.rewards||[];
|
||||||
for (let obj of arr) {
|
for (let obj of arr) {
|
||||||
|
|||||||
@@ -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) {
|
public setPlayerRecords(datas: ActivityPopUpShopModelType[], latestRecords: ActivityPopUpShopModelType[], totalPay: number, lv: number) {
|
||||||
if (!datas) return;
|
if (!datas) return;
|
||||||
@@ -221,10 +225,9 @@ export class PopUpShopPackage {
|
|||||||
|
|
||||||
if(data.beginTime <= now && data.endTime > now) { // 正在进行中
|
if(data.beginTime <= now && data.endTime > now) { // 正在进行中
|
||||||
for(let itemData of data.items) {
|
for(let itemData of data.items) {
|
||||||
let item = this.findItemByProductID(itemData.productID);
|
let item = this.findItemById(itemData.id);
|
||||||
if(item) {
|
if(item) {
|
||||||
item.setPlayerRecords(data, itemData);
|
item.setPlayerRecords(data, itemData);
|
||||||
console.log('#### item.isPushing', item.isPushing)
|
|
||||||
if(item.isPushing) this.isPushing = true;
|
if(item.isPushing) this.isPushing = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -237,7 +240,7 @@ export class PopUpShopPackage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(let itemData of data.items) {
|
for(let itemData of data.items) {
|
||||||
let item = this.findItemByProductID(itemData.productID);
|
let item = this.findItemById(itemData.id);
|
||||||
if(item) {
|
if(item) {
|
||||||
item.addPushCnt();
|
item.addPushCnt();
|
||||||
}
|
}
|
||||||
@@ -332,7 +335,7 @@ export class PopUpShopPackage {
|
|||||||
this.addPlayerRecord(popUpShopRec);
|
this.addPlayerRecord(popUpShopRec);
|
||||||
let items: PopUpShopItemShow[] = [];
|
let items: PopUpShopItemShow[] = [];
|
||||||
for(let item of popUpShopRec.items) {
|
for(let item of popUpShopRec.items) {
|
||||||
let itemObj = this.findItemByProductID(item.productID);
|
let itemObj = this.findItemById(item.id);
|
||||||
if(itemObj && itemObj.isPushing) {
|
if(itemObj && itemObj.isPushing) {
|
||||||
let obj = new PopUpShopItemShow(itemObj);
|
let obj = new PopUpShopItemShow(itemObj);
|
||||||
items.push(obj);
|
items.push(obj);
|
||||||
@@ -432,6 +435,10 @@ export class PopShopItem {
|
|||||||
return param.equipStar >= this.conditionParam[0];
|
return param.equipStar >= this.conditionParam[0];
|
||||||
case POP_UP_SHOP_CONDITION_TYPE.AUCTION:
|
case POP_UP_SHOP_CONDITION_TYPE.AUCTION:
|
||||||
return true;
|
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:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -439,10 +446,10 @@ export class PopShopItem {
|
|||||||
|
|
||||||
public checkKeyTime() {
|
public checkKeyTime() {
|
||||||
let keyItem = this.parent.keyItem;
|
let keyItem = this.parent.keyItem;
|
||||||
console.log('####', keyItem)
|
// console.log('####', keyItem)
|
||||||
for(let key of keyItem) {
|
for(let key of keyItem) {
|
||||||
let hasCurKey = this.rewardInter.find(cur => cur.id == key.gid);
|
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;
|
if(hasCurKey && key.hasBoughtCnt > key.max) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -469,7 +476,7 @@ export class PopUpShopKeyItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addHasBoughtCnt(items: ActivityPopUpShopItem[]) {
|
addHasBoughtCnt(items: ActivityPopUpShopItem[]) {
|
||||||
console.log('###### addHasBoughtCnt', items)
|
// console.log('###### addHasBoughtCnt', items)
|
||||||
for(let { rewards, hasBoughtCnt } of items) {
|
for(let { rewards, hasBoughtCnt } of items) {
|
||||||
for(let { id, count } of rewards) {
|
for(let { id, count } of rewards) {
|
||||||
if(id == this.gid) this.hasBoughtCnt += count * hasBoughtCnt;
|
if(id == this.gid) this.hasBoughtCnt += count * hasBoughtCnt;
|
||||||
|
|||||||
Reference in New Issue
Block a user