package com.bonus.canteen.core.order.common.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bonus.canteen.core.order.android.vo.OrderListAndroidVO;
import com.bonus.canteen.core.order.common.dto.OrderSearchParam;
import com.bonus.canteen.core.order.common.model.OrderInfo;
import com.bonus.canteen.core.order.common.vo.OrderIdDateVO;
import com.bonus.canteen.core.order.mobile.vo.OrderListMobileVO;
import com.bonus.canteen.core.order.web.dto.OrderUserPermissionDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.Collection;
import java.util.List;

@Mapper
@InterceptorIgnore
public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
   Integer existOrder(@Param("orderId") Long orderId, @Param("macOrderId") String macOrderId, @Param("payStateList") Collection<Integer> payStateList, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderInfoVO> listVoByIds(@Param("orderIds") List<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

//   @QueryExtension
   List<OrderIdDateVO> queryOrderId(@Param("param") OrderSearchParam param, @Param("permission") OrderUserPermissionDTO permission);

//   List<OrderIdDateVO> queryDeliveryId(@Param("param") OrderDeliverySearchParam param, @Param("permission") OrderUserPermissionDTO permission);
//
//   List<OrderIdDateVO> queryRefundId(@Param("param") OrderRefundSearchParam param, @Param("permission") OrderUserPermissionDTO permission);
//
//   List<OrderListWebVO> queryOrderInfoWeb(@Param("orderIds") Collection<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderDeliveryDetailVO> queryOrderDeliveryDetailList(@Param("deliveryIds") Collection<Long> deliveryIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderDetailSumGetVO> queryOrderDetailSumGet(@Param("deliveryIds") Collection<Long> deliveryIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderRefundWebVO> queryOrderRefundList(@Param("orderRefundIds") Collection<Long> orderRefundIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

   List<OrderListMobileVO> getOrderMobileList(@Param("orderIds") Collection<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

//   List<OrderGroupMobileVO> getOrderMobileGroup(@Param("queryDTO") OrderGroupMobileQueryDTO queryDTO);
//
//   List<OrderRefundListMobileVO> getOrderRefundMobileList(@Param("orderIds") Collection<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

   List<OrderListAndroidVO> listOrderForAndroid(@Param("orderIds") Collection<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);

   Integer getOrderCounterNum(@Param("orderDate") LocalDate orderDate, @Param("mealtimeType") Integer mealtimeType, @Param("counterId") Long counterId);
//
//   List<OrderListPadVO> listOrderForPad(@Param("orderIds") Collection<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   OrderAppInfoVO getAppOrderInfo(@Param("orderId") Long orderId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderAppListVO> listAppOrderDetail(@Param("orderIds") List<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderAppRefundVO> listOrderAppRefundCheckList(@Param("orderRefundIds") Collection<Long> orderRefundIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<Long> queryOrderIdsByGoodsId(@Param("goodsDishesId") Long goodsDishesId, @Param("menuDetailId") Long menuDetailId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
//
//   List<OrderInfoBackfieldVO> listOrderForBackfield(@Param("orderIds") List<Long> orderIds, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
}
