diff --git a/game-server/app/servers/activity/handler/gachaHandler.ts b/game-server/app/servers/activity/handler/gachaHandler.ts index 6fb640a91..db9fd22ca 100644 --- a/game-server/app/servers/activity/handler/gachaHandler.ts +++ b/game-server/app/servers/activity/handler/gachaHandler.ts @@ -155,9 +155,11 @@ export class GachaHandler { for (let { hid } of hope) { let dicHero = gameData.hero.get(hid); - if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND); - if (hid != 0 && dicHero.quality != HERO_QUALITY_TYPE.GOLD) { - return resResult(STATUS.GACHA_HOPE_NOT_GOLD); + if(hid != 0) { + if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND); + if (hid != 0 && dicHero.quality != HERO_QUALITY_TYPE.GOLD) { + return resResult(STATUS.GACHA_HOPE_NOT_GOLD); + } } } let userGacha = await UserGachaModel.updateInfo(roleId, gachaId, 0, { hope: hope.map(cur => { return { ...cur, hasGet: false } }) }) diff --git a/game-server/app/servers/chat/handler/chatHandler.ts b/game-server/app/servers/chat/handler/chatHandler.ts index 4c382f920..ba264123d 100644 --- a/game-server/app/servers/chat/handler/chatHandler.ts +++ b/game-server/app/servers/chat/handler/chatHandler.ts @@ -88,7 +88,7 @@ export class ChatHandler { const serverId = session.get('serverId'); const guildCode = session.get('guildCode'); const funcs: number[] = session.get('funcs'); - const sid = session.get('guildCode'); + const sid = session.get('sid'); let channelId = ''; if (channel === CHANNEL_PREFIX.WORLD) channelId = `${serverId}`; if (channel === CHANNEL_PREFIX.GUILD) channelId = guildCode; diff --git a/shared/db/UserGuild.ts b/shared/db/UserGuild.ts index babe8af25..dacb7b525 100644 --- a/shared/db/UserGuild.ts +++ b/shared/db/UserGuild.ts @@ -134,10 +134,13 @@ export default class UserGuild extends BaseModel { } public static async createUserGuild(guildCode: string, role: RoleType, isLeader: boolean) { + const lastGuild = await UserGuildModel.findMyLastGuild(role.roleId); + let { receiveBoxs = [], donateCnt = 0, receivedActive = [] } = lastGuild||{}; + const doc = new UserGuildModel(); let job = isLeader? GUILD_JOB.DAJIANGJUN: GUILD_JOB.SHIBING; let auth = isLeader? GUILD_AUTH.LEADER: GUILD_AUTH.MEMBER; - const update = Object.assign(doc.toJSON(), { guildCode, roleId: role.roleId, role: role._id, job, auth }); + const update = Object.assign(doc.toJSON(), { guildCode, roleId: role.roleId, role: role._id, job, auth, receiveBoxs, donateCnt, receivedActive }); delete update._id; const result: UserGuildType = await UserGuildModel.findOneAndUpdate({ roleId: role.roleId, guildCode, status: USER_GUILD_STATUS.ON }, update, { upsert: true, new: true }) .select('activeDaily activeRecord activeWeekly activeUpdateTime job auth receivedActive') @@ -146,6 +149,11 @@ export default class UserGuild extends BaseModel { return result; } + public static async findMyLastGuild(roleId: string) { + const userGuild = await UserGuildModel.findOne({ roleId, status: { $ne: USER_GUILD_STATUS.ON } }).sort({ updatedAt: -1 }).lean(); + return userGuild; + } + public static async dismiss(guildCode: string) { const result = await UserGuildModel.updateMany({ guildCode }, { status: USER_GUILD_STATUS.DISMISSED });