diff --git a/game-server/app/servers/gm/handler/gmRoleHandler.ts b/game-server/app/servers/gm/handler/gmRoleHandler.ts index 0dd74830b..50eb32a11 100644 --- a/game-server/app/servers/gm/handler/gmRoleHandler.ts +++ b/game-server/app/servers/gm/handler/gmRoleHandler.ts @@ -5,12 +5,10 @@ import { getRoleOnlineInfo, updateUserInfo } from '../../../services/redisServic import { addItems } from '../../../services/role/rewardService'; import { RewardInter } from '../../../pubUtils/interface'; import { gameData, getExpByLv, getHeroExpByLv, getHeroLvByExp, getLvByExp } from '../../../pubUtils/data'; -import { RoleModel, RoleType } from '../../../db/Role'; -import { BLOCK_TYPE, GUILD_AUTH, GUILD_DISMISS_WAY, GUILD_JOB, GUILD_MASTER_CHANGE_WAY, GUILD_STATUS, GUILD_STRUCTURE, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, TA_EVENT } from '../../../consts'; +import { RoleModel, RoleType, WarStar } from '../../../db/Role'; +import { BLOCK_TYPE, DEFAULT_HEROES, GUILD_AUTH, GUILD_DISMISS_WAY, GUILD_JOB, GUILD_MASTER_CHANGE_WAY, GUILD_STATUS, GUILD_STRUCTURE, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, TA_EVENT, WAR_TYPE } from '../../../consts'; import { GuildFormParam, SetHeroParam } from '../../../domain/backEndField/params'; import { GuildModel, GuildUpdateParam } from '../../../db/Guild'; -import { getGuildChannelSid } from '../../../services/chatService'; -import { pushGuildNoticeUpdateMsg } from '../../../services/sysChatService' import { Rank } from '../../../services/rankService'; import { UserGuildModel } from '../../../db/UserGuild'; import { UserGuildApplyModel } from '../../../db/UserGuildApply'; @@ -24,6 +22,8 @@ import { createHeroes } from '../../../services/role/createHero'; import { calculateCeWithHero } from '../../../services/playerCeService'; import { pushChangeGuildLeader, pushGuildDismiss, pushGuildInfoUpdate } from '../../../services/guildService'; import { sendMessageToUserWithSuc } from '../../../services/pushService'; +import { RScriptRecordModel } from '../../../db/RScriptRecord'; +import { DicWar } from '../../../pubUtils/dictionary/DicWar'; let timer: NodeJS.Timer; export default function (app: Application) { @@ -252,4 +252,35 @@ export class GmRoleHandler { return resResult(STATUS.SUCCESS, { code }); } + + async skipEpilogue(msg: { roleId: string, roleName: string }, session: BackendSession) { + + const { roleId, roleName } = msg; + let role = await RoleModel.findByRoleId(roleId); + if(!role) return resResult(STATUS.ROLE_NOT_FOUND); + if(role.hasInit) return resResult(STATUS.ROLE_HAS_INIT); + + let checkName = await RoleModel.checkName(roleName, role.serverId); + if (checkName) return resResult(STATUS.NAME_HAS_USED); + + let warStars: WarStar[] = []; + let insertParams: DicWar[] = []; + let exp = 0; + for(let i = 101; i <= 103; i++) { + let dicWar = gameData.war.get(i); + await RScriptRecordModel.insertScripts(roleId, insertParams); + insertParams.push(dicWar); + warStars.push({ id: dicWar.war_id, warType: dicWar.warType, star: 0, stars: [] }); + exp += dicWar.kingExp; + } + let lv = getLvByExp(exp); + + await RScriptRecordModel.deleteByWarType(roleId, WAR_TYPE.NORMAL); + await RScriptRecordModel.insertScripts(roleId, insertParams); + + let onlineUser = await getRoleOnlineInfo(roleId); + await createHeroes(roleId, roleName, onlineUser?.sid, role.serverId, DEFAULT_HEROES.map(hid => ({hid, count: 1})), { roleName, hasInit: true, title: role.title, teraphs: role.teraphs, lv, exp, warStar: warStars }); + + return resResult(STATUS.SUCCESS); + } } \ No newline at end of file diff --git a/shared/db/Role.ts b/shared/db/Role.ts index 01f12b89f..70f15a396 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -718,6 +718,7 @@ export default class Role extends BaseModel { if(form.uid) searchObj['userInfo.uid'] = form.uid; if(form.roleId) searchObj['roleId'] = form.roleId; if(form.roleName) searchObj['roleName'] = { $regex: new RegExp(form.roleName.toString(), 'i') }; + if(form.tel) searchObj['userInfo.tel'] = form.tel; return searchObj } diff --git a/shared/domain/backEndField/search.ts b/shared/domain/backEndField/search.ts index 8c59c9693..3d6cdf87f 100644 --- a/shared/domain/backEndField/search.ts +++ b/shared/domain/backEndField/search.ts @@ -10,6 +10,7 @@ export interface SearchRoleParam { uid?: number; // 玩家id roleId?: string; // 角色id roleName?: string; // 昵称 + tel?: string; } export interface SearchHeroParam { diff --git a/shared/pubUtils/roleUtil.ts b/shared/pubUtils/roleUtil.ts index c9fc98560..64c235c27 100644 --- a/shared/pubUtils/roleUtil.ts +++ b/shared/pubUtils/roleUtil.ts @@ -86,7 +86,7 @@ import { JewelModel } from "../db/Jewel"; import { RoleCeModel } from "../db/RoleCe"; export async function deletRole(roleId: string) { - let role = await RoleModel.findByRoleId(roleId); + let role = await RoleModel.findByRoleId(roleId, null, true, true); if(!role ) return false; if(role.hasInit) { @@ -203,6 +203,7 @@ export async function deletRole(roleId: string) { let doc = new RoleModel(); 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; diff --git a/shared/resource/jsons/dic_api.json b/shared/resource/jsons/dic_api.json index 8358791a0..f50b6912f 100644 --- a/shared/resource/jsons/dic_api.json +++ b/shared/resource/jsons/dic_api.json @@ -817,5 +817,12 @@ "name": "切换活动显示", "module": "activity", "type": "update" + }, + { + "id": 118, + "api": "gm.gmRoleHandler.skipEpilogue", + "name": "跳过序章", + "module": "role", + "type": "update" } ] \ No newline at end of file