diff --git a/game-server/app/servers/guild/handler/cityActivityHandler.ts b/game-server/app/servers/guild/handler/cityActivityHandler.ts index d6921099a..140e36a0c 100644 --- a/game-server/app/servers/guild/handler/cityActivityHandler.ts +++ b/game-server/app/servers/guild/handler/cityActivityHandler.ts @@ -12,7 +12,7 @@ import { nowSeconds, getBeforeMinuteSeconds } from "../../../pubUtils/timeUtil"; import { getGoldObject } from "../../../pubUtils/itemUtils"; import { GUILDACTIVITY } from "../../../pubUtils/dicParam"; import { handleCost } from "../../../services/rewardService"; -import { getRankScore, getCityKeyName, getGuildKeyName, setGuildActivityRank, setRank } from "../../../services/redisService"; +import { getRankScore, getCityKeyName, getGuildKeyName, setUserGuildActivityRank, setRank } from "../../../services/redisService"; import { RoleModel, RoleType } from "../../../db/Role"; import { RankParam, GuildRankParam } from "../../../domain/rank"; import { GuildModel } from "../../../db/Guild"; @@ -28,7 +28,7 @@ export class CityActivityHandler { this.channelService = app.get('channelService'); } - private aid = GUILD_ACTIVITY_TYPE.CITY_ACTIVITY; // 蛮夷入侵id + private aid = GUILD_ACTIVITY_TYPE.CITY_ACTIVITY; // 诸侯混战id // 进入诸侯混战 async getCityActivity(msg: {}, session: BackendSession) { @@ -136,6 +136,10 @@ export class CityActivityHandler { const sid = session.get('sid'); if(!guildCode) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH); + + let checkResult = await GuildActivityCityModel.checkDeclartion(serverId, guildCode); + if(!checkResult) return resResult(STATUS.HAS_NOT_DECLARED); + let obj = getCityActivityObj(); const dicCity = gameData.cityActivity.get(cityId); @@ -227,12 +231,12 @@ export class CityActivityHandler { 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 setGuildActivityRank(REDIS_KEY.USER_CITY_ACTIVITY, guildCode, serverId, roleId, damage, Date.now(), userParam); + let myScore = await setUserGuildActivityRank(REDIS_KEY.USER_CITY_ACTIVITY, guildCode, serverId, roleId, damage, Date.now(), userParam); let guild = await GuildModel.findByCode(guildCode, serverId); let leader = guild.leader; let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader); - let guildScore = await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, damage, Date.now(), params, true); + let guildScore = await setRank(getCityKeyName(REDIS_KEY.CITY_ACTIVITY, cityId), serverId, guild.code, damage, Date.now(), params, true); return resResult(STATUS.SUCCESS, { code, diff --git a/game-server/app/servers/guild/handler/gateActivityHandler.ts b/game-server/app/servers/guild/handler/gateActivityHandler.ts index ebab88a80..3651049f0 100644 --- a/game-server/app/servers/guild/handler/gateActivityHandler.ts +++ b/game-server/app/servers/guild/handler/gateActivityHandler.ts @@ -10,7 +10,7 @@ import { GuildActivityRecordModel } from "../../../db/GuildActivityRec"; import { RoleModel, RoleType } from "../../../db/Role"; import { GuildModel } from "../../../db/Guild"; import { RankParam, GuildRankParam } from "../../../domain/rank"; -import { setRank, getGuildKeyName, getRankScore, setGuildActivityRank, delGuildActivityRank } from "../../../services/redisService"; +import { setRank, getGuildKeyName, getRankScore, setUserGuildActivityRank, delGuildActivityRank } from "../../../services/redisService"; import { REDIS_KEY } from "../../../consts"; import { addActive } from "../../../services/guildService"; import { gameData } from "../../../pubUtils/data"; @@ -139,7 +139,7 @@ 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 setGuildActivityRank(REDIS_KEY.USER_GATE_ACTIVITY, guildCode, serverId, roleId, score, Date.now(), userParam); + let myScore = await setUserGuildActivityRank(REDIS_KEY.USER_GATE_ACTIVITY, guildCode, serverId, roleId, score, Date.now(), userParam); let guild = await GuildModel.findByCode(guildCode, serverId); let leader = guild.leader; @@ -233,7 +233,7 @@ 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 setGuildActivityRank(REDIS_KEY.USER_GATE_ACTIVITY, guildCode, serverId, roleId, score, Date.now(), userParam); + await setUserGuildActivityRank(REDIS_KEY.USER_GATE_ACTIVITY, guildCode, serverId, roleId, score, Date.now(), userParam); let guild = await GuildModel.findByCode(guildCode, serverId); let leader = guild.leader; @@ -265,16 +265,7 @@ export class GateActivityHandler { }) } - - // TODO debug接口,可以不用 - async newServer() { - let serverlist = await GameModel.getAllServerList(); - for(let server of serverlist) { - - await ServerlistModel.newServer(server.id, server.serverType, {...server}); - } - } - + // ! 测试接口 async debugGetPrivate(msg: { }, session: BackendSession) { let guildCode = session.get('guildCode'); console.log(guildCode); @@ -283,6 +274,7 @@ export class GateActivityHandler { return resResult(STATUS.SUCCESS, res) } + // ! 测试接口 async test(msg: { sourceType: number, sourceCode: string }, session: BackendSession) { let guildCode = session.get('guildCode'); let serverId = session.get('serverId'); @@ -296,6 +288,7 @@ export class GateActivityHandler { // return resResult(STATUS.SUCCESS, {result}); } + // ! 测试接口 async debugIncChallengeCnt(msg: { }, session: BackendSession) { let roleId = session.get('roleId'); let res = await UserGuildActivityRecModel.updateInfoByRoleId(roleId, { challengeCnt: 0 }); @@ -303,6 +296,7 @@ export class GateActivityHandler { return resResult(STATUS.SUCCESS, { challengeCnt: res.challengeCnt }); } + // ! 测试接口 async debugStartActivity(msg: { aid: number }, session: BackendSession) { let { aid } = msg; let dic = gameData.guildActivity.get(aid); @@ -322,6 +316,7 @@ export class GateActivityHandler { return resResult(STATUS.SUCCESS); } + // ! 测试接口 async debugEndActivity(msg: { aid: number }, session: BackendSession) { let { aid } = msg; await sendGuildActEndMsg(aid); diff --git a/game-server/app/services/guildActivityService.ts b/game-server/app/services/guildActivityService.ts index 913300dd8..e43d50178 100644 --- a/game-server/app/services/guildActivityService.ts +++ b/game-server/app/services/guildActivityService.ts @@ -152,7 +152,7 @@ export async function getGateActivityRank(guildCode: string, serverId: number, r } export async function getCityActivityRank(guildCode: string, serverId: number, cityId: number, roleId?: string, roleName?: string) { - let guildKey = getCityKeyName(REDIS_KEY.USER_CITY_ACTIVITY, cityId); + let guildKey = getCityKeyName(REDIS_KEY.CITY_ACTIVITY, cityId); let memberKey = getGuildKeyName(REDIS_KEY.USER_CITY_ACTIVITY, guildCode); let rec = await getGuildActivityRank(guildKey, memberKey, guildCode, serverId, roleId, roleName); return rec; diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index c61d8efee..dd6981591 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -173,7 +173,7 @@ export async function setRank(key: string, serverId: number, myId: string, score if(!hasCurUser) { await redisUserInfoAdd(infoKey, myId, params); } - return newScore; + return parseInt(newScore.toString()); } // 获取排行榜 @@ -183,6 +183,7 @@ export async function getRank(key: string, serverId: number, roleId: string, lim const rankFromDb = await redisClient().zrevrangebyscoreAsync(getKeyName(key, serverId), '+inf', '-inf', "WITHSCORES", "LIMIT", 0, limit); let _key = key.split(':')[0]; + console.log('****', _key) let infoKey = REDIS_RANK_TO_INFO.get(_key)||REDIS_KEY.USER_INFO; for(let ii = 0; ii < rankFromDb.length; ii+=2) { @@ -606,6 +607,7 @@ export async function getUnionRank(key: string, serverId: number, roleId: string const rankFromDb = await redisClient().zrevrangebyscoreAsync(unionKey, '+inf', '-inf', "WITHSCORES", "LIMIT", 0, limit); let _key = key.split(':')[0]; + console.log(_key) let infoKey = REDIS_RANK_TO_INFO.get(_key)||REDIS_KEY.USER_INFO; for(let ii = 0; ii < rankFromDb.length; ii+=2) { @@ -647,9 +649,10 @@ export async function getRankScore(key: string, serverId: number, field: string, return parseInt(score.toString()); } -export async function setGuildActivityRank(key: string, guildCode: string, serverId: number, roleId: string, score: number, time: number, userParam: RankParam) { - let nkey = getGuildKeyName(key, guildCode); - let nScore = await setRank(nkey, serverId, roleId, score, time, userParam); +export async function setUserGuildActivityRank(key: string, guildCode: string, serverId: number, roleId: string, score: number, time: number, userParam: RankParam) { + let nkey = getGuildKeyName(key, guildCode); + let oldScore = await getRankScore(nkey, serverId, roleId, true); + let nScore = await setRank(nkey, serverId, roleId, oldScore + score, time, userParam); await redisClient().expireatAsync(getKeyName(nkey, serverId), getNextHourPoint(5)) return nScore } diff --git a/game-server/app/util/routeUtil.ts b/game-server/app/util/routeUtil.ts index 56cc138ad..e0d16266e 100644 --- a/game-server/app/util/routeUtil.ts +++ b/game-server/app/util/routeUtil.ts @@ -69,7 +69,7 @@ export function guild(session: Session, msg: any, app: Application, cb: (err: Er } else if (['guild.cityActivityHandler.getCityStatus' ].indexOf(arg.route) !== -1) { if (arg.body.cityId) { - rid = arg.body.cityId; + rid = arg.body.cityId.toString(); } } } diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index c832c5ea4..209a088bb 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -245,7 +245,9 @@ export const REDIS_RANK_TO_INFO = new Map([ [REDIS_KEY.PVP_RANK, REDIS_KEY.USER_INFO], [REDIS_KEY.GUILD_ACTIVE_RANK, REDIS_KEY.GUILD_INFO], [REDIS_KEY.GATE_ACTIVITY, REDIS_KEY.GUILD_INFO], - [REDIS_KEY.USER_GATE_ACTIVITY, REDIS_KEY.USER_INFO] + [REDIS_KEY.USER_GATE_ACTIVITY, REDIS_KEY.USER_INFO], + [REDIS_KEY.CITY_ACTIVITY, REDIS_KEY.GUILD_INFO], + [REDIS_KEY.USER_CITY_ACTIVITY, REDIS_KEY.USER_INFO] ]); export const FUNC_OPT_TYPE = { diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index 666d8d16a..d03f3410f 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -205,6 +205,7 @@ export const STATUS = { CHALLENGE_CNT_NOT_ENOUGH: { code: 21102, simStr: '挑战次数不足' }, HAS_DECLARED: { code: 21103, simStr: '已宣战过' }, CHALLENGE_TIME_NOT_REACH: { code: 21104, simStr: '挑战冷却中' }, + HAS_NOT_DECLARED: { code: 21105, simStr: '军团还未宣战过' }, // 通用 30000 - 30099 DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' }, diff --git a/shared/db/GuildActivityCity.ts b/shared/db/GuildActivityCity.ts index 9fe04b63c..db825abde 100644 --- a/shared/db/GuildActivityCity.ts +++ b/shared/db/GuildActivityCity.ts @@ -36,7 +36,7 @@ export default class GuildActivityCity extends BaseModel { public static async checkDeclartion(serverId: number, guildCode: string) { let today = getTodayZeroDate(); let rec: GuildActivityCityType = await GuildActivityCityModel.findOne( - { serverId, createdAt: { $gte: today }, $in: { declareGuilds: [guildCode]}}).lean(); + { serverId, createdAt: { $gte: today }, declareGuilds: { $in: [guildCode]}}).lean(); return rec; }