package com.ylx.massage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ylx.massage.domain.OrderAllocationLog;

/**
 * 订单分配操作记录服务接口
 *
 * @author ylx
 * @version 1.0
 * @since 2025-01-10
 */
public interface OrderAllocationLogService extends IService<OrderAllocationLog> {

    /**
     * 保存订单分配记录
     * <p>
     * 用于记录订单的分配、转单等操作。
     * </p>
     *
     * @param allocationLog 分配记录实体
     * @return true-保存成功，false-保存失败
     */
    boolean saveAllocationLog(OrderAllocationLog allocationLog);

    /**
     * 记录订单转单操作
     * <p>
     * 记录订单从一个技师转给另一个技师的操作，包括：
     * - 订单状态变化
     * - 技师状态变化
     * - 操作人信息
     * - 操作原因
     * - 操作结果
     * </p>
     *
     * @param orderId 订单ID
     * @param orderNo 订单号
     * @param oldTechnicianId 原技师ID
     * @param oldTechnicianName 原技师姓名
     * @param oldTechnicianStatusBefore 原技师操作前状态
     * @param oldTechnicianStatusAfter 原技师操作后状态
     * @param newTechnicianId 新技师ID
     * @param newTechnicianName 新技师姓名
     * @param newTechnicianStatusBefore 新技师操作前状态
     * @param newTechnicianStatusAfter 新技师操作后状态
     * @param orderStatusBefore 订单操作前状态
     * @param orderStatusAfter 订单操作后状态
     * @param operatorId 操作人ID
     * @param operatorName 操作人姓名
     * @param operationReason 操作原因
     * @param operationResult 操作结果（0-成功，1-失败）
     * @return true-记录成功，false-记录失败
     */
    boolean recordTransferOrder(
            String orderId,
            String orderNo,
            String oldTechnicianId,
            String oldTechnicianName,
            Integer oldTechnicianStatusBefore,
            Integer oldTechnicianStatusAfter,
            String newTechnicianId,
            String newTechnicianName,
            Integer newTechnicianStatusBefore,
            Integer newTechnicianStatusAfter,
            Integer orderStatusBefore,
            Integer orderStatusAfter,
            String operatorId,
            String operatorName,
            String operationReason,
            Integer operationResult
    );
}
