军团活动:诸侯混战初始
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import { Application, ChannelService, BackendSession } from "pinus";
|
||||
import { GUILD_ACTIVITY_TYPE, STATUS } from "../../../consts";
|
||||
import { GUILD_ACTIVITY_TYPE, STATUS, CITY_STATUS } from "../../../consts";
|
||||
import { resResult } from "../../../pubUtils/util";
|
||||
import { getGuildActivityStatus } from "../../../services/guildActivityService";
|
||||
import { GuildActivityCityModel } from "../../../db/GuildActivityCity";
|
||||
import { CityParam } from "../../../domain/battleField/guildActivity";
|
||||
import { gameData } from "../../../pubUtils/data";
|
||||
|
||||
export default function (app: Application) {
|
||||
return new CityActivityHandler(app);
|
||||
@@ -18,16 +21,74 @@ export class CityActivityHandler {
|
||||
// 进入诸侯混战
|
||||
async getCityActivity(msg: {}, session: BackendSession) {
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const roleName = session.get('roleName');
|
||||
// const roleId = session.get('roleId');
|
||||
// const roleName = session.get('roleName');
|
||||
const serverId = session.get('serverId');
|
||||
const guildCode = session.get('guildCode');
|
||||
|
||||
let statusResult = getGuildActivityStatus(this.aid);
|
||||
if(!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
const dbCities = await GuildActivityCityModel.getAllCities(serverId);
|
||||
|
||||
let cities = new Array<CityParam>();
|
||||
for(let [ cityId, dic ] of gameData.cityActivity) {
|
||||
let param = new CityParam(cityId);
|
||||
let curCity = dbCities.find(cur => cur.cityId == cityId);
|
||||
|
||||
let preCity = dic.preCity;
|
||||
if(preCity && preCity.length) {
|
||||
let hasGuardCity = dbCities.find(cur => {
|
||||
return preCity.includes(cur.cityId) && cur.guardGuildCode == guildCode;
|
||||
});
|
||||
if(!!hasGuardCity) {
|
||||
param.status = CITY_STATUS.CAN_DECLARE;
|
||||
}
|
||||
} else {
|
||||
param.status = CITY_STATUS.CAN_DECLARE;
|
||||
}
|
||||
|
||||
if(curCity) {
|
||||
if(curCity.guardGuildCode == guildCode) {
|
||||
param.status = CITY_STATUS.GUARD;
|
||||
} else if (curCity.declareGuilds.includes(guildCode)) {
|
||||
param.status = CITY_STATUS.DECLARED;
|
||||
}
|
||||
param.guardGuildCode = curCity.guardGuildCode;
|
||||
param.guardGuildName = curCity.guardGuildName;
|
||||
param.declareCount = curCity.declareCount;
|
||||
}
|
||||
cities.push(param);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
...statusResult,
|
||||
cities
|
||||
});
|
||||
}
|
||||
|
||||
// 获取单个城池状态
|
||||
async getCityStatus(msg: {}, session: BackendSession) {
|
||||
|
||||
}
|
||||
|
||||
// 宣战
|
||||
async declareCity(msg: {}, session: BackendSession) {
|
||||
|
||||
}
|
||||
|
||||
// 开始挑战
|
||||
async checkBattle(msg: {}, session: BackendSession) {
|
||||
|
||||
}
|
||||
|
||||
// 上报城门受到伤害
|
||||
async hitGate(msg: {}, session: BackendSession) {
|
||||
|
||||
}
|
||||
|
||||
// 结束挑战
|
||||
async battleEnd(msg: {}, session: BackendSession) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import { GuildActivityCityModel } from "../../../db/GuildActivityCity";
|
||||
import { RoleModel, RoleType } from "../../../db/Role";
|
||||
import { GuildModel } from "../../../db/Guild";
|
||||
import { RankParam, GuildRankParam } from "../../../domain/rank";
|
||||
import { setRank, getGuildKeyName, getRankScore, getRank, getUnionRank } from "../../../services/redisService";
|
||||
import { setRank, getGuildKeyName, getRankScore, setGuildActivityRank, delGuildActivityRank } from "../../../services/redisService";
|
||||
import { REDIS_KEY } from "../../../consts";
|
||||
import { addActive } from "../../../services/guildService";
|
||||
import { gameData } from "../../../pubUtils/data";
|
||||
@@ -95,7 +95,7 @@ export class GateActivityHandler {
|
||||
obj.pushMembers(guildCode, serverId, roleId, userGuild.job);
|
||||
|
||||
// 返回当前军团总军功
|
||||
let guildScore = await getRankScore(REDIS_KEY.GUILD_ACTIVITY, serverId, guildCode);
|
||||
let guildScore = await getRankScore(REDIS_KEY.GATE_ACTIVITY, serverId, guildCode);
|
||||
|
||||
// 前一天中位数战力
|
||||
let medianCe = await getMedianCe(serverId);
|
||||
@@ -140,12 +140,12 @@ export class GateActivityHandler {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let { lv, vLv, head, frame, spine, title } = role;
|
||||
let userParam = new RankParam(roleName, lv, vLv, head, frame, spine, title);
|
||||
let myScore = await setRank(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, roleId, score, Date.now(), userParam);
|
||||
let myScore = await setGuildActivityRank(REDIS_KEY.USER_GATE_ACTIVITY, guildCode, serverId, roleId, score, Date.now(), userParam);
|
||||
|
||||
let guild = await GuildModel.findByCode(guildCode, serverId);
|
||||
let leader = <RoleType>guild.leader;
|
||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader);
|
||||
let guildScore = await setRank(REDIS_KEY.GUILD_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
||||
let guildScore = await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
||||
|
||||
// 更新数据库
|
||||
let rec = await UserGuildActivityRecModel.pushRecord(code, newRecords);
|
||||
@@ -185,8 +185,8 @@ export class GateActivityHandler {
|
||||
pinus.app.rpc.chat.guildRemote.pushGateHp.toServer(chatSid, guildCode, { gateHp });
|
||||
|
||||
// 返回当前军团总军功
|
||||
let guildScore = await getRankScore(REDIS_KEY.GUILD_ACTIVITY, serverId, guildCode);
|
||||
let myScore = await getRankScore(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, roleId, true);
|
||||
let guildScore = await getRankScore(REDIS_KEY.GATE_ACTIVITY, serverId, guildCode);
|
||||
let myScore = await getRankScore(getGuildKeyName(REDIS_KEY.USER_GATE_ACTIVITY, guildCode), serverId, roleId, true);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
code,
|
||||
@@ -234,19 +234,19 @@ export class GateActivityHandler {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let { lv, vLv, head, frame, spine, title } = role;
|
||||
let userParam = new RankParam(roleName, lv, vLv, head, frame, spine, title);
|
||||
await setRank(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, roleId, score, Date.now(), userParam);
|
||||
await setGuildActivityRank(REDIS_KEY.USER_GATE_ACTIVITY, guildCode, serverId, roleId, score, Date.now(), userParam);
|
||||
|
||||
let guild = await GuildModel.findByCode(guildCode, serverId);
|
||||
let leader = <RoleType>guild.leader;
|
||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader);
|
||||
await setRank(REDIS_KEY.GUILD_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
||||
await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
||||
}
|
||||
|
||||
// 发放活跃
|
||||
await addActive(roleId, serverId, GUILD_POINT_WAYS.ACTIVITY); //获得活跃值
|
||||
// 返回当前军团总军功
|
||||
let guildScore = await getRankScore(REDIS_KEY.GUILD_ACTIVITY, serverId, guildCode);
|
||||
let myScore = await getRankScore(getGuildKeyName(REDIS_KEY.USER_GUILD_ACTIVITY, guildCode), serverId, roleId, true);
|
||||
let guildScore = await getRankScore(REDIS_KEY.GATE_ACTIVITY, serverId, guildCode);
|
||||
let myScore = await getRankScore(getGuildKeyName(REDIS_KEY.USER_GATE_ACTIVITY, guildCode), serverId, roleId, true);
|
||||
let gateHp = obj.getGateHpAndInc(guildCode);
|
||||
|
||||
obj.delMemberRecord(code);
|
||||
@@ -308,6 +308,18 @@ export class GateActivityHandler {
|
||||
let { aid } = msg;
|
||||
let dic = gameData.guildActivity.get(aid);
|
||||
await guildActivityStart(dic);
|
||||
|
||||
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(map);
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user