package com.njcn.system.api;

import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.system.api.fallback.AreaFeignClientFallbackFactory;
import com.njcn.system.pojo.dto.AreaTreeDTO;
import com.njcn.system.pojo.po.Area;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author denghuajun
 * @version 1.0.0
 * @date 2022年01月05日 15:11
 */
@FeignClient(value = ServerInfo.SYSTEM, path = "/area", fallbackFactory = AreaFeignClientFallbackFactory.class, contextId = "sys-area")
public interface AreaFeignClient {

    /**
     * 根据行政区域id查询详情
     *
     * @param id 行政区域id
     * @return 行政区域基本信息
     */
    @GetMapping("/selectIdArea/{id}")
    HttpResult<Area> selectIdArea(@PathVariable("id") String id);

    /**
     * 根据行政区域id查询详情
     *
     * @param list 行政区域id集合
     * @return 行政区域基本信息
     */
    @PostMapping("/areaNameByList")
    HttpResult<List<Area>> areaNameByList(@RequestBody List<String> list);

    /**
     * 查询所有的行政区域树
     */
    @PostMapping("/areaDeptTree")
    HttpResult<List<AreaTreeDTO>> areaDeptTree(@RequestParam("id") String id, @RequestParam("type") Integer type);

    /**
     * 根据区域id获取省份信息
     */
    @PostMapping("/areaPro")
    HttpResult<Area> areaPro(@RequestParam("id") String id, @RequestParam("type") Integer type);

    @PostMapping("/areaDeptPro")
    HttpResult<Area> areaDeptPro(@RequestParam("id") String id);


    /**
     * 根据行政区域名称查询详细
     *
     * @param name 行政区域名称
     * @return 行政区域详情
     */
    @GetMapping("/selectAreaByName/{name}")
    HttpResult<Area> selectAreaByName(@PathVariable("name") String name);


    @PostMapping("/getPidAreaList")
    HttpResult<List<Area>> getPidAreaList(@RequestParam("areaId")String areaId , @RequestParam("type") Integer type);


}
