package com.zd.system.mapper;

import java.util.List;

import com.zd.system.api.domain.SysPermitInfo;
import com.zd.system.domain.SysPermitMenu;
import org.apache.ibatis.annotations.Param;

/**
 * 权限和菜单关联Mapper接口
 *
 * @author liubo
 * @date 2022-03-21
 */
public interface SysPermitMenuMapper
{
    /**
     * 查询权限和菜单关联
     *
     * @param menuId 权限和菜单关联主键
     * @return 权限和菜单关联
     */
    public SysPermitMenu selectSysPermitMenuByMenuId(Long menuId);

    /**
     * 查询权限和菜单关联列表
     *
     * @param sysPermitMenu 权限和菜单关联
     * @return 权限和菜单关联集合
     */
    public List<SysPermitMenu> selectSysPermitMenuList(SysPermitMenu sysPermitMenu);

    /**
     * 新增权限和菜单关联
     *
     * @param sysPermitMenu 权限和菜单关联
     * @return 结果
     */
    public int insertSysPermitMenu(SysPermitMenu sysPermitMenu);

    /**
     * 修改权限和菜单关联
     *
     * @param sysPermitMenu 权限和菜单关联
     * @return 结果
     */
    public int updateSysPermitMenu(SysPermitMenu sysPermitMenu);

    /**
     * 删除权限和菜单关联
     *
     * @param menuId 权限和菜单关联主键
     * @return 结果
     */
    public int deleteSysPermitMenuByMenuId(@Param("menuId") Long menuId, @Param("permitId") Long permitId, @Param("userId") Long userId);

    /**
     * 批量删除权限和菜单关联
     *
     * @param menuIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysPermitMenuByMenuIds(Long[] menuIds);

    List<SysPermitInfo> selectPerMitByUserId(Long userId);

    List<Long> selectIdByRelation(@Param("permitId") Long permitId, @Param("userId") Long userId);

    int insertBatch(@Param("list") List<SysPermitMenu> permitMenus);

    List<SysPermitInfo> selectPerMitByStudent();

    List<SysPermitInfo> selectPerMitByTeacher();
}
