diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index 42193befc..4e10493e1 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -23,6 +23,7 @@ import { SkinModel, SkinUpdate } from '../../../db/Skin'; import { CreateHeroes, deletRole } from '../../../pubUtils/roleUtil'; import { Figure } from '../../../domain/dbGeneral'; import { getActivities } from '../../../services/activity/activityService'; +import * as dicParam from '../../../pubUtils/dicParam'; export default function (app: Application) { new HandlerService(app, {}); @@ -465,16 +466,25 @@ export class RoleHandler { let { roleName } = msg; let roleId = session.get('roleId'); let serverId = session.get('serverId'); + let sid = session.get('sid'); + if(!roleName) return resResult(STATUS.WRONG_PARMS); let checkName = await RoleModel.checkName(roleName, serverId); if (checkName) return resResult(STATUS.NAME_HAS_USED); - let role = await RoleModel.updateRoleInfo(roleId, { roleName }); + let role = await RoleModel.findByRoleId(roleId, 'renameCnt'); + let costGold = role.renameCnt >= dicParam.NAMEPLATE.NAMEPLATE_FREECOST? dicParam.NAMEPLATE.NAMEPLATE_FEECOST: 0; + if(costGold > 0) { + let result = await handleCost(roleId, sid, [getGoldObject(costGold)]); + if(!result) return resResult(STATUS.BATTLE_GOLD_NOT_ENOUGH); + } + + role = await RoleModel.incRoleInfo(roleId, { renameCnt: 1 }, { roleName }); session.set('roleName', role.roleName); session.push('roleName', () => { }); await updateUserInfo(REDIS_KEY.USER_INFO, roleId, [{ field: 'roleName', value: roleName }]); - return resResult(STATUS.SUCCESS, { roleName: role.roleName }); + return resResult(STATUS.SUCCESS, { roleName: role.roleName, renameCnt: role.renameCnt }); } async saveGuide(msg: { ids: number[] }, session: BackendSession) { diff --git a/shared/consts/constModules/selectConst.ts b/shared/consts/constModules/selectConst.ts index 4a357e417..6c8501c97 100644 --- a/shared/consts/constModules/selectConst.ts +++ b/shared/consts/constModules/selectConst.ts @@ -49,4 +49,4 @@ export enum FRIEND_SHIP_SELECT { GET_FRIEND_VALUE = 'friendValue friendLv' } -export const ENTERY_ROLE_PICK = ['roleId', 'roleName', 'serverId', 'ce', 'topLineupCe', 'coin', 'lv', 'exp', 'vLv', 'gold', 'heros', 'equips', 'consumeGoods', 'title', 'teraphs', 'showLineup', 'heads', 'head', 'frames', 'frame', 'spines', 'spine', 'hasGuild', 'guildCode', 'todayZeroPoint', 'apJson', 'skins', 'totalPay', 'guide', 'hasInit']; \ No newline at end of file +export const ENTERY_ROLE_PICK = ['roleId', 'roleName', 'serverId', 'ce', 'topLineupCe', 'coin', 'lv', 'exp', 'vLv', 'gold', 'heros', 'equips', 'consumeGoods', 'title', 'teraphs', 'showLineup', 'heads', 'head', 'frames', 'frame', 'spines', 'spine', 'hasGuild', 'guildCode', 'todayZeroPoint', 'apJson', 'skins', 'totalPay', 'guide', 'hasInit', 'renameCnt']; \ No newline at end of file diff --git a/shared/db/Role.ts b/shared/db/Role.ts index 5c533e5e6..a2e9705e6 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -320,6 +320,10 @@ export default class Role extends BaseModel { @prop({ required: true, default: [], type: Number }) guide: number[]; // 已领取奖励 + + @prop({ required: true }) + renameCnt: number; // 改名次数 + public static async findAllByUid(uid: number, getters = false, virtuals = true) { const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt').lean({ getters, virtuals }); return role; @@ -733,7 +737,7 @@ export const RoleModel = getModelForClass(Role); export interface RoleType extends Pick, keyof Role> { }; export type RoleUpdate = Partial; // 将所有字段变成可选项 -export type RoleInc = Partial, 'heroNum' | 'blockCnt' | 'friendCnt' | 'gold' | 'coin' | 'ce'>>; +export type RoleInc = Partial, 'heroNum' | 'blockCnt' | 'friendCnt' | 'gold' | 'coin' | 'ce' | 'renameCnt'>>; // 初始化 function getInitialTeraph() {