🐞 fix(军团): 军团补发邮件有可能因为并发发出多封
This commit is contained in:
@@ -9,7 +9,7 @@ import { GuildModel } from '../../../db/Guild';
|
||||
import { handleCost, addItems } from '../../../services/role/rewardService';
|
||||
import { CHAT_SERVER, GUILD_POINT_WAYS } from '../../../consts';
|
||||
import { addFund, donate, getDonation, getGuildFundByRefTime } from '../../../services/donateService';
|
||||
import { getUserGuildWithRefActive, refreshUserGuild } from '../../../services/guildService';
|
||||
import { getUserGuildWithRefActive } from '../../../services/guildService';
|
||||
import { ARMY } from '../../../pubUtils/dicParam';
|
||||
import { addActive } from '../../../services/guildService'
|
||||
import { checkTask, checkTaskInDonate } from '../../../services/task/taskService';
|
||||
@@ -34,9 +34,8 @@ export class DonationHandler {
|
||||
async getDonation(msg: guildInter & {}, session: BackendSession) {
|
||||
const roleId: string = session.get('roleId');
|
||||
const serverId: number = parseInt(session.get('serverId'));
|
||||
const { myUserGuild } = msg;
|
||||
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild) return resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
let guild = await GuildModel.findGuild(userGuild.guildCode, serverId, 'structure lv');
|
||||
@@ -53,7 +52,7 @@ export class DonationHandler {
|
||||
* @param session
|
||||
*/
|
||||
async donate(msg: guildInter & { id: number }, session: BackendSession) {
|
||||
const { id, myUserGuild } = msg;
|
||||
const { id } = msg;
|
||||
const roleId: string = session.get('roleId');
|
||||
const roleName: string = session.get('roleName');
|
||||
const serverId: number = parseInt(session.get('serverId'));
|
||||
@@ -65,7 +64,7 @@ export class DonationHandler {
|
||||
return resResult(STATUS.REDLOCK_ERR);
|
||||
}
|
||||
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild) {
|
||||
res.releaseCallback();
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
@@ -120,7 +119,7 @@ export class DonationHandler {
|
||||
const roleName: string = session.get('roleName');
|
||||
const sid: string = session.get('sid');
|
||||
const serverId: number = parseInt(session.get('serverId'));
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
const { guildCode: code, receiveBoxs: resReceiveBoxs } = userGuild;
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Application, BackendSession, ChannelService, HandlerService, } from 'pi
|
||||
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 { UserGuildModel, UserGuildType } from '../../../db/UserGuild';
|
||||
import { checkAuth, joinGuild, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, refreshUserGuild, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate, getTodayGuildActive } from '../../../services/guildService';
|
||||
import { checkAuth, joinGuild, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate, getTodayGuildActive } from '../../../services/guildService';
|
||||
import { GuildModel, GuildType, GuildUpdateParam } from '../../../db/Guild';
|
||||
import { RoleModel, RoleType } from '../../../db/Role';
|
||||
import { ARMY } from '../../../pubUtils/dicParam';
|
||||
@@ -269,8 +269,7 @@ export class GuildHandler {
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
const sid = session.get('sid');
|
||||
const { myUserGuild } = msg;
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild) {
|
||||
return resResult(STATUS.SUCCESS, { hasGuild: false })
|
||||
};
|
||||
@@ -845,9 +844,9 @@ export class GuildHandler {
|
||||
const sid = session.get('sid');
|
||||
const serverId = session.get('serverId');
|
||||
|
||||
const { code, id, myUserGuild } = msg;
|
||||
const { code, id } = msg;
|
||||
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild) return resResult(STATUS.GUILD_NOT_FOUND);
|
||||
|
||||
let activeDayReward = gameData.guildActiveDayReward.get(id);
|
||||
|
||||
@@ -8,7 +8,7 @@ import { gameData, getGoodById, getWishPoolReward } from '../../../pubUtils/data
|
||||
import { addItems, checkGoods, checkHeroEquips, checkHeroes, getHonourObject, handleCost } from '../../../services/role/rewardService';
|
||||
import { ITID, CONSUME_TYPE } from '../../../consts/constModules/itemConst';
|
||||
import { GUILD_POINT_WAYS, GUILD_STRUCTURE, WISH_POOL_TYPE } from '../../../consts/constModules/guildConst';
|
||||
import { refreshUserGuild, getWishPool, getUserGuildWithRefActive, addActive } from '../../../services/guildService';
|
||||
import { getWishPool, getUserGuildWithRefActive, addActive } from '../../../services/guildService';
|
||||
import { findIndex, findWhere } from 'underscore';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { getRoleOnlineInfo } from '../../../services/redisService';
|
||||
@@ -27,8 +27,7 @@ export class WishPoolHandler {
|
||||
|
||||
async getWishPool(msg: guildInter & {}, session: BackendSession) {
|
||||
const roleId: string = session.get('roleId');
|
||||
const { myUserGuild } = msg;
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
let res = await getWishPool(userGuild);
|
||||
@@ -46,7 +45,7 @@ export class WishPoolHandler {
|
||||
if (dicItid.type != CONSUME_TYPE.SOUL || type != WISH_POOL_TYPE.SOUL)
|
||||
return resResult(STATUS.GUILD_WISH_POOL_CAN_NOT_WISH);
|
||||
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild) return resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
const { guildCode: code, wishGoods, receivedWishPool } = userGuild;
|
||||
@@ -89,7 +88,7 @@ export class WishPoolHandler {
|
||||
if (!wishUserGuild)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
const { guildCode: code, wishGoods } = wishUserGuild;
|
||||
let dntRoleGuild = await refreshUserGuild(myUserGuild, dntRoleId);
|
||||
let dntRoleGuild = await getUserGuildWithRefActive(dntRoleId);
|
||||
if (!dntRoleGuild)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
if (dntRoleGuild.guildCode != code)
|
||||
@@ -130,7 +129,7 @@ export class WishPoolHandler {
|
||||
const roleId: string = session.get('roleId');
|
||||
const roleName: string = session.get('roleName');
|
||||
const sid: string = session.get('sid');
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
const { wishGoods, receivedWishPool } = userGuild;
|
||||
@@ -153,7 +152,7 @@ export class WishPoolHandler {
|
||||
async getReports(msg: guildInter & {}, session: BackendSession) {
|
||||
const roleId: string = session.get('roleId');
|
||||
const { myUserGuild } = msg;
|
||||
let userGuild = await refreshUserGuild(myUserGuild, roleId);
|
||||
let userGuild = await getUserGuildWithRefActive(roleId);
|
||||
if (!userGuild)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
const { guildCode: code } = userGuild;
|
||||
|
||||
@@ -212,27 +212,20 @@ export async function getUserGuildWithRefActive(roleId: string, select?: string)
|
||||
let userGuild = await UserGuildModel.getMyGuild(roleId, select ? select + ' wishGoods +refTimeDaily' : '+refTimeDaily');
|
||||
// console.log(JSON.stringify(userGuild))
|
||||
if (!userGuild) return false;
|
||||
return await refreshUserGuild(userGuild, roleId);
|
||||
}
|
||||
|
||||
export async function refreshUserGuild(userGuild: UserGuildType, roleId: string) {
|
||||
if(!userGuild) return false;
|
||||
let { receivedActive, refTimeDaily, activeDaily, activeRecord, wishGoods, receivedWishPool, receiveBoxs } = userGuild;
|
||||
let { receivedActive, refTimeDaily, guildCode, wishGoods, receiveBoxs } = userGuild;
|
||||
|
||||
const now = new Date();
|
||||
let isRefDaily = shouldRefresh(refTimeDaily, now);
|
||||
// console.log('####### isRefDaily', isRefDaily, refTimeDaily, now)
|
||||
if (isRefDaily) {
|
||||
userGuild = await UserGuildModel.resetDailyInfo(roleId);
|
||||
if (!userGuild) return false;
|
||||
if(refTimeDaily) {
|
||||
await sendUnreceivedWishPool(wishGoods, roleId);
|
||||
await sendUnreceivedActiveBox(roleId, userGuild.guildCode, refTimeDaily, receivedActive);
|
||||
await sendUnreceivedDonateBox(roleId, userGuild.guildCode, refTimeDaily, receiveBoxs);
|
||||
await sendUnreceivedActiveBox(roleId, guildCode, refTimeDaily, receivedActive);
|
||||
await sendUnreceivedDonateBox(roleId, guildCode, refTimeDaily, receiveBoxs);
|
||||
await sendUnreceivedBossWar(roleId, refTimeDaily);
|
||||
}
|
||||
receivedActive = []; refTimeDaily = now; activeDaily = 0; activeRecord = []; wishGoods = []; receivedWishPool = [], receiveBoxs = [];
|
||||
let wishDntCnt = 0, donateCnt = 0;
|
||||
userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive, refTimeDaily, activeDaily, activeRecord, wishGoods, receiveBoxs, wishDntCnt, donateCnt, receivedWishPool }, {});
|
||||
if (!userGuild) return false;
|
||||
}
|
||||
|
||||
return userGuild;
|
||||
|
||||
1
gm-server/typings/config/plugin.d.ts
vendored
1
gm-server/typings/config/plugin.d.ts
vendored
@@ -31,6 +31,5 @@ declare module 'egg' {
|
||||
jsonp?: EggPluginItem;
|
||||
view?: EggPluginItem;
|
||||
cors?: EggPluginItem;
|
||||
xtransit?: EggPluginItem;
|
||||
}
|
||||
}
|
||||
@@ -225,6 +225,14 @@ export default class UserGuild extends BaseModel {
|
||||
const result: UserGuildType = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON, 'wishGoods.id': id }, { $inc: { 'wishGoods.$.receiveCnt': 1, 'wishGoods.$.drawCnt': 1}, $push:{'wishGoods.$.donateNames': dntRoleName} }, { new: true }).select(select).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static async resetDailyInfo(roleId: string) {
|
||||
const result: UserGuildType = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON }, { $set: {
|
||||
receivedActive: [], refTimeDaily: new Date(), activeDaily: 0, activeRecord: [], wishGoods: [], receivedWishPool: [], receiveBoxs: [], wishDntCnt: 0, donateCnt: 0
|
||||
} }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const UserGuildModel = getModelForClass(UserGuild);
|
||||
|
||||
Reference in New Issue
Block a user