军团活动:fix bug

This commit is contained in:
luying
2021-03-23 11:18:05 +08:00
parent 60f996c70b
commit 3dbd9ba7bf
8 changed files with 30 additions and 25 deletions

View File

@@ -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 = <RoleType>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,

View File

@@ -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 = <RoleType>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 = <RoleType>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);

View File

@@ -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;

View File

@@ -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
}

View File

@@ -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();
}
}
}

View File

@@ -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 = {

View File

@@ -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: '数据表未找到' },

View File

@@ -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;
}