package org.xyzh.system.mapper.acl;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.api.system.vo.AclVO;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.sys.TbSysAclDTO;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @description    系统访问控制列表Mapper接口
 * @filename    TbSysAclMapper.java
 * @author    yslg
 * @copyright yslg
 * @since 2025-11-07
 */
@Mapper
public interface TbSysAclMapper extends BaseMapper<TbSysAclDTO> {

    /**
     * @description    插入系统访问控制列表
     * @param    aclDTO    系统访问控制列表DTO
     * @return    int    插入结果
     * @author    yslg
     * @since 2025-11-07
     */
    int insertAcl(TbSysAclDTO aclDTO);

    /**
     * @description    更新系统访问控制列表
     * @param    aclDTO    系统访问控制列表DTO
     * @return    int    更新结果
     * @author    yslg
     * @since 2025-11-07
     */
    int updateAcl(TbSysAclDTO aclDTO);

    /**
     * @description    删除系统访问控制列表
     * @param    aclDTO    系统访问控制列表DTO
     * @return    int    删除结果
     * @author    yslg
     * @since 2025-11-07
     */
    int deleteAcl(TbSysAclDTO aclDTO);

    /**
     * @description    根据访问控制列表ID查询系统访问控制列表
     * @param    aclId    访问控制列表ID
     * @return    AclVO    访问控制列表VO
     * @author    yslg
     * @since 2025-11-07
     */
    AclVO getAclById(String aclId);

    /**
     * @description    根据对象ID查询系统访问控制列表
     * @param    objectId    对象ID
     * @return    List<AclVO>    访问控制列表VO列表
     * @author    yslg
     * @since 2025-11-07
     */
    List<AclVO> getAclByObjectId(String objectId);

    /**
     * @description    根据条件查询系统访问控制列表
     * @param    filter    系统访问控制列表DTO
     * @return    List<AclVO>    访问控制列表VO列表
     * @author    yslg
     * @since 2025-11-07
     */
    List<AclVO> getAclByFilter(@Param("filter") TbSysAclDTO filter);

    /**
     * @description    根据条件查询系统访问控制列表分页列表
     * @param    filter    系统访问控制列表DTO
     * @param    pageParam    分页参数
     * @return    List<AclVO>    访问控制列表VO列表
     * @author    yslg
     * @since 2025-11-07
     */
    List<AclVO> getAclPageByFilter(@Param("filter") TbSysAclDTO filter, @Param("pageParam") PageParam pageParam);
    
    /**
     * @description    根据条件查询系统访问控制列表数量
     * @param    filter    系统访问控制列表DTO
     * @return    int    系统访问控制列表数量
     * @author    yslg
     * @since 2025-11-07
     */
    int getAclCount(TbSysAclDTO filter);
}

