import { UserGuildModel } from '../db/UserGuild'; import { getJobInfoById } from '../pubUtils/gamedata'; import { getTodayZeroPoint, nowSeconds } from '../pubUtils/timeUtil'; import { GUILD_REPORT_NUM } from '../consts/constModules/guildConst'; import { GuildTrainType, GuildTrainModel } from '../db/GuildTrain'; import { findWhere } from 'underscore'; export async function getUserGuild(roleId: string, code: string) { let userGuild = await UserGuildModel.getMyGuild(roleId,'trainCount trainTime trainRewards'); if (!userGuild||userGuild.guildCode != code) return; let { trainCount, trainTime} = userGuild; if (trainTime < getTodayZeroPoint()) { trainCount = 0; } userGuild = await UserGuildModel.updateInfo(roleId, {trainCount, trainTime: nowSeconds()}); return userGuild; } export async function recordUserGuild(roleId: string, code: string) { let userGuild = await UserGuildModel.getMyGuild(roleId,'trainCount trainTime trainRewards'); if (!userGuild||userGuild.guildCode != code) return; let { trainCount, trainTime} = userGuild; if (trainTime < getTodayZeroPoint()) { trainCount = 0; } userGuild = await UserGuildModel.updateInfo(roleId, {trainCount, trainTime: nowSeconds()}); return userGuild; } export function getGuildTrainInfo (guildTrains: Array, roleId: string, trainCount:number, trainRewards: Array) { guildTrains.forEach(({trainId, isComplete, trainScripts, ranks, reports})=>{ ranks.sort(function(a, b) { return b.score - a.score; }); let myRank = {}; ranks.forEach(({roleId: rankRoleId, score}, index)=>{ if (roleId == rankRoleId) myRank = {roleId: rankRoleId, score, rankLv: index+1}; return {roleId: rankRoleId, score, rankLv: index+1}; }); let guildTrain = findWhere(guildTrains, { trainId: trainId - 1}); if (!!guildTrain) { let lenNum = guildTrain.reports.length; if (lenNum < GUILD_REPORT_NUM) reports = [...guildTrain.reports, ...reports] else { let trainReports = guildTrain.reports.splice(lenNum - GUILD_REPORT_NUM - 1, GUILD_REPORT_NUM); reports = [...trainReports, ...reports] } } return {trainId, isComplete, trainScripts, reports, myRank, ranks}; }); return { list: guildTrains, trainCount, trainRewards}; } export async function lockTrain(code: string, trainId: number) { let guildTrain = await GuildTrainModel.findTrainByTrainIdNotLock(code, trainId); if (!!guildTrain) { return; } }