package cn.iocoder.yudao.module.member.dal.mysql.activitypay;

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.member.controller.admin.activitypay.vo.ActivityPayCountVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageRVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageVO;
import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 活动付款 Mapper
 *
 * @author 我是秦俊旗
 */
@Mapper
public interface ActivityPayMapper extends BaseMapperX<ActivityPayDO> {

    default PageResult<ActivityPayDO> selectPage(ActivityPayPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ActivityPayDO>()
                .eqIfPresent(ActivityPayDO::getActivityId, reqVO.getActivityId())
                .eqIfPresent(ActivityPayDO::getSerialNumbers, reqVO.getSerialNumbers())
                .eqIfPresent(ActivityPayDO::getPrice, reqVO.getPrice())
                .eqIfPresent(ActivityPayDO::getUserId, reqVO.getUserId())
                .betweenIfPresent(ActivityPayDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(ActivityPayDO::getId));
    }


    List<ActivityPayCountVO> countByActivityIds(@Param("activityIds") List<Long> activityIds);


    Page<AppActivityPayRespVO> getPage(@Param("page") Page<ActivityPayPageReqVO> page, @Param("reqVO") ActivityPayPageReqVO reqVO);


    Page<ActivityPayPageRVO> getPage1(@Param("page") Page<ActivityPayPageVO> page, @Param("reqVO") ActivityPayPageVO reqVO);
}