弹出礼包:添加两种条件
This commit is contained in:
@@ -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, {});
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user