装备:删除装备前,从武将身上卸下
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { ITID, CONSUME_TYPE, ITEM_TABLE, REDIS_KEY, TASK_TYPE, CURRENCY, CURRENCY_TYPE, MAIL_TYPE, HANDLE_REWARD_TYPE } from './../consts';
|
||||
import { EquipModel } from './../db/Equip';
|
||||
import { ITID, CONSUME_TYPE, ITEM_TABLE, REDIS_KEY, TASK_TYPE, CURRENCY, CURRENCY_TYPE, MAIL_TYPE, HANDLE_REWARD_TYPE, HERO_SYSTEM_TYPE } from './../consts';
|
||||
import { EquipModel, EquipType } from './../db/Equip';
|
||||
import { resResult } from '../pubUtils/util';
|
||||
import { RoleModel, RoleType } from '../db/Role';
|
||||
import { setAp } from './actionPointService';
|
||||
import { pushCalPlayerCe, pushCalAllHeroCe } from './playerCeService';
|
||||
import { pushCalPlayerCe, pushCalAllHeroCe, calPlayerCeAndSave } from './playerCeService';
|
||||
import { ItemModel } from '../db/Item';
|
||||
import { STATUS } from '../consts/statusCode';
|
||||
import { pinus } from 'pinus';
|
||||
@@ -14,18 +14,20 @@ import { uniq } from 'underscore';
|
||||
import { HeroModel, HeroType } from '../db/Hero';
|
||||
import { Figure } from '../domain/dbGeneral';
|
||||
import { Rank } from './rankService';
|
||||
import { checkActivityTask, pushActivityUpdate, pushTaskUpdate } from './taskService';
|
||||
import { checkActivityTask, checkTaskWithHero, pushActivityUpdate, pushTaskUpdate } from './taskService';
|
||||
import { CreateHeroParam } from '../domain/roleField/hero';
|
||||
import { HeroSkin } from '../db/Hero';
|
||||
import { errlogger } from '../util/logger';
|
||||
import { BAG } from '../pubUtils/dicParam';
|
||||
import { sendMailByContent } from './mailService';
|
||||
import { calEquipSeids } from '../pubUtils/playerCe';
|
||||
|
||||
export async function handleCost(roleId: string, sid: string, goods: Array<ItemInter>) {
|
||||
|
||||
let uids = [{ uid: roleId, sid }];
|
||||
let { items, equips, gold, coin } = sortItems(goods, HANDLE_REWARD_TYPE.COST);
|
||||
let equipSeqIds = equips.map(cur => cur.seqId);
|
||||
let resEquips: EquipType[] = [];
|
||||
|
||||
// 检查货币是否充足
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
@@ -36,7 +38,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
|
||||
}
|
||||
//检查装备是否存在
|
||||
if (equips.length > 0) {
|
||||
let resEquips = await EquipModel.getEquips(equipSeqIds);
|
||||
resEquips = await EquipModel.getEquips(equipSeqIds);
|
||||
if (resEquips.length < equips.length)
|
||||
return false;
|
||||
}
|
||||
@@ -48,7 +50,28 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
|
||||
}
|
||||
|
||||
//删除装备
|
||||
if (equips.length > 0) {
|
||||
if (resEquips.length > 0) {
|
||||
let heroMap = new Map<number, { hero: HeroType, equips: EquipType[]}>();
|
||||
for(let equip of resEquips) {
|
||||
if(equip.hid > 0) {
|
||||
if(!heroMap.has(equip.hid)) {
|
||||
let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId);
|
||||
heroMap.set(equip.hid, { hero, equips: [] });
|
||||
}
|
||||
heroMap.get(equip.hid).equips.push(equip);
|
||||
}
|
||||
}
|
||||
for(let [_hid, {hero, equips} ] of heroMap) {
|
||||
let args = calEquipSeids(hero);
|
||||
for(let equip of equips) {
|
||||
hero = await HeroModel.removeEquip(roleId, hero.hid, equip.ePlaceId, equip._id);
|
||||
}
|
||||
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args);
|
||||
await checkTaskWithHero(roleId, sid, null, TASK_TYPE.EQUIP_BY_HERO, hero, [-1]);
|
||||
}
|
||||
|
||||
|
||||
await EquipModel.deleteEquips(roleId, equipSeqIds);
|
||||
pinus.app.get('channelService').pushMessageByUids('onEquipDel', resResult(STATUS.SUCCESS, { equips }), uids);
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ export default class Equip extends BaseModel {
|
||||
}
|
||||
|
||||
public static async getEquips(ids: Array<number>) {
|
||||
let result = await EquipModel.find({ seqId: { $in: ids } });
|
||||
let result: EquipType[] = await EquipModel.find({ seqId: { $in: ids } });
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user