军团活动:fix bug
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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: '数据表未找到' },
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user