后台:添加设置武将星级
This commit is contained in:
@@ -4,10 +4,10 @@ import { STATUS } from '../../../consts/statusCode';
|
||||
import { getRoleOnlineInfo, updateUserInfo } from '../../../services/redisService';
|
||||
import { addItems, createHeroes } from '../../../services/rewardService';
|
||||
import { RewardInter } from '../../../pubUtils/interface';
|
||||
import { getExpByLv, getLvByExp } from '../../../pubUtils/data';
|
||||
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, ITEM_CHANGE_REASON, MAIL_TYPE, REDIS_KEY, TA_EVENT } from '../../../consts';
|
||||
import { GuildFormParam } from '../../../domain/backEndField/params';
|
||||
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, REDIS_KEY, TA_EVENT } 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'
|
||||
@@ -17,6 +17,11 @@ import { UserGuildApplyModel } from '../../../db/UserGuildApply';
|
||||
import { reportTAEvent } from '../../../services/sdkService';
|
||||
import { sendMailByContent } from '../../../services/mailService';
|
||||
import { GuildLeader } from '../../../domain/rank';
|
||||
import { HeroModel } from '../../../db/Hero';
|
||||
import { calAllHeroCe, calPlayerCeAndSave } from '../../../services/playerCeService';
|
||||
import { SkinModel } from '../../../db/Skin';
|
||||
import { PvpDefenseModel } from '../../../db/PvpDefense';
|
||||
import { calculatetopLineup } from '../../../pubUtils/playerCe';
|
||||
|
||||
let timer: NodeJS.Timer;
|
||||
export default function (app: Application) {
|
||||
@@ -73,6 +78,51 @@ export class GmRoleHandler {
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
async setHero(msg: { roleId: string, hid: number, param: SetHeroParam }, session: BackendSession) {
|
||||
let { roleId, hid } = msg;
|
||||
let param = new SetHeroParam(msg.param);
|
||||
if(!param.checkParams()) return resResult(STATUS.WRONG_PARMS);
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
if(!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
let { sid } = await getRoleOnlineInfo(roleId);
|
||||
|
||||
if(param.lv && param.lv > 0) {
|
||||
let exp = getHeroExpByLv(param.lv - 1)||0;
|
||||
exp += (param.expInc||0);
|
||||
let newLv = getHeroLvByExp(exp);
|
||||
param.lv = newLv;
|
||||
param['exp'] = exp;
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAR, sid, roleId, hero, param);
|
||||
if(param.job > 0) {
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, sid, roleId, hero, { job: param.job, jobStage: 0 });
|
||||
}
|
||||
|
||||
if (hero.star != param.star) {
|
||||
await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, 1]); // 升星可能影响到百家学院全局加成
|
||||
}
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
async deleteHero(msg: { roleId: string, hid: number }, session: BackendSession) {
|
||||
let { roleId, hid } = msg;
|
||||
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
|
||||
await HeroModel.deleteHero(roleId, hid);
|
||||
await SkinModel.deleteByHero(roleId, hid);
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let { topLineup, topLineupCe } = await calculatetopLineup(role, hid, 0, null);
|
||||
await PvpDefenseModel.deleteHero(roleId, hid);
|
||||
await RoleModel.updateRoleInfo(roleId, { topLineup, topLineupCe, ce: role.ce - hero.ce });
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
async updateGuild(msg: GuildFormParam, session: BackendSession ) {
|
||||
const uid = session.get('uid');
|
||||
let params = new GuildFormParam(msg);
|
||||
|
||||
Reference in New Issue
Block a user