package com.ghy.payment.mapper;

import com.ghy.payment.domain.FinancialChangeRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * @author clunt
 */
public interface FinancialChangeRecordMapper {

    FinancialChangeRecord selectNotPayRecordByDetailId(Long orderDetailId);

    /**
     * 查询改价记录
     *
     * @param id 改价记录主键
     * @return 改价记录
     */
    FinancialChangeRecord selectFinancialChangeRecordById(Long id);

    /**
     * 查询改价记录列表
     *
     * @param financialChangeRecord 改价记录
     * @return 改价记录集合
     */
    List<FinancialChangeRecord> selectFinancialChangeRecordList(FinancialChangeRecord financialChangeRecord);

    List<FinancialChangeRecord> selectByDetailIds(@Param("ids") String ids);

    /**
     * 新增改价记录
     *
     * @param financialChangeRecord 改价记录
     * @return 结果
     */
    int insertFinancialChangeRecord(FinancialChangeRecord financialChangeRecord);

    /**
     * 修改改价记录
     *
     * @param financialChangeRecord 改价记录
     * @return 结果
     */
    int updateFinancialChangeRecord(FinancialChangeRecord financialChangeRecord);

    /**
     * 删除改价记录
     *
     * @param id 改价记录主键
     * @return 结果
     */
    int deleteFinancialChangeRecordById(Long id);

    /**
     * 批量删除改价记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteFinancialChangeRecordByIds(String[] ids);

    List<FinancialChangeRecord> selectByMasterId(@Param("orderMasterId") Long orderMasterId);

    /**
     * 根据主订单ID集合批量查询改价记录
     *
     * @param orderMasterIds 主订单ID集合
     * @return 改价记录集合
     */
    List<FinancialChangeRecord> selectByMasterIds(@Param("orderMasterIds") Set<Long> orderMasterIds);

    int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus);

    /**
     * 退款成功
     *
     * @param reverseId Adapay撤销支付ID
     */
    void refundSucceeded(String reverseId);

    int updatePay(@Param(value = "id") Long id, @Param(value = "paymentId") String paymentId, @Param(value = "payStatus") Integer payStatus);
}
