测试:演武台拍卖行测试
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
|
||||
@@ -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[] = [];
|
||||
|
||||
Reference in New Issue
Block a user