package com.xiaopeng.order.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.dto.order.GetOrderNumDto; import com.xiaopeng.api.dto.order.PopOrderDto; import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO; import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.order.FareBreakdownVo; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.api.vo.order.XpPointInfoVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.order.mangodb.model.OrderTrajectory; import com.xiaopeng.order.model.dto.XpOrderCommentDto; import com.xiaopeng.order.model.dto.XpOrderPayDto; import com.xiaopeng.order.model.query.XpHistoryOrderListQuery; import com.xiaopeng.order.model.query.XpOrderExcelQuery; import com.xiaopeng.order.model.query.XpOrderPageQuery; import com.xiaopeng.order.model.vo.XpOrderDetailVO; import com.xiaopeng.order.model.vo.XpOrderHistoryVO; import com.xiaopeng.order.model.vo.XpOrderPageVO; import com.xiaopeng.order.vo.OrderDetailVo; import java.math.BigDecimal; import java.util.List; /** *

* 订单 服务类 *

* * @author mitao * @since 2026-02-03 */ public interface IXpOrderService extends IService { /** * 获取订单统计数据 * * @param query 查询参数 * @return 订单统计数据 */ OrderStatisticsDTO getOrderStatistics(StatisticsQueryDTO query); /** * 订单分页列表 * * @param query 分页查询参数 * @return 分页结果 */ PageInfo pageList(XpOrderPageQuery query); /** * 获取订单详情 * * @param id 订单ID * @return 订单详情 */ XpOrderDetailVO getOrderDetail(Long id); /** * 删除订单(逻辑删除) * * @param id 订单ID */ void deleteOrder(Long id); /** * 导出订单列表 * * @param query 查询参数 * @return 订单列表 */ List exportList(XpOrderExcelQuery query); /** * 取消或关闭订单 * * @param orderId 订单ID * @param type 操作类型:1=取消订单,2=关闭订单 */ void cancelOrCloseOrder(Long orderId, Integer type); /** * 改派订单 * * @param orderId 订单ID * @param newVehicleId 新车辆ID * @param reassignReason 改派原因(可选) */ void reassignOrder(Long orderId, Long newVehicleId, String reassignReason); /** * 获取用户快捷胶囊 * @param uid * @return */ XpPointInfoVo getUserQuickCapsule(String uid, Long startPointId); /** * 获取历史下单成功起点10条数据列表 * @param uid * @return */ List getHistoryStartPoints(String uid,double lon,double lat,Long electronicAreaId); /** * 获取正在进行中的订单 * @param uid * @return */ XpOrderDetailVO getActiveOrder(String uid); /** * 获取历史下单成功终点10条数据列表 * @param uid * @return */ List getHistoryEndPoints(String uid, double lon, double lat,Long electronicAreaId); /** * 获取历史订单列表 * @param query * @param uid * @return */ XpOrderHistoryVO getHistoryOrderList(XpHistoryOrderListQuery query, String uid); /** * 取消订单 * @param orderId * @param uid */ void cancelOrder(Long orderId,String uid); /** * 取消订单 * @param orderId */ XpOrder cancelOrder(String orderId); /** * 评价订单 * @param dto * @param uid */ void comment(XpOrderCommentDto dto, String uid); /** * 修改订单状态 * @param orderId 订单id * @param status 状态 0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成 * @return 修改结果 */ R updateOrderStatus(Long orderId, Integer status); /** * 行驶中车辆异常,订单状态修改- 修改状态=7 再修改 金额-再将状态修改成8 */ R carAbnormalUpdateOrderStatus(Long orderId); Boolean endTrip(Long orderId, String uid); /** * 添加巡游任务 下发命令 * @param order */ void addCruiseMission(Long vehicleId, XpOrder order); /** * 取消订单后的继续巡游任务 */ void addCruiseMission(Long vehicleId); R fareBreakdown(Long orderId, String uid); R payment(XpOrderPayDto dto, String uid); /** * 添加订单 * @param xpOrder * @return */ boolean addOrder(XpOrder xpOrder); /** * 根据订单ID查询车辆信息 * @param orderId 订单ID * @param uid * @return */ XpVehicle queryVehicleByOrderId(Long orderId, String uid); /** * 获取订单数量 * @return */ Integer getOrderNum(GetOrderNumDto dto); /** * 查询指定城市进行中的订单数量(status=1) * * @param cityId 开通城市ID * @return 进行中订单数量 */ Integer countActiveOrdersByCityId(Long cityId); /** * 保存车辆位置信息 * @param orderTrajectory */ void saveVehicleLocation(OrderTrajectory orderTrajectory); /** * 成功操作下发命令后调用 用于弹出redis队列的获取成功的数据 * @param dto */ void popOrder(PopOrderDto dto); OrderDetailVo orderDetail(Long orderId, String uid); R feeDescription(Long orderId, String uid); XpOrderDetailVO getActiveOrder_itineraryManage(String uid); /** * 订单改价 * @param id * @param amount */ void changeAmount(Long id, BigDecimal amount); /** * 获取待付款订单数量 * @param uid * @return */ Integer getWaitPayOrderNum(String uid); }