package com.younike.system.service;

import com.younike.common.core.domain.AjaxResult;
import com.younike.system.domain.PersonalMerchantSettle;
import com.younike.system.domain.vo.PersonalMerchantSettleAmountVO;
import com.younike.system.domain.vo.PersonalMerchantSettleVO;
import com.younike.system.param.PersonalMerchantOrderSettleParam;
import com.younike.system.param.PersonalMerchantSettleQueryParam;

import java.util.List;

/**
 * @Description 个体户账单结算Service
 * @Author dail
 * @Date 2022/3/3
 */
public interface IPersonalMerchantSettleService {


    /**
     * 个体户账单结算列表
     *
     * @param queryParam
     * @return
     */
    List<PersonalMerchantSettleVO> listPersonalMerchantSettle(PersonalMerchantSettleQueryParam queryParam);

    /**
     * 个体户账单结算金额信息
     *
     * @return
     */
    PersonalMerchantSettleAmountVO getPersonalMerchantSettleAmountInfo(PersonalMerchantSettleQueryParam queryParam);

    /**
     * 个体户账单结算接口
     *
     * @param orderSettleParam
     * @return
     */
    AjaxResult settlePersonalMerchantOrder(PersonalMerchantOrderSettleParam orderSettleParam);

    /**
     * 个体户账单结算资源
     *
     * @param personalMerchantSettleId
     * @return
     */
    AjaxResult getPersonalSettleResource(Long personalMerchantSettleId);

    /**
     * 根据年月和商家id查询个体户账单结算记录
     *
     * @param merchantId
     * @param yearMonth
     * @return
     */
    PersonalMerchantSettle getByMerchantIdAndYearMonth(Long merchantId, String yearMonth);

    /**
     * 批量更新个体户账单结算记录
     *
     * @param personalMerchantSettleList
     * @return
     */
    int updateBatchById(List<PersonalMerchantSettle> personalMerchantSettleList);

    /**
     * 批量新增个体户账单结算记录
     *
     * @param personalMerchantSettleList
     * @return
     */
    int saveBatch(List<PersonalMerchantSettle> personalMerchantSettleList);

    /**
     * 账单结算分页列表
     * @param queryParam
     * @return
     */
    List<PersonalMerchantSettleVO> bilStatementList(PersonalMerchantSettleQueryParam queryParam);

    /**
     * 账单结算金额信息
     * @param queryParam
     * @return
     */
    PersonalMerchantSettleAmountVO getSettleAmount(PersonalMerchantSettleQueryParam queryParam);
}
