任务:修复无效活动任务

This commit is contained in:
luying
2021-12-29 21:05:47 +08:00
parent 498cf5b66a
commit 26276e4c2b
7 changed files with 60 additions and 10 deletions
@@ -1,6 +1,6 @@
import { DividendModel } from './../../../db/Dividend'; import { DividendModel } from './../../../db/Dividend';
import { Application, BackendSession, ChannelService, HandlerService, pinus, } from "pinus"; import { Application, BackendSession, ChannelService, HandlerService, pinus, } from "pinus";
import { AUCTION_STAGE, DEBUG_MAGIC_WORD, STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, DATA_NAME, LOT_STATUS, CHANNEL_PREFIX, MAIL_TYPE, ITEM_CHANGE_REASON, TA_EVENT } from "../../../consts"; import { AUCTION_STAGE, DEBUG_MAGIC_WORD, STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, DATA_NAME, LOT_STATUS, CHANNEL_PREFIX, MAIL_TYPE, ITEM_CHANGE_REASON, TA_EVENT, ROLE_RECEIVE_STATUS } from "../../../consts";
import { LotModel } from "../../../db/Lot"; import { LotModel } from "../../../db/Lot";
import { ItemReward } from "../../../domain/dbGeneral"; import { ItemReward } from "../../../domain/dbGeneral";
import { genCode, resResult } from "../../../pubUtils/util"; import { genCode, resResult } from "../../../pubUtils/util";
@@ -153,9 +153,10 @@ export class AuctionHandler {
if (!dividendData) return resResult(STATUS.DIVIDEND_NOT_READY); if (!dividendData) return resResult(STATUS.DIVIDEND_NOT_READY);
const { dividends } = dividendData; const { dividends } = dividendData;
const dividend = dividends.find(item => { return item.roleId === roleId }); const dividend = dividends.find(item => { return item.roleId === roleId });
if (!dividend) return resResult(STATUS.DIVIDEND_GUILD_PLAYER_ONLY); if (!dividend || dividend.status == ROLE_RECEIVE_STATUS.YES) return resResult(STATUS.DIVIDEND_GUILD_PLAYER_ONLY);
let goods = await addItems(roleId, roleName, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD), count: dividend.total }], ITEM_CHANGE_REASON.AUCTION_DIVIDEND); let goods = await addItems(roleId, roleName, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD), count: dividend.total }], ITEM_CHANGE_REASON.AUCTION_DIVIDEND);
await DividendModel.updateReceiveStatus(dividendData.code, roleId); await DividendModel.updateReceiveStatus(dividendData.code, roleId);
dividend.status = ROLE_RECEIVE_STATUS.YES;
return resResult(STATUS.SUCCESS, { dividend, goods }); return resResult(STATUS.SUCCESS, { dividend, goods });
} }
@@ -23,7 +23,7 @@ import { removeBossRank } from '../../../services/guildBossService';
import { removeTrainRank } from '../../../services/guildTrainService'; import { removeTrainRank } from '../../../services/guildTrainService';
import { pushGuildNoticeUpdateMsg, pushGuildUpStructureMsg, addRoleToGuildChannel, getGuildChannelSid, createGroupMsg, pushGroupMsgToRoom } from '../../../services/chatService'; import { pushGuildNoticeUpdateMsg, pushGuildUpStructureMsg, addRoleToGuildChannel, getGuildChannelSid, createGroupMsg, pushGroupMsgToRoom } from '../../../services/chatService';
import { Rank } from '../../../services/rankService'; import { Rank } from '../../../services/rankService';
import { checkTask } from '../../../services/taskService'; import { checkActivityTask, checkTask } from '../../../services/taskService';
import { guildInter } from '../../../pubUtils/interface'; import { guildInter } from '../../../pubUtils/interface';
import * as dicParam from '../../../pubUtils/dicParam'; import * as dicParam from '../../../pubUtils/dicParam';
import { reportTAEvent } from '../../../services/sdkService'; import { reportTAEvent } from '../../../services/sdkService';
@@ -870,6 +870,7 @@ export class GuildHandler {
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_RECEIVE_BOX, 1, true, {}); await checkTask(roleId, sid, TASK_TYPE.GUILD_RECEIVE_BOX, 1, true, {});
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GUILD_RECEIVE_BOX, 1);
return resResult(STATUS.SUCCESS, { goods, receivedActive: userGuild.receivedActive }); return resResult(STATUS.SUCCESS, { goods, receivedActive: userGuild.receivedActive });
} }
@@ -323,6 +323,7 @@ export class EquipHandler {
let curEquip = <EquipType>equip; let curEquip = <EquipType>equip;
pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip ? curEquip.quality : 0); pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip ? curEquip.quality : 0);
await checkTask(roleId, sid, TASK_TYPE.EQUIP_REFINE, times, true, {}); await checkTask(roleId, sid, TASK_TYPE.EQUIP_REFINE, times, true, {});
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE, times);
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE_LV, times, { lv: curEplace.refineLv }); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE_LV, times, { lv: curEplace.refineLv });
return resResult(STATUS.SUCCESS, { curHero }); return resResult(STATUS.SUCCESS, { curHero });
} }
@@ -743,6 +744,7 @@ export class EquipHandler {
let { ePlace, lv } = hero; let { ePlace, lv } = hero;
let curEquips: Array<{ seqId: number, hid: number }> = []; let curEquips: Array<{ seqId: number, hid: number }> = [];
let equips: EquipType[] = [];
for (let curEPlace of ePlace) { for (let curEPlace of ePlace) {
if (!curEPlace.equip) { // 未装备 if (!curEPlace.equip) { // 未装备
let sortAttrId = equipTypeToSortAttr.get(curEPlace.id); let sortAttrId = equipTypeToSortAttr.get(curEPlace.id);
@@ -763,13 +765,23 @@ export class EquipHandler {
let { equip } = sortedAndSuitEquips.shift(); let { equip } = sortedAndSuitEquips.shift();
hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id); hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id);
equip = await EquipModel.putOnOrOff(equip._id, hero.hid); equip = await EquipModel.putOnOrOff(equip._id, hero.hid);
if (!!equip) curEquips.push(pick(equip, ['seqId', 'hid'])); if (!!equip) {
curEquips.push(pick(equip, ['seqId', 'hid']));
equips.push(equip);
}
} }
} }
} }
if (curEquips.length > 0) { if (curEquips.length > 0) {
//任务 //任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, curEquips.length, true, {});
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, curEquips.length);
for(let equip of equips) {
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equip, [1]); // equipA必然是脱,如果hid不为0说明从一个人穿到另一个人,不算任务
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality });
}
//英雄满装备且都镶嵌相同阶数的宝石 //英雄满装备且都镶嵌相同阶数的宝石
let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero)
if (isTask) { if (isTask) {
@@ -860,7 +872,7 @@ export class EquipHandler {
await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
//成长任务 //成长任务
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1)
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1, { stage: jewelInfo.lvLimited })
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
} }
@@ -184,6 +184,7 @@ export class HeroHandler {
await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, isUpStar ? 1 : 0]); // 升星可能影响到百家学院全局加成 await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, isUpStar ? 1 : 0]); // 升星可能影响到百家学院全局加成
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero); await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero);
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_STAR_UP, 1);
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_QUALITY_STAR_UP, hero); await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_QUALITY_STAR_UP, hero);
//成长任务 //成长任务
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_QUALITY_STAR_UP, 1, { quality: dicHero.quality, star: hero.star }); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_QUALITY_STAR_UP, 1, { quality: dicHero.quality, star: hero.star });
@@ -317,6 +318,7 @@ export class HeroHandler {
; ;
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero); await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_STAR_UP, hero);
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_STAR_UP, 1);
await checkTask(roleId, sid, TASK_TYPE.HERO_WAKE_UP, 1, true, {}); await checkTask(roleId, sid, TASK_TYPE.HERO_WAKE_UP, 1, true, {});
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_QUALITY_WAKE_UP_COUNT, 1, { quality: hero.quality }); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_QUALITY_WAKE_UP_COUNT, 1, { quality: hero.quality });
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_WAKE_UP_COUNT, 1, { hid: hid }); await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_WAKE_UP_COUNT, 1, { hid: hid });
@@ -475,6 +477,7 @@ export class HeroHandler {
async heroGiveFavor(msg: { hid: number, type: number }, session: BackendSession) { async heroGiveFavor(msg: { hid: number, type: number }, session: BackendSession) {
let roleId: string = session.get('roleId'); let roleId: string = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let { hid, type } = msg; let { hid, type } = msg;
@@ -542,6 +545,7 @@ export class HeroHandler {
// 任务 // 任务
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero, [oldLv]); await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero, [oldLv]);
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_FAVOUR_LV, 1, { lv: newLv, oldLv });
} else { } else {
hero = await HeroModel.updateHeroInfo(roleId, hero.hid, { favour: newExp, favourLv: newLv }); hero = await HeroModel.updateHeroInfo(roleId, hero.hid, { favour: newExp, favourLv: newLv });
} }
@@ -124,6 +124,7 @@ export class RoleHandler {
let { id, count } = msg; let { id, count } = msg;
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid: string = session.get('sid'); let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let role = await RoleModel.findByRoleId(roleId, 'roleId teraphs gold coin'); let role = await RoleModel.findByRoleId(roleId, 'roleId teraphs gold coin');
@@ -148,6 +149,7 @@ export class RoleHandler {
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count, true, {}); await checkTask(roleId, sid, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count, true, {});
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ROLE_TERAPH_STRENGTHEN, count);
return resResult(STATUS.SUCCESS, { roleId, teraphs: calResult.role.teraphs, criAttr }); return resResult(STATUS.SUCCESS, { roleId, teraphs: calResult.role.teraphs, criAttr });
} }
@@ -264,7 +266,7 @@ export class RoleHandler {
async unlockSchoolPosition(msg: { schoolId: number, positionId: number }, session: BackendSession) { async unlockSchoolPosition(msg: { schoolId: number, positionId: number }, session: BackendSession) {
let roleId = session.get('roleId'); let roleId = session.get('roleId');
let sid = session.get('sid'); let sid = session.get('sid');
let serverId = session.get('serverId');
let { schoolId, positionId } = msg; let { schoolId, positionId } = msg;
if (!gameData.school.has(schoolId)) { if (!gameData.school.has(schoolId)) {
@@ -291,6 +293,7 @@ export class RoleHandler {
// 任务 // 任务
await checkTask(roleId, sid, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1, true, {}); await checkTask(roleId, sid, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1, true, {});
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ROLE_SCHOOL_UNLOCK, 1)
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
schoolId, positionId, hid: curSchool.hid, isOpen: curSchool.isOpen schoolId, positionId, hid: curSchool.hid, isOpen: curSchool.isOpen
@@ -357,7 +360,7 @@ export class RoleHandler {
await calAllHeroCe(HERO_SYSTEM_TYPE.SCROLL, sid, roleId, {}, [hid]); // 全局增加战力 await calAllHeroCe(HERO_SYSTEM_TYPE.SCROLL, sid, roleId, {}, [hid]); // 全局增加战力
// 任务 // 任务
if (favourLv != hero.favourLv) await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero); if (favourLv != hero.favourLv) await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero, [favourLv]);
if (!scrollActive) await checkTask(roleId, sid, TASK_TYPE.ROLE_SCROLL_ACTIVE, 1, true, {}); if (!scrollActive) await checkTask(roleId, sid, TASK_TYPE.ROLE_SCROLL_ACTIVE, 1, true, {});
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
+2 -1
View File
@@ -116,11 +116,12 @@ export async function checkTaskInBattleEnd(serverId: number, roleId: string, sid
} else if (dicWar.warType == WAR_TYPE.EXPEDITION) { } else if (dicWar.warType == WAR_TYPE.EXPEDITION) {
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_EXPEDITION, 1) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_EXPEDITION, 1)
} else if (dicWar.warType == WAR_TYPE.MYSTERY || dicWar.warType == WAR_TYPE.MYSTERY_ELITE) { } else if (dicWar.warType == WAR_TYPE.MYSTERY || dicWar.warType == WAR_TYPE.MYSTERY_ELITE) {
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DUNGEON, 1)
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: battleId }) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DUNGEON_WAR, 1, { warId: battleId })
} else if (dicWar.warType == WAR_TYPE.TOWER) { } else if (dicWar.warType == WAR_TYPE.TOWER) {
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_TOWER, 1) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_TOWER, 1)
} else if (dicWar.warType == WAR_TYPE.DAILY) { } else if (dicWar.warType == WAR_TYPE.DAILY) {
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DAILY, 1, { warId: battleId }) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.BATTLE_DAILY, 1, { dailyType: dicWar.dailyType })
} }
} }
+30 -2
View File
@@ -523,6 +523,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
let taskRecord = await ActivityGrowthModel.findDataByCellIndex(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType); let taskRecord = await ActivityGrowthModel.findDataByCellIndex(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType);
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null; let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null;
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, activity.activityId, parma, recordData); let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, activity.activityId, parma, recordData);
if (addCount) { if (addCount) {
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) {
let playerRecord = await ActivityGrowthModel.setTaskCount(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); let playerRecord = await ActivityGrowthModel.setTaskCount(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
@@ -549,6 +550,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
let taskRecord = await ActivityDailyChallengesModel.findDataByCellIndex(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType) let taskRecord = await ActivityDailyChallengesModel.findDataByCellIndex(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType)
let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null let recordData = taskRecord && taskRecord.data ? JSON.parse(taskRecord.data) : null
let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, activity.activityId, parma, recordData); let { addCount, record } = isComplete(roleId, task.taskType, task.taskParam, count, activity.activityId, parma, recordData);
console.log('******* dailyChallenge', addCount, record)
if (addCount) { if (addCount) {
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) { if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE || taskType == TASK_TYPE.BATTLE_TOWER_LV) {
let playerRecord = await ActivityDailyChallengesModel.setTaskCount(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount); let playerRecord = await ActivityDailyChallengesModel.setTaskCount(serverId, activity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
@@ -938,6 +940,9 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri
addCount = (param[1] == paramObj.lv) ? count : 0; addCount = (param[1] == paramObj.lv) ? count : 0;
break; break;
case TASK_TYPE.EQUIP_REFINE:
addCount = count;
break;
case TASK_TYPE.BATTLE_MAIN: case TASK_TYPE.BATTLE_MAIN:
addCount = (param[1] == paramObj.warId) ? 1 : 0; addCount = (param[1] == paramObj.warId) ? 1 : 0;
break; break;
@@ -1068,6 +1073,11 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri
} }
break; break;
} }
case TASK_TYPE.BATTLE_DUNGEON:
{
addCount = count;
break;
}
case TASK_TYPE.HERO_NUM: case TASK_TYPE.HERO_NUM:
{ {
addCount = count; addCount = count;
@@ -1163,7 +1173,7 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri
} }
case TASK_TYPE.CHAT: case TASK_TYPE.CHAT:
{ {
if (param[0] == paramObj.chatType) { if (param[0] == 0 || param[0] == paramObj.chatType) {
addCount = count; addCount = count;
} }
break; break;
@@ -1185,7 +1195,8 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri
} }
case TASK_TYPE.BATTLE_DAILY: case TASK_TYPE.BATTLE_DAILY:
{ {
if (param[0] == 0 || param[0] == paramObj.warId) { console.log('*********** TASK_TYPE.BATTLE_DAILY', param[0], paramObj.dailyType)
if (param[0] == 0 || param[0] == paramObj.dailyType) {
addCount = count; addCount = count;
} }
break; break;
@@ -1195,6 +1206,23 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri
addCount = count; addCount = count;
break; break;
} }
case TASK_TYPE.ROLE_TERAPH_STRENGTHEN:
addCount = count;
break;
case TASK_TYPE.HERO_FAVOUR_LV:
if(paramObj.lv >= param[1] && paramObj.oldLv < param[1]) {
addCount = count;
}
break;
case TASK_TYPE.GUILD_RECEIVE_BOX:
addCount = count;
break;
case TASK_TYPE.ROLE_SCHOOL_UNLOCK:
addCount = count;
break;
case TASK_TYPE.HERO_STAR_UP:
addCount = count;
break;
default: default:
addCount = 0; addCount = 0;
break; break;