package com.xindazhou.user.api.tenant;

import com.xindazhou.framework.common.biz.system.tenant.TenantCommonApi;
import com.xindazhou.framework.common.pojo.CommonResult;
import com.xindazhou.framework.tenant.core.aop.TenantIgnore;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;

import jakarta.annotation.Resource;
import java.util.Collections;
import java.util.List;

import static com.xindazhou.framework.common.pojo.CommonResult.success;

/**
 * 租户 API 实现类（简化版）
 * 
 * 支持租户禁用/启用：
 * - 如果 xdz.tenant.enable=false，则直接返回成功，不进行租户校验
 * - 如果 xdz.tenant.enable=true，则返回空列表（表示所有租户都有效）
 */
@RestController // 提供 RESTful API 接口，给 Feign 调用
@Validated
public class TenantApiImpl implements TenantCommonApi {

    @Value("${xdz.tenant.enable:false}")
    private Boolean tenantEnable;

    @Override
    @TenantIgnore // 防止递归。避免调用 /rpc-api/system/tenant/valid 接口时，又去触发 /rpc-api/system/tenant/valid 去校验
    public CommonResult<List<Long>> getTenantIdList() {
        // 如果租户功能禁用，返回空列表
        if (!tenantEnable) {
            return success(Collections.emptyList());
        }
        // 如果租户功能启用，返回空列表（表示所有租户都有效）
        // 注意：如果需要真正的租户列表，需要实现 TenantService
        return success(Collections.emptyList());
    }

    @Override
    @TenantIgnore // 获得租户列表的时候，无需传递租户编号
    public CommonResult<Boolean> validTenant(Long id) {
        // 如果租户功能禁用，直接返回成功
        if (!tenantEnable) {
            return success(true);
        }
        // 如果租户功能启用，验证租户 ID
        // 注意：如果需要真正的租户验证，需要实现 TenantService
        // 这里简化处理：如果 id 为 null 或 0，表示默认租户，返回成功
        if (id == null || id == 0) {
            return success(true);
        }
        // 其他情况也返回成功（简化处理）
        return success(true);
    }

}

