package com.ruoyi.base.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.base.domain.BaseCategory;
import com.ruoyi.base.vo.BaseCategoryVO;
import com.ruoyi.member.vo.MemberUniVO;

/**
 * 分类树-各种分类属性结构Service接口
 *
 * @author vinjor-m
 * @date 2025-03-17
 */
public interface IBaseCategoryService extends IService<BaseCategory> {
    IPage<BaseCategory> queryListPage(BaseCategory pageReqVO, Page<BaseCategory> page);

    /**
     * 根据code查询字典
     *
     * @param code
     * @return java.util.List<com.ruoyi.base.domain.BaseCategory>
     * @author vinjor-M
     * @date 11:32 2025/3/18
     **/
    List<BaseCategory> selectByCode(String code);

    /**
     * 根据code查下级分类字典--列表
     *
     * @param code     编码
     * @param isSystem 是否系统级
     * @return java.util.List<com.ruoyi.base.domain.BaseCategory>
     * @author vinjor-M
     * @date 17:01 2025/3/25
     **/
    List<BaseCategory> listByParentCode(String code, Integer isSystem);

    /**
     * 查询列表
     *
     * @param code     编码
     * @param isSystem 是否系统级
     * @return java.util.List<com.ruoyi.member.vo.MemberUniVO>
     * @author PQZ
     * @date 14:43 2025/4/3
     **/
    List<MemberUniVO> uniListByParentCode(String code, Integer isSystem);

    /**
     * 通用查询分类树方法
     * @author PQZ
     * @date 10:50 2025/4/14
     * @param code 分类code
     * @return java.util.List<com.ruoyi.base.vo.BaseCategoryVO>
    **/
    List<BaseCategoryVO> treeData(String code);
}
