活动:军团练兵场通过层数后推送

This commit is contained in:
qiaoxin
2021-06-08 20:21:47 +08:00
parent 8f015b5cb6
commit d1a4754fc5
9 changed files with 191 additions and 142 deletions
@@ -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);
}
+1
View File
@@ -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[]) {
+1 -1
View File
@@ -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, // 神像进阶
+12 -2
View File
@@ -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) {
+2 -2
View File
@@ -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;
} }
+18 -5
View File
@@ -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;
+3 -3
View File
@@ -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"
}, },