diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts new file mode 100644 index 000000000..94389d4fa --- /dev/null +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -0,0 +1,58 @@ +import { Application, BackendSession } from 'pinus'; +import { resResult } from '../../../pubUtils/util'; +import { ACTIVITY_TYPE, FIRST_GIFT_STATE, STATUS } from '../../../consts'; +import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService'; +import { RoleModel } from '../../../db/Role'; +import { addReward, stringToRewardParam, useGiftPackage } from '../../../services/giftPackageService'; +import { ActivityFirstGiftModel } from '../../../db/ActivityFirstGift'; +import { signInActivity } from '../../../services/signInService'; + +export default function (app: Application) { + return new ActivityHandler(app); +} + +export class ActivityHandler { + constructor(private app: Application) { + } + + + /** + * @description 活动是否开启总接口 + * @param {{ }} msg + * @param {BackendSession} session + * @memberof ActivityHandler + */ + async getAllOpenActivity(msg: {}, session: BackendSession) { + const { } = msg; + const roleId = session.get('roleId'); + const serverId = session.get('serverId'); + + let playerActivityArray = []; + //首冲礼包活动 + { + let data = await firstGiftActivity(serverId, roleId); + if (data) { + playerActivityArray.push({ + type: ACTIVITY_TYPE.FIRST_GIFT, + activityId: data.activityId, + data, + }); + } + } + + //签到 + { + let data = await signInActivity(serverId, roleId); + if (data) { + playerActivityArray.push({ + type: ACTIVITY_TYPE.SIGN_IN, + activityId: data.activityId, + data, + }); + } + } + + return resResult(STATUS.SUCCESS, { playerActivityArray }); + } + +} diff --git a/game-server/app/servers/activity/handler/signInHandler.ts b/game-server/app/servers/activity/handler/signInHandler.ts index 3d504f7dc..24f629227 100644 --- a/game-server/app/servers/activity/handler/signInHandler.ts +++ b/game-server/app/servers/activity/handler/signInHandler.ts @@ -1,6 +1,6 @@ import { Application, BackendSession } from 'pinus'; import { resResult } from '../../../pubUtils/util'; -import { STATUS, SIGNIN_VIP_OPEN_LIMIT, ACTIVITY_TYPE, SERVER_OPEN_TIME } from '../../../consts'; +import { STATUS, SIGNIN_VIP_OPEN_LIMIT, ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_OPEN, SIGNIN_CLOSE } from '../../../consts'; import { canBuyVip, getPlayerSignInData, signInActivity } from '../../../services/signInService'; import { addItems, createHeroes, handleCost } from '../../../services/rewardService'; import { SignInItem } from '../../../domain/activityField/signInField'; @@ -59,12 +59,12 @@ export class SignInHandler { const funcs: number[] = session.get('funcs'); let todayIndex = moment(new Date()).date(); - if (todayIndex < 5 || todayIndex > 24) {//未开启 + if (todayIndex < SIGNIN_OPEN || todayIndex > SIGNIN_CLOSE) {//未开启 return resResult(STATUS.ACTIVITY_CLOSED); } let openTime = SERVER_OPEN_TIME; - let activityData = await signInActivity(ACTIVITY_TYPE.SIGN_IN, serverId, roleId); + let activityData = await signInActivity(serverId, roleId); if (!activityData) {//未配置活动数据 return resResult(STATUS.ACTIVITY_MISSING); } diff --git a/game-server/app/services/firstGiftService.ts b/game-server/app/services/firstGiftService.ts index 382822637..eda6056c3 100644 --- a/game-server/app/services/firstGiftService.ts +++ b/game-server/app/services/firstGiftService.ts @@ -21,7 +21,7 @@ export async function firstGiftActivity(serverId: number, roleId: string) { let activityData = activityArray[0]; let playerRecord: ActivityFirstGiftModelType = await ActivityFirstGiftModel.findData(activityData.activityId, roleId); if (playerRecord.isOver) { - return true; + return null; } let playerData = new FirstGiftData(activityData); diff --git a/game-server/app/services/signInService.ts b/game-server/app/services/signInService.ts index b1e6ce5f8..6c45decdf 100644 --- a/game-server/app/services/signInService.ts +++ b/game-server/app/services/signInService.ts @@ -1,5 +1,5 @@ import moment = require('moment'); -import { SERVER_OPEN_TIME, SIGNIN_VIP_OPEN_LIMIT } from '../consts'; +import { ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_CLOSE, SIGNIN_OPEN, SIGNIN_VIP_OPEN_LIMIT } from '../consts'; import { ActivityModel, ActivityModelType } from '../db/Activity'; import { ActivitySignInModel, ActivitySignInModelType } from '../db/ActivitySignIn'; import { SignInData, SignInItem } from '../domain/activityField/signInField'; @@ -13,10 +13,19 @@ import { SignInData, SignInItem } from '../domain/activityField/signInField'; * @param {string} roleId 角色Id * */ -export async function signInActivity(type: number, serverId: number, roleId: string) { - let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, type, new Date()); +export async function signInActivity(serverId: number, roleId: string) { + let todayIndex = moment(new Date()).date(); + if (todayIndex < SIGNIN_OPEN || todayIndex > SIGNIN_CLOSE) {//未开启 + return null; + } + + let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SIGN_IN, new Date()); if (activityArray.length > 0) { - return activityArray[0]; + let activityData = activityArray[0]; + let playerData = new SignInData(activityData); + let playerRecords: ActivitySignInModelType[] = await ActivitySignInModel.findData(activityData.activityId, roleId, playerData.roundIndex); + playerData.setPlayerRecords(playerRecords); + return playerData; } return null } diff --git a/shared/consts/constModules/activityConst.ts b/shared/consts/constModules/activityConst.ts index 3b26628ad..3f46f75c1 100644 --- a/shared/consts/constModules/activityConst.ts +++ b/shared/consts/constModules/activityConst.ts @@ -92,4 +92,8 @@ export const SERVER_OPEN_TIME = '2021-05-19T20:03:16.637+08:00'; export const SIGNIN_VIP_OPEN_LIMIT = 15; //每日特惠礼包RMB购买4挡,一次性支付购买7天,每天只能领取当天的礼包奖励 -export const DAILYRMBGIFTS_DAYS = 7;//一次性购买*天 \ No newline at end of file +export const DAILYRMBGIFTS_DAYS = 7;//一次性购买*天 + +//签到活动开启时间 +export const SIGNIN_OPEN = 5;//*号0点开启 +export const SIGNIN_CLOSE = 24;//*号晚上24点结束 \ No newline at end of file