军团活动:修复活动结束信号发送bug
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { GroupMessageType } from './../../../db/GroupMessage';
|
||||
import { Application, ChannelService } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { ON_ADD_CHANNEL_ROUTE, ON_GROUP_MSG_ROUTE, ON_LEAVE_CHANNEL_ROUTE, STATUS } from '../../../consts';
|
||||
import { ON_ADD_CHANNEL_ROUTE, ON_GROUP_MSG_ROUTE, ON_LEAVE_CHANNEL_ROUTE, STATUS, CHANNEL_PREFIX } from '../../../consts';
|
||||
import { PrivateMessageType } from '../../../db/PrivateMessage';
|
||||
import { addUserToChannel, getSimpleRoleInfo } from '../../../services/roleService';
|
||||
import { ChannelUser } from '../../../domain/ChannelUser';
|
||||
import { getWorldChannelSid } from '../../../services/chatService';
|
||||
import { getWorldChannelSid, groupRoomId } from '../../../services/chatService';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new ChatRemote(app);
|
||||
@@ -172,7 +172,7 @@ export class ChatRemote {
|
||||
* @param serverId
|
||||
*/
|
||||
public async sendGuildActivityEnd(serverId: number) {
|
||||
let roomId = await getWorldChannelSid(serverId);
|
||||
let roomId = groupRoomId(CHANNEL_PREFIX.WORLD, serverId);
|
||||
let channel = this.channelService.getChannel(roomId, false);
|
||||
if (!channel) return;
|
||||
channel.pushMessage(this.GUILD_ACTIVITY_END, resResult(STATUS.SUCCESS, { }));
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { Application, ChannelService } from "pinus";
|
||||
import { Application, ChannelService, BackendSession } from "pinus";
|
||||
import { GUILD_ACTIVITY_TYPE, STATUS } from "../../../consts";
|
||||
import { resResult } from "../../../pubUtils/util";
|
||||
import { getGuildActivityStatus } from "../../../services/guildActivityService";
|
||||
|
||||
export default function (app: Application) {
|
||||
return new RaceActivityHandler(app);
|
||||
@@ -11,6 +14,29 @@ export class RaceActivityHandler {
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
|
||||
private aid = GUILD_ACTIVITY_TYPE.GATE_ACTIVITY; // 蛮夷入侵id
|
||||
|
||||
// 进入粮草先行界面
|
||||
async getRaceActivity(msg: {}, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const roleName = session.get('roleName');
|
||||
const serverId = session.get('serverId');
|
||||
const guildCode = session.get('guildCode');
|
||||
if(!guildCode) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
|
||||
let statusResult = getGuildActivityStatus(this.aid);
|
||||
if(!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
...statusResult,
|
||||
hasJoin: true,
|
||||
woodenHorse: {},
|
||||
guildRank:[]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY,
|
||||
import { Record, UserGuildActivityRecModel } from "../db/UserGuildActivityRec";
|
||||
import { GateMembersRec, GateActivityObject, CityActivityObject, CityParam, Member } from "../domain/battleField/guildActivity";
|
||||
import { DicGuildActivity } from "../pubUtils/dictionary/DicGuildActivity";
|
||||
import { getUnionRank, getRank, getGuildKeyName, getMyUnionRank, getRankScore, getCityKeyName } from "./redisService";
|
||||
import { getUnionRank, getRank, getGuildKeyName, getMyUnionRank, getRankScore, getCityKeyName, getAllServers } from "./redisService";
|
||||
import { GuildModel } from "../db/Guild";
|
||||
import { SimpleGuildRankParam, SimpleRoleRankParam } from "../domain/rank";
|
||||
import { getGuildChannelSid, getWorldChannelSid, getCityChannelSid } from "./chatChannelService";
|
||||
@@ -221,7 +221,7 @@ export async function sendAllGuildRanks(aid: number) {
|
||||
} else if (aid == GUILD_ACTIVITY_TYPE.CITY_ACTIVITY) {
|
||||
let obj = getCityActivityObj();
|
||||
let { cities } = obj.getAllCities();
|
||||
console.log(JSON.stringify(cities));
|
||||
// console.log(JSON.stringify(cities));
|
||||
for(let { serverId, cityId, guildCodes } of cities) {
|
||||
for(let guildCode of guildCodes) {
|
||||
let ranks = await getCityActivityRank(guildCode, serverId, cityId);
|
||||
@@ -233,7 +233,7 @@ export async function sendAllGuildRanks(aid: number) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动结束发送结束信号以及结算奖励
|
||||
* 活动结算奖励
|
||||
* @param aid 活动类型
|
||||
*/
|
||||
export async function sendGuildActEndMsg(aid: number) {
|
||||
@@ -242,9 +242,6 @@ export async function sendGuildActEndMsg(aid: number) {
|
||||
let obj = getGateActivityObj();
|
||||
let guilds = obj.getGuilds();
|
||||
for(let [ serverId, guildCodes ] of guilds) {
|
||||
let chatSid = await getWorldChannelSid(serverId);
|
||||
pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId);
|
||||
|
||||
for(let guildCode of guildCodes) {
|
||||
await gateActivitySettleReward(guildCode, serverId);
|
||||
}
|
||||
@@ -258,14 +255,21 @@ export async function sendGuildActEndMsg(aid: number) {
|
||||
}
|
||||
// 发完之后再做下周自动宣战
|
||||
for(let serverId of serverlists) {
|
||||
let chatSid = await getWorldChannelSid(serverId);
|
||||
pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId);
|
||||
await autoDeclare(serverId);
|
||||
}
|
||||
cityActivityObj = new CityActivityObject();
|
||||
}
|
||||
}
|
||||
|
||||
// 全服发送结束新号
|
||||
export async function sendEndMsgToAll() {
|
||||
let serverlist = await getAllServers();
|
||||
for(let serverId of serverlist) {
|
||||
let chatSid = await getWorldChannelSid(serverId);
|
||||
pinus.app.rpc.chat.chatRemote.sendGuildActivityEnd.toServer(chatSid, serverId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 单个军团城门血条破了之后给他发奖励
|
||||
* @param guildCode 军团code
|
||||
|
||||
@@ -5,24 +5,26 @@ import PvpDefenseType,{ PvpDefenseModel } from '../db/PvpDefense';
|
||||
import { PVP } from '../pubUtils/dicParam';
|
||||
import { nowSeconds, getTodayZeroPoint, getAge } from '../pubUtils/timeUtil';
|
||||
import { getPvpGkWarIds, getPvpRankRewards, getPvpHeroRewards, getResultMaxRank, getTodayGuildActivity } from '../pubUtils/data';
|
||||
import { deepCopy, getRandomArr, resResult, shouldRefresh } from '../pubUtils/util';
|
||||
import { deepCopy, getRandomArr, resResult } from '../pubUtils/util';
|
||||
import { getLvByScore } from './pvpService';
|
||||
import { getMyRank, setRank, resetPvpRanks, getAllOnlineRoles } from './redisService';
|
||||
import { getMyRank, setRank, resetPvpRanks, getAllOnlineRoles, delGuildActivityRank } from './redisService';
|
||||
import { MAIL_TYPE, REDIS_KEY, ADULT_AGE, GUEST_MAX_TIME, ADDICTION_PREVENTION_CODE, GUILD_ACTIVITY_STATUS, GUILD_ACTIVITY_TYPE } from '../consts';
|
||||
import { RankParam } from '../domain/rank';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { MailModel, MailType } from '../db/Mail';
|
||||
import { pinus, Application } from 'pinus';
|
||||
import { pinus } from 'pinus';
|
||||
import { indexOf } from 'underscore';
|
||||
import { PvpSeasonResultModel } from '../db/PvpSeasonResult';
|
||||
import { settleGuildWeekly } from './guildService';
|
||||
import { STATUS } from '../consts/statusCode';
|
||||
import { getMailContent, sendMail } from './mailService';
|
||||
import { reportOnline } from '../pubUtils/httpUtil';
|
||||
import User, { UserModel } from '../db/User';
|
||||
import { getGuildActivityByDic, setMedianCe } from './guildActivityService';
|
||||
import { UserModel } from '../db/User';
|
||||
import { getGuildActivityByDic, setMedianCe, sendEndMsgToAll } from './guildActivityService';
|
||||
import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService';
|
||||
import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity';
|
||||
import { GuildModel } from '../db/Guild';
|
||||
|
||||
const PER_SECOND = 1 * 1000;
|
||||
const PER_DAY = 24 * 60 * 60;
|
||||
const SETTLE_DIFF = 29 * 60;
|
||||
@@ -343,6 +345,18 @@ async function guildActivitySchedule() {
|
||||
/***********guildActivitySchedule***********/
|
||||
|
||||
let dicGuildActivity = getTodayGuildActivity();
|
||||
let map = new Map<number, string[]>();
|
||||
let guilds = await GuildModel.findAllGuild('serverId code');
|
||||
for(let { serverId, code } of guilds) {
|
||||
if(map.has(serverId)) {
|
||||
map.get(serverId).push(code);
|
||||
} else {
|
||||
map.set(serverId, [code]);
|
||||
}
|
||||
}
|
||||
await delGuildActivityRank(dicGuildActivity.id, map);
|
||||
|
||||
|
||||
scheduleJob('guildActivityStart', `0 ${dicGuildActivity.startMinute} ${dicGuildActivity.startTime} * * ?`, guildActivityStartSchedule);
|
||||
|
||||
let statusResult = getGuildActivityByDic(dicGuildActivity);
|
||||
@@ -395,7 +409,8 @@ export async function guildActivityStart(dicGuildActivity?: DicGuildActivity) {
|
||||
// 结束军团活动
|
||||
export async function gateActivityEnd() {
|
||||
|
||||
console.log('*****gateActivityEnd')
|
||||
console.log('*****gateActivityEnd');
|
||||
await sendEndMsgToAll();
|
||||
let servers = pinus.app.getServersByType('guild');
|
||||
for(let { id } of servers) {
|
||||
await pinus.app.rpc.guild.guildActivityRemote.guildActivityEnd.toServer(id, GUILD_ACTIVITY_TYPE.GATE_ACTIVITY);
|
||||
@@ -417,7 +432,8 @@ export async function gateActivitySeconds() {
|
||||
// 诸侯混战
|
||||
// 结束军团活动
|
||||
export async function cityActivityEnd() {
|
||||
console.log('*****cityActivityEnd')
|
||||
console.log('*****cityActivityEnd');
|
||||
await sendEndMsgToAll();
|
||||
let servers = pinus.app.getServersByType('guild');
|
||||
for(let { id } of servers) {
|
||||
await pinus.app.rpc.guild.guildActivityRemote.guildActivityEnd.toServer(id, GUILD_ACTIVITY_TYPE.CITY_ACTIVITY);
|
||||
|
||||
@@ -202,6 +202,22 @@ export class CityActivityObject {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 军团诸侯混战等数据
|
||||
export class RaceActivityObject {
|
||||
private members: Map<string, Array<Member>> = new Map(); // 每个军团参与的成员 guildCode => [{roleId, job}]
|
||||
private woodenHorses: Map<string, WoodenHorse> = new Map(); // 每个军团的木牛流马 guildCode => WoodenHorse
|
||||
private events: Map<string, Event[]> = new Map(); // 每个军团遇到的事件
|
||||
|
||||
getWoodenHorse(guildCode: string) {
|
||||
if(!this.woodenHorses.has(guildCode)) {
|
||||
// this.woodenHorses.set(guildCode, )
|
||||
}
|
||||
let wh = this.woodenHorses.get(guildCode);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class WoodenHorseMember {
|
||||
roleId: string;
|
||||
roleName: string;
|
||||
@@ -248,13 +264,13 @@ export class WoodenHorse {
|
||||
|
||||
export class Event {
|
||||
id: number;
|
||||
timestamp: number;
|
||||
fromGuild: string;
|
||||
toGuild: string;
|
||||
startDistance: number;
|
||||
effect: number[];
|
||||
startTime?: number;
|
||||
startDistance?: number;
|
||||
endTimestamp?: number;
|
||||
endDistance?: number;
|
||||
effect: number[];
|
||||
}
|
||||
|
||||
export interface GuildGateRankParam {
|
||||
|
||||
@@ -29,7 +29,8 @@ let arr = JSON.parse(str);
|
||||
export const dicGuildActivity = new Map<number, DicGuildActivity>();
|
||||
|
||||
arr.forEach(o => {
|
||||
o.openDay = parseNumberList(o.openDay)
|
||||
o.openDay = parseNumberList(o.openDay);
|
||||
if(!o.startMinute) o.startMinute = 0;
|
||||
dicGuildActivity.set( o.id, o );
|
||||
});
|
||||
arr = undefined;
|
||||
@@ -2,10 +2,10 @@
|
||||
{
|
||||
"id": 1,
|
||||
"name": "蛮夷入侵",
|
||||
"openDay": "3&0",
|
||||
"openDay": "4",
|
||||
"duringTime": 900,
|
||||
"startTime": 20,
|
||||
"startMinute": 0,
|
||||
"startTime": 15,
|
||||
"startMinute": 15,
|
||||
"countDown": 5,
|
||||
"warid": 7001,
|
||||
"honour": 500
|
||||
@@ -13,10 +13,10 @@
|
||||
{
|
||||
"id": 2,
|
||||
"name": "诸侯混战",
|
||||
"openDay": "2&4&6",
|
||||
"openDay": "2&6",
|
||||
"duringTime": 900,
|
||||
"startTime": 20,
|
||||
"startMinute": 0,
|
||||
"startTime": 11,
|
||||
"startMinute": 48,
|
||||
"countDown": 5,
|
||||
"warid": 7002,
|
||||
"honour": 500
|
||||
@@ -26,8 +26,8 @@
|
||||
"name": "粮草先行",
|
||||
"openDay": "1&5",
|
||||
"duringTime": 600,
|
||||
"startTime": 20,
|
||||
"startMinute": 0,
|
||||
"startTime": 11,
|
||||
"startMinute": 48,
|
||||
"countDown": 5,
|
||||
"warid": 0,
|
||||
"honour": 200
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
"star": 0,
|
||||
"spine": 0,
|
||||
"bossStage": 0,
|
||||
"enemyType": 2,
|
||||
"enemyType": 6,
|
||||
"dest_oppo": 1001
|
||||
},
|
||||
{
|
||||
@@ -422,7 +422,7 @@
|
||||
"outIndex": 11,
|
||||
"dirction": 1,
|
||||
"x": 11,
|
||||
"y": 2,
|
||||
"y": 3,
|
||||
"var": 1512,
|
||||
"lv": 30,
|
||||
"hide": 1,
|
||||
@@ -433,7 +433,7 @@
|
||||
"star": 0,
|
||||
"spine": 0,
|
||||
"bossStage": 0,
|
||||
"enemyType": 2,
|
||||
"enemyType": 6,
|
||||
"dest_oppo": 1001
|
||||
},
|
||||
{
|
||||
@@ -537,7 +537,7 @@
|
||||
"outIndex": 4,
|
||||
"dirction": 1,
|
||||
"x": 10,
|
||||
"y": 2,
|
||||
"y": 3,
|
||||
"var": 1517,
|
||||
"lv": 30,
|
||||
"hide": 1,
|
||||
@@ -560,7 +560,7 @@
|
||||
"outIndex": 5,
|
||||
"dirction": 1,
|
||||
"x": 11,
|
||||
"y": 2,
|
||||
"y": 3,
|
||||
"var": 1518,
|
||||
"lv": 30,
|
||||
"hide": 1,
|
||||
|
||||
Reference in New Issue
Block a user