import { Application, BackendSession } from "pinus"; import { resResult } from "../../../pubUtils/util"; import { STATUS, REDIS_KEY } from "../../../consts"; import { RoleModel, RoleType } from "../../../db/Role"; import { UserGuildModel } from "../../../db/UserGuild"; import { existsRank, initSingleRankWithServer, getRank } from "../../../services/redisService"; import { GuildModel } from "../../../db/Guild"; import { GuildRankParam } from "../../../domain/rank"; import { HeroModel } from "../../../db/Hero"; export default function (app: Application) { return new RoleHandler(app); } export class RoleHandler { constructor(private app: Application) { } async getGeneralRank(msg: {}, session: BackendSession) { let roleId = session.get('roleId'); let roleName = session.get('roleName'); let serverId = session.get('serverId'); return resResult(STATUS.SUCCESS, { role: [ { 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: 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: [], }, ], battle: [ // 右边列 { 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: 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: 9, roleId: "8l6HPZAbdS", roleName: "东方月初", head: 11219, frame: 11301, spine: 11419, guildName: "军团A", hid: 19, skinId: 41020, num: 9224, received: [], }, ] }); } async getRank(msg: { type: number }, session: BackendSession) { let roleId = session.get('roleId'); let roleName = session.get('roleName'); let serverId = session.get('serverId'); let { type } = msg; let role = await RoleModel.findByRoleId(roleId, null, true); let { lv, vLv, head, frame, spine, guildName, ce } = role; let lineup = [ { hid: 27, star: 6, colorStar: 6, lv: 96, quality: 3, job: 11 }, { hid: 32, star: 6, colorStar: 6, lv: 96, quality: 3, job: 1 }, { hid: 19, star: 6, colorStar: 6, lv: 96, quality: 3, job: 11 }, { hid: 11, star: 6, colorStar: 6, lv: 96, quality: 3, job: 11 }, { hid: 12, star: 6, colorStar: 6, lv: 96, quality: 3, job: 16 }, { hid: 8, star: 6, colorStar: 6, lv: 96, quality: 3, job: 1 } ] let ranks = await RoleModel.getRank('tower', serverId, ["lv", "roleName", "vLv", "head", "frame", "spine", "guildName", "ce"], 1, 10); return resResult(STATUS.SUCCESS, { type, ranks: ranks.map((cur, i) => { let { roleId, roleName, head, frame, spine, lv, vLv, ce } = cur; return { rank: i + 1, num: 323 - i, roleId, roleName, head, frame, spine, lv, vLv, guildName: `军团${i + 1}`, ce, lineup } }), myRank: { rank: 0, num: 104, roleId, roleName, head, frame, spine, lv, vLv, guildName, ce, lineup } }); } // 查看活跃排行榜 async getGuildRank(msg: { type: number }, session: BackendSession) { let roleId = session.get('roleId'); let serverId = session.get('serverId') let { type } = msg; const myUserGuild = await UserGuildModel.getMyGuild(roleId, 'auth guildCode'); if (!myUserGuild) return resResult(STATUS.GUILD_NOT_FOUND); const hasRank = await existsRank(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); if (!myRank) { let guild = await GuildModel.findByCode(myUserGuild.guildCode, serverId, 'code icon name lv leader activeWeekly memberCnt'); let { icon, name, lv, leader, activeWeekly, memberCnt } = guild; let _leader = leader; let param = new GuildRankParam(icon, name, lv, _leader, memberCnt); myRank = { ...param, num: activeWeekly, rank: 0 }; } 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, job: 11 }, { hid: 32, star: 6, colorStar: 6, lv: 96, quality: 3, job: 1 }, { hid: 19, star: 6, colorStar: 6, lv: 96, quality: 3, job: 11 }, { hid: 11, star: 6, colorStar: 6, lv: 96, quality: 3, job: 11 }, { hid: 12, star: 6, colorStar: 6, lv: 96, quality: 3, job: 16 }, { hid: 8, star: 6, colorStar: 6, lv: 96, quality: 3, job: 1 } ] let ranks = await HeroModel.getRank(hid, serverId, null, 10); 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) { let { type } = msg; return resResult(STATUS.SUCCESS, { type: type, received: [], goods: [] }) } }