package com.ruoyi.web.modules.video.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.web.modules.video.domain.BizLivestockMonitor;

/**
 * 畜牧监控数据访问层，表 {@code biz_livestock_monitor}。
 * <p>
 * 手工 CRUD 与第三方同步共用 Mapper；同步专用更新见 {@link #updateBizLivestockMonitorFromSync}。
 * </p>
 */
public interface BizLivestockMonitorMapper
{
    /** 按主键查询，仅 {@code del_flag=0} */
    BizLivestockMonitor selectBizLivestockMonitorById(Long id);

    /** 按主键查询，含已逻辑删除记录（删除前校验用） */
    BizLivestockMonitor selectBizLivestockMonitorByIdAny(Long id);

    /**
     * 按第三方摄像头 ID 查询，供同步 upsert 使用。
     * 含已逻辑删除行（limit 1），避免 monitor_id 重复插入。
     */
    BizLivestockMonitor selectBizLivestockMonitorByMonitorId(@Param("monitorId") String monitorId);

    /**
     * 条件列表：{@code monitorName} 模糊；{@code ownerType}+{@code ownerId} 精确；
     * 仅 {@code del_flag=0}，按创建时间倒序。
     */
    List<BizLivestockMonitor> selectBizLivestockMonitorList(BizLivestockMonitor query);

    /** 手工新增 */
    int insertBizLivestockMonitor(BizLivestockMonitor row);

    /** 手工修改，条件 {@code del_flag=0} */
    int updateBizLivestockMonitor(BizLivestockMonitor row);

    /**
     * 第三方同步更新。
     * 不限制 del_flag；保留字段由 {@link com.ruoyi.web.modules.video.service.LivestockMonitorSyncTxService} 传入。
     */
    int updateBizLivestockMonitorFromSync(BizLivestockMonitor row);

    /** 批量逻辑删除，{@code del_flag} 置为 2 */
    int logicDeleteBizLivestockMonitorByIds(@Param("ids") Long[] ids, @Param("updateBy") String updateBy);
}
