package com.ruoyi.ss.refund.mapper;

import com.ruoyi.ss.order.domain.Order;
import com.ruoyi.ss.refund.domain.Refund;
import com.ruoyi.ss.refund.domain.RefundQuery;
import com.ruoyi.ss.refund.domain.RefundVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 退款订单Mapper接口
 *
 * @author 邱贞招
 * @date 2024-05-10
 */
public interface RefundMapper
{
    /**
     * 查询退款订单
     *
     * @param id 退款订单主键
     * @return 退款订单
     */
    public RefundVO selectEtRefundById(Long id);

    /**
     * 查询退款订单列表
     *
     * @param etRefund 退款订单
     * @return 退款订单集合
     */
    public List<Refund> selectEtRefundList(RefundQuery etRefund);

//    /**
//     * 查询退款订单列表
//     *
//     * @param orderQuery 退款订单
//     * @return 退款订单集合
//     */
//    public List<ERefund> selectEtRefundList2(ERefundQuery orderQuery);

    /**
     * 新增退款订单
     *
     * @param etRefund 退款订单
     * @return 结果
     */
    public int insertEtRefund(Refund etRefund);

    /**
     * 修改退款订单
     *
     * @param etRefund 退款订单
     * @return 结果
     */
    public int updateEtRefund(Refund etRefund);

    /**
     * 删除退款订单
     *
     * @param id 退款订单主键
     * @return 结果
     */
    public int deleteEtRefundById(Long id);

    /**
     * 批量删除退款订单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEtRefundByIds(Long[] ids);

    /**
     * 根据退款单号修改退款订单
     *
     * @param etRefund 退款订单
     * @return 结果
     */
    public int updateEtRefundByRefundNo(Refund etRefund);

    /**
     * 根据订单号查询退款订单对象
     *
     * @param orderNo 订单号
     * @return 退款订单
     */
    List<Refund> selectEtRefundByOrderNo(String orderNo);

    /**
     * 根据订单号查询退款订单对象
     *
     * @param refundNo 退款订号
     * @return 退款订单
     */
    Refund selectEtRefundByRefundNo(String refundNo);

    /**
     * 判断是否用户是否还有未退款的押金
     *
     * @param userId 用户id
     * @return 结果
     */
    List<Order> checkUserDeposit(Long userId);

    /**
     * 统计已退款金额
     *
     * @param query 条件
     * @return 结果
     */
    BigDecimal getRefundedAmount(RefundQuery query);
}
