package cn.iocoder.yudao.module.trade.convert.delivery; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.*; import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; import cn.iocoder.yudao.module.trade.service.delivery.bo.DeliveryExpressTemplateRespBO; import com.google.common.collect.Maps; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import java.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.findFirst; @Mapper public interface DeliveryExpressTemplateConvert { DeliveryExpressTemplateConvert INSTANCE = Mappers.getMapper(DeliveryExpressTemplateConvert.class); // ========== Template ========== DeliveryExpressTemplateDO convert(DeliveryExpressTemplateCreateReqVO bean); DeliveryExpressTemplateDO convert(DeliveryExpressTemplateUpdateReqVO bean); DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean); DeliveryExpressTemplateDetailRespVO convert2(DeliveryExpressTemplateDO bean); List convertList(List list); List convertList1(List list); PageResult convertPage(PageResult page); default DeliveryExpressTemplateDetailRespVO convert(DeliveryExpressTemplateDO bean, List chargeList, List freeList) { DeliveryExpressTemplateDetailRespVO respVO = convert2(bean); respVO.setCharges(convertTemplateChargeList(chargeList)); respVO.setFrees(convertTemplateFreeList(freeList)); return respVO; } // ========== Template Charge ========== DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, DeliveryExpressTemplateChargeBaseVO vo); DeliveryExpressTemplateRespBO.Charge convertTemplateCharge(DeliveryExpressTemplateChargeDO bean); default List convertTemplateChargeList(Long templateId, Integer chargeMode, List list) { return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo)); } // ========== Template Free ========== DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, DeliveryExpressTemplateFreeBaseVO vo); DeliveryExpressTemplateRespBO.Free convertTemplateFree(DeliveryExpressTemplateFreeDO bean); List convertTemplateChargeList(List list); List convertTemplateFreeList(List list); default List convertTemplateFreeList(Long templateId, List list) { return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo)); } default Map convertMap(Integer areaId, List templateList, List chargeList, List freeList) { Map> templateIdChargeMap = convertMultiMap(chargeList, DeliveryExpressTemplateChargeDO::getTemplateId); Map> templateIdFreeMap = convertMultiMap(freeList, DeliveryExpressTemplateFreeDO::getTemplateId); // 组合运费模板配置 RespBO Map result = Maps.newHashMapWithExpectedSize(templateList.size()); templateList.forEach(template -> { DeliveryExpressTemplateRespBO bo = new DeliveryExpressTemplateRespBO() .setChargeMode(template.getChargeMode()) .setCharge(convertTemplateCharge(findFirst(templateIdChargeMap.get(template.getId()), charge -> charge.getAreaIds().contains(areaId)))) .setFree(convertTemplateFree(findFirst(templateIdFreeMap.get(template.getId()), free -> free.getAreaIds().contains(areaId)))); if (bo.getCharge() != null || bo.getFree() != null) { result.put(template.getId(), bo); } }); return result; } }