package com.lesingle.creation.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lesingle.creation.dto.config.CreateConfigDTO;
import com.lesingle.creation.dto.config.UpdateConfigDTO;
import com.lesingle.creation.entity.SysConfig;
import com.lesingle.creation.vo.config.ConfigDetailVO;
import com.lesingle.creation.vo.config.ConfigListVO;

/**
 * 系统配置服务接口
 */
public interface ConfigService extends IService<SysConfig> {

    /**
     * 创建配置
     *
     * @param dto 创建配置 DTO
     * @param tenantId 租户 ID
     * @param operatorId 操作人 ID
     * @return 配置详情 VO
     */
    ConfigDetailVO create(CreateConfigDTO dto, Long tenantId, Long operatorId);

    /**
     * 分页查询配置列表
     *
     * @param tenantId 租户 ID
     * @param page 页码
     * @param pageSize 每页大小
     * @return 配置列表分页数据
     */
    Page<ConfigListVO> pageList(Long tenantId, int page, int pageSize);

    /**
     * 根据键查询配置
     *
     * @param key 配置键
     * @param tenantId 租户 ID
     * @return 配置详情 VO
     */
    ConfigDetailVO getByKey(String key, Long tenantId);

    /**
     * 根据 ID 查询配置详情
     *
     * @param id 配置 ID
     * @param tenantId 租户 ID
     * @return 配置详情 VO
     */
    ConfigDetailVO detail(Long id, Long tenantId);

    /**
     * 更新配置
     *
     * @param id 配置 ID
     * @param dto 更新配置 DTO
     * @param tenantId 租户 ID
     * @return 配置详情 VO
     */
    ConfigDetailVO update(Long id, UpdateConfigDTO dto, Long tenantId);

    /**
     * 删除配置
     *
     * @param id 配置 ID
     * @param tenantId 租户 ID
     */
    void delete(Long id, Long tenantId);
}
