package com.crm.manager.service.activity;

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.custom.activity.deposit.raffle.CustomActivityDepositRaffleDto;
import com.crm.rely.backend.core.dto.custom.activity.deposit.raffle.CustomActivityDepositRaffleNumberRecordDto;
import com.crm.rely.backend.core.dto.custom.activity.deposit.raffle.CustomActivityDepositRaffleRecordDto;
import com.crm.rely.backend.core.entity.base.SingleLongEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.CustomActivityDepositRaffleSearchEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.CustomActivityDepositRaffleUpdateConfigWeekRaffleEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.CustomActivityDepositRaffleUpdateNumberEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.raffle.CustomActivityDepositRaffleRecordSearchEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.raffle.number.CustomActivityDepositRaffleNumberRecordSearchEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.raffle.week.CustomActivityDepositRaffleWeekApproveEntity;
import com.crm.rely.backend.core.entity.custom.activity.deposit.raffle.week.CustomActivityDepositRaffleWeekSearchEntity;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * @author: houn
 */
@FeignClient(name = "ACTIVITY-SERVICE", path = "/custom/activity/deposit/raffle/manager")
public interface CustomActivityDepositRaffleFeignService {

    @PostMapping("/update/number")
    BaseResultDto updateNumber(CustomActivityDepositRaffleUpdateNumberEntity entity) throws Exception;


    @PostMapping("/search/list")
    ResultWithPagerDto<CustomActivityDepositRaffleDto> searcherList(@RequestBody @Validated CustomActivityDepositRaffleSearchEntity entity) throws Exception;

    @PostMapping("/search/single")
    BaseResultDto searcherSingle(@RequestBody @Validated SingleLongEntity entity) throws Exception;

    @PostMapping("/export")
    BaseResultDto<List<CustomActivityDepositRaffleDto>> export(@RequestBody @Validated CustomActivityDepositRaffleSearchEntity entity) throws Exception;

    @PostMapping("/record/search/list")
    ResultWithPagerDto<CustomActivityDepositRaffleRecordDto> searcherRecordList(@RequestBody @Validated CustomActivityDepositRaffleRecordSearchEntity entity) throws Exception;

    @PostMapping("/record/search/single")
    BaseResultDto searcherRecordSingle(@RequestBody @Validated SingleLongEntity entity) throws Exception;

    @PostMapping("/record/export")
    BaseResultDto<List<CustomActivityDepositRaffleRecordDto>> exportRecord(@RequestBody @Validated CustomActivityDepositRaffleRecordSearchEntity entity) throws Exception;

    @PostMapping("/number/record/search/list")
    ResultWithPagerDto<CustomActivityDepositRaffleNumberRecordDto> searcherNumberRecordList(@RequestBody @Validated CustomActivityDepositRaffleNumberRecordSearchEntity entity) throws Exception;

    @PostMapping("/number/record/search/single")
    BaseResultDto searcherNumberRecordSingle(@RequestBody @Validated SingleLongEntity entity) throws Exception;

    @PostMapping("/number/record/export")
    BaseResultDto<List<CustomActivityDepositRaffleNumberRecordDto>> exportNumberRecord(@RequestBody @Validated CustomActivityDepositRaffleNumberRecordSearchEntity entity) throws Exception;

    @PostMapping("/update/config/week/raffle")
    BaseResultDto updateConfigWeekRaffle(CustomActivityDepositRaffleUpdateConfigWeekRaffleEntity entity) throws Exception;

    @PostMapping("/get/config/week/raffle")
    BaseResultDto getConfigWeekRaffle() throws Exception;

    @PostMapping("/week/search/list")
    BaseResultDto managerWeekSearchList(CustomActivityDepositRaffleWeekSearchEntity entity) throws Exception;

    @PostMapping("/week/search/single")
    BaseResultDto managerWeekSearchSingle(SingleLongEntity entity) throws Exception;

    @PostMapping("/markets/week/approve")
    BaseResultDto marketsApprove(@RequestBody @Validated CustomActivityDepositRaffleWeekApproveEntity entity) throws Exception;

    @PostMapping("/week/approve")
    BaseResultDto managerApprove(@RequestBody @Validated CustomActivityDepositRaffleWeekApproveEntity entity) throws Exception;

    @PostMapping("/week")
    BaseResultDto managerWeek() throws Exception;
}
