package shop.alien.store.service;

import shop.alien.entity.store.StoreDictionary;
import shop.alien.entity.result.R;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 平台字典库管理Service
 *
 * @author ssk
 * @version 1.0
 * @date 2025/01/01
 */
public interface DictionaryLibraryService {

    /**
     * 查询字典库（三级树形结构）
     * 如果传入dictDetail，则查询匹配的记录及其父级和子级树形结构
     * 如果不传dictDetail，则返回完整的字典库树形结构
     *
     * @param dictDetail 字典描述（可选），如果传入则根据此参数过滤
     * @return 字典库树形结构列表
     */
    List<StoreDictionary> queryDictionaryLibraryTree(String dictDetail);

    /**
     * 新增字典库（支持一级、二级、三级）
     *
     * @param storeDictionary 字典库信息
     * @return 新增结果
     */
    boolean addDictionaryLibrary(StoreDictionary storeDictionary);

    /**
     * 修改字典库（支持一级、二级、三级）
     *
     * @param storeDictionary 字典库信息
     * @return 修改结果
     */
    boolean updateDictionaryLibrary(StoreDictionary storeDictionary);

    /**
     * 批量导入字典库
     *
     * @param file Excel文件
     * @return 导入结果
     */
    R<String> importDictionaryLibrary(org.springframework.web.multipart.MultipartFile file);

    /**
     * 下载字典库导入模板
     *
     * @param response HTTP响应
     * @throws IOException IO异常
     */
    void downloadTemplate(HttpServletResponse response) throws IOException;

    int deleteDictionaryLibrary(Long id);

    /**
     * 修改字典库状态（通过id修改hidden为1）
     *
     * @param id 字典库ID
     * @return 修改结果
     */
    int updateHiddenStatus(Long id);

    /**
     * 根据dictDetail查询字典库（包含父级或子级树形结构）
     *
     * @param dictDetail 字典描述
     * @return 字典库树形结构列表
     */
    List<StoreDictionary> selectDictBydictDetail(String dictDetail);
}
