back_recharge
lvxinran 2019-11-29 11:20:01 +08:00
commit fea1806186
4 changed files with 19 additions and 4 deletions

View File

@ -4,10 +4,13 @@ import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.root.User;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Stream;
public class Cmd_fixEquip extends GmAbstract{
public class Cmd_fixequip extends GmAbstract{
@Override
public boolean exec(String[] args) throws Exception {
List<User> userList = MongoUtil.getInstence().getMyMongoTemplate().findAll(User.getCollectionName(), User.class);
@ -16,7 +19,14 @@ public class Cmd_fixEquip extends GmAbstract{
Map<String, Equip> equipMap = user.getEquipManager().getEquipMap();
user.getHeroManager().getHeroMap().values().forEach(hero -> {
Map<Integer, String> equipByPositionMap = hero.getEquipByPositionMap();
equipByPositionMap.values().forEach(equipId -> equipMap.get(equipId).setHeroId(hero.getId()));
Set<Integer> removeHeroEquip = new HashSet<>();
for(Map.Entry<Integer,String> item : equipByPositionMap.entrySet()){
if(!equipMap.containsKey(item.getValue())){
removeHeroEquip.add(item.getKey());
}
}
removeHeroEquip.forEach(hero::removeEquip);
hero.getEquipByPositionMap().values().forEach(equipId -> equipMap.get(equipId).setHeroId(hero.getId()));
});
});
MongoUtil.getLjsdMongoTemplate().lastUpdate();

View File

@ -3,6 +3,8 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.RemoveHeroEvent;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
@ -23,6 +25,9 @@ public class RemoveEventHeroHandler implements IEventHandler{
if(userInMem == null){
return;
}
Hero hero = userInMem.getHeroManager().getHeroMap().get(heroId);
Map<String, Equip> equipMap = userInMem.getEquipManager().getEquipMap();
hero.getEquipByPositionMap().values().forEach(equip->equipMap.get(equip).setHeroId(""));
Map<String, Integer> endlessHeroInfo = userInMem.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if(endlessHeroInfo!=null && endlessHeroInfo.containsKey(heroId)){
endlessHeroInfo.remove(heroId);

View File

@ -63,8 +63,8 @@ public class HeroManager extends MongoBase {
public void removeHero(int uid,String heroId) {
if (heroMap.containsKey(heroId)){
removeString(getMongoKey()+".heroMap." + heroId);
heroMap.remove(heroId);
Poster.getPoster().dispatchEvent(new RemoveHeroEvent(uid,heroId));
heroMap.remove(heroId);
}
}

View File

@ -42,7 +42,7 @@ public class SAccomplishmentConfig implements BaseConfig {
int mapId = sAccomplishmentConfig.getMapId();
sAccomplishmentConfigByMapIdMap.computeIfAbsent(mapId,v->new ArrayList<>()).add(sAccomplishmentConfig);
sAccomplishmentConfigByMapIdAndLogicMap.computeIfAbsent(mapId,v->new HashMap<>());
sAccomplishmentConfigByMapIdAndLogicMap.get(mapId).computeIfAbsent(logic,v->new ArrayList<>()).add(sAccomplishmentConfig);
sAccomplishmentConfigByMapIdAndLogicMap.get(mapId).computeIfAbsent(sAccomplishmentConfig.getLogic(),v->new ArrayList<>()).add(sAccomplishmentConfig);
}
}