后台:添加设置武将星级
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);
|
||||
|
||||
@@ -12,6 +12,7 @@ import { CheckMeterial } from './rewardService';
|
||||
import { HeroUpdate } from '../db/Hero';
|
||||
import { SkinUpdate } from '../db/Skin';
|
||||
import { Figure } from '../domain/dbGeneral';
|
||||
import { pick } from 'underscore';
|
||||
|
||||
export async function getTeraphStrengthenResult(role: RoleType, count: number, dicTeraph: DicTeraph, teraph: Teraph) {
|
||||
let criAttr: number[] = [], times = 0;
|
||||
@@ -79,13 +80,13 @@ export function addUserToChannel(channel: Channel, user: ChannelUser) {
|
||||
export async function getSimpleRoleInfo(roleId: string) {
|
||||
if (!roleId) return null;
|
||||
let role = await RoleModel.findByRoleId(roleId, ROLE_SELECT.SHOW_SIMPLE, true);
|
||||
return role;
|
||||
return pick(role, ['roleId', 'roleName', 'head', 'frame', 'spine', 'lv', 'title', 'job', 'quitTime', 'loginTime', 'vLv', 'guildName', 'serverId', 'userInfo']);
|
||||
}
|
||||
|
||||
export async function getSimpleRoleInfos(roleIds: string[]) {
|
||||
if (!roleIds || !roleIds.length) return null;
|
||||
let roles = await RoleModel.findByRoleIds(roleIds, ROLE_SELECT.SHOW_SIMPLE, true);
|
||||
return roles;
|
||||
return roles.map(role => pick(role, ['roleId', 'roleName', 'head', 'frame', 'spine', 'lv', 'title', 'job', 'quitTime', 'loginTime', 'vLv', 'guildName', 'serverId', 'userInfo']));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -56,12 +56,6 @@ export default class UserController extends Controller {
|
||||
ctx.body = await ctx.service.users.getHeroList(page, pageSize, sortField, sortOrder, form);
|
||||
}
|
||||
|
||||
public async deleteHero() {
|
||||
const { ctx } = this;
|
||||
const { roleId, hid } = ctx.request.body;
|
||||
ctx.body = await ctx.service.users.deleteHero(roleId, parseInt(hid));
|
||||
}
|
||||
|
||||
// public async setHeroLv() {
|
||||
// const { ctx } = this;
|
||||
// const { selectedRowKeys: roleIdAndHids, lv } = ctx.request.body;
|
||||
|
||||
@@ -29,7 +29,6 @@ export default (app: Application) => {
|
||||
router.post('/api/users/setwar', tokenParser, controller.users.setWar);
|
||||
router.post('/api/users/setcreatetime', tokenParser, controller.users.setCreateTime);
|
||||
router.post('/api/users/getherolist', tokenParser,controller.users.getHeroList);
|
||||
router.post('/api/users/deletehero', tokenParser, controller.users.deleteHero);
|
||||
router.post('/api/users/getequiplist', tokenParser, controller.users.getEquipList);
|
||||
router.post('/api/users/getitemlist', tokenParser, controller.users.getItemList);
|
||||
router.post('/api/users/getguildlist', tokenParser, controller.users.getGuildList);
|
||||
|
||||
@@ -2,14 +2,13 @@ import { UserModel } from '@db/User';
|
||||
import { CeAttrDataRole, RoleModel } from '@db/Role';
|
||||
import { HeroModel } from '@db/Hero';
|
||||
import { EquipModel } from '@db/Equip';
|
||||
import { PvpDefenseModel } from '@db/PvpDefense';
|
||||
|
||||
import { Service } from 'egg';
|
||||
import { STATUS, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, REDIS_KEY, WAR_TYPE } from '@consts';
|
||||
import { ITID } from '@consts';
|
||||
import { ItemModel } from '@db/Item';
|
||||
import { gameData, getExpByLv } from '@pubUtils/data';
|
||||
import { calPlayerCeAndSave, calculatetopLineup, calEquipSeids } from '@pubUtils/playerCe';
|
||||
import { calPlayerCeAndSave, calEquipSeids } from '@pubUtils/playerCe';
|
||||
import { AttributeCal } from '@domain/roleField/attribute';
|
||||
import { smsModel } from '@db/Sms';
|
||||
import { isString } from 'underscore';
|
||||
@@ -19,7 +18,6 @@ import { GiftCodeDetailModel } from '@db/GiftCodeDetail';
|
||||
import { CreateHeroes, deletRole } from '@pubUtils/roleUtil';
|
||||
import { RScriptRecordModel } from '@db/RScriptRecord';
|
||||
import { DicWar } from '@pubUtils/dictionary/DicWar';
|
||||
import { SkinModel } from '@db/Skin';
|
||||
import { SearchEquipParam, SearchHeroParam, SearchUserParam, SearchGiftCodeParam, SearchGiftCodeDetailParam, SearchItemParam, SearchGuildParam } from '@domain/backEndField/search';
|
||||
import { CreateGiftCode, UpdateGiftCode } from '@domain/backEndField/params';
|
||||
import { isNumber } from 'util';
|
||||
@@ -358,24 +356,6 @@ export default class GMUsers extends Service {
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { list, total })
|
||||
}
|
||||
|
||||
|
||||
public async deleteHero(roleId: string, hid: number) {
|
||||
console.log('enter Auth deleteRole');
|
||||
const ctx = this.ctx;
|
||||
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
if (!hero) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
await HeroModel.deleteHero(roleId, hid);
|
||||
await SkinModel.deleteByHero(roleId, hid);
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
await calculatetopLineup(role, hid, 0, null);
|
||||
await PvpDefenseModel.deleteHero(roleId, hid);
|
||||
await RoleModel.updateRoleInfo(roleId, { topLineup: role.topLineup, topLineupCe: role.topLineupCe, ce: role.ce - hero.ce });
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
public async deleteEquip(roleIdAndSeqIds: string[]) {
|
||||
console.log('enter Auth deleteEquip');
|
||||
const ctx = this.ctx;
|
||||
|
||||
@@ -159,7 +159,7 @@ export default class PvpDefense extends BaseModel {
|
||||
}
|
||||
|
||||
public static async deleteHero(roleId: string, hid: number) {
|
||||
let result:PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$pull:{heroes: {actorId:hid}}}, {new: true}).lean();
|
||||
let result:PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$pull:{lineupCe: {hid}, heroScores: {hid}}, $set: {defense: null, attack: null}}, {new: true}).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,4 +288,30 @@ export class GuildFormParam {
|
||||
if(this.donate && !isNumber(this.donate)) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export class SetHeroParam {
|
||||
lv?: number;
|
||||
expInc?: number;
|
||||
star?: number;
|
||||
quality?: number;
|
||||
colorStar?: number;
|
||||
job?: number;
|
||||
|
||||
constructor(obj?: any) {
|
||||
if(obj) {
|
||||
for(let key in obj) {
|
||||
this[key] = obj[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
checkParams() {
|
||||
if(this.lv && !isNumber(this.lv)) return false;
|
||||
if(this.expInc && !isNumber(this.expInc)) return false;
|
||||
if(this.star && !isNumber(this.star)) return false;
|
||||
if(this.quality && !isNumber(this.quality)) return false;
|
||||
if(this.colorStar && !isNumber(this.colorStar)) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -162,7 +162,7 @@
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"api": "/api/users/deletehero",
|
||||
"api": "gm.gmRoleHandler.deleteHero",
|
||||
"name": "删除武将",
|
||||
"module": "user",
|
||||
"type": "delete"
|
||||
@@ -768,5 +768,12 @@
|
||||
"name": "数数上报",
|
||||
"module": "server",
|
||||
"type": "update"
|
||||
},
|
||||
{
|
||||
"id": 111,
|
||||
"api": "gm.gmRoleHandler.setHero",
|
||||
"name": "设置武将",
|
||||
"module": "user",
|
||||
"type": "update"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user