package com.yhy.module.core.dal.mysql.quota;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import com.yhy.module.core.dal.dataobject.quota.QuotaCatalogTreeDO;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 定额子目树 Mapper
 *
 * @author yhy
 */
@Mapper
public interface QuotaCatalogTreeMapper extends BaseMapperX<QuotaCatalogTreeDO> {

    /**
     * 查询指定定额专业下的所有节点
     */
    default List<QuotaCatalogTreeDO> selectListByCatalogItemId(Long catalogItemId) {
        return selectList(QuotaCatalogTreeDO::getCatalogItemId, catalogItemId);
    }

    /**
     * 查询指定父节点下的子节点
     */
    default List<QuotaCatalogTreeDO> selectListByParentId(Long parentId) {
        return selectList(QuotaCatalogTreeDO::getParentId, parentId);
    }

    /**
     * 查询同级节点（用于排序）
     */
    default List<QuotaCatalogTreeDO> selectSiblings(@Param("catalogItemId") Long catalogItemId, 
                                                     @Param("parentId") Long parentId) {
        return selectList(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<QuotaCatalogTreeDO>()
                .eq(QuotaCatalogTreeDO::getCatalogItemId, catalogItemId)
                .eq(parentId != null, QuotaCatalogTreeDO::getParentId, parentId)
                .isNull(parentId == null, QuotaCatalogTreeDO::getParentId)
                .orderByAsc(QuotaCatalogTreeDO::getSortOrder));
    }
}
