军团:添加活跃排行榜
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Application, BackendSession, pinus, ChannelService } from 'pinus';
|
||||
import { resResult, getRandEelm, reduceCe, getRefTime } from '../../../pubUtils/util';
|
||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE } from '../../../consts';
|
||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY } from '../../../consts';
|
||||
import { UserGuildModel } from '../../../db/UserGuild';
|
||||
import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, message, settleGuildWeekly } from '../../../services/guildService';
|
||||
import { GuildModel, GuildType } from '../../../db/Guild';
|
||||
@@ -8,12 +8,13 @@ import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { ARMY } from '../../../pubUtils/dicParam';
|
||||
import { handleCost, addItems } from '../../../services/rewardService';
|
||||
import { getGoldObject } from '../../../pubUtils/itemUtils';
|
||||
import { nowSeconds, getBeforeDaySeconds } from '../../../pubUtils/timeUtil';
|
||||
import { GuildListInfo } from '../../../pubUtils/interface';
|
||||
import { nowSeconds, getBeforeDaySeconds, getSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { GuildListInfo, GuildRankParam, GuildLeader } from '../../../pubUtils/interface';
|
||||
import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
||||
import { hasStructureConsume, getStructureConsume, gameData } from '../../../pubUtils/data';
|
||||
import { GuildRecModel } from '../../../db/GuildRec';
|
||||
import { sendMail } from '../../../services/mailService';
|
||||
import { existsRank, initSingleRankWithServer, getRank, setRank, redisUserInfoUpdate, redisUserInfoAdd, removeFromRank, getMyRank } from '../../../services/redisService';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GuildHandler(app);
|
||||
@@ -61,8 +62,12 @@ export class GuildHandler {
|
||||
await RoleModel.joinGuild(roleId);
|
||||
await UserGuildApplyModel.deleteApply(roleId); // 删除玩家所有对其他公会的申请
|
||||
|
||||
// TODO 加入排行
|
||||
const rank = 0;
|
||||
// 加入排行
|
||||
let params = new GuildRankParam(guild.icon, guild.name, guild.lv, guild.leader);
|
||||
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);
|
||||
|
||||
// 加入channel
|
||||
message.enterChannel(guild.code, roleId, sid);
|
||||
|
||||
@@ -114,6 +119,8 @@ export class GuildHandler {
|
||||
const select = ['code', 'name', 'notice', 'introduce', 'ceLimit', 'isAuto', 'icon'];
|
||||
const guild = await GuildModel.updateInfo(code, { name, notice, introduce, ceLimit, isAuto }, {}, select.join(' '));
|
||||
message.updateInfo(code, { name, notice, introduce, ceLimit, isAuto });
|
||||
|
||||
await redisUserInfoUpdate(REDIS_KEY.GUILD_INFO, code, [{ field: 'name', value: name }]);
|
||||
// 返回
|
||||
return resResult(STATUS.SUCCESS, { ...guild });
|
||||
|
||||
@@ -192,7 +199,8 @@ export class GuildHandler {
|
||||
let updateObject = {};
|
||||
if(auth == GUILD_AUTH.LEADER) { // 转让团长
|
||||
updateObject['leader'] = role._id;
|
||||
await UserGuildModel.updateInfo(roleId, { auth: GUILD_AUTH.MEMBER }); // 自己降权限
|
||||
await UserGuildModel.updateInfo(roleId, { auth: GUILD_AUTH.MEMBER }, {}); // 自己降权限
|
||||
await redisUserInfoUpdate(REDIS_KEY.GUILD_INFO, code, [{field: 'leader', value: new GuildLeader(role) } ]);
|
||||
}
|
||||
|
||||
guild = await GuildModel.updateInfo(code, updateObject, { managerCnt: managerCntInc }, 'managerCnt code name'); // 如果有转让团长设置leader
|
||||
@@ -249,8 +257,8 @@ export class GuildHandler {
|
||||
// 打开公会页面,加入channel
|
||||
message.enterChannel(userGuild.guildCode, roleId, sid);
|
||||
|
||||
// TODO 获取排行榜
|
||||
const rank = 0;
|
||||
// 获取排行榜
|
||||
const rank = await getMyRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code);
|
||||
|
||||
// 返回
|
||||
const result = { hasGuild: true, ...guild, rank, myInfo: userGuild};
|
||||
@@ -550,6 +558,7 @@ export class GuildHandler {
|
||||
|
||||
message.dismiss(code);
|
||||
|
||||
await removeFromRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, code);
|
||||
return resResult(STATUS.SUCCESS, { code, status: guild.status });
|
||||
}
|
||||
|
||||
@@ -672,6 +681,8 @@ export class GuildHandler {
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_IMPEACH, leaderRoleId, roleName, [guild.name]);
|
||||
await sendMail(MAIL_TYPE.GUILD_BE_SET_LEADER, topUser.roleId, roleName, [guild.name]);
|
||||
|
||||
await redisUserInfoUpdate(REDIS_KEY.GUILD_INFO, code, [{field: 'leader', value: new GuildLeader(topUser) } ]);
|
||||
|
||||
const leader = { ...topUser, ce: reduceCe(topUser.ce) }
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
code, managerCnt: guild.managerCnt, leader
|
||||
@@ -723,6 +734,7 @@ export class GuildHandler {
|
||||
|
||||
// 修改信息
|
||||
message.updateInfo(code, { ...result });
|
||||
await redisUserInfoUpdate(REDIS_KEY.GUILD_INFO, code, [{field: 'lv', value: result.lv } ]);
|
||||
|
||||
// 添加动态
|
||||
const structureName = GUILD_STRUCTURE_NAME.get(id);
|
||||
@@ -743,7 +755,8 @@ export class GuildHandler {
|
||||
if (!checkResult) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH);
|
||||
|
||||
let startTime = getRefTime(new Date(), 0, -3);
|
||||
const list = await GuildRecModel.getGuildRec(code, startTime.getTime());
|
||||
console.log(startTime)
|
||||
const list = await GuildRecModel.getGuildRec(code, getSeconds(startTime));
|
||||
|
||||
return resResult(STATUS.SUCCESS, { list });
|
||||
}
|
||||
@@ -828,6 +841,29 @@ export class GuildHandler {
|
||||
return resResult(STATUS.SUCCESS, { goods, receivedActive: userGuild.receivedActive });
|
||||
}
|
||||
|
||||
// 查看活跃排行榜
|
||||
async getActiveRank(msg: { }, session: BackendSession) {
|
||||
|
||||
let roleId = session.get('roleId');
|
||||
let serverId = session.get('serverId')
|
||||
|
||||
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');
|
||||
let {icon, name, lv, leader, activeWeekly} = guild;
|
||||
let _leader = <RoleType>leader;
|
||||
let param = new GuildRankParam(icon, name, lv, _leader);
|
||||
myRank = {...param, num: activeWeekly, rank: 0};
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { ranks, myRank });
|
||||
}
|
||||
|
||||
// debug接口: 添加公会活跃值
|
||||
async debugAddActive(msg: { code: string, active: number, id: number }, session: BackendSession) {
|
||||
@@ -836,8 +872,8 @@ export class GuildHandler {
|
||||
const serverId = session.get('serverId');
|
||||
const { code, active, id } = msg;
|
||||
|
||||
const result = await addActive(roleId, serverId, id, active);
|
||||
if(!result) return resResult(STATUS.GUILD_NOT_FOUND);
|
||||
const result = await addActive(roleId, serverId, id, 1);
|
||||
if(result.status == 0) return result.resResult;
|
||||
const { guild, userGuild } = result;
|
||||
|
||||
let { activeDaily, activeWeekly } = guild;
|
||||
|
||||
Reference in New Issue
Block a user