diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts index 51cfa193e..9bfd9daa9 100644 --- a/game-server/app/servers/activity/handler/activityHandler.ts +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -233,7 +233,7 @@ export class ActivityHandler { let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2); if (data) { playerActivityArray.push({ - type: ACTIVITY_TYPE.MONTHLY_TICKET_1, + type: ACTIVITY_TYPE.MONTHLY_TICKET_2, activityId: data.activityId, data, }); diff --git a/game-server/app/services/giftPackageService.ts b/game-server/app/services/giftPackageService.ts index 62abe1205..36cd9f9cb 100644 --- a/game-server/app/services/giftPackageService.ts +++ b/game-server/app/services/giftPackageService.ts @@ -142,4 +142,19 @@ export function stringToConsumeParam(rewardStr: string): Array { result.push({ type: parseInt(type), id: parseInt(id), count: parseInt(count) }); } return result -} \ No newline at end of file +} + +//数据格式转换'id&数量|id&数量|' ->> Array 老资源格式 +export function stringToRewardInter(rewardStr: string): Array { + let result = new Array<{ id: number, count: number }>(); + if (!rewardStr) return result; + let decodeArr = decodeArrayListStr(rewardStr); + for (let [type, id, count] of decodeArr) { + if (isNaN(parseInt(id)) || isNaN(parseInt(count))) { + throw new Error('data table format wrong'); + } + result.push({ id: parseInt(id), count: parseInt(count) }); + } + return result +} + diff --git a/game-server/app/services/monthlyTicketService.ts b/game-server/app/services/monthlyTicketService.ts index a9b6aa303..5777f2e88 100644 --- a/game-server/app/services/monthlyTicketService.ts +++ b/game-server/app/services/monthlyTicketService.ts @@ -1,11 +1,16 @@ -import { ACTIVITY_TYPE, TASK_TYPE } from '../consts'; +import { ACTIVITY_TYPE, MAIL_TYPE, STATUS, TASK_TYPE } from '../consts'; import { ActivityModel, ActivityModelType } from '../db/Activity'; import { ActivityMonthlyTicketModel, ActivityMonthlyTicketModelType } from '../db/ActivityMonthlyTicket'; import { RewardParam } from '../domain/activityField/rewardField'; import { MonthlyTicketData } from '../domain/activityField/monthlyTicketField'; -import { addReward, stringToRewardParam } from './giftPackageService'; +import { addReward, stringToRewardInter, stringToRewardParam } from './giftPackageService'; import moment = require('moment'); import { ServerlistModel } from '../db/Serverlist'; +import { getMailContent } from './mailService'; +import { MailModel, MailType } from '../db/Mail'; +import { pushMail } from '../pubUtils/interface'; +import { pinus } from 'pinus'; +import { resResult } from '../pubUtils/util'; /** * 获取活动数据 @@ -29,6 +34,25 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId); let playerData = new MonthlyTicketData(activityData); playerData.setPlayerRecords(playerRecord); + + if ((playerData.price > 0 && playerData.isOpen) || playerData.price === 0) { + if (playerData.todayIndex - 1 > playerData.dayIndex) {//过期还没领取 + //下发邮件奖励 + let mails = new Array(); + let pushMessage = new Array(); + for (let i = playerData.dayIndex + 1; i < playerData.todayIndex; i++) { + let goods = stringToRewardInter(playerData.baseReward) + await getMailContent(roleId, MAIL_TYPE.MONTHLY_REWARD, [], goods, mails, pushMessage); + } + + await MailModel.addMails(mails); + pushMessage.forEach(({ route, data, uids }) => { + pinus.app.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, { mails: data }), uids); + }); + await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, playerData.activityId, playerData.todayIndex - 1); + playerData.dayIndex = playerData.todayIndex - 1; + } + } return playerData; } @@ -59,14 +83,15 @@ export async function getPlayerMonthlyTicketData(activityId: number, serverId: n export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], activityId: number,) { let activityData: ActivityModelType = await ActivityModel.findActivity(activityId); + let playerData = new MonthlyTicketData(activityData); + let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId); - if (!playerRecord) {//没有购买过 + if (playerData.price > 0 && !playerRecord) {//没有购买过 return null; } - let playerData = new MonthlyTicketData(activityData); playerData.setPlayerRecords(playerRecord); - if (playerData.isOpen) { + if ((playerData.price > 0 && playerData.isOpen) || playerData.price == 0) { if (playerData.todayIndex > playerData.dayIndex) {//今天还没领取 await ActivityMonthlyTicketModel.setDayIndex(serverId, roleId, activityId, playerData.todayIndex); let rewardParamArr: Array = stringToRewardParam(playerData.baseReward); diff --git a/game-server/app/services/orderService.ts b/game-server/app/services/orderService.ts index 71881d7ff..038335b2c 100644 --- a/game-server/app/services/orderService.ts +++ b/game-server/app/services/orderService.ts @@ -84,6 +84,18 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us rewardResult = await makePopUpShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID) break; } + case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: + { + break; + } + case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: + { + break; + } + case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP: + { + break; + } default: break; } diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index 8e48b0e0f..bd7484d71 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -475,6 +475,7 @@ export const MAIL_TYPE = { PVP_RANK_REWARD: 13, GUILD_ACTIVITY_REWARD: 14, GUILD_DIVIDEND: 15, // 拍卖行分红 + MONTHLY_REWARD: 16, // 月卡奖品 }; export const CHAT_SERVER = 'chat-server-1';