测试:演武台拍卖行测试

This commit is contained in:
luying
2021-10-23 16:03:42 +08:00
parent ea7309a66f
commit f71c579e30
3 changed files with 91 additions and 57 deletions
@@ -21,6 +21,7 @@ import { ActivityGroupTypeModel } from '../../../db/ActivityGroupType';
import { GuildActivityCityModel } from '../../../db/GuildActivityCity'; import { GuildActivityCityModel } from '../../../db/GuildActivityCity';
import { GuildActivityRecordModel } from '../../../db/GuildActivityRec'; import { GuildActivityRecordModel } from '../../../db/GuildActivityRec';
import { getTimeFunM } from '../../../pubUtils/timeUtil'; import { getTimeFunM } from '../../../pubUtils/timeUtil';
let timer: NodeJS.Timer;
export default function (app: Application) { export default function (app: Application) {
return new GmHandler(app); return new GmHandler(app);
} }
@@ -342,12 +343,18 @@ export class GmHandler {
* @param msg * @param msg
* @param session * @param session
*/ */
async setGuildActivityDebug(msg: { aid: number, day: number, startActivity: number, endActivity: number, startGuildAuction: number, endGuildAuction: number, startWorldAuction: number, endWorldAuction: number }, session: BackendSession) { async setGuildActivityDebug(msg: { aid: number, day: number, startActivity: number, endActivity: number, startGuildAuction: number, endGuildAuction: number, startWorldAuction: number, endWorldAuction: number, startNextDay: number }, session: BackendSession) {
const { aid, day, startActivity = 0, endActivity = 0, startGuildAuction = 0, endGuildAuction = 0, startWorldAuction = 0, endWorldAuction = 0 } = msg; let { aid, day, startActivity = 0, endActivity = 0, startGuildAuction = 0, endGuildAuction = 0, startWorldAuction = 0, endWorldAuction = 0, startNextDay = 0 } = msg;
if(timer) {
clearTimeout(timer);
}
const uid = session.get('uid'); const uid = session.get('uid');
if(aid == undefined || day == undefined ) { if(aid == undefined || day == undefined ) {
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
} }
if(aid == 0) {
day = new Date().getDay();
}
// 设置字典 // 设置字典
let now = new Date(); let now = new Date();
@@ -371,9 +378,14 @@ export class GmHandler {
await pinus.app.rpc.systimer.systimerRemote.setAuctionSchedule.broadcast(); await pinus.app.rpc.systimer.systimerRemote.setAuctionSchedule.broadcast();
await pinus.app.rpc.systimer.systimerRemote.setGuildActivitySchedule.broadcast(); await pinus.app.rpc.systimer.systimerRemote.setGuildActivitySchedule.broadcast();
// 向客户端发送时间 // 向客户端发送时间
let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 0, 0) - startActivity; let time = <number>getTimeFunM().getTimeWithWeek(day, 20, 0, 0) - startActivity * 1000;
pinus.app.rpc.guild.guildActivityRemote.setCurrentTime.broadcast(time); pinus.app.rpc.guild.guildActivityRemote.setCurrentTime.broadcast(time);
await pushCurrentTime(time); await pushCurrentTime(time);
timer = setTimeout(async () => {
let time = <number>getTimeFunM().getAfterDayWithHour(0);
pinus.app.rpc.guild.guildActivityRemote.setCurrentTime.broadcast(time);
await pushCurrentTime(time);
}, startActivity * 1000 + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000 + endWorldAuction * 1000 + startNextDay * 1000)
return resResult(STATUS.SUCCESS, { return resResult(STATUS.SUCCESS, {
startActivity: startTimes[0], startActivity: startTimes[0],
endActivity: startTimes[0] + endActivity * 1000, endActivity: startTimes[0] + endActivity * 1000,
@@ -381,13 +393,16 @@ export class GmHandler {
endGuildAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000, endGuildAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000,
startWorldAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000, startWorldAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000,
endWorldAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000 + endWorldAuction * 1000, endWorldAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000 + endWorldAuction * 1000,
startNextDay: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000 + endWorldAuction * 1000 + startNextDay * 1000,
}); });
} }
async cancelGuildActivityDebug(msg: { }, session: BackendSession) { async cancelGuildActivityDebug(msg: { }, session: BackendSession) {
// 设置字典 // 设置字典
let now = new Date(); let now = new Date();
if(timer) {
clearTimeout(timer);
}
await pinus.app.rpc.guild.guildRemote.reloadResources.broadcast(); await pinus.app.rpc.guild.guildRemote.reloadResources.broadcast();
await pinus.app.rpc.systimer.systimerRemote.reloadResources.broadcast(); await pinus.app.rpc.systimer.systimerRemote.reloadResources.broadcast();
await pinus.app.rpc.guild.guildActivityRemote.setDay.broadcast(now.getDay()); await pinus.app.rpc.guild.guildActivityRemote.setDay.broadcast(now.getDay());
@@ -130,7 +130,7 @@ export class AuctionHandler {
} }
async checkDividend(msg: {}, session: BackendSession) { async checkDividend(msg: {}, session: BackendSession) {
const begin = todayGuildBegin(); const begin = await todayGuildBegin();
const guildCode = session.get('guildCode'); const guildCode = session.get('guildCode');
if (!guildCode) return resResult(STATUS.GUILD_NOT_FOUND); if (!guildCode) return resResult(STATUS.GUILD_NOT_FOUND);
const dividends = await DividendModel.findGuildDividendsByBegin(guildCode, begin); const dividends = await DividendModel.findGuildDividendsByBegin(guildCode, begin);
@@ -155,9 +155,9 @@ export class AuctionHandler {
async myWatching(msg: {}, session: BackendSession) { async myWatching(msg: {}, session: BackendSession) {
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const begin = todayGuildBegin(); const begin = await todayGuildBegin();
const lots = await LotModel.watchingLotsByBegin(serverId, roleId, begin); const lots = await LotModel.watchingLotsByBegin(serverId, roleId, begin);
const stage = auctionStage(); const stage = await auctionStage();
return resResult(STATUS.SUCCESS, { lots: stage === AUCTION_STAGE.END ? [] : lots }); return resResult(STATUS.SUCCESS, { lots: stage === AUCTION_STAGE.END ? [] : lots });
} }
+69 -50
View File
@@ -1,7 +1,7 @@
import { DividendModel } from './../db/Dividend'; import { DividendModel } from './../db/Dividend';
import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_STATUS, LOT_STATUS, MAIL_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, DIVIDENDMAXRATIO, DIVIDENDPOSITIONMAXRATIO, ROLE_RECEIVE_STATUS, AUCTION_BID_STATUS, DEBUG_MAGIC_WORD, AUCTION_SOURCE } from './../consts'; import { LOT_CODE_LEN, AUCTION_STAGE, AUCTION_TIME, DIVIDEND_CODE_LEN, DIVIDEND_STATUS, LOT_STATUS, MAIL_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, DIVIDENDMAXRATIO, DIVIDENDPOSITIONMAXRATIO, ROLE_RECEIVE_STATUS, AUCTION_BID_STATUS, DEBUG_MAGIC_WORD, AUCTION_SOURCE } from './../consts';
import { DividendRec, ItemReward } from "../domain/dbGeneral"; import { DividendRec, ItemReward } from "../domain/dbGeneral";
import { genCode } from '../pubUtils/util'; import { genCode, getRandSingleEelm } from '../pubUtils/util';
import { LotModel, LotParam } from '../db/Lot'; import { LotModel, LotParam } from '../db/Lot';
import { getCurDay, getTimeFunD, getTimeFunM } from '../pubUtils/timeUtil'; import { getCurDay, getTimeFunD, getTimeFunM } from '../pubUtils/timeUtil';
import { gameData, getGoodById } from '../pubUtils/data'; import { gameData, getGoodById } from '../pubUtils/data';
@@ -26,12 +26,12 @@ export function getMaxPrice(gid: number, count: number) {
return (good ? good.quality * 200 : 200) * count; return (good ? good.quality * 200 : 200) * count;
} }
export function auctionStage() { export async function auctionStage() {
const curTime = new Date().getTime(); const curTime = new Date().getTime();
if (curTime < todayGuildBegin().getTime()) return AUCTION_STAGE.DEFAULT; if (curTime < (await todayGuildBegin()).getTime()) return AUCTION_STAGE.DEFAULT;
if (curTime < todayWorldBegin().getTime() && curTime > todayGuildBegin().getTime()) return AUCTION_STAGE.GUILD; if (curTime < (await todayWorldBegin()).getTime() && curTime > (await todayGuildBegin()).getTime()) return AUCTION_STAGE.GUILD;
if (curTime > todayWorldBegin().getTime() && curTime < todayWorldEnd().getTime()) return AUCTION_STAGE.WORLD; if (curTime > (await todayWorldBegin()).getTime() && curTime < (await todayWorldEnd()).getTime()) return AUCTION_STAGE.WORLD;
if (curTime > todayWorldEnd().getTime()) return AUCTION_STAGE.END; if (curTime > (await todayWorldEnd()).getTime()) return AUCTION_STAGE.END;
} }
export async function debugAuctionLots(session: FrontendOrBackendSession, begin: Date) { export async function debugAuctionLots(session: FrontendOrBackendSession, begin: Date) {
@@ -43,7 +43,7 @@ export async function debugAuctionLots(session: FrontendOrBackendSession, begin:
export async function officialAuctionLots(session: FrontendOrBackendSession, begin: Date) { export async function officialAuctionLots(session: FrontendOrBackendSession, begin: Date) {
const serverId = session.get('serverId'); const serverId = session.get('serverId');
const guildCode = session.get('guildCode'); const guildCode = session.get('guildCode');
const stage = auctionStage(); const stage = await auctionStage();
let lots = []; let lots = [];
if (stage === AUCTION_STAGE.DEFAULT || stage === AUCTION_STAGE.GUILD) { if (stage === AUCTION_STAGE.DEFAULT || stage === AUCTION_STAGE.GUILD) {
lots = await LotModel.findGuildLotsByBegin(guildCode, begin); lots = await LotModel.findGuildLotsByBegin(guildCode, begin);
@@ -54,83 +54,102 @@ export async function officialAuctionLots(session: FrontendOrBackendSession, beg
} }
// 拍卖行开始时间 今天20:20 // 拍卖行开始时间 今天20:20
export function auctionBegin() { export async function auctionBegin() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
// 军团拍卖行结束时间 20:30 // 军团拍卖行结束时间 20:30
export function guildAuctionEnd() { export async function guildAuctionEnd() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
// 拍卖行结束时间 22:00 // 拍卖行结束时间 22:00
export function auctionEnd() { export async function auctionEnd() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
// 今天军团拍卖行开始时间 20:20 // 今天军团拍卖行开始时间 20:20
export function todayGuildBegin() { export async function todayGuildBegin() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
async function getCurrentTime() {
let now = Date.now();
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME == 1) {
let guilds = pinus.app.getServersByType('guild');
let guild = getRandSingleEelm(guilds);
now = await pinus.app.rpc.guild.guildActivityRemote.getCurrentTime.toServer(guild.id);
}
return now
}
// 明天军团拍卖行开始时间 20:20 // 明天军团拍卖行开始时间 20:20
export function tomorrowGuildBegin() { export async function tomorrowGuildBegin() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
// console.log(hour, minute) // console.log(hour, minute)
return <Date>getTimeFunD().getAfterDayAndSetHour(1, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(1, hour, minute);
} }
// 明天军团拍卖行开始时间 20:20 // 明天军团拍卖行开始时间 20:20
export function tomorrowGuildEnd() { export async function tomorrowGuildEnd() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE);
// console.log(hour, minute) // console.log(hour, minute)
return <Date>getTimeFunD().getAfterDayAndSetHour(1, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(1, hour, minute);
} }
// 昨天军团拍卖行开始时间 20:20 // 昨天军团拍卖行开始时间 20:20
export function yestodayGuildBegin() { export async function yestodayGuildBegin() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
return <Date>getTimeFunD().getAfterDayAndSetHour(-1, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(-1, hour, minute);
} }
// 今天世界拍卖行开始时间 20:40 // 今天世界拍卖行开始时间 20:40
export function todayWorldBegin() { export async function todayWorldBegin() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_OPEN); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_OPEN);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
// 今天世界拍卖行结束时间 22:00 // 今天世界拍卖行结束时间 22:00
export function todayWorldEnd() { export async function todayWorldEnd() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.WORLD_CLOSE);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
// 拍卖行预览时间 20:00 // 拍卖行预览时间 20:00
export function guildAuctionPreview() { export async function guildAuctionPreview() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_PREVIEW); let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_PREVIEW);
return <Date>getTimeFunD().getAfterDayAndSetHour(0, hour, minute); return <Date>getTimeFunD(now).getAfterDayAndSetHour(0, hour, minute);
} }
// 演武台。8点以前是今天的,8点以后是明天的 // 演武台。8点以前是今天的,8点以后是明天的
export function getBossAuctionBegin() { export async function getBossAuctionBegin() {
if(Date.now() < guildAuctionPreview().getTime()) { if(Date.now() < (await guildAuctionPreview()).getTime()) {
return todayGuildBegin(); return await todayGuildBegin();
} else { } else {
return tomorrowGuildBegin(); return await tomorrowGuildBegin();
} }
} }
// 演武台。8点以前是今天的,8点以后是明天的 // 演武台。8点以前是今天的,8点以后是明天的
export function getBossAuctionEnd() { export async function getBossAuctionEnd() {
if(Date.now() < guildAuctionPreview().getTime()) { if(Date.now() < (await guildAuctionPreview()).getTime()) {
return guildAuctionEnd(); return await guildAuctionEnd();
} else { } else {
return tomorrowGuildEnd(); return await tomorrowGuildEnd();
} }
} }
@@ -144,13 +163,13 @@ export function getBossAuctionEnd() {
* @param {ItemReward[]} rewards * @param {ItemReward[]} rewards
*/ */
export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: { goods: RewardInter, basePrice: number, maxPrice: number}[]) { export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: { goods: RewardInter, basePrice: number, maxPrice: number}[]) {
let begin = auctionBegin(); let begin = await auctionBegin();
let end = auctionEnd(); let end = await auctionEnd();
if(sourceType == AUCTION_SOURCE.BOSS) { // 军团boss本 if(sourceType == AUCTION_SOURCE.BOSS) { // 军团boss本
begin = getBossAuctionBegin(); begin = await getBossAuctionBegin();
end = getBossAuctionEnd(); end = await getBossAuctionEnd();
} }
const guildEnd = guildAuctionEnd(); const guildEnd = await guildAuctionEnd();
const lotsData: LotParam[] = rewards.map(({ goods, basePrice, maxPrice }) => { const lotsData: LotParam[] = rewards.map(({ goods, basePrice, maxPrice }) => {
const { id, count } = goods; const { id, count } = goods;
const code = genCode(LOT_CODE_LEN); const code = genCode(LOT_CODE_LEN);
@@ -223,7 +242,7 @@ export async function calculateDividend(dividend: DividendType) {
export async function startGuildAuction() { export async function startGuildAuction() {
try { try {
console.log('schedule startGuildAuction called:', new Date()); console.log('schedule startGuildAuction called:', new Date());
const begin = todayGuildBegin(); const begin = await todayGuildBegin();
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.GUILD); await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.GUILD);
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.ING); await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.ING);
@@ -243,7 +262,7 @@ export async function startGuildAuction() {
export async function startWorldAuction() { export async function startWorldAuction() {
try { try {
console.log('schedule startWorldAuction called:', new Date()); console.log('schedule startWorldAuction called:', new Date());
const begin = todayGuildBegin(); const begin = await todayGuildBegin();
await LotModel.setLotSoldByBegin(begin); await LotModel.setLotSoldByBegin(begin);
await LotModel.updateUnSoldLotsStageByBegin(begin, AUCTION_STAGE.WORLD); await LotModel.updateUnSoldLotsStageByBegin(begin, AUCTION_STAGE.WORLD);
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.END); await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.END);
@@ -263,7 +282,7 @@ export async function startWorldAuction() {
export async function stopAuction() { export async function stopAuction() {
try { try {
console.log('schedule stopAuction called:', new Date()); console.log('schedule stopAuction called:', new Date());
const begin = todayGuildBegin(); const begin = await todayGuildBegin();
await LotModel.setLotSoldByBegin(begin); await LotModel.setLotSoldByBegin(begin);
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.END); await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.END);
@@ -280,28 +299,28 @@ export async function stopAuction() {
} }
async function debugDividends() { async function debugDividends() {
const begin = yestodayGuildBegin(); const begin = await yestodayGuildBegin();
const dividends = await DividendModel.findDividendsByBegin(begin); const dividends = await DividendModel.findDividendsByBegin(begin);
const todayBegin = todayGuildBegin(); const todayBegin = await todayGuildBegin();
const todayDividends = await DividendModel.findDividendsByBegin(todayBegin); const todayDividends = await DividendModel.findDividendsByBegin(todayBegin);
return [...dividends, ...todayDividends]; return [...dividends, ...todayDividends];
} }
async function officialDividends() { async function officialDividends() {
const begin = yestodayGuildBegin(); const begin = await yestodayGuildBegin();
const dividends = await DividendModel.findDividendsByBegin(begin); const dividends = await DividendModel.findDividendsByBegin(begin);
return dividends; return dividends;
} }
async function updateDebugDividendsStatus(status: number) { async function updateDebugDividendsStatus(status: number) {
const begin = yestodayGuildBegin(); const begin = await yestodayGuildBegin();
await DividendModel.updateDividendsStatus(begin, status); await DividendModel.updateDividendsStatus(begin, status);
const todayBegin = todayGuildBegin(); const todayBegin = await todayGuildBegin();
await DividendModel.updateDividendsStatus(todayBegin,status); await DividendModel.updateDividendsStatus(todayBegin,status);
} }
async function updateOfficialDividendsStatus(status: number) { async function updateOfficialDividendsStatus(status: number) {
const begin = yestodayGuildBegin(); const begin = await yestodayGuildBegin();
await DividendModel.updateDividendsStatus(begin, status); await DividendModel.updateDividendsStatus(begin, status);
} }
@@ -361,7 +380,7 @@ export async function sendUngotDividend(debug = false) {
* @param magicWord * @param magicWord
*/ */
export async function getAuction(guildCode: string, session: FrontendOrBackendSession, magicWord?: string) { export async function getAuction(guildCode: string, session: FrontendOrBackendSession, magicWord?: string) {
const begin = todayGuildBegin(); const begin = await todayGuildBegin();
let lots = magicWord === DEBUG_MAGIC_WORD ? await debugAuctionLots(session, begin) : await officialAuctionLots(session, begin); let lots = magicWord === DEBUG_MAGIC_WORD ? await debugAuctionLots(session, begin) : await officialAuctionLots(session, begin);
let dividends: DividendType[] = []; let dividends: DividendType[] = [];