REQ-2135: filter blank and null values for card items of im message

This commit is contained in:
yanglin 2024-04-03 09:57:21 +08:00
parent 004207b249
commit 9f2fa169c1
2 changed files with 20 additions and 10 deletions

View File

@ -7,6 +7,7 @@ import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO;
import cn.axzo.msg.center.message.domain.vo.GeneralMessagePushVO;
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
import cn.axzo.msg.center.utils.MessageCardUtil;
import cn.axzo.msg.center.utils.MessageRouterUtil;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
@ -58,8 +59,9 @@ public class MessageTemplateParser {
List<MessageCardContentItemDTO> cardContentItems) {
GeneralMessagePushVO.CardButton cardDetailButton = GeneralMessagePushVO.parseDetailButton(msgTemplateRouter);
List<GeneralMessagePushVO.CardButton> cardButtons = GeneralMessagePushVO.parseCardButtons(msgTemplateRouter);
List<GeneralMessagePushVO.CardExtensionItem> cardExtension = CollectionUtils.isEmpty(cardContentItems) ? Collections.emptyList() :
cardContentItems.stream()
List<MessageCardContentItemDTO> cardItems = MessageCardUtil.filterParsedCardItemsByValues(cardContentItems);
List<GeneralMessagePushVO.CardExtensionItem> cardExtension = CollectionUtils.isEmpty(cardItems) ? Collections.emptyList() :
cardItems.stream()
.map(GeneralMessagePushVO.CardExtensionItem::from)
.collect(Collectors.toList());
List<GeneralMessagePushVO.Subtitle> subtitles = Collections.emptyList();

View File

@ -10,8 +10,8 @@ import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description
@ -37,18 +37,26 @@ public final class MessageCardUtil {
JSONObject bizExtParam = JSON.parseObject(bizExtParamStr);
// 复制一个副本避免直接修改
msgCardContentItems = BeanConvertUtils.copyList(msgCardContentItems, MessageCardContentItemDTO.class);
List<MessageCardContentItemDTO> result = new ArrayList<>();
msgCardContentItems.forEach(e -> {
String modifiedValue = PlaceholderResolver.getDefaultResolver().resolveByMap(e.getValue(), bizExtParam);
e.setValue(modifiedValue);
// 过滤空值的卡片
if(StringUtils.isNotBlank(modifiedValue) && !"null".equals(modifiedValue)){
e.setValue(modifiedValue);
result.add(e);
}
});
return result;
return filterParsedCardItemsByValues(msgCardContentItems);
}
return msgCardContentItems;
}
/**
* 过滤空值的卡片
*/
public static List<MessageCardContentItemDTO> filterParsedCardItemsByValues(
List<MessageCardContentItemDTO> items) {
if (CollectionUtils.isEmpty(items)) {
return items;
}
return items.stream()
.filter(item -> StringUtils.isNotBlank(item.getValue()) && !"null".equals(item.getValue()))
.collect(Collectors.toList());
}
}