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