package com.sptg.device.api.feigns;

import com.baomidou.mybatisplus.plugins.Page;
import com.sptg.common.core.beans.ResultBean;
import com.sptg.device.api.dto.DeviceTemplateDto;
import com.sptg.device.api.entity.DeviceTemplate;
import com.sptg.device.api.feigns.fallback.DeviceTemplateFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;


@FeignClient(value = "smart-house-device",fallbackFactory = DeviceTemplateFeignFallbackFactory.class)
public interface DeviceTemplateFeign {

    /**
     * 分页查询
     * @param deviceTemplateDto 查询条件
     * @return Page<DeviceTemplate>
     */
    @PostMapping(value = "/deviceTemplate/pagingQuery")
    ResultBean<Page<DeviceTemplate>> pagingQuery(@RequestBody DeviceTemplateDto deviceTemplateDto);

    /**
     * 添加设备配置
     * @param deviceTemplateDto 设备配置
     * @return Boolean
     */
    @PostMapping(value = "/deviceTemplate/addDeviceTemplate")
    ResultBean<Boolean> addDeviceTemplate(@RequestBody DeviceTemplateDto deviceTemplateDto);

    /**
     * 修改设备配置
     * @param deviceTemplateDto 设备配置
     * @return Boolean
     */
    @PostMapping(value = "/deviceTemplate/updateDeviceTemplate")
    ResultBean<Boolean> updateDeviceTemplate(@RequestBody DeviceTemplateDto deviceTemplateDto);
    /**
     * 删除设备配置
     * @param deviceTemplateDto 设备配置
     * @return Boolean
     */
    @PostMapping(value = "/deviceTemplate/deleteDeviceTemplate")
    ResultBean<Boolean> deleteDeviceTemplate(@RequestBody DeviceTemplateDto deviceTemplateDto);

    /**
     * 获取一条记录
     * @param deviceTemplateDto 查询条件
     * @return DeviceTemplate
     */
    @PostMapping(value = "/deviceTemplate/getOne")
    DeviceTemplate getOne(@RequestBody DeviceTemplateDto deviceTemplateDto);

    /**
     * 根据条件获取列表
     * @param deviceTemplateDto 查询条件
     * @return List<DeviceTemplate>
     */
    @PostMapping(value = "/deviceTemplate/getListByCondition")
    List<DeviceTemplate> getListByCondition(@RequestBody DeviceTemplateDto deviceTemplateDto);

    @PostMapping(value = "/deviceTemplate/getOneById/{id}")
    DeviceTemplate getOneById(@PathVariable(value = "id") Long id);

    /**
     * 功能描述: 根据名称模糊查询
     * @param deviceTemplateDto
     * @return List<Residential>
     *
     */
    @PostMapping(value = "/residential/getListByLikeTypeCode")
    List<DeviceTemplate> getListByLikeTypeCode(@RequestBody DeviceTemplateDto deviceTemplateDto);
}
