军团:添加活跃宝箱

This commit is contained in:
luying
2021-01-23 15:17:33 +08:00
parent 368649c53d
commit 789322b913
16 changed files with 820 additions and 26 deletions
+90 -4
View File
@@ -1,11 +1,10 @@
import { gameData } from "../pubUtils/data";
import { GuildModel } from "../db/Guild";
import { resResult } from "../pubUtils/util";
import { GuildModel, GuildType } from "../db/Guild";
import { resResult, shouldRefreshWeek, shouldRefresh } from "../pubUtils/util";
import { STATUS } from "../consts";
import { RoleModel } from "../db/Role";
import { UserGuildModel, UserGuildType } from "../db/UserGuild";
import { UserGuildApplyModel } from "../db/UserGuildApply";
import { GuildRecModel } from "../db/GuildRec";
/**
* @description 检查该玩家是否有权限做操作
@@ -15,6 +14,7 @@ import { GuildRecModel } from "../db/GuildRec";
export async function checkAuth(func: number, roleId: string, code?: string, userGuild?: UserGuildType) {
const auth = await UserGuildModel.getMyAuth(roleId, code, userGuild);
const dicGuildAuth = gameData.guildAuth.get(func);
console.log(auth, dicGuildAuth)
if(!dicGuildAuth) return false;
return dicGuildAuth.includes(auth);
@@ -56,8 +56,94 @@ export async function joinGuild(code: string, lv: number, roleId: string, server
return { status: 1, guild, userGuild, roleName: role.roleName }
}
/**
* 消耗军团资金
* @param code 军团唯一code
* @param cost 消耗值
* @param sid 推送channel
*/
export async function costFund(code: string, cost: number, sid: string) {
const guild = await GuildModel.costFund(code, cost);
// TODO 推送
return guild;
}
}
/**
* 刷新军团活跃
* @param guildCode 军团唯一code
* @param serverId 区
*/
export async function getGuildWithRefActive(guildCode: string, serverId: number) {
// TODO 加写锁
let guild = await GuildModel.findByCode(guildCode, serverId, '+refTimeDaily +refTimeWeekly');
if(!guild) return false;
console.log(JSON.stringify(guild));
const now = new Date();
let { activeDaily, activeWeekly, refTimeDaily, refTimeWeekly} = guild;
let isRefWeek = shouldRefreshWeek(refTimeWeekly, now, 1, 0);
if(isRefWeek) {
activeWeekly = 0; refTimeWeekly = now;
}
let isRefDaily = shouldRefresh(refTimeDaily, now, 0);
if(isRefDaily) {
activeDaily = 0; refTimeDaily = now;
}
if(isRefWeek || isRefDaily) {
guild = await GuildModel.updateInfo(guildCode, { activeDaily, activeWeekly, refTimeDaily, refTimeWeekly }, {});
}
return guild;
}
/**
* 增加活跃
* @param guildCode 军团唯一code
* @param serverId 区
* @param active 增加的活跃
*/
export async function addGuildActive(guildCode: string, serverId: number, active: number) {
// TODO 加写锁
let guild = await GuildModel.findByCode(guildCode, serverId, '+refTimeDaily +refTimeWeekly');
if(!guild) return false;
const now = new Date();
let { activeDaily, activeWeekly, refTimeDaily, refTimeWeekly} = guild;
let isRefWeek = shouldRefreshWeek(refTimeWeekly, now, 1, 0);
if(isRefWeek) {
activeWeekly = 0; refTimeWeekly = now;
}
let isRefDaily = shouldRefresh(refTimeDaily, now, 0);
if(isRefDaily) {
activeDaily = 0; refTimeDaily = now;
}
activeWeekly += active; activeDaily += active;
guild = await GuildModel.updateInfo(guildCode, { activeDaily, activeWeekly, refTimeDaily, refTimeWeekly }, {});
return guild;
}
/**
* 获取用户公会表并刷新活跃
* @param roleId 用户id
* @param select 筛选字段
*/
export async function getUserGuildWithRefActive(roleId: string, select: string) {
let userGuild = await UserGuildModel.getMyGuild(roleId, select? select + ' +refTimeDaily': '+refTimeDaily');
if(!userGuild) return false;
let { receivedActive, refTimeDaily } = userGuild;
const now = new Date();
let isRefDaily = shouldRefresh(refTimeDaily, now, 0);
if(isRefDaily) {
receivedActive = 0; refTimeDaily = now;
userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive, refTimeDaily }, select);
if(!userGuild) return false;
}
return userGuild;
}