diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index c5c662300..a3cd618e5 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -1,10 +1,10 @@ import { STATUS } from '../../../consts/statusCode'; import { RoleModel, RoleUpdate } from './../../../db/Role'; import { HeroModel, HeroUpdate } from '../../../db/Hero'; -import { resResult, decodeIdCntArrayStr, parseGoodStr } from '../../../pubUtils/util'; +import { resResult, decodeIdCntArrayStr, parseGoodStr, genCode } from '../../../pubUtils/util'; import { Application, BackendSession, pinus, HandlerService, } from 'pinus'; import { handleCost, addItems, createHeroes } from '../../../services/rewardService'; -import { getTitle, getTeraph, gameData, getScollByStar, getFriendLvByExp, getHeroExpByLv } from '../../../pubUtils/data'; +import { getTitle, getTeraph, gameData, getScollByStar, getFriendLvByExp, getHeroExpByLv, getExpByLv } from '../../../pubUtils/data'; import { SCHOOL, SCROLL, EXTERIOR, SCRIPT } from '../../../pubUtils/dicParam'; import { getAtrrNameById } from '../../../consts/constModules/abilityConst' import { findIndex } from 'underscore'; @@ -12,7 +12,7 @@ import { SclResultInter, SclPosInter } from '../../../pubUtils/interface'; import { SchoolModel } from '../../../db/School'; import { getTeraphStrengthenResult, getSchoolList } from '../../../services/roleService' import { calPlayerCeAndSave, calAllHeroCe } from '../../../services/playerCeService'; -import { HERO_SYSTEM_TYPE, LINEUP_NUM, ROLE_SELECT, REDIS_KEY, TASK_TYPE, DEFAULT_HEROES, DEFAULT_HERO_LV, DEFAULT_ITEMS, DEFAULT_EQUIPS, DEFAULT_GOLD, DEFAULT_COIN, DEBUG_MAGIC_WORD } from '../../../consts'; +import { HERO_SYSTEM_TYPE, LINEUP_NUM, ROLE_SELECT, REDIS_KEY, TASK_TYPE, DEFAULT_HEROES, DEFAULT_HERO_LV, DEFAULT_ITEMS, DEFAULT_EQUIPS, DEFAULT_GOLD, DEFAULT_COIN, DEBUG_MAGIC_WORD, COUNTER, DEFAULT_LV } from '../../../consts'; import { checkBattleHeroesByHid, roleLevelup } from '../../../services/normalBattleService'; import { Rank } from '../../../services/rankService'; import { updateUserInfo } from '../../../services/redisService'; @@ -24,6 +24,7 @@ import { CreateHeroes, deletRole } from '../../../pubUtils/roleUtil'; import { Figure } from '../../../domain/dbGeneral'; import { getActivities } from '../../../services/activity/activityService'; import * as dicParam from '../../../pubUtils/dicParam'; +import Counter from '../../../db/Counter'; export default function (app: Application) { new HandlerService(app, {}); @@ -553,8 +554,24 @@ export class RoleHandler { return resResult(STATUS.TOKEN_ERR); } + console.log('*************** 1') let roleId = session.get('roleId'); - await deletRole(roleId); + let role = await RoleModel.findByRoleId(roleId); + console.log('*************** 2') + if(role?.hasInit) { + console.log('*************** 3') + let userInfo = role.userInfo; + let newRoleId = genCode(10); + const seqId = await Counter.getNewCounter(COUNTER.ROLE) || -1; + console.log('*************** 4') + role = await RoleModel.createRole(userInfo.uid, role.serverId, { roleId: newRoleId, code: role.code, roleName: newRoleId, seqId, lv: DEFAULT_LV, exp: (getExpByLv(DEFAULT_LV - 1) || { sum: 0 }).sum || 0 }); + // await RoleModel.findOneAndUpdate({ roleId }, { $set: { 'userInfo.uid': 0, roleName: 'deletedRole' } }); + + console.log('*************** 5') + } + session.set('roleId', role.roleId); + session.push('roleId', () => {}); + console.log('*************** 6') return resResult(STATUS.SUCCESS); } diff --git a/shared/db/Role.ts b/shared/db/Role.ts index a2e9705e6..fb247ec0d 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -358,6 +358,7 @@ export default class Role extends BaseModel { if (!user) return null; const doc = new RoleModel(); const update = Object.assign(doc.toJSON(), roleInfo, { userInfo: user, serverType: user.serverType, serverId }); + delete update._id; const role: RoleType = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, update, { upsert: true, new: true }).lean(lean); return role; }