package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.PolicyMenu;

/**
 * 政策类别Service接口
 * 
 * @author boman
 * @date 2022-06-10
 */
public interface IPolicyMenuService 
{
    /**
     * 查询政策类别
     * 
     * @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 menuIds 需要删除的政策类别主键集合
     * @return 结果
     */
    public int deletePolicyMenuByMenuIds(Long[] menuIds);

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

    /**
     * 查询政策类别管理数据
     * @param policyMenu
     * @return
     */
    List<PolicyMenu>selectMenusList(PolicyMenu policyMenu);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param policyMenu 政策类别列表
     * @return 下拉树结构列表
     */
    List<TreeSelect>buildMenuTreeSelect(List<PolicyMenu> policyMenu);

    /**
     * 校验政策类别名称
     * @param policyMenu
     * @return
     */
    String checkMenuNameUnique(PolicyMenu policyMenu);

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

    AjaxResult listApp(String idCard);
}
