军团:补发活跃宝箱
This commit is contained in:
@@ -2,12 +2,12 @@ import { Application, BackendSession, ChannelService, HandlerService, } from 'pi
|
|||||||
import { resResult, getRandEelm, shouldRefresh, sortArrRandom } from '../../../pubUtils/util';
|
import { resResult, getRandEelm, shouldRefresh, sortArrRandom } from '../../../pubUtils/util';
|
||||||
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE, DEBUG_MAGIC_WORD, CHANNEL_PREFIX, MSG_TYPE, MSG_SOURCE, ITEM_CHANGE_REASON, TA_EVENT, GUILD_DISMISS_WAY, GUILD_MASTER_CHANGE_WAY, GUILD_QUIT_WAY, PUSH_ROUTE } 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, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE, DEBUG_MAGIC_WORD, CHANNEL_PREFIX, MSG_TYPE, MSG_SOURCE, ITEM_CHANGE_REASON, TA_EVENT, GUILD_DISMISS_WAY, GUILD_MASTER_CHANGE_WAY, GUILD_QUIT_WAY, PUSH_ROUTE } from '../../../consts';
|
||||||
import { UserGuildModel, UserGuildType } from '../../../db/UserGuild';
|
import { UserGuildModel, UserGuildType } from '../../../db/UserGuild';
|
||||||
import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, refreshUserGuild, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate } from '../../../services/guildService';
|
import { checkAuth, joinGuild, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, refreshUserGuild, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate, getTodayGuildActive } from '../../../services/guildService';
|
||||||
import { GuildModel, GuildType, GuildUpdateParam } from '../../../db/Guild';
|
import { GuildModel, GuildType, GuildUpdateParam } from '../../../db/Guild';
|
||||||
import { RoleModel, RoleType } from '../../../db/Role';
|
import { RoleModel, RoleType } from '../../../db/Role';
|
||||||
import { ARMY } from '../../../pubUtils/dicParam';
|
import { ARMY } from '../../../pubUtils/dicParam';
|
||||||
import { handleCost, addItems, getGoldObject } from '../../../services/role/rewardService';
|
import { handleCost, addItems, getGoldObject } from '../../../services/role/rewardService';
|
||||||
import { nowSeconds, getTimeFun, getSeconds } from '../../../pubUtils/timeUtil';
|
import { nowSeconds, getTimeFun, getSeconds, getZeroPointD } from '../../../pubUtils/timeUtil';
|
||||||
import { GuildListInfo, GuildMemberParam } from '../../../domain/battleField/guild';
|
import { GuildListInfo, GuildMemberParam } from '../../../domain/battleField/guild';
|
||||||
import { GuildLeader } from '../../../domain/rank';
|
import { GuildLeader } from '../../../domain/rank';
|
||||||
import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
||||||
@@ -28,6 +28,7 @@ import * as dicParam from '../../../pubUtils/dicParam';
|
|||||||
import { reportTAEvent } from '../../../services/sdkService';
|
import { reportTAEvent } from '../../../services/sdkService';
|
||||||
import { changeGuildActivity, guildDismisActivity } from '../../../services/activity/guildPayService';
|
import { changeGuildActivity, guildDismisActivity } from '../../../services/activity/guildPayService';
|
||||||
import { sendMessageToUserWithSuc } from '../../../services/pushService';
|
import { sendMessageToUserWithSuc } from '../../../services/pushService';
|
||||||
|
import { GuildActiveModel } from '../../../db/GuildActive';
|
||||||
|
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -270,7 +271,7 @@ export class GuildHandler {
|
|||||||
return resResult(STATUS.SUCCESS, { hasGuild: false })
|
return resResult(STATUS.SUCCESS, { hasGuild: false })
|
||||||
};
|
};
|
||||||
|
|
||||||
let guild = await getGuildWithRefActive(userGuild.guildCode, serverId);
|
let guild = await GuildModel.findByCode(userGuild.guildCode, serverId);
|
||||||
if (!guild) {
|
if (!guild) {
|
||||||
return resResult(STATUS.GUILD_NOT_FOUND);
|
return resResult(STATUS.GUILD_NOT_FOUND);
|
||||||
}
|
}
|
||||||
@@ -831,13 +832,11 @@ export class GuildHandler {
|
|||||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||||
if (!userGuild) return resResult(STATUS.GUILD_NOT_FOUND);
|
if (!userGuild) return resResult(STATUS.GUILD_NOT_FOUND);
|
||||||
|
|
||||||
const guild = await getGuildWithRefActive(code, serverId);
|
|
||||||
if (!guild) return resResult(STATUS.GUILD_NOT_FOUND);
|
|
||||||
|
|
||||||
let activeDayReward = gameData.guildActiveDayReward.get(id);
|
let activeDayReward = gameData.guildActiveDayReward.get(id);
|
||||||
if (!activeDayReward) return resResult(STATUS.GUILD_ACTIVE_BOX_NOT_FOUND);
|
if (!activeDayReward) return resResult(STATUS.GUILD_ACTIVE_BOX_NOT_FOUND);
|
||||||
|
|
||||||
if (guild.activeDaily < activeDayReward.activeDayPoint) {
|
const guildActive = await getTodayGuildActive(code);
|
||||||
|
if (guildActive < activeDayReward.activeDayPoint) {
|
||||||
return resResult(STATUS.GUILD_ACTIVE_POINT_NOT_REACH);
|
return resResult(STATUS.GUILD_ACTIVE_POINT_NOT_REACH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -882,10 +881,12 @@ export class GuildHandler {
|
|||||||
const result = await addActive(roleId, serverId, id, null, active);
|
const result = await addActive(roleId, serverId, id, null, active);
|
||||||
if (result.status == 0) return result.resResult;
|
if (result.status == 0) return result.resResult;
|
||||||
const { guild, userGuild } = result;
|
const { guild, userGuild } = result;
|
||||||
|
let today = getZeroPointD();
|
||||||
|
let guildActive = await GuildActiveModel.addActive(code, today, active);
|
||||||
|
|
||||||
let { activeDaily, activeWeekly } = guild;
|
let { activeWeekly } = guild;
|
||||||
await pushGuildInfoUpdate(code, { activeDaily, activeWeekly });
|
await pushGuildInfoUpdate(code, { activeDaily: guildActive? guildActive.active: 0, activeWeekly });
|
||||||
return resResult(STATUS.SUCCESS, { activeDaily, activeWeekly, myInfo: userGuild });
|
return resResult(STATUS.SUCCESS, { activeDaily: guildActive? guildActive.active: 0, activeWeekly, myInfo: userGuild });
|
||||||
}
|
}
|
||||||
|
|
||||||
// debug接口: 调用定时任务
|
// debug接口: 调用定时任务
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ import { nowSeconds, getZeroPoint } from '../pubUtils/timeUtil';
|
|||||||
import { getGachaList, getVisitedHeroList } from './activity/gachaService';
|
import { getGachaList, getVisitedHeroList } from './activity/gachaService';
|
||||||
import { getSchoolList } from './roleService';
|
import { getSchoolList } from './roleService';
|
||||||
import { addRoleToGuildChannel } from './chatChannelService';
|
import { addRoleToGuildChannel } from './chatChannelService';
|
||||||
import { getMyGuildInfo, getGuildWithRefActive, getUserGuildWithRefActive, getWishPool, getInvitationList } from './guildService';
|
import { getMyGuildInfo, getUserGuildWithRefActive, getWishPool, getInvitationList } from './guildService';
|
||||||
import { getAuction } from './auctionService';
|
import { getAuction } from './auctionService';
|
||||||
import { getGuildTrainInstance, getTrainBoxRewardsResult } from './guildTrainService';
|
import { getGuildTrainInstance, getTrainBoxRewardsResult } from './guildTrainService';
|
||||||
import { getBossInstanceInfo } from './guildBossService';
|
import { getBossInstanceInfo } from './guildBossService';
|
||||||
import { getEvent } from './eventSercive';
|
import { getEvent } from './eventSercive';
|
||||||
import { getBattleListOfMain, getMainChapter } from './normalBattleService';
|
import { getBattleListOfMain, getMainChapter } from './normalBattleService';
|
||||||
import { GuildType } from '../db/Guild';
|
import { GuildModel, GuildType } from '../db/Guild';
|
||||||
import UserGuild, { UserGuildType } from '../db/UserGuild';
|
import UserGuild, { UserGuildType } from '../db/UserGuild';
|
||||||
import { setPreDayActiveData, getAllGuildActivityStatus } from './guildActivity/guildActivityService';
|
import { setPreDayActiveData, getAllGuildActivityStatus } from './guildActivity/guildActivityService';
|
||||||
import { getAllOnlineRoles, getAllServers } from './redisService';
|
import { getAllOnlineRoles, getAllServers } from './redisService';
|
||||||
@@ -270,7 +270,7 @@ async function getGuildEntryData(role: RoleType, sid: string, session: FrontendO
|
|||||||
if (role.hasGuild) {
|
if (role.hasGuild) {
|
||||||
let userGuild = await getUserGuildWithRefActive(role.roleId);
|
let userGuild = await getUserGuildWithRefActive(role.roleId);
|
||||||
if (userGuild) {
|
if (userGuild) {
|
||||||
let guild = await getGuildWithRefActive(userGuild.guildCode, role.serverId);
|
let guild = await GuildModel.findByCode(userGuild.guildCode, role.serverId);
|
||||||
if (guild) {
|
if (guild) {
|
||||||
addRoleToGuildChannel(role.roleId, sid, userGuild.guildCode);
|
addRoleToGuildChannel(role.roleId, sid, userGuild.guildCode);
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ import { GuildModel, GuildType, GuildUpdateParam } from "../db/Guild";
|
|||||||
import { resResult, shouldRefresh } from "../pubUtils/util";
|
import { resResult, shouldRefresh } from "../pubUtils/util";
|
||||||
import { STATUS, MAIL_TYPE, GUILD_AUTH, GUILD_JOB, REDIS_KEY, CHAT_SERVER, TASK_TYPE, COUNTER, GUILD_REC_TYPE, PUSH_ROUTE } from "../consts";
|
import { STATUS, MAIL_TYPE, GUILD_AUTH, GUILD_JOB, REDIS_KEY, CHAT_SERVER, TASK_TYPE, COUNTER, GUILD_REC_TYPE, PUSH_ROUTE } from "../consts";
|
||||||
import { RoleModel, RoleType } from "../db/Role";
|
import { RoleModel, RoleType } from "../db/Role";
|
||||||
import { UserGuildModel, UserGuildType } from "../db/UserGuild";
|
import { UserGuildModel, UserGuildType, WishGood } from "../db/UserGuild";
|
||||||
import { UserGuildApplyModel } from "../db/UserGuildApply";
|
import { UserGuildApplyModel } from "../db/UserGuildApply";
|
||||||
import { PVPConfigModel } from "../db/SystemConfig";
|
import { PVPConfigModel } from "../db/SystemConfig";
|
||||||
import { nowSeconds } from "../pubUtils/timeUtil";
|
import { getZeroPointD, getZeroPointOfTimeD, nowSeconds } from "../pubUtils/timeUtil";
|
||||||
import { pinus, BackendSession, FrontendOrBackendSession } from "pinus";
|
import { pinus, BackendSession, FrontendOrBackendSession } from "pinus";
|
||||||
import { ARMY } from "../pubUtils/dicParam";
|
import { ARMY } from "../pubUtils/dicParam";
|
||||||
import { sendMailByContent } from "./mailService";
|
import { sendMailByContent } from "./mailService";
|
||||||
@@ -23,6 +23,8 @@ import { changeGuildActivity } from "./activity/guildPayService";
|
|||||||
import { GuildRecModel } from "../db/GuildRec";
|
import { GuildRecModel } from "../db/GuildRec";
|
||||||
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from "./pushService";
|
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from "./pushService";
|
||||||
import { delGuildChannel, leaveGuildChannel } from "./chatChannelService";
|
import { delGuildChannel, leaveGuildChannel } from "./chatChannelService";
|
||||||
|
import { GuildActiveModel, } from "../db/GuildActive";
|
||||||
|
import { RewardInter } from "../pubUtils/interface";
|
||||||
|
|
||||||
export async function getMyGuildInfo(roleId: string, sid: string, userGuild: UserGuildType, guild: GuildType, serverId: number, session: FrontendOrBackendSession) {
|
export async function getMyGuildInfo(roleId: string, sid: string, userGuild: UserGuildType, guild: GuildType, serverId: number, session: FrontendOrBackendSession) {
|
||||||
|
|
||||||
@@ -44,8 +46,10 @@ export async function getMyGuildInfo(roleId: string, sid: string, userGuild: Use
|
|||||||
let dicGuild = gameData.centerBase.get(guildLv);
|
let dicGuild = gameData.centerBase.get(guildLv);
|
||||||
let guildMemberMax = dicGuild && memberCnt >= dicGuild.peopleNum;
|
let guildMemberMax = dicGuild && memberCnt >= dicGuild.peopleNum;
|
||||||
|
|
||||||
|
let guildActive = await getTodayGuildActive(guild.code);
|
||||||
|
|
||||||
// 返回
|
// 返回
|
||||||
return { hasGuild: true, guildMemberMax, ...guild, leader: { ...leader, isOnline: leaderIsOnline }, rank, myInfo: { ...userGuild } };
|
return { hasGuild: true, guildMemberMax, ...guild, activeDaily: guildActive, leader: { ...leader, isOnline: leaderIsOnline }, rank, myInfo: { ...userGuild } };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,33 +135,14 @@ export async function joinGuild(code: string, guildName: string, lv: number, rol
|
|||||||
return { status: 0, guild, userGuild, roleName: role.roleName, memberCnt: guild.memberCnt, guildCe: guild.guildCe }
|
return { status: 0, guild, userGuild, roleName: role.roleName, memberCnt: guild.memberCnt, guildCe: guild.guildCe }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
export async function getTodayGuildActive(guildCode: string) {
|
||||||
* 刷新军团日活跃
|
let today = getZeroPointD();
|
||||||
* @param guildCode 军团唯一code
|
return await getGuildActiveByRefTime(guildCode, today);
|
||||||
* @param serverId 区
|
}
|
||||||
*/
|
|
||||||
export async function getGuildWithRefActive(guildCode: string, serverId: number) {
|
|
||||||
|
|
||||||
let res: any = await lockData(serverId, DATA_NAME.REFRESH_ACTIVE, guildCode);// 加锁
|
export async function getGuildActiveByRefTime(guildCode: string, refTime: Date) {
|
||||||
if (!!res.err) return false;
|
let guildActive = await GuildActiveModel.getActive(guildCode, refTime);
|
||||||
|
return guildActive? guildActive.active: 0;
|
||||||
let guild = await GuildModel.findByCode(guildCode, serverId, '+refTimeDaily');
|
|
||||||
if (!guild) {
|
|
||||||
res.releaseCallback();//解锁
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const now = new Date();
|
|
||||||
let { activeDaily, refTimeDaily } = guild;
|
|
||||||
|
|
||||||
let isRefDaily = shouldRefresh(refTimeDaily, now);
|
|
||||||
if (isRefDaily) {
|
|
||||||
activeDaily = 0; refTimeDaily = now;
|
|
||||||
guild = await GuildModel.updateInfoWithLeader(guildCode, { activeDaily, refTimeDaily }, {});
|
|
||||||
}
|
|
||||||
res.releaseCallback();//解锁
|
|
||||||
|
|
||||||
return guild;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -182,9 +167,6 @@ export async function addActive(roleId: string, serverId: number, id: number, ty
|
|||||||
if (!userGuild) return { status: 0, resResult: resResult(STATUS.GUILD_NOT_FOUND) };
|
if (!userGuild) return { status: 0, resResult: resResult(STATUS.GUILD_NOT_FOUND) };
|
||||||
|
|
||||||
let guildCode = userGuild.guildCode;
|
let guildCode = userGuild.guildCode;
|
||||||
let guild = await getGuildWithRefActive(guildCode, serverId);
|
|
||||||
if (!guild) return { status: 0, resResult: resResult(STATUS.GUILD_NOT_FOUND) };
|
|
||||||
|
|
||||||
// 周结算锁
|
// 周结算锁
|
||||||
let weeklySumLock = await lockDataNoRetry(serverId, DATA_NAME.WEEKLY_GUILD_SUM, guildCode);
|
let weeklySumLock = await lockDataNoRetry(serverId, DATA_NAME.WEEKLY_GUILD_SUM, guildCode);
|
||||||
if (!!weeklySumLock.err) {
|
if (!!weeklySumLock.err) {
|
||||||
@@ -208,14 +190,15 @@ export async function addActive(roleId: string, serverId: number, id: number, ty
|
|||||||
}
|
}
|
||||||
userGuild = await UserGuildModel.updateInfo(roleId, { activeRecord, activeUpdateTime: nowSeconds() }, { activeDaily: active, activeWeekly: active });
|
userGuild = await UserGuildModel.updateInfo(roleId, { activeRecord, activeUpdateTime: nowSeconds() }, { activeDaily: active, activeWeekly: active });
|
||||||
|
|
||||||
guild = await GuildModel.updateInfo(guildCode, { activeUpdateTime: nowSeconds() }, { activeDaily: active, activeWeekly: active });
|
let guild = await GuildModel.updateInfo(guildCode, { activeUpdateTime: nowSeconds() }, { activeWeekly: active });
|
||||||
|
let guildActive = await GuildActiveModel.addActive(guildCode, getZeroPointD(), active);
|
||||||
|
|
||||||
// 排行榜更新
|
// 排行榜更新
|
||||||
let r = new Rank(REDIS_KEY.GUILD_ACTIVE_RANK, { serverId });
|
let r = new Rank(REDIS_KEY.GUILD_ACTIVE_RANK, { serverId });
|
||||||
await r.setRankWithGuildInfo(guildCode, guild.activeWeekly, guild.activeUpdateTime, guild);
|
await r.setRankWithGuildInfo(guildCode, guild.activeWeekly, guild.activeUpdateTime, guild);
|
||||||
let r2 = new Rank(REDIS_KEY.GUILD_LV_RANK, { serverId });
|
let r2 = new Rank(REDIS_KEY.GUILD_LV_RANK, { serverId });
|
||||||
await r2.setRankWithGuildInfo2(guildCode, guild.lv, guild.activeWeekly, guild.lvUpdateTime, guild);
|
await r2.setRankWithGuildInfo2(guildCode, guild.lv, guild.activeWeekly, guild.lvUpdateTime, guild);
|
||||||
await pushGuildInfoUpdate(guildCode, { activeDaily: guild.activeDaily, activeWeekly: guild.activeWeekly });
|
await pushGuildInfoUpdate(guildCode, { activeDaily: guildActive.active, activeWeekly: guild.activeWeekly });
|
||||||
return { status: 1, guild, userGuild };
|
return { status: 1, guild, userGuild };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,19 +221,8 @@ export async function refreshUserGuild(userGuild: UserGuildType, roleId: string)
|
|||||||
const now = new Date();
|
const now = new Date();
|
||||||
let isRefDaily = shouldRefresh(refTimeDaily, now);
|
let isRefDaily = shouldRefresh(refTimeDaily, now);
|
||||||
if (isRefDaily) {
|
if (isRefDaily) {
|
||||||
wishGoods.map(async function ({ donateNames, goodId, drawCnt }) {
|
await sendUnreceivedWishPool(wishGoods, roleId);
|
||||||
let goodInfo = getGoodById(goodId)
|
await sendUnreceivedActiveBox(roleId, userGuild.guildCode, refTimeDaily, receivedActive);
|
||||||
if (!goodInfo)
|
|
||||||
return;
|
|
||||||
for (let i = 0; i < drawCnt; i++) {
|
|
||||||
let donateName = donateNames[donateNames.length - i - 1];
|
|
||||||
await sendMailByContent(MAIL_TYPE.WISH_POOL_REWARD, roleId, {
|
|
||||||
params: [donateName, goodInfo.name],
|
|
||||||
goods: [{ id: goodId, count: 1 }]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
receivedActive = []; refTimeDaily = now; activeDaily = 0; activeRecord = []; wishGoods = []; receivedWishPool = [];
|
receivedActive = []; refTimeDaily = now; activeDaily = 0; activeRecord = []; wishGoods = []; receivedWishPool = [];
|
||||||
let receiveBoxs = [], wishDntCnt = 0, donateCnt = 0;
|
let receiveBoxs = [], wishDntCnt = 0, donateCnt = 0;
|
||||||
userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive, refTimeDaily, activeDaily, activeRecord, wishGoods, receiveBoxs, wishDntCnt, donateCnt, receivedWishPool }, {});
|
userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive, refTimeDaily, activeDaily, activeRecord, wishGoods, receiveBoxs, wishDntCnt, donateCnt, receivedWishPool }, {});
|
||||||
@@ -260,6 +232,34 @@ export async function refreshUserGuild(userGuild: UserGuildType, roleId: string)
|
|||||||
return userGuild;
|
return userGuild;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function sendUnreceivedWishPool(wishGoods: WishGood[], roleId: string) {
|
||||||
|
wishGoods.map(async function ({ donateNames, goodId, drawCnt }) {
|
||||||
|
let goodInfo = getGoodById(goodId)
|
||||||
|
if (!goodInfo)
|
||||||
|
return;
|
||||||
|
for (let i = 0; i < drawCnt; i++) {
|
||||||
|
let donateName = donateNames[donateNames.length - i - 1];
|
||||||
|
await sendMailByContent(MAIL_TYPE.WISH_POOL_REWARD, roleId, {
|
||||||
|
params: [donateName, goodInfo.name],
|
||||||
|
goods: [{ id: goodId, count: 1 }]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function sendUnreceivedActiveBox(roleId: string, guildCode: string, refTimeDaily: Date, receiveActiveBox: number[]) {
|
||||||
|
let refTime = getZeroPointOfTimeD(refTimeDaily);
|
||||||
|
let guildActive = await getGuildActiveByRefTime(guildCode, refTime);
|
||||||
|
let goods: RewardInter[] = [];
|
||||||
|
for(let [id, { activeDayPoint, reward }] of gameData.guildActiveDayReward) {
|
||||||
|
console.log('####', guildActive, activeDayPoint, receiveActiveBox)
|
||||||
|
if(guildActive >= activeDayPoint && receiveActiveBox.indexOf(id) == -1) goods.push(...reward);
|
||||||
|
}
|
||||||
|
if(goods.length > 0) {
|
||||||
|
await sendMailByContent(MAIL_TYPE.GUILD_DAILY_BOX, roleId, { goods });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 每周结算上周公会周功勋和 活跃并发奖励(未完)
|
* 每周结算上周公会周功勋和 活跃并发奖励(未完)
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -818,7 +818,7 @@ export class CheckSingleTask {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TASK_TYPE.GUILD_GOLD_DONATE: // 64. 军团捐献x次
|
case TASK_TYPE.GUILD_DONATE: // 64. 军团捐献x次
|
||||||
{
|
{
|
||||||
result = { inc: 1 };
|
result = { inc: 1 };
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -64,17 +64,11 @@ export default class Guild extends BaseModel {
|
|||||||
@prop({ required: true, default: 0 })
|
@prop({ required: true, default: 0 })
|
||||||
refTodayFund: Date;
|
refTodayFund: Date;
|
||||||
|
|
||||||
@prop({ required: true, default: 0 })
|
|
||||||
activeDaily: number;
|
|
||||||
|
|
||||||
@prop({ required: true, default: 0 })
|
@prop({ required: true, default: 0 })
|
||||||
activeWeekly: number;
|
activeWeekly: number;
|
||||||
|
|
||||||
@prop({ required: true, default: nowSeconds() })
|
@prop({ required: true, default: nowSeconds() })
|
||||||
activeUpdateTime: number;
|
activeUpdateTime: number;
|
||||||
|
|
||||||
@prop({ required: true, default: new Date(), select: false })
|
|
||||||
refTimeDaily: Date;
|
|
||||||
|
|
||||||
@prop({ required: true, default: 0 })
|
@prop({ required: true, default: 0 })
|
||||||
guildCe: number; // 总战力
|
guildCe: number; // 总战力
|
||||||
|
|||||||
31
shared/db/GuildActive.ts
Normal file
31
shared/db/GuildActive.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import BaseModel from './BaseModel';
|
||||||
|
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||||
|
|
||||||
|
@index({ guildCode: 1, refTime: 1 })
|
||||||
|
export default class GuildActive extends BaseModel {
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
guildCode: string; // 军团
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
refTime: Date; // 刷新时间
|
||||||
|
|
||||||
|
@prop({ required: true, default: 0 })
|
||||||
|
active: number; // 活跃
|
||||||
|
|
||||||
|
// 更新
|
||||||
|
public static async addActive(guildCode: string, refTime: Date, active: number) {
|
||||||
|
let rec: GuildActiveType = await GuildActiveModel.findOneAndUpdate({ guildCode, refTime }, { $inc: { active } }, { new: true, upsert: true }).lean();
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async getActive(guildCode: string, refTime: Date) {
|
||||||
|
let rec: GuildActiveType = await GuildActiveModel.findOne({ guildCode, refTime }).lean();
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const GuildActiveModel = getModelForClass(GuildActive);
|
||||||
|
|
||||||
|
export interface GuildActiveType extends Pick<DocumentType<GuildActive>, keyof GuildActive> { };
|
||||||
|
export type GuildActiveUpdateParam = Partial<GuildActiveType>; // 将所有字段变成可选项
|
||||||
@@ -11,7 +11,7 @@ class ActiveRecord {
|
|||||||
count: number;
|
count: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
class WishGood {
|
export class WishGood {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
id: string;//随机生成的唯一id
|
id: string;//随机生成的唯一id
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
|
|||||||
@@ -489,6 +489,16 @@ export function getZeroPointD(refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getZeroPointOfTimeD(refTime: Date, refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.DAILY) {
|
||||||
|
let t = new Time(TIME_OUTPUT_TYPE.DATE, refTime);
|
||||||
|
if(refreshType == SHOP_REFRESH_TYPE.DAILY) {
|
||||||
|
return <Date>t.getDayZeroPoint();
|
||||||
|
} else if (refreshType == SHOP_REFRESH_TYPE.WEEKLY) {
|
||||||
|
return <Date>t.getWeekZeroPoint();
|
||||||
|
} else if (refreshType == SHOP_REFRESH_TYPE.MONTHLY) {
|
||||||
|
return <Date>t.getMonthZeroPoint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据 yy-dd-mm格式获取年龄
|
* 根据 yy-dd-mm格式获取年龄
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
{ "id": 5, "desc": "发送弹幕", "route": "battle.barrageHandler.sendBarrage", "param": {}, "interval": 1000 },
|
{ "id": 5, "desc": "发送弹幕", "route": "battle.barrageHandler.sendBarrage", "param": {}, "interval": 1000 },
|
||||||
{ "id": 6, "desc": "获取信息", "route": "connector.entryHandler.getData", "param": {}, "interval": 1000 },
|
{ "id": 6, "desc": "获取信息", "route": "connector.entryHandler.getData", "param": {}, "interval": 1000 },
|
||||||
{ "id": 7, "desc": "刷新信息", "route": "connector.entryHandler.refresh", "param": {}, "interval": 1000 },
|
{ "id": 7, "desc": "刷新信息", "route": "connector.entryHandler.refresh", "param": {}, "interval": 1000 },
|
||||||
{ "id": 8, "desc": "捐赠", "route": "guild.donateHandler.donate", "param": {}, "interval": 200 }
|
{ "id": 8, "desc": "捐赠", "route": "guild.donateHandler.donate", "param": {}, "interval": 200 },
|
||||||
|
{ "id": 9, "desc": "碾压镇念塔", "route": "battle.towerBattleHandler.skipTower", "param": {}, "interval": 200 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user