package cn.ey.biz.module.system.api.category;

import cn.ey.biz.common.pojo.R;
import cn.ey.biz.module.system.api.category.dto.CategoryDataV2ReqDTO;
import cn.ey.biz.module.system.api.category.dto.CategoryDataV2RespDTO;
import cn.ey.biz.module.system.api.category.dto.CategorySyncReq;
import cn.ey.biz.module.system.enums.ApiConstants;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

@FeignClient(name = ApiConstants.NAME)
@Api(tags = "RPC 服务 - 分类配置数据V2")
public interface CategoryDataV2Api {

    String PREFIX = ApiConstants.PREFIX + "/v2/category-data";


    @PostMapping(PREFIX + "/getCategoryData")
    @ApiOperation("获得公共字典数据列表")
    R<List<CategoryDataV2RespDTO>> getCategoryData(@Valid @RequestBody CategoryDataV2ReqDTO req);


    /**
     * 同步保存公共字典数据
     * @param syncReq  同步保存请求参数
     * @return boolean
     */
    @PostMapping(PREFIX + "/sync")
    @ApiOperation("同步保存公共字典数据")
    R<Boolean> dictSync(@RequestBody CategorySyncReq syncReq);

    /**
     * 批量获取独立字典数据
     *
     * @param statusName all,active(默认),inactive
     * @param categoryCodeList 独立字典list
     * @return  字典集合数据
     */
    @PostMapping(PREFIX + "/listDefaultCategoryDataByCategoryCodes")
    @ApiOperation(value = "获得全部独立字典字典分类数据列表", notes = "一般用于按需缓存独立字典数据在本地")
    R<Map<String, List<Map<String, Object>>>> listDefaultCategoryDataByCategoryCodes(@RequestParam(value = "status", required = false) String statusName,
                                                                                            @RequestBody List<String> categoryCodeList) ;

}
