package com.sckw.system.dao;

import com.sckw.system.model.KwsMenu;
import com.sckw.system.model.pojo.FindMenuTreePojo;
import com.sckw.system.model.vo.req.FindMenuTreeReqVo;
import com.sckw.system.model.vo.res.KwsMenuResVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * 菜单
 * @author zk
 * @date 2023-05-31
 */
@Mapper
public interface KwsMenuDao {

    /**
     * @desc: 条件查询
     * @author: czh
     * @date: 2023/6/26
     * @return
     */
    List<KwsMenu> select(KwsMenu kwsMenu);

    /**
     * @desc: 全量查
     * @author: czh
     * @date: 2023/6/26
     * @return
     */
    List<KwsMenu> selectAll();

    /**
     * 新增
     * @param record
     * @return
     */
    int insert(KwsMenu record);

    /**
     * 更新
     * @param record
     * @return
     */
    int update(KwsMenu record);

    /**
     * 详情查询
     * @param id
     * @return
     */
    KwsMenu selectByKey(Long id);

    /**
     * @param list id集合
     * @return KwsMenu
     * @desc:  批量详情查询
     * @author: czh
     */
    List<KwsMenu> selectByKeys(List<Long> list);

    /**
     * 查询
     * @param params
     * @return
     * @throws Exception
     */
    List<KwsMenuResVo> findList(FindMenuTreePojo params);

    List<KwsMenuResVo> findList1(FindMenuTreePojo params);

    /**
     * @param kwsMenuParam 实体
     * @return KwsMenu
     * @desc: 查下级菜单（名称模糊匹配）
     * @author: czh
     * @date: 2023/7/10
     */
    List<KwsMenu> queryChildMenu(KwsMenu kwsMenuParam);

    /**
     * 根据多个父级ID批量查询子菜单
     *
     * @param parentIds 父级菜单ID列表
     * @param type      菜单类型（可选），传null则不限类型
     * @return 子菜单列表
     */
    List<KwsMenu> selectByParentIds(@Param("parentIds") List<Long> parentIds, @Param("type") Integer type);
}
