排行榜:武将单榜数据
This commit is contained in:
@@ -71,7 +71,7 @@ export class GuildHandler {
|
|||||||
await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请
|
await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请
|
||||||
|
|
||||||
// 加入排行
|
// 加入排行
|
||||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, guild.leader);
|
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, guild.leader, guild.memberCnt);
|
||||||
await setRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code, 0, Date.now(), params);
|
await setRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code, 0, Date.now(), params);
|
||||||
|
|
||||||
let rank = await getMyRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code);
|
let rank = await getMyRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code);
|
||||||
@@ -919,9 +919,9 @@ export class GuildHandler {
|
|||||||
let {ranks, myRank} = await getRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, myUserGuild.guildCode);
|
let {ranks, myRank} = await getRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, myUserGuild.guildCode);
|
||||||
if(!myRank) {
|
if(!myRank) {
|
||||||
let guild = await GuildModel.findByCode(myUserGuild.guildCode, serverId, 'code icon name lv leader activeWeekly');
|
let guild = await GuildModel.findByCode(myUserGuild.guildCode, serverId, 'code icon name lv leader activeWeekly');
|
||||||
let {icon, name, lv, leader, activeWeekly} = guild;
|
let {icon, name, lv, leader, activeWeekly, memberCnt} = guild;
|
||||||
let _leader = <RoleType>leader;
|
let _leader = <RoleType>leader;
|
||||||
let param = new GuildRankParam(icon, name, lv, _leader);
|
let param = new GuildRankParam(icon, name, lv, _leader, memberCnt);
|
||||||
myRank = {...param, num: activeWeekly, rank: 0};
|
myRank = {...param, num: activeWeekly, rank: 0};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ export class CityActivityHandler {
|
|||||||
|
|
||||||
let guild = await GuildModel.findByCode(guildCode, serverId);
|
let guild = await GuildModel.findByCode(guildCode, serverId);
|
||||||
let leader = <RoleType>guild.leader;
|
let leader = <RoleType>guild.leader;
|
||||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader);
|
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader, guild.memberCnt);
|
||||||
let guildScore = await setRank(getCityKeyName(REDIS_KEY.CITY_ACTIVITY, cityId), 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);
|
||||||
|
|
||||||
gateHp = obj.getGateHpAndInc(serverId, cityId, dicCity.hp, -1 * damage);
|
gateHp = obj.getGateHpAndInc(serverId, cityId, dicCity.hp, -1 * damage);
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ export class GateActivityHandler {
|
|||||||
|
|
||||||
let guild = await GuildModel.findByCode(guildCode, serverId);
|
let guild = await GuildModel.findByCode(guildCode, serverId);
|
||||||
let leader = <RoleType>guild.leader;
|
let leader = <RoleType>guild.leader;
|
||||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader);
|
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader, guild.memberCnt);
|
||||||
let guildScore = await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
let guildScore = await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
||||||
|
|
||||||
// 更新数据库
|
// 更新数据库
|
||||||
@@ -238,7 +238,7 @@ export class GateActivityHandler {
|
|||||||
|
|
||||||
let guild = await GuildModel.findByCode(guildCode, serverId);
|
let guild = await GuildModel.findByCode(guildCode, serverId);
|
||||||
let leader = <RoleType>guild.leader;
|
let leader = <RoleType>guild.leader;
|
||||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader);
|
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, leader, guild.memberCnt);
|
||||||
await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
await setRank(REDIS_KEY.GATE_ACTIVITY, serverId, guild.code, score, Date.now(), params, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ import { UserGuildModel } from "../../../db/UserGuild";
|
|||||||
import { existsRank, initSingleRankWithServer, getRank } from "../../../services/redisService";
|
import { existsRank, initSingleRankWithServer, getRank } from "../../../services/redisService";
|
||||||
import { GuildModel } from "../../../db/Guild";
|
import { GuildModel } from "../../../db/Guild";
|
||||||
import { GuildRankParam } from "../../../domain/rank";
|
import { GuildRankParam } from "../../../domain/rank";
|
||||||
|
import { HeroModel } from "../../../db/Hero";
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function (app: Application) {
|
||||||
return new RoleHandler(app);
|
return new RoleHandler(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ export class RoleHandler {
|
|||||||
constructor(private app: Application) {
|
constructor(private app: Application) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getGeneralRank(msg: { }, session: BackendSession) {
|
async getGeneralRank(msg: {}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
let roleName = session.get('roleName');
|
let roleName = session.get('roleName');
|
||||||
let serverId = session.get('serverId');
|
let serverId = session.get('serverId');
|
||||||
@@ -23,17 +24,17 @@ export class RoleHandler {
|
|||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
role: [
|
role: [
|
||||||
{ type: 1, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 464262, received: [],},
|
{ type: 1, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 464262, received: [], },
|
||||||
{ type: 2, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 64262, received: [],},
|
{ type: 2, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 64262, received: [], },
|
||||||
{ type: 3, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 100, received: [],},
|
{ type: 3, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 100, received: [], },
|
||||||
{ type: 4, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 99, received: [],},
|
{ type: 4, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262, num: 99, received: [], },
|
||||||
],
|
],
|
||||||
battle: [ // 右边列
|
battle: [ // 右边列
|
||||||
{type: 5, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 464262, received: [],},
|
{ type: 5, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 464262, received: [], },
|
||||||
{type: 6, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 99, received: [],},
|
{ type: 6, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 99, received: [], },
|
||||||
{type: 7, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 5060, received: [],},
|
{ type: 7, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 5060, received: [], },
|
||||||
{type: 8, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 323, received: [],},
|
{ type: 8, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 323, received: [], },
|
||||||
{type: 9, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 9224, received: [],},
|
{ type: 9, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 9224, received: [], },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -64,11 +65,11 @@ export class RoleHandler {
|
|||||||
ranks: ranks.map((cur, i) => {
|
ranks: ranks.map((cur, i) => {
|
||||||
let { roleId, roleName, head, frame, spine, lv, vLv, ce } = cur;
|
let { roleId, roleName, head, frame, spine, lv, vLv, ce } = cur;
|
||||||
return {
|
return {
|
||||||
rank: i+1, num: 323-i, roleId, roleName, head, frame, spine, lv, vLv, guildName: `军团${i + 1}`, ce, lineup
|
rank: i + 1, num: 323 - i, roleId, roleName, head, frame, spine, lv, vLv, guildName: `军团${i + 1}`, ce, lineup
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
myRank: {
|
myRank: {
|
||||||
rank: 0, num: 104, roleId, roleName, head, frame, spine, lv, vLv,guildName, ce, lineup
|
rank: 0, num: 104, roleId, roleName, head, frame, spine, lv, vLv, guildName, ce, lineup
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -82,23 +83,54 @@ export class RoleHandler {
|
|||||||
let { type } = msg;
|
let { type } = msg;
|
||||||
|
|
||||||
const myUserGuild = await UserGuildModel.getMyGuild(roleId, 'auth guildCode');
|
const myUserGuild = await UserGuildModel.getMyGuild(roleId, 'auth guildCode');
|
||||||
if(!myUserGuild) return resResult(STATUS.GUILD_NOT_FOUND);
|
if (!myUserGuild) return resResult(STATUS.GUILD_NOT_FOUND);
|
||||||
|
|
||||||
const hasRank = await existsRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId);
|
const hasRank = await existsRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId);
|
||||||
if(!hasRank) await initSingleRankWithServer(REDIS_KEY.GUILD_ACTIVE_RANK, serverId);
|
if (!hasRank) await initSingleRankWithServer(REDIS_KEY.GUILD_ACTIVE_RANK, serverId);
|
||||||
|
|
||||||
let {ranks, myRank} = await getRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, myUserGuild.guildCode);
|
let { ranks, myRank } = await getRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, myUserGuild.guildCode);
|
||||||
if(!myRank) {
|
if (!myRank) {
|
||||||
let guild = await GuildModel.findByCode(myUserGuild.guildCode, serverId, 'code icon name lv leader activeWeekly memberCnt');
|
let guild = await GuildModel.findByCode(myUserGuild.guildCode, serverId, 'code icon name lv leader activeWeekly memberCnt');
|
||||||
let {icon, name, lv, leader, activeWeekly, memberCnt} = guild;
|
let { icon, name, lv, leader, activeWeekly, memberCnt } = guild;
|
||||||
let _leader = <RoleType>leader;
|
let _leader = <RoleType>leader;
|
||||||
let param = new GuildRankParam(icon, name, lv, _leader, memberCnt);
|
let param = new GuildRankParam(icon, name, lv, _leader, memberCnt);
|
||||||
myRank = {...param, num: activeWeekly, rank: 0};
|
myRank = { ...param, num: activeWeekly, rank: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { type, ranks, myRank });
|
return resResult(STATUS.SUCCESS, { type, ranks, myRank });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查看活跃排行榜
|
||||||
|
async getHeroRank(msg: { type: number, hid: number }, session: BackendSession) {
|
||||||
|
|
||||||
|
let roleId = session.get('roleId');
|
||||||
|
let serverId = session.get('serverId')
|
||||||
|
|
||||||
|
let { type, hid } = msg;
|
||||||
|
|
||||||
|
let lineup = [
|
||||||
|
{ hid: 27, star: 6, colorStar: 6, lv: 96, quality: 3 },
|
||||||
|
{ hid: 32, star: 6, colorStar: 6, lv: 96, quality: 3 },
|
||||||
|
{ hid: 19, star: 6, colorStar: 6, lv: 96, quality: 3 },
|
||||||
|
{ hid: 11, star: 6, colorStar: 6, lv: 96, quality: 3 },
|
||||||
|
{ hid: 12, star: 6, colorStar: 6, lv: 96, quality: 3 },
|
||||||
|
{ hid: 8, star: 6, colorStar: 6, lv: 96, quality: 3 }
|
||||||
|
]
|
||||||
|
let ranks = await HeroModel.getRank(hid, serverId, null, 200);
|
||||||
|
|
||||||
|
return resResult(STATUS.SUCCESS, {
|
||||||
|
type, hid, ranks: ranks.map((cur, i) => {
|
||||||
|
let { ce, roleId, roleName, hid, star, colorStar, lv, quality } = cur;
|
||||||
|
|
||||||
|
return {
|
||||||
|
rank: i + 1, num: ce, roleId, roleName, head: 11219, frame: 11301, spine: 11419, lv: 40, vLv: 0, guildName: "军团A", ce: 464262,
|
||||||
|
hero: [{ hid, star, colorStar, lv, quality }],
|
||||||
|
lineup
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async receiveReward(msg: { type: number, id: number }, session: BackendSession) {
|
async receiveReward(msg: { type: number, id: number }, session: BackendSession) {
|
||||||
let { type } = msg;
|
let { type } = msg;
|
||||||
|
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ export async function addActive(roleId: string, serverId: number, id: number, ty
|
|||||||
|
|
||||||
// 排行榜更新
|
// 排行榜更新
|
||||||
let leader = await RoleModel.findById(guild.leader);
|
let leader = await RoleModel.findById(guild.leader);
|
||||||
let guildRankParam = new GuildRankParam(guild.icon, guild.name, guild.lv, new GuildLeader(leader));
|
let guildRankParam = new GuildRankParam(guild.icon, guild.name, guild.lv, new GuildLeader(leader), guild.memberCnt);
|
||||||
await setRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code, guild.activeWeekly, guild.activeUpdateTime * 1000, guildRankParam);
|
await setRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code, guild.activeWeekly, guild.activeUpdateTime * 1000, guildRankParam);
|
||||||
pinus.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, guildCode, { activeDaily: guild.activeDaily, activeWeekly: guild.activeWeekly });
|
pinus.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, guildCode, { activeDaily: guild.activeDaily, activeWeekly: guild.activeWeekly });
|
||||||
return { status: 1, guild, userGuild };
|
return { status: 1, guild, userGuild };
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export async function initAllRank() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分服内初始redis排行榜
|
* 分服内初始redis排行榜
|
||||||
*
|
*
|
||||||
* @param serverId 服务器
|
* @param serverId 服务器
|
||||||
*/
|
*/
|
||||||
@@ -87,11 +87,11 @@ async function setRankRedisFromDb(type: string, serverId: number) {
|
|||||||
}
|
}
|
||||||
} else if (type == REDIS_KEY.GUILD_ACTIVE_RANK) {
|
} else if (type == REDIS_KEY.GUILD_ACTIVE_RANK) {
|
||||||
let ranks = await GuildModel.getRank(serverId);
|
let ranks = await GuildModel.getRank(serverId);
|
||||||
for(let { code, icon, name, lv, leader, activeWeekly = 0, activeUpdateTime = 0 } of ranks) {
|
for(let { code, icon, name, lv, leader, activeWeekly = 0, activeUpdateTime = 0, memberCnt } of ranks) {
|
||||||
let _leader = <RoleType>leader;
|
let _leader = <RoleType>leader;
|
||||||
let { roleName, title, head, frame, spine, lv: leaderLv } = _leader;
|
let { roleName, title, head, frame, spine, lv: leaderLv } = _leader;
|
||||||
await redisClient().zaddAsync(getKeyName(REDIS_KEY.GUILD_ACTIVE_RANK, serverId), encodeScoreWithTime(activeWeekly, activeUpdateTime * 1000 ), code);
|
await redisClient().zaddAsync(getKeyName(REDIS_KEY.GUILD_ACTIVE_RANK, serverId), encodeScoreWithTime(activeWeekly, activeUpdateTime * 1000 ), code);
|
||||||
let rankParam = new GuildRankParam(icon, name, lv, { roleName, title, head, frame, spine, lv: leaderLv });
|
let rankParam = new GuildRankParam(icon, name, lv, { roleName, title, head, frame, spine, lv: leaderLv }, memberCnt);
|
||||||
await redisUserInfoAdd(REDIS_KEY.GUILD_INFO, code, rankParam);
|
await redisUserInfoAdd(REDIS_KEY.GUILD_INFO, code, rankParam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -186,7 +186,7 @@ export async function setRankWithoutUserInfo(key: string, serverId: number, myId
|
|||||||
let guild = await GuildModel.findByCode(myId, serverId);
|
let guild = await GuildModel.findByCode(myId, serverId);
|
||||||
|
|
||||||
let leader = <RoleType>guild.leader;
|
let leader = <RoleType>guild.leader;
|
||||||
let guildRankParam = new GuildRankParam(guild.icon, guild.name, guild.lv, leader);
|
let guildRankParam = new GuildRankParam(guild.icon, guild.name, guild.lv, leader, guild.memberCnt);
|
||||||
await redisUserInfoAdd(infoKey, myId, guildRankParam);
|
await redisUserInfoAdd(infoKey, myId, guildRankParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -266,6 +266,11 @@ export default class Hero extends BaseModel {
|
|||||||
const user: HeroType[] = await HeroModel.find(searchObj).lean(lean);
|
const user: HeroType[] = await HeroModel.find(searchObj).lean(lean);
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async getRank(hid: number, serverId: number, select?: string, limit = 100) {
|
||||||
|
let result: HeroType[] = await HeroModel.find({serverId, hid}, { _id: false} ).select(select).limit(limit).lean({ getters: true });
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const HeroModel = getModelForClass(Hero);
|
export const HeroModel = getModelForClass(Hero);
|
||||||
|
|||||||
Reference in New Issue
Block a user