package com.starry.admin.modules.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.admin.modules.system.module.entity.SysTenantEntity;
import com.starry.admin.modules.system.vo.SysTenantQueryVo;
import com.starry.common.result.R;
import java.util.List;

/**
 * 租户表Service接口
 *
 * @author admin
 */
public interface ISysTenantService extends IService<SysTenantEntity> {

    /**
     * 获得所有的租户信息
     *
     * @return 租户表
     */
    List<SysTenantEntity> listAll();

    /**
     * 根据租户权限标识查询租户
     *
     * @param tenantKey
     *            租户权限标识
     * @return 租户表
     */
    SysTenantEntity selectByTenantKey(String tenantKey);

    /**
     * 查询租户表
     *
     * @param tenantId
     *            租户表主键
     * @return 租户表
     */
    SysTenantEntity selectSysTenantByTenantId(String tenantId);

    /**
     * 查询租户表列表
     *
     * @param sysTenantEntity
     *            租户表
     * @return 租户表集合
     */
    IPage<SysTenantEntity> selectSysTenantList(SysTenantQueryVo sysTenantEntity);

    /**
     * 新增租户表
     *
     * @param sysTenantEntity
     *            租户表
     * @return 结果
     */
    boolean create(SysTenantEntity sysTenantEntity);

    /**
     * 修改租户表
     *
     * @param sysTenantEntity
     *            租户表
     * @return 结果
     */
    boolean update(SysTenantEntity sysTenantEntity);

    /**
     * 批量删除租户表
     *
     * @param tenantIds
     *            需要删除的租户表主键集合
     * @return 结果
     */
    int deleteSysTenantByTenantIds(String[] tenantIds);

    /**
     * 删除租户表信息
     *
     * @param tenantId
     *            租户表主键
     * @return 结果
     */
    int deleteSysTenantByTenantId(Long tenantId);

    /**
     * 新增租户
     *
     * @param sysTenantEntity
     *            租户表
     * @return 结果
     */
    R addTenant(SysTenantEntity sysTenantEntity);

    /**
     * 修改租户
     *
     * @param sysTenantEntity
     *            租户表
     * @return 结果
     */
    R updateTenant(SysTenantEntity sysTenantEntity);

    /**
     * 根据套餐ID查询租户
     *
     * @param packageId
     *            套餐ID
     * @return
     */
    List<SysTenantEntity> queryByPackage(String packageId);

    void initRole(SysTenantEntity sysTenantEntity);

}
