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

import com.zm.order.tool.server.dto.ChooseDTO;
import com.zm.order.tool.server.dto.MetadataDTO;
import com.zm.order.tool.server.dto.NewOrderDTO;
import com.zm.order.tool.server.dto.OrderDetailDTO;
import com.zm.order.tool.server.dto.OrderOperateDTO;
import com.zm.order.tool.server.dto.OrderStatusFlowsDTO;
import com.zm.order.tool.server.dto.UpdateMetadataDTO;
import com.zm.order.tool.server.model.PageWrapper;
import com.zm.order.tool.server.query.ListMetadataQuery;
import com.zm.order.tool.server.query.ListStatusFlowsQuery;
import com.zm.order.tool.server.query.OrderQuery;
import com.zm.order.tool.server.query.SearchOrderQuery;
import com.zm.util.dto.Result;

import java.util.List;

/**
 * @author 陈标
 * @Description
 * @Date 2020/7/20 0020 9:54
 */
public interface NewPageService {

    /**
     * 查询订单列表
     *
     * @param query
     * @return
     */
    Result<List<NewOrderDTO>> listOrder(SearchOrderQuery query);


    /**
     * 完成订单
     *
     * @param query
     * @return
     */
    Result completeOrder(SearchOrderQuery query);


    /**
     * 查询状态流
     *
     * @param query
     * @return
     */
    Result<List<OrderStatusFlowsDTO>> listOrderStatusFlows(ListStatusFlowsQuery query);


    /**
     * 批量添加状态流
     *
     * @param orderStatusFlowsDTO
     * @return
     */
    Result createOrderStatusFlows(OrderStatusFlowsDTO orderStatusFlowsDTO);


    /**
     * 通过订单号查操作日志
     *
     * @param orderNo
     * @return
     */
    Result<List<OrderOperateDTO>> listOrderOperate(String orderNo);


    /**
     * 查询状态流数量
     *
     * @param query
     * @return
     */
    Result<Integer> countStatusFlows(ListStatusFlowsQuery query);


    /**
     * 查询订单详情
     *
     * @param orderQuery
     * @return
     */
    Result<OrderDetailDTO> getOrderDetail(OrderQuery orderQuery);

    /**
     * 激活
     *
     * @param idList
     * @return
     */
    Result activated(List<Long> idList);


    /**
     * 删除
     *
     * @param idList
     * @return
     */
    Result delete(List<Long> idList);


    /**
     * 删除元数据
     *
     * @param idList
     * @return
     */
    Result deleteMetadata(List<Long> idList);


    /**
     * 创建元数据
     *
     * @param metadataDTO
     * @return
     */
    Result createMetadata(MetadataDTO metadataDTO);


    /**
     * 查询元数据
     *
     * @param query
     * @return
     */
    Result<List<MetadataDTO>> listMetadata(ListMetadataQuery query);


    /**
     * 查询元数据数量
     *
     * @param query
     * @return
     */
    Result<Integer> countMetadata(ListMetadataQuery query);


    /**
     * 查询单据类型
     *
     * @param query
     * @return
     */
    Result<List<ChooseDTO>> listOrderType(ListMetadataQuery query);

    /**
     * 查询订单状态
     *
     * @param query
     * @return
     */
    Result<List<ChooseDTO>> listStatus(ListMetadataQuery query);

    /**
     * 查询订单操作
     *
     * @param query
     * @return
     */
    Result<List<ChooseDTO>> listOperation(ListMetadataQuery query);


    /**
     * 修改元数据
     *
     * @param updateMetadataDTO
     * @return
     */
    Result updateMetadata(UpdateMetadataDTO updateMetadataDTO);
}
