|  | @@ -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);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 |