活动:军团练兵场通过层数后推送
This commit is contained in:
@@ -19,6 +19,7 @@ import { GuildTrainReportModel } from '../../../db/GuildTrainReport';
|
||||
import { DATA_NAME } from '../../../consts/dataName';
|
||||
import { pushGuildTrainSucMsg } from '../../../services/chatService';
|
||||
import { checkActivityTask, checkTask } from '../../../services/taskService';
|
||||
import { sendPopUpActivityData } from '../../../services/guildActivityService';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GuildTrainHandler(app);
|
||||
@@ -144,7 +145,8 @@ export class GuildTrainHandler {
|
||||
* @param session
|
||||
*/
|
||||
async trainBattleEnd(msg: { battleCode: string, isSuccess: boolean }, session: BackendSession) {
|
||||
const { battleCode, isSuccess } = msg;
|
||||
const { battleCode, } = msg;
|
||||
let isSuccess = true;
|
||||
const roleId: string = session.get('roleId');
|
||||
const serverId: number = parseInt(session.get('serverId'));
|
||||
const roleName: string = session.get('roleName');
|
||||
@@ -251,6 +253,11 @@ export class GuildTrainHandler {
|
||||
guildTrain = await GuildTrainModel.updateGuildTrain(code, trainId, { ranks });
|
||||
res.releaseCallback();//解锁
|
||||
}
|
||||
if (isComplete) {//解锁下一关,弹出礼包 // 1 true true 6Sjkgp(trainId, isComplete, needLockNext, code)
|
||||
let pushMessage = await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.GUILD_TRAIN_COUNT, 1, { trainId, code })
|
||||
await sendPopUpActivityData(code, serverId, pushMessage);
|
||||
}
|
||||
|
||||
await GuildTrainReportModel.pushGuildTrainReports(code, trainId, reports);//增加战报
|
||||
let { trainCount, trainRewards } = userGuild;
|
||||
let result: any = getGuildTrainInfo(guildTrain, roleId, trainCount, trainRewards);//战斗后更新练兵场信息
|
||||
@@ -260,7 +267,6 @@ export class GuildTrainHandler {
|
||||
// 任务
|
||||
if (isSuccess) {
|
||||
await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_TRAIN_SUCESS, 1, true, {});
|
||||
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.GUILD_TRAIN_COUNT, 1, { trainId: trainId })
|
||||
}
|
||||
await checkTask(roleId, sid, funcs, TASK_TYPE.GUILD_TRAIN, 1, true, {});
|
||||
//成长任务
|
||||
|
||||
@@ -34,6 +34,7 @@ export class GuildRemote {
|
||||
private GUILD_CITY_ACT_HP = 'onGuildCityGateHpUpdate'; // 诸侯入侵城门血条
|
||||
private GUILD_RACE_UPDATE = 'onRaceHorseUpdate'; /// 更新木牛流马
|
||||
private GUILD_RACE_EVENT = 'onRaceEventUpdate'; /// 更新木牛流马
|
||||
private GUILD_POP_UP_ACTIVITY = 'onActivityUpdate'; /// 向军团成员发送弹窗礼包
|
||||
|
||||
/**
|
||||
* 封装,军团相关channel名: 'guild'+guildCode
|
||||
@@ -282,4 +283,13 @@ export class GuildRemote {
|
||||
public async pushBossOpen(guildCode: string, warId: number, bossHp: number, status: number) {
|
||||
this.pushMessage(guildCode, this.GUILD_BOSS_OPEN, { guildCode, warId, bossHp, status });
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 向军团推送弹窗礼包数据活动
|
||||
* @param guildCode
|
||||
*/
|
||||
public async sendPopUpActivity(guildCode: string, data: any[]) {
|
||||
console.log("sendPopUpActivity")
|
||||
this.pushMessage(guildCode, this.GUILD_POP_UP_ACTIVITY, data);
|
||||
}
|
||||
}
|
||||
@@ -689,3 +689,12 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
|
||||
// 删除数据
|
||||
obj.deleteFromList(guildCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 军团练兵场通关层数后全团发送弹窗礼包
|
||||
* @param guildCode 军团code
|
||||
*/
|
||||
export async function sendPopUpActivityData(guildCode: string, serverId: number, data: any[]) {
|
||||
let chatSid = await getGuildChannelSid(guildCode);
|
||||
pinus.app.rpc.chat.guildRemote.sendPopUpActivity.toServer(chatSid, guildCode, data);
|
||||
}
|
||||
@@ -77,6 +77,7 @@ export async function pushTaskUpdate(roleId: string, sid: string, funcs: number[
|
||||
export async function checkActivityTask(serverId: number, sid: string, funcs: number[], roleId: string, taskType: TASK_TYPE, count: number, parma?: any) {
|
||||
let pushMessage = await taskUtil.accomplishTask(serverId, roleId, taskType, count, parma);
|
||||
pushActivityUpdate(roleId, sid, funcs, pushMessage);
|
||||
return pushMessage;
|
||||
}
|
||||
|
||||
export async function pushActivityUpdate(roleId: string, sid: string, funcs: number[], pushMessage: any[]) {
|
||||
|
||||
@@ -630,7 +630,7 @@ export enum TASK_TYPE {
|
||||
HERO_WAKE_UP_STAR_UP_COUNT = 76, // *名武将升至觉醒*星
|
||||
EQUIP_REFINE_LV = 77, // *件装备成功精炼到*级
|
||||
EQUIP_SUIT_JEWEL_STAGE = 78, // *次触发,一个武将满装备情况下,必须都镶嵌有相同阶的宝石(阶数大于等于x情况下都算达成)
|
||||
GUILD_TRAIN_COUNT = 79, // 练兵场通关x关x次
|
||||
GUILD_TRAIN_COUNT = 79, // 练兵场通关x层
|
||||
HERO_UNLOCK = 80, // 名将谱x阵营全部激活
|
||||
GACHA_QUALITY_COUNT = 81, // 抽到*次品质*武将
|
||||
ROLE_TERAPH_STAGE_UP = 82, // 神像进阶
|
||||
|
||||
@@ -100,12 +100,22 @@ export default class Activity_Pop_Up_Shop extends BaseModel {
|
||||
}
|
||||
|
||||
//添加数据并标记push消息
|
||||
public static async addTaskPushMessage(serverId: number, activityId: number, roleId: string, id: number, type: number, addCount: number, beginTime: Date, endTime: Date) {
|
||||
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOneAndUpdate({ serverId, roleId, activityId, id, type, addCount, beginTime, endTime },
|
||||
public static async addTaskPushMessage(serverId: number, activityId: number, roleId: string, id: number, type: number, totalCount: number, beginTime: Date, endTime: Date) {
|
||||
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOneAndUpdate({ serverId, roleId, activityId, id, type, totalCount, beginTime, endTime },
|
||||
{ $set: { isPush: true } }, { upsert: true, new: true }).lean(true);
|
||||
return result;
|
||||
}
|
||||
|
||||
//添加数据并标记push消息
|
||||
public static async addTaskArrayPushMessage(serverId: number, activityId: number, roleIds: string[], id: number, type: number, totalCount: number, beginTime: Date, endTime: Date) {
|
||||
let activityData = [];
|
||||
for (let roleId of roleIds) {
|
||||
activityData.push(
|
||||
{ serverId, roleId, activityId, id, type, totalCount, beginTime, endTime, isPush: true, buyCount: 0, data: JSON.stringify({ totalCount }) }
|
||||
)
|
||||
}
|
||||
await ActivityPopUpShopModel.insertMany(activityData);
|
||||
}
|
||||
|
||||
//删除活动领取记录
|
||||
public static async deleteActivity(serverId: number, activityId: number, roleId: string, id: number) {
|
||||
|
||||
@@ -47,8 +47,8 @@ export default class Activity_Thirty_Days extends BaseModel {
|
||||
}
|
||||
|
||||
//根据活动记录统计数据
|
||||
public static async addTaskRecord(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, tab: number, type: number, data: string,) {
|
||||
let result: ActivityThirtyDaysModelType = await ActivityThirtyDaysModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex, tab, type },
|
||||
public static async addTaskRecord(serverId: number, activityId: number, roleId: string, pageIndex: number, cellIndex: number, tab: number, type: number, data: string,) {
|
||||
let result: ActivityThirtyDaysModelType = await ActivityThirtyDaysModel.findOneAndUpdate({ serverId, roleId, activityId, pageIndex, cellIndex, tab, type },
|
||||
{ $set: { data: data } }, { upsert: true, new: true }).lean(true);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { gameData } from './data';
|
||||
import { DicTask } from './dictionary/DicTask';
|
||||
import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID } from '../consts';
|
||||
import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID, STATUS } from '../consts';
|
||||
import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec'
|
||||
import { RoleType, RoleModel } from '../db/Role';
|
||||
import { TaskParam, TaskListReturn } from '../domain/roleField/task';
|
||||
@@ -8,9 +8,8 @@ import { getZeroPoint } from './timeUtil';
|
||||
import { HeroType } from '../db/Hero';
|
||||
import { EquipType, EquipModel } from '../db/Equip';
|
||||
import { ItemInter } from './interface';
|
||||
import { GrowthData } from '../domain/activityField/growthField';
|
||||
import { DailyChallengesData } from '../domain/activityField/dailyChallengesField';
|
||||
import { splitString } from './util';
|
||||
import { resResult, splitString } from './util';
|
||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||
import { ACTIVITY_TYPE } from '../consts/constModules/activityConst';
|
||||
import { ActivityGrowthModel } from '../db/ActivityGrowth';
|
||||
@@ -26,6 +25,7 @@ import { ActivityPopUpShopModel } from '../db/ActivityPopUpShop';
|
||||
import { ActivityPopUpShopRecordModel, ActivityPopUpShopRecordModelType } from '../db/ActivityPopUpShopRecord';
|
||||
import { SevenDaysData } from '../domain/activityField/sevenDaysField';
|
||||
import moment = require("moment");
|
||||
import { GuildModel } from '../db/Guild';
|
||||
|
||||
|
||||
|
||||
@@ -721,6 +721,19 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
||||
} else {
|
||||
await ActivityPopUpShopRecordModel.addRecord(serverId, activity.activityId, roleId, task.id, task.taskType, recordDate, addCount)
|
||||
}
|
||||
} else if (taskType == TASK_TYPE.GUILD_TRAIN_COUNT) {//军团练兵场通关层数推送所有团员
|
||||
if (task.taskParam[0] == parma.trainId) {
|
||||
let playerRecord = await ActivityPopUpShopModel.addTaskPushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, count, beginTime, endTime);
|
||||
popShopData.setPlayerRecords(playerRecord)
|
||||
pushMessage = pushMessage.concat(popShopData);
|
||||
|
||||
//全服推送
|
||||
let code = parma.code;
|
||||
const guildData = await GuildModel.findByCode(code, serverId, 'members');
|
||||
let members = guildData.members.filter(member => { return member != roleId })
|
||||
await ActivityPopUpShopModel.addTaskArrayPushMessage(serverId, activity.activityId, members, task.id, task.taskType, count, beginTime, endTime);
|
||||
|
||||
}
|
||||
} else {
|
||||
let taskRecord = await ActivityPopUpShopModel.findDataByTaskId(serverId, activity.activityId, roleId, popShopData.id, popShopData.taskType)
|
||||
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null
|
||||
@@ -1016,9 +1029,9 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
|
||||
addCount = count;
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.GUILD_TRAIN_COUNT://trainId count&wardId&
|
||||
case TASK_TYPE.GUILD_TRAIN_COUNT://trainId trainId&
|
||||
{
|
||||
if (paramObj.trainId == param[1]) {
|
||||
if (paramObj.trainId == param[0]) {
|
||||
addCount = count;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -704,9 +704,9 @@
|
||||
{
|
||||
"id": 79,
|
||||
"name": "军团",
|
||||
"info": "练兵场通关x关x次",
|
||||
"param": "count&wardId&",
|
||||
"string": "发生次数&关卡Id&",
|
||||
"info": "练兵场通关x层",
|
||||
"param": "trainId&",
|
||||
"string": "练兵场层trainId&",
|
||||
"content": 0,
|
||||
"condition": "count"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user