package com.ruoyi.system.mapper;

import java.util.List;
import com.ruoyi.common.core.domain.entity.PolicyMenu;
import com.ruoyi.common.core.domain.entity.SysDept;
import org.apache.ibatis.annotations.Param;

/**
 * 政策类别Mapper接口
 * 
 * @author boman
 * @date 2022-06-10
 */
public interface PolicyMenuMapper 
{
    /**
     * 查询政策类别
     * 
     * @param menuId 政策类别主键
     * @return 政策类别
     */
    public PolicyMenu selectPolicyMenuByMenuId(Long menuId);

    /**
     * 查询政策类别列表
     * 
     * @param policyMenu 政策类别
     * @return 政策类别集合
     */
    public List<PolicyMenu> selectPolicyMenuList(PolicyMenu policyMenu);

    /**
     * 新增政策类别
     * 
     * @param policyMenu 政策类别
     * @return 结果
     */
    public int insertPolicyMenu(PolicyMenu policyMenu);

    /**
     * 修改政策类别
     * 
     * @param policyMenu 政策类别
     * @return 结果
     */
    public int updatePolicyMenu(PolicyMenu policyMenu);

    /**
     * 删除政策类别
     * 
     * @param menuId 政策类别主键
     * @return 结果
     */
    public int deletePolicyMenuByMenuId(Long menuId);

    /**
     * 批量删除政策类别
     * 
     * @param menuIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePolicyMenuByMenuIds(Long[] menuIds);

    /**
     * 校验政策类别名称
     * @param menuName
     * @param parentId
     * @return
     */
    public PolicyMenu checkMenuNameUnique(@Param("menuName") String menuName,@Param("parentId") Long parentId);

    /**
     * 根据ID查询所有子部门（正常状态）
     *
     * @param menuId 部门ID
     * @return 子部门数
     */
    public int selectNormalChildrenMenuById(@Param("menuId") Long menuId);

    /**
     * 根据ID查询所有子类别
     *
     * @param menuId 类别ID
     * @return 类别列表
     */
    public List<PolicyMenu> selectChildrenMenuById(@Param("menuId") Long menuId);

    /**
     * 更新所有子类别
     * @param menus
     * @return
     */
    public int updateMenuChildren(@Param("menus") List<PolicyMenu> menus);


    /**
     * 修改所在类别正常状态
     *
     * @param menuIds 类别ID组
     */
    public void updateMenuStatusNormal(Long[] menuIds);

}
