package com.cool.store.service.order;

import com.cool.store.context.LoginUserInfo;
import com.cool.store.entity.order.StoreOrderDO;
import com.cool.store.request.order.*;
import com.cool.store.vo.PartnerUserInfoVO;
import com.cool.store.vo.order.MiniStoreOrderDetailVO;
import com.cool.store.vo.order.MiniStoreOrderListVO;
import com.cool.store.vo.order.MiniStoreWishlistDetailVO;
import com.cool.store.vo.order.MiniStoreWishlistListVO;
import com.cool.store.vo.order.OrderDeviceDetailVO;
import com.cool.store.vo.order.PCStoreOrderListVO;
import com.cool.store.vo.order.WalletPayVO;
import com.github.pagehelper.PageInfo;
import com.sun.org.apache.xpath.internal.operations.Bool;

import java.util.List;

public interface MiniStoreOrderService {

    Long createOrder(MiniStoreOrderCreateRequest request,PartnerUserInfoVO userInfoVO);

    MiniStoreOrderDetailVO getDetail(Long orderId);

    MiniStoreOrderDetailVO getCurrentShopDraft(Long shopId);

    MiniStoreOrderDetailVO getLatestOrderByShopId(Long shopId);

    PageInfo<MiniStoreOrderListVO> queryPage(MiniStoreOrderQueryRequest request);

    Long updateOrder(MiniStoreOrderUpdateRequest request,PartnerUserInfoVO user);

//    Boolean withdraw(Long orderId);
//
//    Boolean cancel(Long orderId);

    PageInfo<MiniStoreOrderListVO> queryPageByLineId(MiniStoreOrderLineQueryRequest request);

    Boolean passOrder(OrderAuditRecordRequest request,LoginUserInfo userInfo);

    Boolean rejectOrder(OrderAuditRecordRequest request,LoginUserInfo userInfo);

    Boolean payOrder(MiniStoreOrderPayRequest request, PartnerUserInfoVO userInfo);

    PageInfo<PCStoreOrderListVO> list(PCStoreOrderQueryRequest request);

    List<WalletPayVO> payList(Long shopId);

    Boolean managerOrder(PCStoreOrderOptionQuantityUpdateRequest request,LoginUserInfo userInfo);

    Boolean batchUpdateOptionQuantity(PCStoreOrderOptionQuantityUpdateRequest request,LoginUserInfo userInfo);

    Boolean saveOrUpdateWishlist(MiniStoreWishlistSaveRequest request, PartnerUserInfoVO userInfoVO);

    Boolean deleted(MiniStoreWishlistDelRequest miniStoreWishlistDelRequest,PartnerUserInfoVO userInfoVO);

    MiniStoreWishlistDetailVO wishlistDetail(Long wishlistId);

    List<MiniStoreWishlistListVO> wishlistList(Long lineId,Integer wishlistStatus);

    PageInfo<MiniStoreWishlistListVO> wishAllList(WishAllListRequest request);

    Boolean wishlistBindPoint(WishlistBindPointRequest request);

    Boolean wishlistApprove(WishlistAuditRequest request,LoginUserInfo userInfo);

    MiniStoreWishlistDetailVO getCurrentShopBindWishlist(Long shopId);

    Boolean changeWishlist(ChangeWishlistRequest request);


    List<OrderDeviceDetailVO> queryOrderDeviceDetailByShopId(Long shopId);
    /**
     * 查询订单设备明细
     * @param orderId 订单ID
     * @return 订单设备明细列表
     */
    List<OrderDeviceDetailVO> queryOrderDeviceDetailByOrderId(Long orderId);


}
