package com.erp.tenant.config;

import com.erp.tenant.entity.Tenant;

/**
 * 租户上下文管理器
 * 
 * 使用ThreadLocal存储当前请求的租户信息
 */
public class TenantContext {
    
    private static final ThreadLocal<Tenant> CURRENT_TENANT = new ThreadLocal<>();
    
    /**
     * 设置当前租户
     */
    public static void setCurrentTenant(Tenant tenant) {
        CURRENT_TENANT.set(tenant);
    }
    
    /**
     * 获取当前租户
     */
    public static Tenant getCurrentTenant() {
        return CURRENT_TENANT.get();
    }
    
    /**
     * 获取当前租户ID
     */
    public static Long getCurrentTenantId() {
        Tenant tenant = CURRENT_TENANT.get();
        return tenant != null ? tenant.getId() : null;
    }
    
    /**
     * 获取当前租户编码
     */
    public static String getCurrentTenantCode() {
        Tenant tenant = CURRENT_TENANT.get();
        return tenant != null ? tenant.getCode() : null;
    }
    
    /**
     * 检查是否有租户上下文
     */
    public static boolean hasTenant() {
        return CURRENT_TENANT.get() != null;
    }
    
    /**
     * 检查当前租户是否有效（未过期且正常）
     */
    public static boolean isValidTenant() {
        Tenant tenant = CURRENT_TENANT.get();
        return tenant != null && tenant.isActive() && !tenant.isExpired();
    }
    
    /**
     * 清除租户上下文
     */
    public static void clear() {
        CURRENT_TENANT.remove();
    }
}
