package cn.iocoder.yudao.module.order.dal.mysql.orderSpecialNeed;

import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery;
import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
import cn.iocoder.yudao.module.order.dal.dataobject.orderSpecialNeed.OrderSpecialNeedDO;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.order.vo.orderSpecialNeed.*;

/**
 * 特需 Mapper
 * @author 系统管理员
 */
@Mapper
public interface OrderSpecialNeedMapper extends AbstractMapper<OrderSpecialNeedDO> {
    @Override
    default PageResult<OrderSpecialNeedDO> selectPage(PageVO page, Object object) {
        if (object instanceof OrderSpecialNeedQueryVO) {
            OrderSpecialNeedQueryVO vo = (OrderSpecialNeedQueryVO)object;
            return selectPage(page, new LambdaQuery<OrderSpecialNeedDO>()
                .betweenIfPresent(OrderSpecialNeedDO::getCreateTime, vo.getBeginCreateTime(), vo.getEndCreateTime())
                .eqIfPresent(OrderSpecialNeedDO::getOrderId, vo.getOrderId())
                .eqIfPresent(OrderSpecialNeedDO::getAdvanceType, vo.getAdvanceType())
                .eqIfPresent(OrderSpecialNeedDO::getTransFee, vo.getTransFee())
                .eqIfPresent(OrderSpecialNeedDO::getTransCurrency, vo.getTransCurrency())
                .eqIfPresent(OrderSpecialNeedDO::getPayType, vo.getPayType())
                .eqIfPresent(OrderSpecialNeedDO::getTodoDetail, vo.getTodoDetail())
                .eqIfPresent(OrderSpecialNeedDO::getAdvanceWho, vo.getAdvanceWho())
                    .orderByDesc(OrderSpecialNeedDO::getId));
        }

        return null;
    }

    @Override
    default List<OrderSpecialNeedDO> selectList(Object object) {
        if (object instanceof OrderSpecialNeedQueryVO) {
            OrderSpecialNeedQueryVO vo = (OrderSpecialNeedQueryVO)object;
            return selectList(new LambdaQuery<OrderSpecialNeedDO>()
                .betweenIfPresent(OrderSpecialNeedDO::getCreateTime, vo.getBeginCreateTime(), vo.getEndCreateTime())
                .eqIfPresent(OrderSpecialNeedDO::getOrderId, vo.getOrderId())
                .eqIfPresent(OrderSpecialNeedDO::getAdvanceType, vo.getAdvanceType())
                .eqIfPresent(OrderSpecialNeedDO::getTransFee, vo.getTransFee())
                .eqIfPresent(OrderSpecialNeedDO::getTransCurrency, vo.getTransCurrency())
                .eqIfPresent(OrderSpecialNeedDO::getPayType, vo.getPayType())
                .eqIfPresent(OrderSpecialNeedDO::getTodoDetail, vo.getTodoDetail())
                .eqIfPresent(OrderSpecialNeedDO::getAdvanceWho, vo.getAdvanceWho())
                    .orderByDesc(OrderSpecialNeedDO::getId));
        }

        return null;
    }
}
