diff --git a/game-server/app/servers/battle/handler/auctionHandler.ts b/game-server/app/servers/battle/handler/auctionHandler.ts index 7e17cde0c..6c647cf2e 100644 --- a/game-server/app/servers/battle/handler/auctionHandler.ts +++ b/game-server/app/servers/battle/handler/auctionHandler.ts @@ -270,7 +270,7 @@ export class AuctionHandler { if (magicWord !== DEBUG_MAGIC_WORD) { return resResult(STATUS.TOKEN_ERR); } - const result = await sendUngotDividend(); + const result = await sendUngotDividend(true); if (result === true) { return resResult(STATUS.SUCCESS); } diff --git a/game-server/app/services/auctionService.ts b/game-server/app/services/auctionService.ts index c247880e8..cb3097399 100644 --- a/game-server/app/services/auctionService.ts +++ b/game-server/app/services/auctionService.ts @@ -202,14 +202,48 @@ export async function stopAuction() { } } -export async function sendUngotDividend() { +async function debugDividends() { + const begin = yestodayGuildBegin(); + const dividends = await DividendModel.findDividendsByBegin(begin); + const todayBegin = todayGuildBegin(); + const todayDividends = await DividendModel.findDividendsByBegin(todayBegin); + return [...dividends, ...todayDividends]; +} + +async function officialDividends() { + const begin = yestodayGuildBegin(); + const dividends = await DividendModel.findDividendsByBegin(begin); + return dividends; +} + +async function updateDebugDividendsStatus(status: number) { + const begin = yestodayGuildBegin(); + await DividendModel.updateDividendsStatus(begin, status); + const todayBegin = todayGuildBegin(); + await DividendModel.updateDividendsStatus(todayBegin,status); +} + +async function updateOfficialDividendsStatus(status: number) { + const begin = yestodayGuildBegin(); + await DividendModel.updateDividendsStatus(begin, status); +} + +export async function sendUngotDividendJob() { + try { + return await sendUngotDividend(); + } catch (e) { + console.error('sendUngotDividend err: ', e); + return false; + } +} + +export async function sendUngotDividend(debug = false) { try { console.log('schedule sendUngotDividend called:', new Date()); - const begin = yestodayGuildBegin(); - const dividends = await DividendModel.findDividendsByBegin(begin); + const dividends = debug === true ? await debugDividends() : await officialDividends(); const rewards = new Map(); for (let dividend of dividends) { - if (!dividend.dividends) continue; + if (!dividend.dividends || dividend.status === DIVIDEND_STATUS.SENT) continue; for (let dividendRec of dividend.dividends) { if (dividendRec.status === ROLE_RECEIVE_STATUS.YES) continue; const sum = rewards.get(dividendRec.roleId) || 0; @@ -227,7 +261,7 @@ export async function sendUngotDividend() { pushMessage.forEach(({route, data, uids })=>{ pinus.app.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, { mails: data }), uids); }); - await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.SENT); + debug === true ? await updateDebugDividendsStatus(DIVIDEND_STATUS.SENT) : await updateOfficialDividendsStatus(DIVIDEND_STATUS.SENT); return true; } catch (e) { console.error('sendUngotDividend err: ', e); diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index 319c5791a..2c41cd277 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -21,7 +21,7 @@ import { getMailContent, sendMail } from './mailService'; import { reportOnline } from '../pubUtils/httpUtil'; import User, { UserModel } from '../db/User'; import { getGuildActivityByDic, setMedianCe } from './guildActivityService'; -import { sendUngotDividend, startGuildAuction, startWorldAuction, stopAuction } from './auctionService'; +import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService'; import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity'; const PER_SECOND = 1 * 1000; const PER_DAY = 24 * 60 * 60; @@ -410,5 +410,5 @@ function auctionSchedule() { scheduleJob('startGuildAuction', '0 0 20 20 * ?', startGuildAuction); scheduleJob('startWorldAuction', '0 0 20 30 * ?', startWorldAuction); scheduleJob('stopAuction', '0 0 22 00 * ?', stopAuction); - scheduleJob('sendUngotDividend', '0 0 5 00 * ?', sendUngotDividend); + scheduleJob('sendUngotDividendJob', '0 0 5 00 * ?', sendUngotDividendJob); }