package com.zsElectric.boot.business.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zsElectric.boot.business.model.entity.UserVehicle;
import com.zsElectric.boot.business.model.form.UserVehicleForm;
import com.zsElectric.boot.business.model.query.UserVehicleQuery;
import com.zsElectric.boot.business.model.vo.UserVehicleVO;

import java.util.List;

/**
 * 用户车辆信息服务类
 *
 * @author zsElectric
 * @since 2026-03-03
 */
public interface UserVehicleService extends IService<UserVehicle> {

    /**
     * 用户车辆分页列表
     *
     * @param queryParams 查询参数
     * @return {@link IPage<UserVehicleVO>} 用户车辆分页列表
     */
    IPage<UserVehicleVO> getUserVehiclePage(UserVehicleQuery queryParams);

    /**
     * 获取用户车辆表单数据
     *
     * @param id 车辆ID
     * @return 车辆表单数据
     */
    UserVehicleForm getUserVehicleFormData(Long id);

    /**
     * 新增用户车辆
     *
     * @param formData 车辆表单对象
     * @return 是否新增成功
     */
    boolean saveUserVehicle(UserVehicleForm formData);

    /**
     * 修改用户车辆
     *
     * @param id       车辆ID
     * @param formData 车辆表单对象
     * @return 是否修改成功
     */
    boolean updateUserVehicle(Long id, UserVehicleForm formData);

    /**
     * 删除用户车辆
     *
     * @param ids 车辆ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteUserVehicles(String ids);

    /**
     * 获取用户的车辆列表
     *
     * @param userId 用户ID
     * @return 车辆列表
     */
    List<UserVehicleVO> getUserVehicleList(Long userId);

    /**
     * 设置默认车辆
     *
     * @param userId    用户ID
     * @param vehicleId 车辆ID
     * @return 是否设置成功
     */
    boolean setDefaultVehicle(Long userId, Long vehicleId);

    /**
     * 获取用户默认车辆
     *
     * @param userId 用户ID
     * @return 默认车辆信息
     */
    UserVehicleVO getDefaultVehicle(Long userId);
}
