后台:军团活动debug

This commit is contained in:
luying
2021-10-14 17:33:35 +08:00
parent 0dc178b155
commit 2b6b941649
9 changed files with 227 additions and 22 deletions
+21 -1
View File
@@ -3,7 +3,7 @@ import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_
import { DividendRec, ItemReward } from "../domain/dbGeneral";
import { genCode } from '../pubUtils/util';
import { LotModel, LotParam } from '../db/Lot';
import { getTimeFunD } from '../pubUtils/timeUtil';
import { getCurDay, getTimeFunD, getTimeFunM } from '../pubUtils/timeUtil';
import { gameData, getGoodById } from '../pubUtils/data';
import { DividendParam, DividendType } from '../db/Dividend';
import { sendMailByContent } from './mailService';
@@ -13,6 +13,7 @@ import { Member } from '../domain/battleField/guildActivity';
import * as dicParam from '../pubUtils/dicParam';
import { RewardInter } from '../pubUtils/interface';
import { errlogger } from '../util/logger';
import { pushCurrentTime } from './chatService';
// ! 获取底价,假数据
export function getBasePrice(gid: number, count: number) {
@@ -228,6 +229,13 @@ export async function startGuildAuction() {
const begin = todayGuildBegin();
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.GUILD);
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.ING);
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
let day = getCurDay();
let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 20, 0);
await pushCurrentTime(time);
}
return true;
} catch (e) {
console.error('startGuildAuction err: ', e);
@@ -242,6 +250,12 @@ export async function startWorldAuction() {
await LotModel.setLotSoldByBegin(begin);
await LotModel.updateUnSoldLotsStageByBegin(begin, AUCTION_STAGE.WORLD);
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.END);
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
let day = getCurDay();
let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 40, 0);
await pushCurrentTime(time);
}
return true;
} catch (e) {
console.error('startWorldAuction err: ', e);
@@ -255,6 +269,12 @@ export async function stopAuction() {
const begin = todayGuildBegin();
await LotModel.setLotSoldByBegin(begin);
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.END);
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
let day = getCurDay();
let time = <number>getTimeFunM().getTimeWithWeek(day, 22, 0, 0);
await pushCurrentTime(time);
}
return true;
} catch (e) {
console.error('stopAuction err: ', e);
+10 -1
View File
@@ -9,7 +9,7 @@ import { GroupMessageParam, GroupMessageType } from '../db/GroupMessage';
import { genCode, resResult } from '../pubUtils/util';
import { pinus } from 'pinus';
import { CHANNEL_PREFIX, MSG_CODE_LEN, MSG_STATUS, ON_PRIVATE_MSG_ROUTE, MSG_TYPE, MSG_SOURCE } from '../consts';
import { getRoleOnlineInfo } from './redisService';
import { getAllServers, getRoleOnlineInfo } from './redisService';
import { ChatInfoModel } from '../db/ChatInfo';
import { channelServer } from './chatChannelService';
import { AccuseRecModel, AccueseParam } from '../db/AccuseRec';
@@ -397,4 +397,13 @@ export async function checkFilterWords(word: string) {
}
return hasBlock;
}
export async function pushCurrentTime(time: number) {
let serverlists = await getAllServers()
for(let serverId of serverlists) {
let roomId = groupRoomId(CHANNEL_PREFIX.WORLD, serverId);
const channelSid = await channelServer(roomId);
await pinus.app.rpc.chat.chatRemote.pushCurrentTime.toServer(channelSid, serverId, time);
}
}
@@ -4,7 +4,7 @@ import { reduceCe } from "../pubUtils/util";
import { GUILDACTIVITY } from "../pubUtils/dicParam";
import { gameData, getGuildAuctionRewards, getCityActivityRewards } from "../pubUtils/data";
import { getCurDay, nowSeconds, getTimeFun } from "../pubUtils/timeUtil";
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE } from "../consts";
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE, AUCTION_TIME } from "../consts";
import { Record, UserGuildActivityRecModel } from "../db/UserGuildActivityRec";
import { GateMembersRec, CityParam, Member, WoodenHorse } from "../domain/battleField/guildActivity";
import { DicGuildActivity } from "../pubUtils/dictionary/DicGuildActivity";
@@ -106,6 +106,7 @@ export function getAllGuildActivityStatus() {
export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
let t = getTimeFun();
console.log('*********', dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds)
let startTime = <number>t.getTimeWithHour(dicGuildActivity.startTime, dicGuildActivity.startMinute, dicGuildActivity.startSeconds);
let countdownTime = <number>t.getTimeWithHour(dicGuildActivity.countDown);
let { duringTime, openDay } = dicGuildActivity;
@@ -735,4 +736,50 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
export async function sendPopUpActivityData(guildCode: string, serverId: number, data: any[]) {
let chatSid = await getGuildChannelSid(guildCode);
pinus.app.rpc.chat.guildRemote.sendPopUpActivity.toServer(chatSid, guildCode, data);
}
/**
* !! 注意,这条函数会改变内存中的字典表,仅用于测试中使用
* 改变字典表中的军团活动开始时间&持续时间
* @param {number} aid 活动
* @param {number} startSeconds 从现在开始几秒后开启活动
* @param {number} endSeconds 从开始之后几秒后结束活动
*/
export async function setDicGuildActivity(now: number, aid: number, startSeconds: number, endSeconds: number) {
let startTime = new Date(now + startSeconds * 1000);
if(aid != 0) {
let guildActivity = gameData.guildActivity;
let cur = guildActivity.get(aid);
cur.startMinute = startTime.getMinutes();
cur.startTime = startTime.getHours();
cur.startSeconds = startTime.getSeconds();
cur.duringTime = endSeconds;
}
return startTime.getTime();
}
export async function setDicAuctionTime(startTime: number, endActivity: number, startGuild: number, endGuild: number, startWorld: number, endWorld: number) {
console.log('********* setDicAuctionTime', startTime, endActivity, startGuild, endGuild, startWorld, endWorld);
let startGuildDate = new Date(startTime + endActivity * 1000 + startGuild * 1000);
let endGuildDate = new Date(startGuildDate.getTime() + endGuild * 1000);
let startWorldDate = new Date(endGuildDate.getTime() + startWorld * 1000);
let endWorldDate = new Date(startWorldDate.getTime() + endWorld * 1000);
console.log('********* setDicAuctionTime', startGuildDate, endGuildDate, startWorldDate, endWorldDate);
gameData.auctionTime.set(AUCTION_TIME.GUILD_PREVIEW, formatTime(new Date(startTime)));
gameData.auctionTime.set(AUCTION_TIME.GUILD_OPEN, formatTime(startGuildDate));
gameData.auctionTime.set(AUCTION_TIME.GUILD_CLOSE, formatTime(endGuildDate));
gameData.auctionTime.set(AUCTION_TIME.WORLD_PREVIEW, formatTime(endGuildDate));
gameData.auctionTime.set(AUCTION_TIME.WORLD_OPEN, formatTime(startWorldDate));
gameData.auctionTime.set(AUCTION_TIME.WORLD_CLOSE, formatTime(endWorldDate));
console.log('*********** setDicAuctionTime', gameData.auctionTime)
}
function formatTime(date: Date) {
return { hour: date.getHours(), minute: date.getMinutes(), seconds: date.getSeconds() }
}
+44 -10
View File
@@ -2,7 +2,7 @@
import { scheduleJob, Job, } from 'node-schedule';
import { PVPConfigModel } from '../db/SystemConfig';
import PvpDefenseType, { PvpDefenseModel } from '../db/PvpDefense';
import { PVP } from '../pubUtils/dicParam';
import { PVP, SERVER_DEBUG_MODE } from '../pubUtils/dicParam';
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
import { getPvpGkWarIds, getPvpRankRewards, getPvpHeroRewards, getResultMaxRank, getTodayGuildActivity, gameData } from '../pubUtils/data';
import { deepCopy, getRandSingleEelm } from '../pubUtils/util';
@@ -36,6 +36,7 @@ var seasonMakeRewardTimJobId: Job;
var warJobId: Job;
var seasonRefreshTimeJobId: Job;
let guildWeeklyJobId: Job;
let guildActStartJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
let guildActSecondsJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
let guildActEndJobId: Job; // 军团活动开启后每10(or 1)秒循环的定时任务,到结束活动清除
let pvpMakeRewardInterval = null;
@@ -342,13 +343,18 @@ export async function reportOnlineSchedule() {
/**
* 军团活动,每晚8点开启
*/
async function guildActivitySchedule() {
export async function guildActivitySchedule() {
/***********guildActivitySchedule***********/
if (guildActStartJobId) {
guildActStartJobId.cancel();
}
let dicGuildActivity = getTodayGuildActivity();
await delGuildActivityRank(dicGuildActivity.id);
scheduleJob('guildActivityStart', `${dicGuildActivity.startSeconds} ${dicGuildActivity.startMinute} ${dicGuildActivity.startTime} * * ?`, guildActivityStartSchedule);
console.log(dicGuildActivity)
guildActStartJobId = scheduleJob('guildActivityStart', `${dicGuildActivity.startSeconds} ${dicGuildActivity.startMinute} ${dicGuildActivity.startTime} * * ?`, guildActivityStartSchedule);
}
// 军团晚间活动,每天8点开始
@@ -365,6 +371,7 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
return false
}
console.log('********', dicGuildActivity.id, Date.now() + dicGuildActivity.duringTime * 1000)
let servers = await getAllServers(); // 玩家serverId列表
if (dicGuildActivity.id == GUILD_ACTIVITY_TYPE.GATE_ACTIVITY) {
guildActSecondsJobId = scheduleJob('guildActivitySeconds', '*/10 * * * * *', gateActivitySeconds);
@@ -458,8 +465,6 @@ export async function raceActivityEnd() {
guildActSecondsJobId = undefined;
}
if (guildActEndJobId) {
guildActEndJobId.cancel();
guildActEndJobId = undefined;
}
@@ -476,13 +481,42 @@ export async function raceActivitySeconds() {
}
}
function auctionSchedule() {
let startGuildAuctionJobId: Job;
let startWorldAuctionJobId: Job;
let stopAuctionJobId: Job;
let sendUngotDividendJobId: Job;
export function auctionSchedule() {
clearAuctionSchedule();
let guildOpen = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
let worldOpen = gameData.auctionTime.get(AUCTION_TIME.WORLD_OPEN);
let worldClose = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE);
scheduleJob('startGuildAuction', `0 0 ${guildOpen.hour} ${guildOpen.minute} * ?`, startGuildAuction);
scheduleJob('startWorldAuction', `0 0 ${worldOpen.hour} ${worldOpen.minute} * ?`, startWorldAuction);
scheduleJob('stopAuction', `0 0 ${worldClose.hour} ${worldClose.minute} * ?`, stopAuction);
scheduleJob('sendUngotDividendJob', '0 0 5 00 * ?', sendUngotDividendJob);
console.log('***** auctionSchedule', guildOpen.hour, guildOpen.minute, guildOpen.seconds);
console.log('***** auctionSchedule', worldOpen.hour, worldOpen.minute, worldOpen.seconds);
console.log('***** auctionSchedule', worldClose.hour, worldClose.minute, worldClose.seconds);
startGuildAuctionJobId = scheduleJob('startGuildAuction', `${guildOpen.seconds} ${guildOpen.minute} ${guildOpen.hour} * * ?`, startGuildAuction);
startWorldAuctionJobId = scheduleJob('startWorldAuction', `${worldOpen.seconds} ${worldOpen.minute} ${worldOpen.hour} * * ?`, startWorldAuction);
stopAuctionJobId = scheduleJob('stopAuction', `${worldClose.seconds} ${worldClose.minute} ${worldClose.hour} * * ?`, stopAuction);
sendUngotDividendJobId = scheduleJob('sendUngotDividendJob', '0 0 5 00 * ?', sendUngotDividendJob);
}
function clearAuctionSchedule() {
if (startGuildAuctionJobId) {
startGuildAuctionJobId.cancel();
startGuildAuctionJobId = undefined;
}
if (startWorldAuctionJobId) {
startWorldAuctionJobId.cancel();
startWorldAuctionJobId = undefined;
}
if (stopAuctionJobId) {
stopAuctionJobId.cancel();
stopAuctionJobId = undefined;
}
if (sendUngotDividendJobId) {
sendUngotDividendJobId.cancel();
sendUngotDividendJobId = undefined;
}
}