diff --git a/game-server/app/servers/chat/remote/guildRemote.ts b/game-server/app/servers/chat/remote/guildRemote.ts index cfa698fef..1fa9f3a62 100644 --- a/game-server/app/servers/chat/remote/guildRemote.ts +++ b/game-server/app/servers/chat/remote/guildRemote.ts @@ -39,6 +39,7 @@ export class GuildRemote { private GUILD_CITY_DECLARE = 'onGuildCityDeclare'; // 有军团对这个城池进行宣战了 private GUILD_CITY_ACT_HP = 'onGuildCityGateHpUpdate'; // 诸侯入侵城门血条 private GUILD_RACE_UPDATE = 'onRaceHorseUpdate'; /// 更新木牛流马 + private GUILD_RACE_JOIN = 'onRaceHorseJoin' private GUILD_RACE_EVENT = 'onRaceEventUpdate'; /// 更新木牛流马 private GUILD_POP_UP_ACTIVITY = 'onActivityUpdate'; /// 向军团成员发送弹窗礼包 private GUILD_TRAIN_RESET = 'onGuildTainReset'; // 试炼场重置 @@ -282,6 +283,19 @@ export class GuildRemote { }); } + + /** + * @description 当有人加入这个木牛流马 + * @param guildCode 军团 + * @param woodenHorse 木马 + */ + public async pushRaceHorseJoin(guildCode: string, woodenHorse: WoodenHorse) { + this.pushMessage(guildCode, this.GUILD_RACE_JOIN, { + timestamp: Date.now(), + woodenHorse + }); + } + /** * @description 向军团推送事件 * @param guildCode diff --git a/game-server/app/servers/guild/handler/cityActivityHandler.ts b/game-server/app/servers/guild/handler/cityActivityHandler.ts index bede9f32b..e727d2ea9 100644 --- a/game-server/app/servers/guild/handler/cityActivityHandler.ts +++ b/game-server/app/servers/guild/handler/cityActivityHandler.ts @@ -180,7 +180,7 @@ export class CityActivityHandler { let { code } = myGuildActivityRec; // 更新公会参与的玩家 - obj.pushMembers(guildCode, roleId, userGuild.job); + obj.pushMembers(guildCode, roleId, userGuild.job, myGuildActivityRec.code); // 返回当前军团总军功 let r = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId }, true); diff --git a/game-server/app/servers/guild/handler/gateActivityHandler.ts b/game-server/app/servers/guild/handler/gateActivityHandler.ts index 737492cc3..7e2a0a4d8 100644 --- a/game-server/app/servers/guild/handler/gateActivityHandler.ts +++ b/game-server/app/servers/guild/handler/gateActivityHandler.ts @@ -93,7 +93,7 @@ export class GateActivityHandler { let { code, challengeCnt } = myGuildActivityRec; // 更新公会参与的玩家 - obj.pushMembers(guildCode, serverId, roleId, userGuild.job); + obj.pushMembers(guildCode, serverId, roleId, userGuild.job, code); // 返回当前军团总军功 let r = new Rank(REDIS_KEY.GATE_ACTIVITY, { serverId }, true); @@ -374,7 +374,7 @@ export class GateActivityHandler { let { aid } = msg; await GuildActivityRecordModel.getRecord(guildCode, serverId, aid); let userGuild = await UserGuildModel.getMyGuild(roleId); - let result = await GuildActivityRecordModel.updateInfo(guildCode, aid, { memberCnt: 1, members: [{ roleId, job: userGuild.job }], auctionType: aid + 1 }); + let result = await GuildActivityRecordModel.updateInfo(guildCode, aid, { memberCnt: 1, members: [{ roleId, job: userGuild.job, code: '' }], auctionType: aid + 1 }); return resResult(STATUS.SUCCESS, { sourceType: result.auctionType, diff --git a/game-server/app/servers/guild/handler/raceActivityHandler.ts b/game-server/app/servers/guild/handler/raceActivityHandler.ts index 88f8582bd..ef3cd8e03 100644 --- a/game-server/app/servers/guild/handler/raceActivityHandler.ts +++ b/game-server/app/servers/guild/handler/raceActivityHandler.ts @@ -10,6 +10,7 @@ import { Rank } from "../../../services/rankService"; import { checkActivityTask, checkTask } from "../../../services/taskService"; import { guildInter } from "../../../pubUtils/interface"; import { RaceActivityObject } from "../../../services/guildActivityObjService"; +import { getGuildChannelSid } from "../../../services/chatService"; export default function (app: Application) { new HandlerService(app, {}); @@ -42,11 +43,13 @@ export class RaceActivityHandler { let events = obj.getEvents(guildCode, woodenHorse.distance); let ranks = await getRaceActivityRank(guildCode, serverId); - let hasJoin = obj.hasJoin(guildCode, roleId); + let hasJoin = obj.getMember(guildCode, roleId); + return resResult(STATUS.SUCCESS, { ...statusResult, - hasJoin, + hasJoin: !!hasJoin, + code: hasJoin?.code||'', woodenHorse, ...ranks, events @@ -68,23 +71,25 @@ export class RaceActivityHandler { let obj = getRaceActivityObj(); - let hasJoin = obj.hasJoin(guildCode, roleId); + let hasJoin = !!obj.getMember(guildCode, roleId); if (hasJoin) { return resResult(STATUS.RACE_HAS_JOIN); } let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid, obj.getEvents(guildCode, 0)); - if (!guildActivityRec) return resResult(STATUS.INTERNAL_ERR); + if (!guildActivityRec) return resResult(STATUS.WRONG_PARMS); let { code: sourceCode } = guildActivityRec; let myGuildActivityRec = await UserGuildActivityRecModel.getRecord(roleId, roleName, guildCode, serverId, sourceCode, this.aid); let myGuild = await UserGuildModel.getMyGuild(roleId, 'job'); - let woodenHorse = await obj.joinWoodenHorse(guildCode, roleId, roleName, serverId, sid, myGuild.job); + let woodenHorse = await obj.joinWoodenHorse(guildCode, roleId, roleName, serverId, sid, myGuild.job, myGuildActivityRec.code); if (!woodenHorse) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH); let events = obj.getEvents(guildCode, woodenHorse.distance); + let chatSid = await getGuildChannelSid(guildCode); + this.app.rpc.chat.guildRemote.pushRaceHorseJoin.toServer(chatSid, guildCode, woodenHorse); return resResult(STATUS.SUCCESS, { code: myGuildActivityRec.code, @@ -115,7 +120,7 @@ export class RaceActivityHandler { if (!woodenHorse) return resResult(STATUS.GUILD_AUTH_NOT_ENOUGH); let events = obj.getEvents(guildCode, woodenHorse.distance); - let hasJoin = obj.hasJoin(guildCode, roleId); + let hasJoin = !!obj.getMember(guildCode, roleId); let items = obj.getItem(roleId); let woodenHorseList = await getWoodenHorseList(guildCode, serverId); @@ -168,7 +173,7 @@ export class RaceActivityHandler { // 更新userGuildActivityRecord let guildActivityRec = await GuildActivityRecordModel.getRecord(guildCode, serverId, this.aid); let myGuildActivityRec = await UserGuildActivityRecModel.updateInfo(code, { isSuccess, isCompleted: true }); - if (!guildActivityRec || !myGuildActivityRec) return resResult(STATUS.INTERNAL_ERR); + if (!guildActivityRec || !myGuildActivityRec) return resResult(STATUS.WRONG_PARMS); let hasShow = !!myGuildActivityRec.hasShow; if(!hasShow) { diff --git a/game-server/app/services/guildActivityObjService.ts b/game-server/app/services/guildActivityObjService.ts index 5480007fe..fed6044a8 100644 --- a/game-server/app/services/guildActivityObjService.ts +++ b/game-server/app/services/guildActivityObjService.ts @@ -47,17 +47,17 @@ export class GateActivityObject { return this.guilds; } - public pushMembers(guildCode: string, serverId: number, roleId: string, job: number) { + public pushMembers(guildCode: string, serverId: number, roleId: string, job: number, code: string) { if(this.members.has(guildCode)) { let members = this.members.get(guildCode); if(members.findIndex(cur => cur.roleId == roleId) == -1) { - members.push({ roleId, job }); + members.push({ roleId, job, code }); } } else { let arr = new Array(); arr.push(roleId); - this.members.set(guildCode, [{ roleId, job }]); + this.members.set(guildCode, [{ roleId, job, code }]); } if(this.guilds.has(serverId)) { let arr = this.guilds.get(serverId); @@ -164,17 +164,17 @@ export class CityActivityObject { } - public pushMembers(guildCode: string, roleId: string, job: number) { + public pushMembers(guildCode: string, roleId: string, job: number, code: string) { if(this.members.has(guildCode)) { let members = this.members.get(guildCode); if(members.findIndex(cur => cur.roleId == roleId) == -1) { - members.push({ roleId, job }); + members.push({ roleId, job, code }); } } else { let arr = new Array(); arr.push(roleId); - this.members.set(guildCode, [{ roleId, job }]); + this.members.set(guildCode, [{ roleId, job, code }]); } } @@ -217,17 +217,17 @@ export class RaceActivityObject { } // 是否加入过 - public hasJoin(guildCode: string, roleId: string) { + public getMember(guildCode: string, roleId: string) { let member = this.members.get(guildCode)||[]; - return member.findIndex(cur => cur.roleId == roleId) != -1; + return member.find(cur => cur.roleId == roleId); } // 加入member - private pushMember(guildCode: string, roleId: string, job: number) { + private pushMember(guildCode: string, roleId: string, job: number, code: string) { if(!this.members.has(guildCode)) { this.members.set(guildCode, []); } - this.members.get(guildCode).push({roleId, job}); + this.members.get(guildCode).push({roleId, job, code}); } public getMembersOfGuild(guildCode: string) { @@ -238,11 +238,11 @@ export class RaceActivityObject { return this.woodenHorses; } - public async joinWoodenHorse(guildCode: string, roleId: string, roleName: string, serverId: number, sid: string, job: number) { + public async joinWoodenHorse(guildCode: string, roleId: string, roleName: string, serverId: number, sid: string, job: number, code: string) { let woodenHorse = await this.getWoodenHorse(guildCode, serverId); if(!woodenHorse) return false; - woodenHorse.joinMember(roleId, roleName, sid) - this.pushMember(guildCode, roleId, job); + woodenHorse.joinMember(roleId, roleName, sid, code) + this.pushMember(guildCode, roleId, job, code); if(this.status == RACE_ACTIVITY_STATUS.START) { let item = getRaceEventItems(); diff --git a/shared/domain/battleField/guildActivity.ts b/shared/domain/battleField/guildActivity.ts index db0e0fa5f..92c446ba5 100644 --- a/shared/domain/battleField/guildActivity.ts +++ b/shared/domain/battleField/guildActivity.ts @@ -20,6 +20,8 @@ class WoodenHorseMember { roleName: string; sid: string; items?: RewardInter[]; + code?: string; + } // 木牛流马 @@ -189,9 +191,9 @@ export class WoodenHorse { } - public joinMember(roleId: string, roleName: string, sid: string) { + public joinMember(roleId: string, roleName: string, sid: string, code: string) { if(this.members.findIndex(cur => cur.roleId == roleId) == -1) { - this.members.push({ roleId, roleName, sid }); + this.members.push({ roleId, roleName, sid, code }); this.speed++; this.memberCnt++; } @@ -254,6 +256,8 @@ export class Member { roleId: string; // 玩家id @prop({required: true}) job: number; // 在军团的职位 + @prop({required: false}) + code?: string; // 玩家的当前记录的code } export class CityParam { diff --git a/shared/pubUtils/logUtil.ts b/shared/pubUtils/logUtil.ts index f32b60d9a..68f783cbb 100644 --- a/shared/pubUtils/logUtil.ts +++ b/shared/pubUtils/logUtil.ts @@ -26,7 +26,9 @@ function getParamByRole(role: RoleType) { export async function saveLoginAndOutLog(type: LOG_TYPE, session: any) { try { let params = getParamBySession(session); - await UserLogModel.createRecord({ type, ...params }); + if(params.roleId && params.roleName) { + await UserLogModel.createRecord({ type, ...params }); + } } catch (e) { console.error(e); } diff --git a/shared/pubUtils/roleUtil.ts b/shared/pubUtils/roleUtil.ts index fdf9735fd..1536bcb81 100644 --- a/shared/pubUtils/roleUtil.ts +++ b/shared/pubUtils/roleUtil.ts @@ -364,7 +364,10 @@ export class CreateHeroes extends UpdateHeroes { export async function deletRole(roleId: string) { let role = await RoleModel.findByRoleId(roleId); - if(!role || !role.hasInit) return false; + if(!role ) return false; + if(role.hasInit) { + + await ActionPointModel.deleteMany({roleId}); await ActivityBuyRecordsModel.deleteMany({ roleId }); await ActivityDailyChallengesModel.deleteMany({ roleId }); @@ -479,5 +482,6 @@ export async function deletRole(roleId: string) { const update = Object.assign(doc.toJSON(), pick(role, ['serverType', 'userInfo', 'seqId', 'serverId']), { roleName: role.roleId }); delete update._id; await RoleModel.updateMany({ roleId }, { $set: update }); + } return true; } \ No newline at end of file