军团优化:军团上次排行榜

This commit is contained in:
luying
2022-07-22 09:41:54 +08:00
parent 1f045bd11d
commit a3af186161
17 changed files with 259 additions and 196 deletions

View File

@@ -1,16 +1,15 @@
import { Application, ChannelService, BackendSession, pinus, HandlerService, } from "pinus";
import { GUILD_ACTIVITY_TYPE, STATUS, REDIS_KEY, GUILD_POINT_WAYS, CITY_STATUS, TASK_TYPE, ITEM_CHANGE_REASON, PUSH_ROUTE, GUILD_ACTIVITY_STATUS } from "../../../consts";
import { GUILD_ACTIVITY_TYPE, STATUS, REDIS_KEY, CITY_STATUS, TASK_TYPE, ITEM_CHANGE_REASON, PUSH_ROUTE, GUILD_ACTIVITY_STATUS } from "../../../consts";
import { resResult } from "../../../pubUtils/util";
import { getGuildActivityStatus, getCityActivityObj, getCityStatus as pubGetCityStatus, getCities, getCityActivityRank, sendSingleCityActEndMsg, getPreDayActiveData, sendGuildCityDeclare, declareCity, autoDeclareMyCity } from "../../../services/guildActivity/guildActivityService";
import { getGuildActivityStatus, getCityActivityObj, getCityStatus as pubGetCityStatus, getCities, getCityActivityRank, sendSingleCityActEndMsg, getPreDayActiveData, declareCity, autoDeclareMyCity, getGAIndexInPinus, getDeclareIndex } from "../../../services/guildActivity/guildActivityService";
import { GuildActivityCityModel } from "../../../db/GuildActivityCity";
import { gameData } from "../../../pubUtils/data";
import { UserGuildActivityRecModel } from "../../../db/UserGuildActivityRec";
import { leaveCityChannel, addRoleToCityChannel, getCityChannelSid } from "../../../services/chatService";
import { leaveCityChannel, addRoleToCityChannel } from "../../../services/chatService";
import { GuildActivityRecordModel } from "../../../db/GuildActivityRec";
import { nowSeconds, getTimeFun } from "../../../pubUtils/timeUtil";
import { GUILDACTIVITY } from "../../../pubUtils/dicParam";
import { getGoldObject, handleCost } from "../../../services/role/rewardService";
import { addActive } from "../../../services/guildService";
import { Rank } from "../../../services/rankService";
import { checkTask } from "../../../services/task/taskService";
import { guildInter } from "../../../pubUtils/interface";
@@ -36,22 +35,28 @@ export class CityActivityHandler {
// 进入诸侯混战
async getCityActivity(msg: {}, session: BackendSession) {
const roleId = session.get('roleId');
// const roleName = session.get('roleName');
const roleName = session.get('roleName');
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
let index = getGAIndexInPinus(this.aid);
let declareIndex = getDeclareIndex();
let statusResult = getGuildActivityStatus(this.aid);
if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if(statusResult.status == GUILD_ACTIVITY_STATUS.START) {
await autoDeclareMyCity(serverId, roleId, guildCode);
let obj = getCityActivityObj();
if(obj.guildActivityStatus == GUILD_ACTIVITY_STATUS.START) {
await autoDeclareMyCity(serverId, roleId, guildCode, declareIndex);
}
const dbCities = await GuildActivityCityModel.getAllCities(serverId);
const dbCities = await GuildActivityCityModel.getAllCities(serverId, declareIndex);
let cities = getCities(guildCode, dbCities);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid, index);
let ranks = await getCityActivityRank(guildCode, serverId, guildActivityRec?.challengeCityId, roleId, roleName);
return resResult(STATUS.SUCCESS, {
...statusResult,
cities
cities,
...ranks
});
}
@@ -65,6 +70,8 @@ export class CityActivityHandler {
let sid = session.get('sid');
const { cityId } = msg;
let index = getGAIndexInPinus(this.aid);
let declareIndex = getDeclareIndex();
let statusResult = getGuildActivityStatus(this.aid);
if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
@@ -74,7 +81,7 @@ export class CityActivityHandler {
let obj = getCityActivityObj();
let {gateHp, maxHp} = await obj.getGateHpAndInc(serverId, cityId);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid, index);
if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS);
let myGuildActivityRec = await UserGuildActivityRecModel.findByRoleId(roleId, guildActivityRec.code);
@@ -83,7 +90,7 @@ export class CityActivityHandler {
challengeTime = myGuildActivityRec.challengeTime;
}
const dbCities = await GuildActivityCityModel.getAllCities(serverId);
const dbCities = await GuildActivityCityModel.getAllCities(serverId, declareIndex);
let cityStatus = pubGetCityStatus(guildCode, cityId, dicCity, dbCities);
if (cityStatus == CITY_STATUS.DECLARED) {
obj.pushGuild(guildCode, serverId, cityId);
@@ -120,17 +127,18 @@ export class CityActivityHandler {
let dicCity = gameData.cityActivity.get(cityId);
if (dicCity.preCity.length > 0) return resResult(STATUS.CAN_NOT_DECLARE);
let checkResult = await GuildActivityCityDeclareModel.checkDeclartion(serverId, guildCode);
let declareIndex = getDeclareIndex();
let checkResult = await GuildActivityCityDeclareModel.checkDeclartion(serverId, guildCode, declareIndex);
if (!!checkResult) return resResult(STATUS.HAS_DECLARED);
let curCity = await GuildActivityCityModel.getCity(serverId, cityId);
let curCity = await GuildActivityCityModel.getCity(serverId, cityId, declareIndex);
if (curCity && curCity.guardGuildCode) {
return resResult(STATUS.CITY_IS_GUARD);
}
let declareResult = await declareCity(serverId, roleId, guildCode, cityId, false);
let declareResult = await declareCity(serverId, roleId, guildCode, cityId, false, declareIndex);
if(!declareResult) return resResult(STATUS.HAS_DECLARED);
const dbCities = await GuildActivityCityModel.getAllCities(serverId);
const dbCities = await GuildActivityCityModel.getAllCities(serverId, declareIndex);
let cities = getCities(guildCode, dbCities);
return resResult(STATUS.SUCCESS, { cities });
}
@@ -145,10 +153,12 @@ export class CityActivityHandler {
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const sid = session.get('sid');
let index = getGAIndexInPinus(this.aid);
let declareIndex = getDeclareIndex();
if (!guildCode) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
let checkResult = await GuildActivityCityDeclareModel.checkDeclartion(serverId, guildCode);
let checkResult = await GuildActivityCityDeclareModel.checkDeclartion(serverId, guildCode, declareIndex);
if (!checkResult) return resResult(STATUS.HAS_NOT_DECLARED);
let obj = getCityActivityObj();
@@ -162,7 +172,7 @@ export class CityActivityHandler {
if (!statusResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if(!statusResult.isOpen) return resResult(STATUS.GUILD_ACTIVITY_NOT_OPEN);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid, index, [], cityId);
if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS);
let { code: sourceCode } = guildActivityRec;
@@ -180,10 +190,10 @@ export class CityActivityHandler {
obj.pushMembers(guildCode, roleId, userGuild.job, myGuildActivityRec.code);
// 返回当前军团总军功
let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId }, true);
let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId, index }, true);
let guildScore = await r.getMyScore({ guildCode });
const dbCities = await GuildActivityCityModel.getAllCities(serverId);
const dbCities = await GuildActivityCityModel.getAllCities(serverId, declareIndex);
let cityStatus = pubGetCityStatus(guildCode, cityId, dicCity, dbCities);
// 全服活跃统计
await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
@@ -212,10 +222,11 @@ export class CityActivityHandler {
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const sid = session.get('sid');
let index = getGAIndexInPinus(this.aid);
if (!guildCode) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid);
let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid, index);
if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS);
let { code: sourceCode } = guildActivityRec;
@@ -261,18 +272,27 @@ export class CityActivityHandler {
})
}
let pushResult = await UserGuildActivityRecModel.pushCityRecord(code, { round, hid, damage });
let challengeTime = nowSeconds() + GUILDACTIVITY.CITYACTIVITY_CHALLENGE_CD;
if(isDebugTime()) {
let guilds = pinus.app.getServersByType('guild');
let guild = dispatch(roleId, guilds, 'guild');
let currentTime = await pinus.app.rpc.guild.guildActivityRemote.getCurrentTime.toServer(guild.id);
challengeTime = Math.floor(currentTime/1000) + GUILDACTIVITY.CITYACTIVITY_CHALLENGE_CD;
}
let pushResult = await UserGuildActivityRecModel.pushCityRecord(code, { round, hid, damage }, challengeTime);
if (!pushResult) return resResult(STATUS.WRONG_PARMS);
let tomorrow = <number>getTimeFun().getAfterDayWithHour();
let nextWeek = <number>getTimeFun().getAfterDayWithHour(7);
// 更新redis数据
let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }, true);
let index = getGAIndexInPinus(this.aid);
let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode, index }, true);
let myScore = await myR.setRankWithRoleInfo(roleId, damage, obj.getTimeGap(), null, true);
await myR.setExpire(tomorrow);
await myR.setExpire(nextWeek);
let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId }, true);
let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId, index }, true);
let guildScore = await r.setRankWithGuildInfo(guildCode, damage, obj.getTimeGap(), null, true);
await r.setExpire(tomorrow);
await r.setExpire(nextWeek);
({gateHp, maxHp} = await obj.getGateHpAndInc(serverId, cityId, -1 * damage));
if (gateHp <= 0) {
@@ -322,9 +342,10 @@ export class CityActivityHandler {
if (!myGuildActivityRec) return resResult(STATUS.WRONG_PARMS);
// 返回当前军团总军功
let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode }, true);
let index = getGAIndexInPinus(this.aid);
let myR = new Rank(REDIS_KEY.USER_CITY_ACTIVITY, { serverId, guildCode, index }, true);
let myScore = await myR.getMyScore({ roleId });
let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId }, true);
let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId, index }, true);
let guildScore = await r.getMyScore({ guildCode });
let { gateHp, maxHp } = await obj.getGateHpAndInc(serverId, cityId);
@@ -339,16 +360,4 @@ export class CityActivityHandler {
challengeTime: myGuildActivityRec.challengeTime
});
}
// ! 测试接口
async debugResetCity(msg: { }, session: BackendSession) {
let guildCode = session.get('guildCode');
await GuildActivityCityDeclareModel.clearDeclare();
await GuildActivityCityModel.findOneAndUpdate(
{ declareGuilds: { $in: [guildCode] } },
{ $set: { guardGuildCode: "", guardGuildName: "", declareCount: 0, declareGuilds: [] } },
{ new: true }).lean();
return resResult(STATUS.SUCCESS);
}
}