package com.org.hktshop.service.order;

import com.org.hktshop.dto.*;
import com.org.hktshop.entity.Page;
import com.org.hktshop.entity.order.HktOrder;
import com.org.hktshop.entity.user.HktUser;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.util.List;
import java.util.Map;

public interface HktOrderService {

    /*****
     * 新增订单
     * @param user
     * @param hktOrderInfo
     * @throws Exception
     */
    Object saveHktOrderInfo(HktUser user, HktOrderInfo hktOrderInfo) throws Exception;

    /****
     * 删除订单
     * @param order
     */
    void deleteHktOrder(HktOrder order);

    void updateHktOrder(HktOrder hktOrder);

    /****
     * 查找未支付订单
     * @param order
     * @return
     */
    HktOrder getUserUnPayHktOrder(HktOrder order);

    /****
     * 订单详情查询
     * @param order
     * @return
     */
    HktOrder getHktOrder(HktOrder order);


    HktOrder getHktOrderById(String orderSn);

    /*****
     * 订单条件查询
     * @param pageQueryDto
     * @param userId
     * @return
     */
    Page<HktOrder> getHktOrderBySearch(PageQueryDto<HktOrderSearchDto> pageQueryDto, String userId);

    List<HktOrder> getHktOrderByUserId(String userId);

    /***
     * 批量更新订单状态已取消
     */
    void batchUpdateOrderStatusIsCancel();

    Page<HktOrder> getOrdersByAdminSearch(PageQueryDto<HktOrderAdminSearchDto> pageQueryDto);

    List<HktOrder> getHktOrderByOrderIds(String orderIds);

    /**
     * 已经成交的订单
     *
     * @param userIds
     * @return
     */
    List<HktOrder> getHktOrderByUserIds(String userIds);

    HktOrder getHktOrderByNo(String sql);

    /****
     * 后台订单统计
     * @return
     */
    Map<String, Object> OrderSummary();

    /**
     * 取消订单
     * @param hktOrder
     */
    void cancelOrder(HktOrder hktOrder);


    /**
     * 调价查询订单信息
     * @param hktOrder1
     * @return
     */
    List<HktOrder> queryByCondition(HktOrder hktOrder1);

    /**
     * 根据开票状态查询订单
     * @param hktOrder
     * @return
     */
    Page<HktOrder> getOrderByStatus(HktOrder hktOrder);

    /**
     * 订单导出
     * @param hktOrder
     * @return
     */
    HSSFWorkbook getOrderSheet(HktOrder hktOrder);

    /**
     * 保存样品订单
     * @param order
     * @return
     */
    Object saveHktOrderSample(HktUser user,HktOrder order);
}
