diff --git a/game-server/app/servers/role/handler/taskHandler.ts b/game-server/app/servers/role/handler/taskHandler.ts index f1f904cb0..3b9a15b84 100644 --- a/game-server/app/servers/role/handler/taskHandler.ts +++ b/game-server/app/servers/role/handler/taskHandler.ts @@ -83,7 +83,7 @@ export class ShopHandler { //任务完成后关联活动的积分 - await addActvityTaskPoint(type, id, session ); + if(type == TASK_FUN_TYPE.DAILY) await addActvityTaskPoint(type, id, session ); let goods = await addItems(roleId, roleName, sid, taskReward, ITEM_CHANGE_REASON.TASK_REWARD); if (expItem && expItem.count > 0) { diff --git a/game-server/app/services/activity/activityService.ts b/game-server/app/services/activity/activityService.ts index c624d236f..e2e50fe0f 100644 --- a/game-server/app/services/activity/activityService.ts +++ b/game-server/app/services/activity/activityService.ts @@ -1,4 +1,4 @@ -import { ACTIVITY_TYPE, PUSH_ROUTE, STATUS } from '../../consts'; +import { ACTIVITY_TYPE, PUSH_ROUTE, STATUS, TASK_FUN_TYPE } from '../../consts'; import { getPlayerFirstGiftDataShow } from './firstGiftService'; import { getPlayerSignInData, } from './signInService'; import { getPlayerGrowthFundData, } from './growthFundService'; @@ -358,24 +358,16 @@ export async function checkActivityEditable(activities: ActivityModelType[]) { * @param point * @param session */ -export async function addActvityTaskPoint(type: number, id: number, session: BackendSession) { +export async function addActvityTaskPoint(type: number, addPoint: number, session: BackendSession) { + if(type != TASK_FUN_TYPE.DAILY) return let serverId: number = session.get('serverId'); let roleId: string = session.get('roleId'); let sid: string = session.get('sid'); - let activityTaskPoint = await ActivityTaskPointModel.findData(type, id); let result: pushActivityInter[] = []; - for (let { activityId, activityType, point } of activityTaskPoint) { - if(activityType == ACTIVITY_TYPE.NEW_HERO_GIFTS) { // 新武将活动 - let totalPoint = await newHeroGiftPoint(serverId, activityId, roleId, point); - result.push({ activityId, activityType, param: { totalPoint } }); - } else if (activityType == ACTIVITY_TYPE.TASK_PASS) { - let totalPoint = await addTaskPassPoint(serverId, activityId, roleId, point); - result.push({ activityId, activityType, param: { totalPoint } }); - } else { - break; - } - } - await pushActivities(result, roleId, sid); + let newHeroResult = await newHeroGiftPoint(serverId, roleId, addPoint); + let taskPassResult = await addTaskPassPoint(serverId, roleId, addPoint); + result.push(...newHeroResult, ...taskPassResult); + if(result.length > 0) await pushActivities(result, roleId, sid); } diff --git a/game-server/app/services/activity/newHeroService.ts b/game-server/app/services/activity/newHeroService.ts index 2540ab497..290eb0ca0 100644 --- a/game-server/app/services/activity/newHeroService.ts +++ b/game-server/app/services/activity/newHeroService.ts @@ -1,3 +1,4 @@ +import { ACTIVITY_TYPE } from '../../consts'; import { ActivityNewHeroGiftModel, ActivityNewHeroGiftModelType } from '../../db/ActivityNewHeroGift'; import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/ActivityNewHeroGK'; import { UserGachaModel, UserGachaType } from '../../db/UserGacha'; @@ -6,7 +7,7 @@ import { NewHeroGiftData } from '../../domain/activityField/newHeroGiftField'; import { NewHeroGKData } from '../../domain/activityField/newHeroGKField'; import { gameData } from '../../pubUtils/data'; import { getRoleCreateTime, getServerCreateTime } from '../redisService'; -import { getActivityById } from './activityService'; +import { getActivitiesByType, getActivityById, pushActivityInter } from './activityService'; import { refreshGacha } from './gachaService'; @@ -96,17 +97,24 @@ export async function challengeNewHeroGK(serverId: number, roleId: string, activ * @param {string} roleId 角色Id * */ -export async function newHeroGiftPoint(serverId: number, activityId: number, roleId: string, addPoint: number) { - let activityData = await getActivityById(activityId); - if(!activityData) return 0 - - let createTime = await getRoleCreateTime(roleId); - let serverTime = await getServerCreateTime(serverId); - let playerData = new NewHeroGiftData(activityData, createTime, serverTime); - - if(playerData.canRecordTaskPoint()) { - let result = await ActivityNewHeroGiftModel.addPoint(serverId, activityId, roleId, addPoint); - return result.totalPoint; +export async function newHeroGiftPoint(serverId: number, roleId: string, addPoint: number) { + try { + let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.NEW_HERO_GIFTS); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + + let pushResult: pushActivityInter[] = []; + for(let activityData of activities) { + let playerData = new NewHeroGiftData(activityData, createTime, serverTime); + if(playerData.canRecordTaskPoint()) { + let result = await ActivityNewHeroGiftModel.addPoint(serverId, activityData.activityId, roleId, addPoint); + if(result) pushResult.push({ activityId: activityData.activityId, activityType: activityData.type, param: { totalPoint: result.totalPoint } }); + } + } + + return pushResult + } catch(e) { + console.error(e); + return [] } - return 0 } diff --git a/game-server/app/services/activity/taskPassService.ts b/game-server/app/services/activity/taskPassService.ts index eee6547ff..69326fef9 100644 --- a/game-server/app/services/activity/taskPassService.ts +++ b/game-server/app/services/activity/taskPassService.ts @@ -4,7 +4,7 @@ import { ActivityTaskPassModel } from "../../db/ActivityTaskPass"; import { RoleModel } from "../../db/Role"; import { TaskPassData } from "../../domain/activityField/taskPassField"; import { getRoleCreateTime, getServerCreateTime } from "../redisService"; -import { getActivityById } from "./activityService"; +import { getActivitiesByType, getActivityById, pushActivityInter } from "./activityService"; export async function getTaskPassData(activityId: number, serverId: number, roleId: string) { let activityData = await getActivityById(activityId); @@ -64,15 +64,24 @@ export async function getTaskPassDataShow(activityId: number, serverId: number, * @param {string} roleId 角色Id * */ -export async function addTaskPassPoint(serverId: number, activityId: number, roleId: string, addPoint: number) { - let activity = await getActivityById(activityId); - if(!activity) return 0; - let createTime = await getRoleCreateTime(roleId); - let serverTime = await getServerCreateTime(serverId); - let data = new TaskPassData(activity, createTime, serverTime); - if(data.canShow()) { - let result = await ActivityTaskPassModel.addPoint(serverId, activityId, roleId, data.roundIndex, addPoint); - return result.totalPoint; +export async function addTaskPassPoint(serverId: number, roleId: string, addPoint: number) { + try { + let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TASK_PASS); + let createTime = await getRoleCreateTime(roleId); + let serverTime = await getServerCreateTime(serverId); + + let pushResult: pushActivityInter[] = []; + for(let activityData of activities) { + let playerData = new TaskPassData(activityData, createTime, serverTime); + if(playerData.canShow()) { + let result = await ActivityTaskPassModel.addPoint(serverId, activityData.activityId, roleId, playerData.roundIndex, addPoint); + if(result) pushResult.push({ activityId: activityData.activityId, activityType: activityData.type, param: { totalPoint: result.totalPoint } }); + } + } + + return pushResult + } catch(e) { + console.error(e); + return [] } - return 0 } \ No newline at end of file