package com.ruoyi.web.modules.order.service;

import java.util.List;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.web.modules.account.dto.MemberOrderQueryDTO;
import com.ruoyi.web.modules.order.dto.OrderDeliveredDTO;
import com.ruoyi.web.modules.order.dto.OrderLogisticsDTO;
import com.ruoyi.web.modules.order.dto.OrderShipDTO;
import com.ruoyi.web.modules.order.dto.SellerOrderQuery;
import com.ruoyi.web.modules.order.vo.OrderDetailVO;
import com.ruoyi.web.modules.order.vo.OrderListRowVO;
import com.ruoyi.web.modules.order.vo.SellerShipBadgeVO;

public interface IOrderService
{
    List<OrderListRowVO> selectSellerList(Long shopId, SellerOrderQuery query);

    OrderDetailVO selectSellerDetail(Long shopId, Long orderId);

    OrderDetailVO selectSellerShipDetail(Long shopId, Long orderId);

    SellerShipBadgeVO countSellerShipBadges(Long shopId);

    void shipOrder(Long shopId, Long orderId, OrderShipDTO dto, String operator);

    void appendLogistics(Long shopId, Long orderId, OrderLogisticsDTO dto, String operator);

    void registerDelivered(Long shopId, Long orderId, OrderDeliveredDTO dto, String operator);

    void deleteClosedOrder(Long shopId, Long orderId, String operator);

    boolean hasUnfinishedOrdersByShop(Long shopId);

    boolean hasUnfinishedOrdersByMerchant(Long merchantId);

    TableDataInfo pageOrdersByMember(Long memberId, MemberOrderQueryDTO query);

    OrderDetailVO getOrderDetail(Long memberId, Long orderId);
}
