package com.xindazhou.vehicle.service;

import com.xindazhou.vehicle.api.dto.VehicleRespDTO;
import com.xindazhou.vehicle.api.dto.bind.VehicleBindReqDTO;
import com.xindazhou.vehicle.api.dto.bind.VehicleBindRespDTO;
import com.xindazhou.vehicle.api.dto.bind.VehicleCreateAndBindReqDTO;

import java.util.List;

/**
 * 车辆绑定 Service 接口
 *
 * @author xindazhou
 */
public interface VehicleBindService {

    /**
     * 创建车辆并绑定
     *
     * @param reqDTO 创建并绑定请求
     * @return 车辆信息
     */
    VehicleRespDTO createVehicleAndBind(VehicleCreateAndBindReqDTO reqDTO);

    /**
     * 绑定车辆
     *
     * @param reqDTO 绑定请求
     * @return 绑定关系编号
     */
    Long bindVehicle(VehicleBindReqDTO reqDTO);

    /**
     * 解绑车辆
     *
     * @param userId 用户ID
     * @param vehicleId 车辆ID
     */
    void unbindVehicle(Long userId, Long vehicleId);

    /**
     * 获取车辆的所有绑定关系
     *
     * @param vehicleId 车辆编号
     * @return 绑定关系列表
     */
    List<VehicleBindRespDTO> listBindByVehicleId(Long vehicleId);

    /**
     * 获取用户的所有绑定关系
     *
     * @param userId 用户编号
     * @param userType 用户类型
     * @return 绑定关系列表
     */
    List<VehicleBindRespDTO> listBindByUserId(Long userId, Integer userType);

    /**
     * 设置默认车辆
     *
     * @param userId 用户ID
     * @param vehicleId 车辆ID
     */
    void setDefaultVehicle(Long userId, Long vehicleId);

}

