package com.xiaopeng.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.order.GetOrderNumDto;
import com.xiaopeng.api.model.order.XpTestOrder;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.model.query.XpTestOrderPageQuery;
import com.xiaopeng.order.model.vo.*;
import java.math.BigDecimal;
/**
*
* 订单 服务类
*
*
* @author mitao
* @since 2026-02-03
*/
public interface IXpTestOrderService extends IService {
/**
* 添加测试单
* @param query
*/
void addTestOrder(AddTestOrderVo query);
/**
* 订单分页列表
*
* @param query 分页查询参数
* @return 分页结果
*/
PageInfo pageList(XpTestOrderPageQuery query);
/**
* 获取订单详情
*
* @param id 订单ID
* @return 订单详情
*/
XpTestOrderDetailVO getOrderDetail(Long id);
/**
* 删除订单(逻辑删除)
*
* @param id 订单ID
*/
void deleteOrder(Long id);
/**
* 取消或关闭订单
*
* @param orderId 订单ID
* @param type 操作类型:1=取消订单,2=关闭订单
*/
void cancelOrCloseOrder(Long orderId, Integer type);
/**
* 行程中订单异常后的处理
* @param order
*/
void carAbnormalUpdateOrderStatus(Long orderId);
/**
* 改派订单
*
* @param orderId 订单ID
* @param newVehicleId 新车辆ID
* @param reassignReason 改派原因(可选)
*/
void reassignOrder(Long orderId, Long newVehicleId, String reassignReason);
/**
* 修改订单状态
* @param orderId 订单id
* @param status 状态 0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成
* @return 修改结果
*/
R updateOrderStatus(Long orderId, Integer status);
Boolean endTrip(Long orderId);
/**
* 获取订单数量
* @return
*/
Integer getOrderNum(GetOrderNumDto dto);
/**
* 保存车辆位置信息
* @param orderTrajectory
*/
void saveVehicleLocation(OrderTrajectory orderTrajectory);
/**
* 订单改价
* @param id
* @param amount
*/
void changeAmount(Long id, BigDecimal amount);
/**
* 取消订单
* @param orderId
* @return
*/
R> cancelTestOrderById(Long orderId);
}