package com.zm.order.tool.server.service;

import java.util.List;

import com.zm.order.tool.server.dto.*;
import com.zm.order.tool.server.query.*;
import com.zm.util.dto.Result;

/**
 * @Author 陈标
 * @Date 2019/12/20 13:40
 */
public interface AdminOrderService {

    /**
     * 订单同步
     *
     * @param query 查询条件
     * @return
     */
    Result orderSync(AdminOrderQuery query);


    /**
     * 批量订单同步
     *
     * @param query
     * @return
     */
    Result<List<String>> listOrderSync(AdminOrderQuery query);


    /**
     * 查询操作日志
     *
     * @param query
     * @return
     */

    Result<List<OrderOperateDTO>> getListOrderOperate(OrderOperationQuery query);

    /**
     * 统计数量
     *
     * @param searchOrderQuery
     * @return
     */
    Result<Integer> searchOrderCount(SearchOrderQuery searchOrderQuery);

    /**
     * 查询订单排队信息
     *
     * @param adminOrderItemQuery
     * @return
     */
    Result<List<LineUpRecordDTO>> searchLineUpRecordOrder(AdminOrderItemQuery adminOrderItemQuery);


    /**
     * 获取退款单详情
     *
     * @param query 查询条件
     * @return
     */
    Result<List<RefundDetailDTO>> getRefundDetail(RefundQuery query);


    /**
     * 查询接口信息
     *
     * @return
     */
    Result<List<ToolInterfaceDTO>> listToolInterface();


    /**
     * 创建接口信息
     *
     * @param toolInterfaceDTO 接口信息
     * @return
     */
    Result<Long> createToolInterface(ToolInterfaceDTO toolInterfaceDTO);


    /**
     * 查询排队订单状态
     *
     * @param adminOrderItemQuery
     * @return
     */
    Result<List<OrderSimpleDTO>> searchLineUpRecOrder(AdminOrderItemQuery adminOrderItemQuery);

    /**
     * 修改订单完成时间
     *
     * @param orderQuery
     * @return
     */
    Result<UpdateCompletedAtDTO> updateOrderCompletedAt(OrderQuery orderQuery);

    /**
     * 更新退款单
     *
     * @param orderQuery
     * @return
     */
    Result updateRefund(OrderQuery orderQuery);


    /**
     * 删除接口
     *
     * @param id
     * @return
     */
    Result deleteToolInterface(Long id);


    /**
     * 清除es冗余信息
     *
     * @param startTime
     * @param time
     * @return
     */
    Result clearEs(Long startTime, Integer time);

}

