package com.gxwebsoft.common.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.system.entity.Company;
import com.gxwebsoft.common.system.entity.Tenant;
import com.gxwebsoft.common.system.param.TenantParam;

import java.util.List;

/**
 * 租户Service
 *
 * @author 科技小王子
 * @since 2023-07-17 17:49:53
 */
public interface TenantService extends IService<Tenant> {

    /**
     * 分页关联查询
     *
     * @param param 查询参数
     * @return PageResult<Tenant>
     */
    PageResult<Tenant> pageRel(TenantParam param);

    /**
     * 关联查询全部
     *
     * @param param 查询参数
     * @return List<Tenant>
     */
    List<Tenant> listRel(TenantParam param);

    /**
     * 根据id查询
     *
     * @param tenantId 租户id
     * @return Tenant
     */
    Tenant getByIdRel(Integer tenantId);

    Company initialization(Company company);

    boolean destructionAll(Integer tenantId);

    Tenant getByCodeRel(String code);

    /**
     * 授予当前租户cms建站权限
     * 从参考租户复制cms:*菜单到当前租户, 并绑定到当前租户的超级管理员角色
     *
     * @param refTenant 参考租户id(已配置好cms菜单的租户)
     * @param curTenant 当前租户id
     * @return ApiResult<?>
     */
    ApiResult<?> grantCmsPermission(Integer refTenant, Integer curTenant);
}
