- 优化订单列表返回结构
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package cn.iocoder.mall.order.application.convert;
|
||||
|
||||
import cn.iocoder.mall.order.api.dto.OrderCreateItemDTO;
|
||||
import cn.iocoder.mall.order.api.dto.OrderItemBO;
|
||||
import cn.iocoder.mall.order.api.dto.OrderItemUpdateDTO;
|
||||
import cn.iocoder.mall.order.dataobject.OrderItemDO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@@ -14,6 +16,7 @@ import java.util.List;
|
||||
* @author Sin
|
||||
* @time 2019-03-23 14:34
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrderItemConvert {
|
||||
|
||||
OrderItemConvert INSTANCE = Mappers.getMapper(OrderItemConvert.class);
|
||||
@@ -23,4 +26,7 @@ public interface OrderItemConvert {
|
||||
|
||||
@Mappings({})
|
||||
List<OrderItemDO> convert(List<OrderCreateItemDTO> orderCreateItemDTOList);
|
||||
|
||||
@Mappings({})
|
||||
List<OrderItemBO> convertOrderItemDO(List<OrderItemDO> orderItemDOList);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package cn.iocoder.mall.order.application.convert;
|
||||
import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
|
||||
import cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO;
|
||||
import cn.iocoder.mall.order.dataobject.OrderLogisticsDO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@@ -12,6 +13,7 @@ import org.mapstruct.factory.Mappers;
|
||||
* @author Sin
|
||||
* @time 2019-03-23 14:39
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrderLogisticsConvert {
|
||||
|
||||
OrderLogisticsConvert INSTANCE = Mappers.getMapper(OrderLogisticsConvert.class);
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -41,6 +42,18 @@ public interface OrderItemMapper {
|
||||
OrderItemDO orderItemDO
|
||||
);
|
||||
|
||||
/**
|
||||
* 查询 - 根据 orderIds 和 status
|
||||
*
|
||||
* @param orderIds
|
||||
* @param status
|
||||
* @return
|
||||
*/
|
||||
List<OrderItemDO> selectByOrderIdsAndStatus(
|
||||
@Param("orderIds") Collection<Integer> orderIds,
|
||||
@Param("status") Integer status
|
||||
);
|
||||
|
||||
/**
|
||||
* 查询 - 根据 orderId 下的 item
|
||||
*
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.mall.order.service;
|
||||
|
||||
import cn.iocoder.common.framework.constant.DeletedStatusEnum;
|
||||
import cn.iocoder.common.framework.util.CollectionUtil;
|
||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.order.OrderCommon;
|
||||
@@ -53,13 +54,33 @@ public class OrderServiceImpl implements OrderService {
|
||||
return CommonResult.success(new OrderPageBO().setTotal(0));
|
||||
}
|
||||
|
||||
// 获取订单数据
|
||||
List<OrderDO> orderDOList = orderMapper.selectPage(orderQueryDTO);
|
||||
|
||||
// 获取订单 id
|
||||
Set<Integer> orderIds = orderDOList.stream().map(orderDO -> orderDO.getId()).collect(Collectors.toSet());
|
||||
|
||||
// 获取 订单的 items
|
||||
List<OrderItemDO> orderItemDOList = orderItemMapper
|
||||
.selectByOrderIdsAndStatus(orderIds, DeletedStatusEnum.DELETED_NO.getValue());
|
||||
|
||||
List<OrderItemBO> orderItemBOList = OrderItemConvert.INSTANCE.convertOrderItemDO(orderItemDOList);
|
||||
Map<Integer, List<OrderItemBO>> orderItemBOMultimap = CollectionUtil
|
||||
.buildMultimap(orderItemBOList, Integer.class, OrderItemBO.class, "orderId");
|
||||
|
||||
// 转换 orderDO 为 OrderBO,并设置 item
|
||||
List<OrderBO> orderPageBOList = OrderConvert.INSTANCE.convertPageBO(orderDOList);
|
||||
List<OrderBO> result = orderPageBOList.stream().map(orderBO -> {
|
||||
if (orderItemBOMultimap.containsKey(orderBO.getId())) {
|
||||
orderBO.setOrderItems(orderItemBOMultimap.get(orderBO.getId()));
|
||||
}
|
||||
return orderBO;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return CommonResult.success(
|
||||
new OrderPageBO()
|
||||
.setTotal(totalCount)
|
||||
.setOrders(orderPageBOList)
|
||||
.setOrders(result)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -110,4 +110,17 @@
|
||||
AND order_id = #{orderId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
查询 - 根据 orderIds 和 status
|
||||
-->
|
||||
<select id="selectByOrderIdsAndStatus" resultType="cn.iocoder.mall.order.dataobject.OrderItemDO">
|
||||
SELECT * FROM `order_item`
|
||||
WHERE `status` = #{status}
|
||||
AND `order_id`
|
||||
IN
|
||||
<foreach collection="orderIds" index="orderId" open="(" close=")" separator=",">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user