package com.vctgo.system.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vctgo.common.mybatisplus.mapper.BaseMapperX;
import com.vctgo.system.api.domain.SysTenant;
import org.apache.commons.compress.archivers.zip.X0017_StrongEncryptionHeader;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 租户管理Mapper接口
 *
 * @author vctgo
 * @date 2022-04-11
 */
@Repository
public interface SysTenantMapper extends BaseMapperX<SysTenant>
{

    /**
     * 查询租户管理列表-分页
     *
     * @param sysTenant 租户管理
     * @return 租户管理集合
     */
    IPage<SysTenant> selectSysTenantList(Page page,@Param("query") SysTenant sysTenant);

    /**
     * 查询租户管理列表
     *
     * @param sysTenant 租户管理
     * @return 租户管理集合
     */
    List<SysTenant> selectSysTenantList(@Param("query") SysTenant sysTenant);

    /**
     * 查询租户管理列表
     *
     * @param sysTenant 租户管理
     * @return 租户管理集合
     */
    List<SysTenant> selectSysTenantTree(@Param("query") SysTenant sysTenant);

    /**
     * 根据集团id查询分园租户列表
     *
     * @param gardenId 集团ID
     * @return 租户管理集合
     */
    List<SysTenant> selectBranchTenantList(@Param("gardenId") Long gardenId);

    /**
     * 更新租户集团幼儿园数据
     *
     * @param sysTenant 租户管理
     * @return 租户管理集合
     */
    int updateSysTenantRelaData(SysTenant sysTenant);

    /**
     * 更新集团租户集团名称
     *
     * @param sysTenant 租户管理
     * @return 租户管理集合
     */
    int updateSysGardenTenantName(SysTenant sysTenant);

    /**
     * 查询系统已有租户的ID最大值
     *
     * @param
     * @return 租户管理集合
     */
    Long getMaxTenantId();

    /**
     * 批量删除租户管理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteSysTenantByIds(Long[] ids);

    /**
     * 获取指定租户的父级租户信息
     *
     * @param tenantId 租户管理主键
     * @return 结果
     */
    SysTenant getParentTenantInfo(Long tenantId);

    /**
     * 通过租户Id获取对应的租户信息
     */
    SysTenant selectTenantInfoById(Long tenantId);


    List<SysTenant> selectTenantByPhone(@Param("phone") String phone);

    List<SysTenant> slectTenantByPhoneList(String[] phones);

    List<SysTenant> selectTenantList(@Param("query") SysTenant sysTenant);
}
