package com.aiotagro.cattletrade.business.service;

import com.aiotagro.cattletrade.business.entity.Order;
import com.aiotagro.common.core.web.domain.AjaxResult;
import com.aiotagro.common.core.web.domain.PageResultResponse;
import com.baomidou.mybatisplus.extension.service.IService;

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

/**
 * 订单管理服务接口
 *
 * @author System
 * @date 2025-01-20
 */
public interface IOrderService extends IService<Order> {

    /**
     * 分页查询订单列表
     *
     * @param params 查询参数
     * @return 分页结果
     */
    PageResultResponse<Order> pageQuery(Map<String, Object> params);

    /**
     * 新增订单
     *
     * @param order 订单信息
     * @return AjaxResult
     */
    AjaxResult addOrder(Order order);

    /**
     * 更新订单信息
     *
     * @param order 订单信息
     * @return AjaxResult
     */
    AjaxResult updateOrder(Order order);

    /**
     * 删除订单（逻辑删除）
     *
     * @param id 订单ID
     * @return AjaxResult
     */
    AjaxResult deleteOrder(Integer id);

    /**
     * 查询订单详情
     *
     * @param id 订单ID
     * @return AjaxResult
     */
    AjaxResult getOrderDetail(Integer id);

    /**
     * 批量导入订单
     *
     * @param orders 订单列表
     * @return AjaxResult
     */
    AjaxResult batchImportOrders(List<Map<String, Object>> orders);

    /**
     * 批量更新订单的delivery_id字段
     *
     * @param deliveryId 运送清单ID
     * @param orderIds 订单ID列表
     * @return AjaxResult
     */
    AjaxResult updateOrderDeliveryId(Integer deliveryId, List<Integer> orderIds);

    /**
     * 解除订单与运送清单的关联（将订单的deliveryId设置为null）
     *
     * @param orderId 订单ID
     * @return AjaxResult
     */
    AjaxResult unbindOrderFromDelivery(Integer orderId);
}

