粮草先行:加入信息接续
This commit is contained in:
@@ -32,6 +32,7 @@ import { connectThinkingData, getTire } from './app/services/sdkService';
|
||||
import { loadGmDb } from './app/db';
|
||||
import { loadActivities } from './app/services/activity/activityRemoteService';
|
||||
import { checkAndSetApiIsClose } from './app/services/chatService';
|
||||
import { initGuildActivityIndexInPinus, resetJoinWoodenHorse } from './app/services/guildActivity/guildActivityService';
|
||||
|
||||
const filePath = (_pinus as any).FILEPATH;
|
||||
filePath.MASTER = '/config/master';
|
||||
@@ -178,6 +179,7 @@ async function treatStartLogic(app: _pinus.Application) {
|
||||
if(app.getServerType() == 'systimer') {
|
||||
redisService.redisSubScribe();
|
||||
timeTaskService.init();
|
||||
initGuildActivityIndexInPinus();
|
||||
}
|
||||
if(app.getServerType() == 'chat') {
|
||||
getTire();
|
||||
@@ -187,6 +189,10 @@ async function treatStartLogic(app: _pinus.Application) {
|
||||
}
|
||||
treatStartMainten(app);
|
||||
checkAndSetApiIsClose();
|
||||
if(app.getServerType() == 'guild') {
|
||||
initGuildActivityIndexInPinus()
|
||||
.then(resetJoinWoodenHorse);
|
||||
}
|
||||
|
||||
if(app.isMaster()) {
|
||||
redisService.initAllRank();
|
||||
|
||||
@@ -103,6 +103,7 @@ export class RaceActivityHandler {
|
||||
let myGuild = await UserGuildModel.getMyGuild(roleId, 'job');
|
||||
let woodenHorse = await obj.joinWoodenHorse(guildCode, roleId, roleName, serverId, sid, myGuild.job, myGuildActivityRec.code);
|
||||
if (!woodenHorse) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
await GuildActivityRecordModel.join(guildCode, serverId, this.aid, joinIndex, { roleId, roleName, job: myGuild.job, code: myGuildActivityRec.code });
|
||||
|
||||
let events = obj.getEvents(guildCode, woodenHorse.distance);
|
||||
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GUILD_RACE_JOIN, { timestamp: Date.now(), woodenHorse });
|
||||
@@ -251,20 +252,4 @@ export class RaceActivityHandler {
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
// 加入木马
|
||||
async debugResetJoin(msg: { magicWord: string }, session: BackendSession) {
|
||||
const { magicWord } = msg;
|
||||
if (magicWord !== DEBUG_MAGIC_WORD) {
|
||||
return resResult(STATUS.TOKEN_ERR);
|
||||
}
|
||||
let servers = await ServerlistModel.findByEnv(pinus.app.get('env'));
|
||||
let guild = pinus.app.getServersByType('guild');
|
||||
for(let { id: serverId } of servers) {
|
||||
let sid = dispatch(`${serverId}`, guild);
|
||||
pinus.app.rpc.guild.guildActivityRemote.debugResetJoin.toServer(sid.id, serverId);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Application, ChannelService, HandlerService, } from 'pinus';
|
||||
import { sendAllGuildRanks, calWoodenHorseAndSend, sendRaceStartMsg, setDicGuildActivity, setDicAuctionTime, settleGuildActivityReward, clearActivityObj, getGAPinusName, getCurGuildActivityIndexByDb, initGuildActivityIndexInPinus, setGuildActivityIndexInPinus, guildActivityStart, debugResetJoin, debugSendGateHp, debugAddHorse } from '../../../services/guildActivity/guildActivityService';
|
||||
import { sendAllGuildRanks, calWoodenHorseAndSend, sendRaceStartMsg, setDicGuildActivity, setDicAuctionTime, settleGuildActivityReward, clearActivityObj, setGuildActivityIndexInPinus, guildActivityStart, debugSendGateHp, debugAddHorse } from '../../../services/guildActivity/guildActivityService';
|
||||
import { gameData } from '../../../pubUtils/data';
|
||||
import { setWeek } from '../../../pubUtils/timeUtil';
|
||||
import { sendUngotDividend } from '../../../services/auctionService';
|
||||
@@ -16,7 +16,6 @@ export class GuildActivityRemote {
|
||||
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
initGuildActivityIndexInPinus();
|
||||
}
|
||||
|
||||
private currentTime: number = Date.now();
|
||||
@@ -191,14 +190,6 @@ export class GuildActivityRemote {
|
||||
}
|
||||
}
|
||||
|
||||
async debugResetJoin(serverId: number) {
|
||||
try {
|
||||
await debugResetJoin(serverId);
|
||||
} catch(e) {
|
||||
errlogger.error(`remote ${__filename} \n ${e.stack}`);
|
||||
}
|
||||
}
|
||||
|
||||
public async debugSendGateHp(serverId: number, cityId: number) {
|
||||
try {
|
||||
await debugSendGateHp(serverId, cityId);
|
||||
|
||||
@@ -4,7 +4,7 @@ import PvpDefenseType from '../../../db/PvpDefense';
|
||||
import { DicGuildActivity } from '../../../pubUtils/dictionary/DicGuildActivity';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
import { setMarquee, cancelMarquee } from '../../../services/gmService';
|
||||
import { initGuildActivityIndexInPinus, setDicAuctionTime, setDicGuildActivity } from '../../../services/guildActivity/guildActivityService';
|
||||
import { setDicAuctionTime, setDicGuildActivity } from '../../../services/guildActivity/guildActivityService';
|
||||
import { setWeek } from '../../../pubUtils/timeUtil';
|
||||
import { ServerlistType } from '../../../db/Serverlist';
|
||||
import { MarqueeType } from '../../../db/Marquee';
|
||||
@@ -27,7 +27,6 @@ export class SystimerRemote {
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
initGuildActivityIndexInPinus();
|
||||
}
|
||||
private channelService: ChannelService;
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ import { getRandSingleEelm } from "../../pubUtils/util";
|
||||
import { CounterModel } from "../../db/Counter";
|
||||
import { setInterval } from "timers";
|
||||
import { DicRaceActivity } from "../../pubUtils/dictionary/DicRaceActivity";
|
||||
import { dispatch } from "../../pubUtils/dispatcher";
|
||||
|
||||
let gateActivityObj: GateActivityObject;
|
||||
let cityActivityObj: CityActivityObject;
|
||||
@@ -873,32 +874,20 @@ export function getJoinIndex() {
|
||||
}
|
||||
|
||||
|
||||
export async function debugResetJoin(serverId: number) {
|
||||
|
||||
let serverRecord = await ServerRecordModel.findTomorrowData(serverId);
|
||||
let members = serverRecord?.activeGuildMembers||[];
|
||||
|
||||
let joinIndex = getJoinIndex();
|
||||
export async function resetJoinWoodenHorse() {
|
||||
let obj = getRaceActivityObj();
|
||||
for(let roleId of members) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
if(role) {
|
||||
let guildCode = role.guildCode;
|
||||
let roleName = role.roleName;
|
||||
let joinIndex = getJoinIndex();
|
||||
|
||||
let guild = pinus.app.getServersByType('guild');
|
||||
let recs = await GuildActivityRecordModel.findRecs(GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, joinIndex);
|
||||
for(let { serverId, guildCode, joinMember } of recs) {
|
||||
let server = dispatch(`${serverId}`, guild);
|
||||
if(server.id != pinus.app.getServerId()) continue;
|
||||
|
||||
for(let { roleId, roleName, job, code} of joinMember) {
|
||||
let hasJoin = !!obj.getMember(guildCode, roleId);
|
||||
|
||||
if (hasJoin) continue;
|
||||
|
||||
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, joinIndex, obj.getEvents(guildCode, 0));
|
||||
if (!guildActivityRec) return false;
|
||||
|
||||
let { code: sourceCode } = guildActivityRec;
|
||||
let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, GUILD_ACTIVITY_TYPE.RACE_ACTIVITY);
|
||||
let myGuild = await UserGuildModel.getMyGuild(roleId, 'job');
|
||||
if(myGuild) {
|
||||
let woodenHorse = await obj.joinWoodenHorse(guildCode, roleId, roleName, serverId, '', myGuild.job, myGuildActivityRec.code);
|
||||
}
|
||||
|
||||
await obj.joinWoodenHorse(guildCode, roleId, roleName, serverId, '', job, code);
|
||||
}
|
||||
}
|
||||
return true
|
||||
|
||||
@@ -2,7 +2,7 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { ItemReward } from '../domain/dbGeneral';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { Member, WoodenHorse, Event } from '../domain/battleField/guildActivity'
|
||||
import { Member, WoodenHorse, Event, JoinMember } from '../domain/battleField/guildActivity'
|
||||
|
||||
|
||||
@index({ code: 1 })
|
||||
@@ -42,6 +42,9 @@ export default class GuildActivityRecord extends BaseModel {
|
||||
@prop({ required: true, type: Member, default: [], _id: false })
|
||||
members: Member[]; // 参与活动的团员的roleId列表
|
||||
|
||||
@prop({ required: true, type: JoinMember, default: [], _id: false })
|
||||
joinMember: JoinMember[]; // 参与活动的团员的roleId列表
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
memberCnt: number; // 参加的团员的数量
|
||||
|
||||
@@ -102,6 +105,18 @@ export default class GuildActivityRecord extends BaseModel {
|
||||
const rec = await GuildActivityRecordModel.findOne({ guildCode, auctionType: sourceType, code: sourceCode }).select('members aid rank challengeCityId').lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async join(guildCode: string, serverId: number, aid: number, index: number, member: JoinMember) {
|
||||
let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate(
|
||||
{ guildCode, serverId, index, aid, status: 1 },
|
||||
{ $push: { joinMember: member }, $setOnInsert: { code: genCode(10) } }, { new: true, upsert: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async findRecs(aid: number, index: number) {
|
||||
let rec: GuildActivityRecordType[] = await GuildActivityRecordModel.find({ index, aid, status: 1 }).lean();
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
export const GuildActivityRecordModel = getModelForClass(GuildActivityRecord);
|
||||
|
||||
@@ -363,6 +363,11 @@ export class Member {
|
||||
code?: string; // 玩家的当前记录的code
|
||||
}
|
||||
|
||||
export class JoinMember extends Member{
|
||||
@prop({required: true})
|
||||
roleName: string; // 玩家名
|
||||
}
|
||||
|
||||
export class CityParam {
|
||||
cityId: number = 0; // 城池id
|
||||
guardGuildCode: string = ''; // 占领军团id
|
||||
|
||||
Reference in New Issue
Block a user