package com.gxwebsoft.hjm.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gxwebsoft.hjm.entity.HjmCar;
import com.gxwebsoft.hjm.param.HjmCarParam;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

/**
 * 黄家明_车辆管理Mapper
 *
 * @author 科技小王子
 * @since 2025-04-14 16:43:26
 */
public interface HjmCarMapper extends BaseMapper<HjmCar> {

    /**
     * 分页查询
     *
     * @param page  分页对象
     * @param param 查询参数
     * @return List<HjmCar>
     */
    List<HjmCar> selectPageRel(@Param("page") IPage<HjmCar> page,
                             @Param("param") HjmCarParam param);

    /**
     * 查询全部
     *
     * @param param 查询参数
     * @return List<User>
     */
    List<HjmCar> selectListRel(@Param("param") HjmCarParam param);


    @InterceptorIgnore(tenantLine = "true")
    HjmCar getByGpsNo(@Param("gpsNo") String gpsNo);

    @InterceptorIgnore(tenantLine = "true")
    boolean updateByGpsNo(@Param("param") HjmCar param);

    @InterceptorIgnore(tenantLine = "true")
    HjmCar getByCode(String code);

    /**
     * 硬删除：绕过 MyBatis-Plus 逻辑删除（@TableLogic）。
     */
    @Delete("DELETE FROM hjm_car WHERE id = #{id}")
    int hardDeleteById(@Param("id") Integer id);

    /**
     * 硬删除：批量删除，绕过 MyBatis-Plus 逻辑删除（@TableLogic）。
     */
    @Delete({
        "<script>",
        "DELETE FROM hjm_car WHERE id IN",
        "<foreach collection='ids' item='id' open='(' separator=',' close=')'>",
        "#{id}",
        "</foreach>",
        "</script>"
    })
    int hardDeleteBatchIds(@Param("ids") Collection<Integer> ids);
}
