package com.usky.system.mapper;

import com.usky.common.mybatis.core.CrudMapper;
import com.usky.system.domain.SysTenant;
import com.usky.system.domain.SysUserRole;
import com.usky.system.service.vo.SysTenantTwoVo;
import com.usky.system.service.vo.SysTenantVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 租户信息表 Mapper 接口
 * </p>
 *
 * @author ya
 * @since 2022-05-05
 */
@Repository
public interface SysTenantMapper extends CrudMapper<SysTenant> {

    List<SysTenantVo> getUserData(@Param("userId") int userId);

    List<SysTenant> getAppData(@Param("domain") String domain);

    List<SysTenantTwoVo> getTenantData(@Param("tenantName") String tenantName,
                                       @Param("tenantManager") String tenantManager,
                                       @Param("tenantType") String tenantType,
                                       @Param("status") String status,
                                       @Param("platformName") String platformName,
                                       @Param("startTime") String startTime,
                                       @Param("endTime") String endTime,
                                       @Param("current") Integer current,
                                       @Param("size") Integer size,
                                       @Param("id") Integer id);

    List<SysTenantTwoVo> getTenantDataOne(@Param("tenantName") String tenantName,
                                          @Param("tenantManager") String tenantManager,
                                          @Param("current") Integer current,
                                          @Param("size") Integer size);

    void cloneSysTenantConfig(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId,@Param("createBy") String createBy);
    void cloneSysTenantMenu(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId);
    void cloneSysMobileTenantConfig(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId,@Param("createBy") String createBy);
    void cloneSysMobileBanner(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId,@Param("createBy") String createBy);
    void cloneSysTenantPlatform(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId);
    void cloneSysMobileTenantMenu(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId);
    List<SysUserRole> selectSysUserRoleList(@Param("originalTenantId") Integer originalTenantId, @Param("UserId") long UserId);
    void cloneSysRoleMenu(@Param("originalRoleId") long originalRoleId,@Param("roleId") long roleId);
    void insertSysUserRole(@Param("UserId") long UserId,@Param("roleId") long roleId,@Param("tenantId") long tenantId);
    void insertBaseSpace(@Param("tenantName") String tenantName,@Param("tenantId") long tenantId);

    void delSysTenant(@Param("tenantId") Integer tenantId);
    void delBaseSpace(@Param("tenantId") Integer tenantId);
    void delSysDept(@Param("tenantId") Integer tenantId);
    void delSysUser(@Param("tenantId") Integer tenantId);
    void delSysUserTenant(@Param("tenantId") Integer tenantId);
    void delSysTenantConfig(@Param("tenantId") Integer tenantId);
    void delSysTenantMenu(@Param("tenantId") Integer tenantId);
    void delSysTenantPlatform(@Param("tenantId") Integer tenantId);
    void delSysMobileBanner(@Param("tenantId") Integer tenantId);
    void delSysMobileTenantConfig(@Param("tenantId") Integer tenantId);
    void delSysMobileTenantMenu(@Param("tenantId") Integer tenantId);
    void delSysRoleMenu(@Param("roleId") long roleId);
    void delSysRole(@Param("tenantId") Integer tenantId);
    void delSysUserRole(@Param("tenantId") Integer tenantId);
}
