package com.crm.manager.service.custom;

import com.crm.rely.backend.core.dto.base.BaseReportResultDto;
import com.crm.rely.backend.core.dto.base.BaseResultDto;
import com.crm.rely.backend.core.dto.base.BaseResultWithPagerDto;
import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
import com.crm.rely.backend.core.dto.custom.account.CustomAccountDto;
import com.crm.rely.backend.core.dto.custom.account.CustomAccountExportDto;
import com.crm.rely.backend.core.dto.custom.login.CustomLoginCloseReasonDto;
import com.crm.rely.backend.core.dto.custom.login.CustomLoginFloatSumDto;
import com.crm.rely.backend.core.dto.custom.login.operate.CustomLoginOperateRecordDto;
import com.crm.rely.backend.core.entity.base.SingleLongEntity;
import com.crm.rely.backend.core.entity.custom.login.*;
import com.crm.rely.backend.core.entity.custom.login.operate.CustomLoginOperateRecordSearchEntity;
import com.crm.rely.backend.exception.ServiceException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 * @description:
 * @author: houn
 * @create: 2020-07-19 16:25
 **/

@FeignClient(name = "CUSTOM-SERVICE", path = "/custom/login/manage")
public interface CustomLoginFeignService {
    @PostMapping("/search/custom/list")
    BaseResultDto<List<CustomAccountDto>> searchCustomList(CustomLoginSearchListByCustomEntity entity) throws ServiceException;

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

    @PostMapping("/search/list")
    BaseResultWithPagerDto<List<CustomAccountDto>> searchList(CustomLoginSearchListEntity entity) throws ServiceException;

    @PostMapping("/export/list")
    BaseResultDto<List<CustomAccountExportDto>> exportList(CustomLoginExportListEntity entity) throws ServiceException;

    @PostMapping("/add")
    BaseResultDto managerAdd(CustomLoginAddEntity entity) throws ServiceException;

    @PostMapping("/update")
    BaseResultDto managerUpdate(CustomLoginUpdateEntity entity) throws ServiceException;

    @PostMapping("/update/reset/status")
    BaseResultDto managerUpdateResetStatus(CustomLoginUpdateRestStatusEntity entity) throws ServiceException;

    @PostMapping("/delete")
    BaseResultDto managerDelete(CustomLoginDeleteEntity entity) throws ServiceException;

    @PostMapping("/group/login/list")
    BaseResultDto<List<Long>> managerSearchGroupLoginList(CustomLoginSearchLoginByGroupEntity entity) throws ServiceException;

    @PostMapping("/platform/login/list")

    BaseResultDto<List<Long>> managerSearchPlatformLoginList(CustomLoginSearchLoginByPlatformEntity entity) throws ServiceException;

    @PostMapping("/reean/search/list")
    ResultWithPagerDto<CustomLoginCloseReasonDto> reasonPageList(CustomLoginCloseReasonSearchEntity entity) throws ServiceException;

    @PostMapping("/operate/search/list")
    BaseReportResultDto<List<CustomLoginOperateRecordDto>, CustomLoginFloatSumDto> operateRecordSearcherList(CustomLoginOperateRecordSearchEntity entity) throws ServiceException;
}
