package com.cf.imes.module.system.api.organ;

import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.system.api.organ.dto.OrganizationDTO;
import com.cf.imes.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient(name = ApiConstants.NAME) // TODO 晨丰：fallbackFactory =
@Tag(name = "RPC 服务 - 多组织")
public interface OrganApi {

    String PREFIX = ApiConstants.PREFIX + "/organ";

    @GetMapping(PREFIX + "/id-list")
    @Operation(summary = "获得所有组织编号")
    CommonResult<List<Long>> getOrganIdList();

    @GetMapping(PREFIX + "/valid")
    @Operation(summary = "校验组织是否合法")
    @Parameter(name = "id", description = "组织编号", required = true, example = "1024")
    CommonResult<Boolean> validOrgan(@RequestParam("id") Long id);

    @GetMapping(PREFIX + "/organ-details")
    @Operation(summary = "根据组织ID获取组织的详细信息")
    CommonResult<OrganizationDTO> getOrganDetails(@RequestParam("organId") Long organId);


    @GetMapping(PREFIX + "/name-details")
    @Operation(summary = "根据组织名称获取组织的信息")
    CommonResult<List<OrganizationDTO>> getOrganDetailsByName(@RequestParam("organName") String organName);

    @GetMapping(PREFIX + "/valid/product")
    @Operation(summary = "校验组织产品是否有效")
    @Parameter(name = "organId", description = "组织编号", required = true, example = "1024")
    @Parameter(name = "productId", description = "产品编号", required = true, example = "1024")
    CommonResult<Boolean> validOrganProduct(@RequestParam("organId") Long organId, @RequestParam("id") Long productId);
}
