法宝丢失问题,助战克隆导致入库数据异常处理

master_haizei
grimm 2023-12-31 15:36:01 +08:00
parent 0eb673e594
commit ea310891c5
3 changed files with 30 additions and 12 deletions

View File

@ -15,6 +15,13 @@ public class Baubles extends PropertyItem{
public Baubles() { public Baubles() {
} }
// 克隆
public Baubles(Baubles baubles) {
super(baubles);
this.masterId = baubles.getMasterId();
this.blessList = new HashSet<>(baubles.getBlessList());
}
public Baubles(int uid, int equipId) { public Baubles(int uid, int equipId) {
super(uid, equipId); super(uid, equipId);
} }

View File

@ -25,6 +25,15 @@ public class PropertyItem extends MongoBase {
this.equipId = equipId; this.equipId = equipId;
} }
// 克隆
public PropertyItem(PropertyItem item) {
this.id = item.getId();
this.equipId = item.getEquipId();
this.level = item.getLevel();
this.buildLevel = item.getBuildLevel();
this.heroId = item.getHeroId();
}
public String getId() { public String getId() {
return id; return id;
} }

View File

@ -287,22 +287,23 @@ public class CBean2Proto {
HelpTypeEnum type = HelpTypeEnum.getType(hero.getPropertyId()); HelpTypeEnum type = HelpTypeEnum.getType(hero.getPropertyId());
// 英雄镜像 // 英雄镜像
EquipManager equipManager = user.getEquipManager(); EquipManager equipManager = user.getEquipManager();
Hero clone = hero.clone();
// 魂宝灵宝镜像 // 魂宝灵宝镜像
List<PropertyItem> jewels = buildPropertyItemList(equipManager, hero.getJewelInfo()); List<PropertyItem> jewels = buildPropertyItemList(equipManager, clone.getJewelInfo());
// 法相 // 法相
List<PropertyItem> faxiangs = buildPropertyItemList(equipManager, hero.getFaxiangList()); List<PropertyItem> faxiangs = buildPropertyItemList(equipManager, clone.getFaxiangList());
// 结果返回,援助类型不在这里写 // 结果返回,援助类型不在这里写
HelpHero helpHero = new HelpHero(); HelpHero helpHero = new HelpHero();
helpHero.setUid(user.getId()); helpHero.setUid(user.getId());
helpHero.setFunctionType(type); helpHero.setFunctionType(type);
helpHero.setCreatTime(TimeUtils.now()); helpHero.setCreatTime(TimeUtils.now());
helpHero.setHero(hero); helpHero.setHero(clone);
helpHero.setState(0); helpHero.setState(0);
helpHero.setJewels(jewels); helpHero.setJewels(jewels);
helpHero.setFaxiangs(faxiangs); helpHero.setFaxiangs(faxiangs);
helpHero.setFourTotalTier(user.getPlayerInfoManager().getFourChallengeTotal()); helpHero.setFourTotalTier(user.getPlayerInfoManager().getFourChallengeTotal());
helpHero.setBaubles(equipManager.getBaubles(hero.getBauBlesId())); helpHero.setBaubles(equipManager.getBaubles(clone.getBauBlesId()));
helpHero.setBaublesList(buildBaublesList(equipManager, hero.getBauBlesId())); helpHero.setBaublesList(buildBaublesList(equipManager, clone.getBauBlesId()));
return helpHero; return helpHero;
} }
@ -310,17 +311,18 @@ public class CBean2Proto {
* *
*/ */
public static List<PropertyItem> buildPropertyItemList(EquipManager equipManager, Set<String> infoList){ public static List<PropertyItem> buildPropertyItemList(EquipManager equipManager, Set<String> infoList){
List<PropertyItem> List = new ArrayList<>(); List<PropertyItem> items = new ArrayList<>();
if (infoList == null || infoList.isEmpty()){ if (infoList == null || infoList.isEmpty()){
return List; return items;
} }
for (String id: infoList){ for (String id: infoList){
PropertyItem item = equipManager.getEquip(id); PropertyItem item = equipManager.getEquip(id);
if (item != null){ if (item != null){
List.add(item); PropertyItem clone = new PropertyItem(item);
items.add(clone);
} }
} }
return List; return items;
} }
/** /**
@ -338,10 +340,10 @@ public class CBean2Proto {
if (blessList != null && !blessList.isEmpty()){ if (blessList != null && !blessList.isEmpty()){
for (String id: blessList){ for (String id: blessList){
Baubles item = equipManager.getBaubles(id); Baubles item = equipManager.getBaubles(id);
if (item == null){ if (item != null){
continue; Baubles clone = new Baubles(item);
list.add(clone);
} }
list.add(item);
} }
} }
return list; return list;