package com.onemap.system.api;

import com.onemap.common.core.constant.ServiceNameConstants;
import com.onemap.common.core.domain.R;
import com.onemap.common.core.web.domain.RequestResult;
import com.onemap.system.api.domain.AnalyseUtilsVo;
import com.onemap.system.api.factory.AnalyseFallbackFactory;
import com.onemap.system.api.factory.RemoteAuthFallbackFactory;
import com.onemap.system.api.factory.RemoteLogFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 分析服务
 */
@FeignClient(contextId = "analyseService", value = ServiceNameConstants.ANALYSE_SERVICE, fallbackFactory = AnalyseFallbackFactory.class)
public interface AnalyseService {

    /**
     * table中与wkt数据是否有交集
     */
    @PostMapping("/analyse/db/intersects/table_wkt")
    public RequestResult intersectsTableWkt(
            @RequestParam(value = "inputTable") String inputTable,
            @RequestParam(value = "inputSRID", required = false) Integer inputSRID,
            @RequestParam(value = "inputIds", required = false) List<String> inputIds,
            @RequestParam(value = "intersectsWkt") String intersectsWkt,
            @RequestParam(value = "intersectsWktSRID", required = false) Integer intersectsWktSRID);

    /**
     * table中与wkt数据是否有交集
     */
    @PostMapping("/analyse/db/intersects/table_wkt_v1")
    public RequestResult intersectsTableWktV1(@RequestBody AnalyseUtilsVo analyseUtilsVo);


    @PostMapping("/analyse/db/intersection/table_wkt")
    public RequestResult intersectionTableWkt(
            @RequestParam(value = "inputTable") String inputTable,
            @RequestParam(value = "inputSRID", required = false) Integer inputSRID,
            @RequestParam(value = "inputIds", required = false) List<String> inputIds,
            @RequestParam(value = "intersectionWkt") String intersectionWkt,
            @RequestParam(value = "intersectionWktSRID", required = false) Integer intersectionWktSRID,
            @RequestParam(value = "outputColumn", required = false) List<String> outputColumn);

    @PostMapping("/analyse/db/intersection/table_wkt_v1")
    public RequestResult intersectionTableWktV1(@RequestBody AnalyseUtilsVo analyseUtilsVo);

}