测试:演武台拍卖行测试

This commit is contained in:
luying
2021-10-23 16:03:38 +08:00
parent ea7309a66f
commit f71c579e30
3 changed files with 91 additions and 57 deletions

View File

@@ -21,6 +21,7 @@ import { ActivityGroupTypeModel } from '../../../db/ActivityGroupType';
import { GuildActivityCityModel } from '../../../db/GuildActivityCity';
import { GuildActivityRecordModel } from '../../../db/GuildActivityRec';
import { getTimeFunM } from '../../../pubUtils/timeUtil';
let timer: NodeJS.Timer;
export default function (app: Application) {
return new GmHandler(app);
}
@@ -342,12 +343,18 @@ export class GmHandler {
* @param msg
* @param session
*/
async setGuildActivityDebug(msg: { aid: number, day: number, startActivity: number, endActivity: number, startGuildAuction: number, endGuildAuction: number, startWorldAuction: number, endWorldAuction: number }, session: BackendSession) {
const { aid, day, startActivity = 0, endActivity = 0, startGuildAuction = 0, endGuildAuction = 0, startWorldAuction = 0, endWorldAuction = 0 } = msg;
async setGuildActivityDebug(msg: { aid: number, day: number, startActivity: number, endActivity: number, startGuildAuction: number, endGuildAuction: number, startWorldAuction: number, endWorldAuction: number, startNextDay: number }, session: BackendSession) {
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');
if(aid == undefined || day == undefined ) {
return resResult(STATUS.WRONG_PARMS);
}
if(aid == 0) {
day = new Date().getDay();
}
// 设置字典
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.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);
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, {
startActivity: startTimes[0],
endActivity: startTimes[0] + endActivity * 1000,
@@ -381,13 +393,16 @@ export class GmHandler {
endGuildAuction: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 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,
startNextDay: startTimes[0] + endActivity * 1000 + startGuildAuction * 1000 + endGuildAuction * 1000 + startWorldAuction * 1000 + endWorldAuction * 1000 + startNextDay * 1000,
});
}
async cancelGuildActivityDebug(msg: { }, session: BackendSession) {
// 设置字典
let now = new Date();
if(timer) {
clearTimeout(timer);
}
await pinus.app.rpc.guild.guildRemote.reloadResources.broadcast();
await pinus.app.rpc.systimer.systimerRemote.reloadResources.broadcast();
await pinus.app.rpc.guild.guildActivityRemote.setDay.broadcast(now.getDay());

View File

@@ -130,7 +130,7 @@ export class AuctionHandler {
}
async checkDividend(msg: {}, session: BackendSession) {
const begin = todayGuildBegin();
const begin = await todayGuildBegin();
const guildCode = session.get('guildCode');
if (!guildCode) return resResult(STATUS.GUILD_NOT_FOUND);
const dividends = await DividendModel.findGuildDividendsByBegin(guildCode, begin);
@@ -155,9 +155,9 @@ export class AuctionHandler {
async myWatching(msg: {}, session: BackendSession) {
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const begin = todayGuildBegin();
const begin = await todayGuildBegin();
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 });
}

View File

@@ -1,7 +1,7 @@
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 { DividendRec, ItemReward } from "../domain/dbGeneral";
import { genCode } from '../pubUtils/util';
import { genCode, getRandSingleEelm } from '../pubUtils/util';
import { LotModel, LotParam } from '../db/Lot';
import { getCurDay, getTimeFunD, getTimeFunM } from '../pubUtils/timeUtil';
import { gameData, getGoodById } from '../pubUtils/data';
@@ -26,12 +26,12 @@ export function getMaxPrice(gid: number, count: number) {
return (good ? good.quality * 200 : 200) * count;
}
export function auctionStage() {
export async function auctionStage() {
const curTime = new Date().getTime();
if (curTime < todayGuildBegin().getTime()) return AUCTION_STAGE.DEFAULT;
if (curTime < todayWorldBegin().getTime() && curTime > todayGuildBegin().getTime()) return AUCTION_STAGE.GUILD;
if (curTime > todayWorldBegin().getTime() && curTime < todayWorldEnd().getTime()) return AUCTION_STAGE.WORLD;
if (curTime > todayWorldEnd().getTime()) return AUCTION_STAGE.END;
if (curTime < (await todayGuildBegin()).getTime()) return AUCTION_STAGE.DEFAULT;
if (curTime < (await todayWorldBegin()).getTime() && curTime > (await todayGuildBegin()).getTime()) return AUCTION_STAGE.GUILD;
if (curTime > (await todayWorldBegin()).getTime() && curTime < (await todayWorldEnd()).getTime()) return AUCTION_STAGE.WORLD;
if (curTime > (await todayWorldEnd()).getTime()) return AUCTION_STAGE.END;
}
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) {
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const stage = auctionStage();
const stage = await auctionStage();
let lots = [];
if (stage === AUCTION_STAGE.DEFAULT || stage === AUCTION_STAGE.GUILD) {
lots = await LotModel.findGuildLotsByBegin(guildCode, begin);
@@ -54,83 +54,102 @@ export async function officialAuctionLots(session: FrontendOrBackendSession, beg
}
// 拍卖行开始时间 今天20:20
export function auctionBegin() {
export async function auctionBegin() {
let now = await getCurrentTime();
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
export function guildAuctionEnd() {
export async function guildAuctionEnd() {
let now = await getCurrentTime();
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
export function auctionEnd() {
export async function auctionEnd() {
let now = await getCurrentTime();
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
export function todayGuildBegin() {
export async function todayGuildBegin() {
let now = await getCurrentTime();
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
export function tomorrowGuildBegin() {
export async function tomorrowGuildBegin() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_OPEN);
// console.log(hour, minute)
return <Date>getTimeFunD().getAfterDayAndSetHour(1, hour, minute);
return <Date>getTimeFunD(now).getAfterDayAndSetHour(1, hour, minute);
}
// 明天军团拍卖行开始时间 20:20
export function tomorrowGuildEnd() {
export async function tomorrowGuildEnd() {
let now = await getCurrentTime();
let { hour, minute } = gameData.auctionTime.get(AUCTION_TIME.GUILD_CLOSE);
// console.log(hour, minute)
return <Date>getTimeFunD().getAfterDayAndSetHour(1, hour, minute);
return <Date>getTimeFunD(now).getAfterDayAndSetHour(1, hour, minute);
}
// 昨天军团拍卖行开始时间 20:20
export function yestodayGuildBegin() {
export async function yestodayGuildBegin() {
let now = await getCurrentTime();
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
export function todayWorldBegin() {
export async function todayWorldBegin() {
let now = await getCurrentTime();
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
export function todayWorldEnd() {
export async function todayWorldEnd() {
let now = await getCurrentTime();
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
export function guildAuctionPreview() {
export async function guildAuctionPreview() {
let now = await getCurrentTime();
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点以后是明天的
export function getBossAuctionBegin() {
if(Date.now() < guildAuctionPreview().getTime()) {
return todayGuildBegin();
export async function getBossAuctionBegin() {
if(Date.now() < (await guildAuctionPreview()).getTime()) {
return await todayGuildBegin();
} else {
return tomorrowGuildBegin();
return await tomorrowGuildBegin();
}
}
// 演武台。8点以前是今天的8点以后是明天的
export function getBossAuctionEnd() {
if(Date.now() < guildAuctionPreview().getTime()) {
return guildAuctionEnd();
export async function getBossAuctionEnd() {
if(Date.now() < (await guildAuctionPreview()).getTime()) {
return await guildAuctionEnd();
} else {
return tomorrowGuildEnd();
return await tomorrowGuildEnd();
}
}
@@ -144,13 +163,13 @@ export function getBossAuctionEnd() {
* @param {ItemReward[]} rewards
*/
export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: { goods: RewardInter, basePrice: number, maxPrice: number}[]) {
let begin = auctionBegin();
let end = auctionEnd();
let begin = await auctionBegin();
let end = await auctionEnd();
if(sourceType == AUCTION_SOURCE.BOSS) { // 军团boss本
begin = getBossAuctionBegin();
end = getBossAuctionEnd();
begin = await getBossAuctionBegin();
end = await getBossAuctionEnd();
}
const guildEnd = guildAuctionEnd();
const guildEnd = await guildAuctionEnd();
const lotsData: LotParam[] = rewards.map(({ goods, basePrice, maxPrice }) => {
const { id, count } = goods;
const code = genCode(LOT_CODE_LEN);
@@ -223,7 +242,7 @@ export async function calculateDividend(dividend: DividendType) {
export async function startGuildAuction() {
try {
console.log('schedule startGuildAuction called:', new Date());
const begin = todayGuildBegin();
const begin = await todayGuildBegin();
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.GUILD);
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.ING);
@@ -243,7 +262,7 @@ export async function startGuildAuction() {
export async function startWorldAuction() {
try {
console.log('schedule startWorldAuction called:', new Date());
const begin = todayGuildBegin();
const begin = await todayGuildBegin();
await LotModel.setLotSoldByBegin(begin);
await LotModel.updateUnSoldLotsStageByBegin(begin, AUCTION_STAGE.WORLD);
await DividendModel.updateDividendsStatus(begin, DIVIDEND_STATUS.END);
@@ -263,7 +282,7 @@ export async function startWorldAuction() {
export async function stopAuction() {
try {
console.log('schedule stopAuction called:', new Date());
const begin = todayGuildBegin();
const begin = await todayGuildBegin();
await LotModel.setLotSoldByBegin(begin);
await LotModel.updateLotsStageByBegin(begin, AUCTION_STAGE.END);
@@ -280,28 +299,28 @@ export async function stopAuction() {
}
async function debugDividends() {
const begin = yestodayGuildBegin();
const begin = await yestodayGuildBegin();
const dividends = await DividendModel.findDividendsByBegin(begin);
const todayBegin = todayGuildBegin();
const todayBegin = await todayGuildBegin();
const todayDividends = await DividendModel.findDividendsByBegin(todayBegin);
return [...dividends, ...todayDividends];
}
async function officialDividends() {
const begin = yestodayGuildBegin();
const begin = await yestodayGuildBegin();
const dividends = await DividendModel.findDividendsByBegin(begin);
return dividends;
}
async function updateDebugDividendsStatus(status: number) {
const begin = yestodayGuildBegin();
const begin = await yestodayGuildBegin();
await DividendModel.updateDividendsStatus(begin, status);
const todayBegin = todayGuildBegin();
const todayBegin = await todayGuildBegin();
await DividendModel.updateDividendsStatus(todayBegin,status);
}
async function updateOfficialDividendsStatus(status: number) {
const begin = yestodayGuildBegin();
const begin = await yestodayGuildBegin();
await DividendModel.updateDividendsStatus(begin, status);
}
@@ -361,7 +380,7 @@ export async function sendUngotDividend(debug = false) {
* @param magicWord
*/
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 dividends: DividendType[] = [];