|
@@ -1,14 +1,18 @@
|
|
|
package cn.iocoder.yudao.module.trade.convert.order;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
|
|
|
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
|
|
+import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO;
|
|
|
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
|
|
|
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO;
|
|
|
import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
|
|
|
import cn.iocoder.yudao.module.promotion.api.price.dto.PriceCalculateReqDTO;
|
|
|
import cn.iocoder.yudao.module.promotion.api.price.dto.PriceCalculateRespDTO;
|
|
|
+import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO;
|
|
|
+import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageItemRespVO;
|
|
|
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
|
|
|
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
|
|
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
|
|
@@ -19,13 +23,11 @@ import org.mapstruct.Mapping;
|
|
|
import org.mapstruct.Mappings;
|
|
|
import org.mapstruct.factory.Mappers;
|
|
|
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
|
|
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
|
|
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.addTime;
|
|
|
|
|
|
@Mapper
|
|
@@ -92,14 +94,50 @@ public interface TradeOrderConvert {
|
|
|
return createReqDTO;
|
|
|
}
|
|
|
|
|
|
- default Set<Long> convertPropertyValueIds(List<TradeOrderItemDO> orderItems) {
|
|
|
- if (CollUtil.isEmpty(orderItems)) {
|
|
|
+ default Set<Long> convertPropertyValueIds(List<TradeOrderItemDO> list) {
|
|
|
+ if (CollUtil.isEmpty(list)) {
|
|
|
return new HashSet<>();
|
|
|
}
|
|
|
- return orderItems.stream().filter(item -> item.getProperties() != null)
|
|
|
+ return list.stream().filter(item -> item.getProperties() != null)
|
|
|
.flatMap(p -> p.getProperties().stream()) // 遍历多个 Property 属性
|
|
|
.map(TradeOrderItemDO.Property::getValueId) // 将每个 Property 转换成对应的 propertyId,最后形成集合
|
|
|
.collect(Collectors.toSet());
|
|
|
}
|
|
|
|
|
|
+ default PageResult<TradeOrderPageItemRespVO> convertPage(PageResult<TradeOrderDO> pageResult, List<TradeOrderItemDO> orderItems,
|
|
|
+ List<ProductPropertyValueDetailRespDTO> propertyValueDetails) {
|
|
|
+ Map<Long, List<TradeOrderItemDO>> orderItemMap = convertMultiMap(orderItems, TradeOrderItemDO::getOrderId);
|
|
|
+ Map<Long, ProductPropertyValueDetailRespDTO> propertyValueDetailMap = convertMap(propertyValueDetails, ProductPropertyValueDetailRespDTO::getValueId);
|
|
|
+ // 转化 List
|
|
|
+ List<TradeOrderPageItemRespVO> orderVOs = CollectionUtils.convertList(pageResult.getList(), order -> {
|
|
|
+ List<TradeOrderItemDO> xOrderItems = orderItemMap.get(order.getId());
|
|
|
+ TradeOrderPageItemRespVO orderVO = convert(order, xOrderItems);
|
|
|
+ if (CollUtil.isNotEmpty(xOrderItems)) {
|
|
|
+ // 处理商品属性
|
|
|
+ for (int i = 0; i < xOrderItems.size(); i++) {
|
|
|
+ List<TradeOrderItemDO.Property> properties = xOrderItems.get(i).getProperties();
|
|
|
+ if (CollUtil.isEmpty(properties)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ TradeOrderPageItemRespVO.Item item = orderVO.getItems().get(i);
|
|
|
+ item.setProperties(new ArrayList<>(properties.size()));
|
|
|
+ // 遍历每个 properties,设置到 TradeOrderPageItemRespVO.Item 中
|
|
|
+ properties.forEach(property -> {
|
|
|
+ ProductPropertyValueDetailRespDTO propertyValueDetail = propertyValueDetailMap.get(property.getValueId());
|
|
|
+ if (propertyValueDetail == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ item.getProperties().add(convert(propertyValueDetail));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return orderVO;
|
|
|
+ });
|
|
|
+ return new PageResult<>(orderVOs, pageResult.getTotal());
|
|
|
+ }
|
|
|
+
|
|
|
+ TradeOrderPageItemRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items);
|
|
|
+
|
|
|
+ ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean);
|
|
|
+
|
|
|
}
|