package cn.iocoder.yudao.module.system.dal.mysql.rental;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.rentaldepositrecord.RentalDepositAmountReqVO;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.rentaldepositrecord.RentalDepositRecordPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.rental.RentalDepositRecordDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 租赁订单押金记录 Mapper
 *
 * @author 符溶馨
 */
@Mapper
public interface RentalDepositRecordMapper extends BaseMapperX<RentalDepositRecordDO> {

    default PageResult<RentalDepositRecordDO> selectPage(RentalDepositRecordPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<RentalDepositRecordDO>()
                .eqIfPresent(RentalDepositRecordDO::getOrderNo, reqVO.getOrderNo())
                .eqIfPresent(RentalDepositRecordDO::getPaymentMethod, reqVO.getPaymentMethod())
                .eqIfPresent(RentalDepositRecordDO::getTransactionOrderNumber, reqVO.getTransactionOrderNumber())
                .betweenIfPresent(RentalDepositRecordDO::getPaymentDate, reqVO.getPaymentDate())
                .eqIfPresent(RentalDepositRecordDO::getType, reqVO.getType())
                .betweenIfPresent(RentalDepositRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(RentalDepositRecordDO::getCreateTime));
    }

    RentalDepositAmountReqVO selectAmount(@Param("orderNo") String orderNo,
                                          @Param("isUpdate") Boolean isUpdate);
}