|
@@ -18,16 +18,19 @@
|
|
|
*/
|
|
|
package com.iohao.mmo.equip.mapper;
|
|
|
|
|
|
-import com.iohao.mmo.equip.entity.EquipPropertyElse;
|
|
|
-import com.iohao.mmo.equip.entity.Equip;
|
|
|
-import com.iohao.mmo.equip.entity.EquipTemplate;
|
|
|
-import com.iohao.mmo.equip.proto.ElseEquipPropertyMessage;
|
|
|
-import com.iohao.mmo.equip.proto.EquipMessage;
|
|
|
-import com.iohao.mmo.equip.proto.EquipTemplateMessage;
|
|
|
+import com.iohao.game.common.kit.CollKit;
|
|
|
+import com.iohao.mmo.equip.entity.*;
|
|
|
+import com.iohao.mmo.equip.proto.*;
|
|
|
+import org.apache.commons.text.StringSubstitutor;
|
|
|
import org.mapstruct.Mapper;
|
|
|
import org.mapstruct.Mapping;
|
|
|
+import org.mapstruct.Named;
|
|
|
import org.mapstruct.factory.Mappers;
|
|
|
-import java.util.List;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* @author 唐斌
|
|
@@ -40,10 +43,56 @@ public interface EquipMapper {
|
|
|
@Mapping(source = "id", target = "id")
|
|
|
EquipMessage convert(Equip equip);
|
|
|
|
|
|
+ @Mapping(target = "equipPropertyList",
|
|
|
+ expression = "java(convertEquipProperty(equip.getEquipPropertyFixedList(), equip.getEquipPropertyRandomList()))")
|
|
|
+ EquipShowMessage convertShowMessage(Equip equip);
|
|
|
+
|
|
|
List<EquipMessage> convert(List<Equip> equipList);
|
|
|
|
|
|
Equip convert(EquipMessage equipMessage);
|
|
|
|
|
|
EquipTemplateMessage convert(EquipTemplate equipTemplate);
|
|
|
- ElseEquipPropertyMessage convert(EquipPropertyElse elseEquipProperty);
|
|
|
+
|
|
|
+ @Named("convertEquipProperty")
|
|
|
+ default List<EquipEntryShowMessage> convertEquipProperty(List<EquipEntry> equipPropertyFixedList,List<EquipEntry> equipPropertyRandomList) {
|
|
|
+ return Stream.of(toEquipEntryMsgList(equipPropertyFixedList),
|
|
|
+ toEquipEntryMsgList(equipPropertyRandomList))
|
|
|
+ .flatMap(Collection::stream)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ private List<EquipEntryShowMessage> toEquipEntryMsgList(List<EquipEntry> equipPropertyList){
|
|
|
+ List<EquipEntryShowMessage> newEquipPropertyList = new ArrayList<>();
|
|
|
+ equipPropertyList.forEach(equipPropertyFixed -> {
|
|
|
+ EquipEntryShowMessage equipEntryShowMessage = new EquipEntryShowMessage();
|
|
|
+ //获取词条描述中的参数
|
|
|
+ Map<String,String> valuesMap = getDescription(equipPropertyFixed.getEntryPropertyList());
|
|
|
+ StringSubstitutor sub = new StringSubstitutor(valuesMap);
|
|
|
+ equipEntryShowMessage.description = "【"+ equipPropertyFixed.getName() +"】" + sub.replace(equipPropertyFixed.getDescription());
|
|
|
+ newEquipPropertyList.add(equipEntryShowMessage);
|
|
|
+ });
|
|
|
+ return newEquipPropertyList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取词条描述中的参数
|
|
|
+ * @param entryPropertyList 词条属性列表
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Map<String,String> getDescription(List<EquipEntryProperty> entryPropertyList){
|
|
|
+ Map<String,String> valuesMap = new HashMap<>();
|
|
|
+ for(int i=0;i<entryPropertyList.size();i++){
|
|
|
+ //显示的数值符号
|
|
|
+ String countTypeChar = switch (entryPropertyList.get(i).getCountType()) {
|
|
|
+ case 1, 3, 5 -> "+";
|
|
|
+ case 2, 4, 6 -> "-";
|
|
|
+ default -> "";
|
|
|
+ };
|
|
|
+ //显示的数值
|
|
|
+ String showVal = entryPropertyList.get(i).getShowType()==1?
|
|
|
+ entryPropertyList.get(i).getPropertyValue().toString():
|
|
|
+ entryPropertyList.get(i).getPropertyValue().toString()+"%";
|
|
|
+ valuesMap.put("val" + (i+1), countTypeChar + showVal);
|
|
|
+ }
|
|
|
+ return valuesMap;
|
|
|
+ }
|
|
|
}
|