邮件 活跃度下发

This commit is contained in:
mamengke01
2021-02-05 11:45:07 +08:00
parent 871e71ab54
commit 286eb231a6
36 changed files with 1183 additions and 439 deletions

View File

@@ -1,7 +1,7 @@
import { gameData, getGuildActiveWeekReward, getGuildActiveByIdAndType } from "../pubUtils/data";
import { GuildModel, GuildType } from "../db/Guild";
import { resResult, shouldRefresh } from "../pubUtils/util";
import { STATUS, MAIL_TYPE, GUILD_AUTH, GUILD_JOB, REDIS_KEY, GUILD_DATA_NAME, } from "../consts";
import { STATUS, MAIL_TYPE, GUILD_AUTH, GUILD_JOB, REDIS_KEY, CHAT_SERVER } from "../consts";
import { RoleModel, RoleType } from "../db/Role";
import { UserGuildModel, UserGuildType } from "../db/UserGuild";
import { UserGuildApplyModel } from "../db/UserGuildApply";
@@ -18,6 +18,8 @@ import { ErrLogModel } from '../db/ErrLog';
import { MailType, MailModel } from '../db/Mail';
import { pushMail } from '../pubUtils/interface';
import { getMailContent } from '../services/mailService';
import { DATA_NAME } from '../consts/dataName';
/**
* @description 检查该玩家是否有权限做操作
* @param func 操作id
@@ -41,11 +43,11 @@ export async function checkAuth(func: number, roleId: string, code?: string, use
export async function joinGuild(code: string, guildName: string, lv: number, roleId: string, serverId: number) {
// 周结算锁
let isWeeklySum = await isLocked(serverId, GUILD_DATA_NAME.WEEKLY_GUILD_SUM, code);
let isWeeklySum = await isLocked(serverId, DATA_NAME.WEEKLY_GUILD_SUM, code);
if(isWeeklySum) return { status: 0, resResult: resResult(STATUS.GUILD_WEEKLY_SUM) };
// 人数锁
let res:any = await lockData(serverId, GUILD_DATA_NAME.JOIN_GUILD, code);// 加锁
let res:any = await lockData(serverId, DATA_NAME.JOIN_GUILD, code);// 加锁
if (!!res.err) return { status: 0, resResult: resResult(STATUS.REDLOCK_ERR) };
const result = await RoleModel.joinGuild(roleId, code, guildName);
@@ -86,7 +88,7 @@ export async function joinGuild(code: string, guildName: string, lv: number, rol
*/
export async function getGuildWithRefActive(guildCode: string, serverId: number) {
let res:any = await lockData(serverId, GUILD_DATA_NAME.REFRESH_ACTIVE, guildCode);// 加锁
let res:any = await lockData(serverId, DATA_NAME.REFRESH_ACTIVE, guildCode);// 加锁
if (!!res.err) return false;
let guild = await GuildModel.findByCode(guildCode, serverId, '+refTimeDaily');
@@ -135,7 +137,7 @@ export async function addActive(roleId: string, serverId: number, id: number, ty
if(!guild) return { status: 0, resResult: resResult(STATUS.GUILD_NOT_FOUND) };
// 周结算锁
let isWeeklySum = await isLocked(serverId, GUILD_DATA_NAME.WEEKLY_GUILD_SUM, guildCode);
let isWeeklySum = await isLocked(serverId, DATA_NAME.WEEKLY_GUILD_SUM, guildCode);
if(isWeeklySum) return { status: 0, resResult: resResult(STATUS.GUILD_WEEKLY_SUM) };
let {activeRecord} = userGuild;
@@ -159,6 +161,7 @@ export async function addActive(roleId: string, serverId: number, id: number, ty
let leader = await RoleModel.findById(guild.leader);
let guildRankParam = new GuildRankParam(guild.icon, guild.name, guild.lv, new GuildLeader(leader));
await setRank(REDIS_KEY.GUILD_ACTIVE_RANK, serverId, guild.code, guild.activeWeekly, guild.activeUpdateTime * 1000, guildRankParam);
pinus.app.rpc.chat.guildRemote.updateInfo.toServer(CHAT_SERVER, guildCode, { activeDaily: guild.activeDaily, activeWeekly: guild.activeWeekly });
return { status: 1, guild, userGuild };
}
@@ -176,17 +179,21 @@ export async function getUserGuildWithRefActive(roleId: string, select: string,
const now = new Date();
let isRefDaily = shouldRefresh(refTimeDaily, now, 0);
if(isRefDaily) {
let goods = wishGoods.map(({ goodId, drawCnt})=>{
return {id: goodId, count: drawCnt};
let goods = [];
wishGoods.map(({ goodId, drawCnt})=>{
if (drawCnt > 0)
goods.push({id: goodId, count: drawCnt});
});
let mails = new Array<MailType>();
let pushMessage = new Array<pushMail>();
await getMailContent(roleId, 1, [], goods, mails, pushMessage);
await MailModel.addMails(mails);
if (!notPush) {
pushMessage.forEach(({route, data, uids })=>{
pinus.app.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, { mails:data }), uids);
});
if (!!goods.length) {
let mails = new Array<MailType>();
let pushMessage = new Array<pushMail>();
await getMailContent(roleId, MAIL_TYPE.WISH_POOL_REWARD, [], goods, mails, pushMessage);
await MailModel.addMails(mails);
if (!notPush) {
pushMessage.forEach(({route, data, uids })=>{
pinus.app.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, { mails:data }), uids);
});
}
}
receivedActive = []; refTimeDaily = now; activeDaily = 0; activeRecord = []; wishGoods = [];
let receiveBoxs = [], wishDntCnt = 0, donateCnt = 0;
@@ -207,7 +214,7 @@ export async function settleGuildWeekly() {
// 周结算时1. 不能变动memberCnt 2.玩家activeWeekly不能变动 3.公会activeWeekly不能变动
for(let { code, memberCnt, serverId } of guildList) {
let res:any = await lockData(serverId, GUILD_DATA_NAME.WEEKLY_GUILD_SUM, code);//加锁
let res:any = await lockData(serverId, DATA_NAME.WEEKLY_GUILD_SUM, code);//加锁
if (!!res.err) {
await ErrLogModel.create(`settle guild lock data error: ${res.err}`)
}