军团优化:军团上次排行榜
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user