| 
					
				 | 
			
			
				@@ -5,7 +5,9 @@ import cn.hutool.core.map.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.util.ObjectUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.util.StrUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.extra.spring.SpringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.framework.common.mq.message.order.DistriOrderMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.framework.common.pojo.PageResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.framework.common.util.collection.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.member.api.user.MemberUserApi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderPageItemRespVO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,7 +15,9 @@ import cn.newfeifan.mall.module.product.api.sku.ProductSkuApi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.product.api.sku.dto.ProductSkuRespDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderDetailRespVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.dal.dataobject.delivery.DeliveryExpressDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,16 +29,22 @@ import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.ExpressClientFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.dto.ExpressTrackQueryReqDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.newfeifan.mall.module.trade.framework.order.config.TradeOrderProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.newfeifan.mall.module.trade.service.delivery.DeliveryExpressService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.cache.annotation.Cacheable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static cn.newfeifan.mall.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.EXPRESS_NOT_EXISTS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.ORDER_NOT_FOUND; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,7 +72,8 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ProductSkuApi productSkuApi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TradeOrderProperties tradeOrderProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // =================== Order =================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -166,7 +177,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Long getOrderCount(Integer status, Long shopId, Long merId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return tradeOrderMapper.selectCountByStatus(status,shopId,merId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return tradeOrderMapper.selectCountByStatus(status, shopId, merId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -185,7 +196,43 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Integer getShopSalesVolume(Long key) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return  tradeOrderMapper.selectByMerId(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return tradeOrderMapper.selectByMerId(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<TradeOrderDO> getTodayOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取7天之前的订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime start = LocalDateTime.now().minusDays(1).minusDays(7).with(LocalTime.of(3, 0, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime end = LocalDateTime.now().minusDays(7).with(LocalTime.of(2, 59, 59)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return tradeOrderMapper.selectList(new LambdaQueryWrapper<TradeOrderDO>().between(TradeOrderDO::getCreateTime, start, end) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(TradeOrderDO::getStatus, 30).eq(TradeOrderDO::getPayStatus, true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<AppTradeOrderDetailRespVO> cancelOrderBySystem() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TradeOrderDO> order = getTodayOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (order.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return Collections.emptyList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return order.stream().map(k -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 查询订单项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TradeOrderItemDO> orderItems = getOrderItemListByOrderId(k.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 查询物流公司 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DeliveryExpressDO express = k.getLogisticsId() != null && k.getLogisticsId() > 0 ? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deliveryExpressService.getDeliveryExpress(k.getLogisticsId()) : null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 最终组合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return TradeOrderConvert.INSTANCE.convert02(k, orderItems, tradeOrderProperties, express); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<DistriOrderMessage> queryAllOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取7天之前的订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime start = LocalDateTime.now().minusDays(1).minusDays(7).with(LocalTime.of(3, 0, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime end = LocalDateTime.now().minusDays(7).with(LocalTime.of(2, 59, 59)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return tradeOrderMapper.queryAllOrder(start, end); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |