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.dict.CreateDictDTO;
import com.lesingle.creation.dto.dict.UpdateDictDTO;
import com.lesingle.creation.entity.Dict;
import com.lesingle.creation.vo.dict.DictDetailVO;
import com.lesingle.creation.vo.dict.DictListVO;

/**
 * 字典服务接口
 */
public interface DictService extends IService<Dict> {

    /**
     * 创建字典
     *
     * @param dto 创建字典 DTO
     * @param tenantId 租户 ID
     * @param operatorId 操作人 ID
     * @return 字典详情 VO
     */
    DictDetailVO create(CreateDictDTO dto, Long tenantId, Long operatorId);

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

    /**
     * 根据编码查询字典
     *
     * @param code 字典编码
     * @param tenantId 租户 ID
     * @return 字典详情 VO
     */
    DictDetailVO getByCode(String code, Long tenantId);

    /**
     * 根据 ID 查询字典详情
     *
     * @param id 字典 ID
     * @param tenantId 租户 ID
     * @return 字典详情 VO
     */
    DictDetailVO detail(Long id, Long tenantId);

    /**
     * 更新字典
     *
     * @param id 字典 ID
     * @param dto 更新字典 DTO
     * @param tenantId 租户 ID
     * @return 字典详情 VO
     */
    DictDetailVO update(Long id, UpdateDictDTO dto, Long tenantId);

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