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.permission.CreatePermissionDTO;
import com.lesingle.creation.dto.permission.UpdatePermissionDTO;
import com.lesingle.creation.entity.Permission;
import com.lesingle.creation.vo.permission.PermissionDetailVO;
import com.lesingle.creation.vo.permission.PermissionListVO;

import java.util.List;

/**
 * 权限服务接口
 */
public interface PermissionService extends IService<Permission> {

    /**
     * 创建权限
     *
     * @param dto 创建权限 DTO
     * @param tenantId 租户 ID
     * @param operatorId 操作人 ID
     * @return 权限详情 VO
     */
    PermissionDetailVO create(CreatePermissionDTO dto, Long tenantId, Long operatorId);

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

    /**
     * 根据 ID 查询权限详情
     *
     * @param id 权限 ID
     * @return 权限详情 VO
     */
    PermissionDetailVO detail(Long id);

    /**
     * 更新权限
     *
     * @param id 权限 ID
     * @param dto 更新权限 DTO
     * @param tenantId 租户 ID
     * @return 权限详情 VO
     */
    PermissionDetailVO update(Long id, UpdatePermissionDTO dto, Long tenantId);

    /**
     * 删除权限
     *
     * @param id 权限 ID
     */
    void delete(Long id);

    /**
     * 获取所有权限列表
     *
     * @param tenantId 租户 ID
     * @return 权限列表
     */
    List<PermissionListVO> list(Long tenantId);
}
