package com.crm.manager.service.activity;

import com.crm.manager.configuration.FeignMultipartSupportConfig;
import com.crm.rely.backend.core.constant.FeignClientAnnotation;
import com.crm.rely.backend.core.dto.base.BaseResultDto;
import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
import com.crm.rely.backend.core.dto.web.upload.WebUploadCidDto;
import com.crm.rely.backend.core.dto.web.upload.detail.WebUploadCidDetailDto;
import com.crm.rely.backend.core.entity.base.SingleLongEntity;
import com.crm.rely.backend.core.entity.web.upload.WebUploadCidAddEntity;
import com.crm.rely.backend.core.entity.web.upload.WebUploadCidDeleteEntity;
import com.crm.rely.backend.core.entity.web.upload.WebUploadCidSearchPageEntity;
import com.crm.rely.backend.core.entity.web.upload.detail.WebUploadCidDetailDeleteEntity;
import com.crm.rely.backend.core.entity.web.upload.detail.WebUploadCidDetailSearchPageEntity;
import com.crm.rely.backend.core.entity.web.upload.detail.WebUploadCidDetailUpdateEntity;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;

/**
 * @description:
 * @author: houn
 * @create: 2020-07-19 16:25
 **/
@FeignClient(name = "ACTIVITY-SERVICE", path = "/web/upload/cid/manager", configuration =
        FeignMultipartSupportConfig.class)
public interface WebUploadCidFeignService {

    @PostMapping("/add")
    BaseResultDto add(WebUploadCidAddEntity entity) throws Exception;

    @PostMapping("/search/list")
    ResultWithPagerDto<WebUploadCidDto> pageList(WebUploadCidSearchPageEntity entity) throws Exception;

    @PostMapping("/search/single")
    BaseResultDto<WebUploadCidDto> single(SingleLongEntity entity) throws Exception;

    @PostMapping("/search/list/detail")
    ResultWithPagerDto<WebUploadCidDetailDto> pageListDetail(WebUploadCidDetailSearchPageEntity entity) throws Exception;

    @PostMapping("/search/single/detail")
    BaseResultDto<WebUploadCidDetailDto> singleDetail(SingleLongEntity entity) throws Exception;

    @PostMapping("/update/detail")
    BaseResultDto updateDetail(WebUploadCidDetailUpdateEntity entity) throws Exception;

    @PostMapping("/delete")
    @FeignClientAnnotation
    BaseResultDto delete(WebUploadCidDeleteEntity entity) throws Exception;

    @PostMapping("/delete/detail")
    BaseResultDto deleteDetail(WebUploadCidDetailDeleteEntity entity) throws Exception;

}
