package com.enterprise.manage.modules.system.mapper;

import com.enterprise.manage.common.base.BaseMapper;
import com.enterprise.manage.modules.system.domain.po.Menu;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * system menu mapper interface
 *
 * @author PeiZhi Guo
 * 2021-2-18 14:21
 */
@Repository
public interface MenuMapper extends BaseMapper<Menu> {

    /**
     * 根据 role 查询顶级菜单
     *
     * Param roleId
     * Return List<AuthMenu>
     */
    List<Menu> selectTopRolePermissions(Long roleId);

    /**
     * 根据 role 查询菜单
     *
     * Param roleId
     * Return List<AuthMenu>
     */
    List<Menu> selectRolePermissions(Long roleId);

    /**
     * 根据 username 条件查询， 返回权限结果集
     *
     * Param username
     * Return List<SysMenu>
     */
    List<Menu> selectByUsername(String username);

    /**
     * 查询 type 类型为目录、菜单并且 enable 启用状态的数据
     *
     * Return List<SysMenu>
     */
    List<Menu> selectTreeAll();

    /**
     * 根据 parentId 查询父类下同名菜单数量
     *
     * Param params
     * Return SysMenu
     */
    int checkMenuNameUnique(Map<String, Object> params);

    /**
     * 根据 menuId 查询菜单下子节点数量
     *
     * Param menuId
     * Return int
     */
    int selectChildSumByMenuId(Integer menuId);

    /**
     * 根据 menuId 更改 enable 字段状态
     *
     * Param params
     * Return int
     */
    int updateEnableById(Map<String, Object> params);
}
