package cn.iocoder.yudao.module.identity.dal.mysql.generaterecord;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo.GenerateRecordExportReqVO;
import cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo.GenerateRecordPageReqVO;
import cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo.GenerateRecordRespVO;
import cn.iocoder.yudao.module.identity.dal.dataobject.generaterecord.GenerateRecordDO;
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 GenerateRecordMapper extends BaseMapperX<GenerateRecordDO> {

    List<GenerateRecordRespVO> getPageList(Page<GenerateRecordRespVO> page, @Param("pageReqVO") GenerateRecordPageReqVO pageReqVO);

    default List<GenerateRecordDO> selectList(GenerateRecordExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<GenerateRecordDO>()
                .eqIfPresent(GenerateRecordDO::getGenerateRecordId, reqVO.getGenerateRecordId())
                .eqIfPresent(GenerateRecordDO::getRuleId, reqVO.getRuleId())
                .eqIfPresent(GenerateRecordDO::getCodeRuleFormat, reqVO.getCodeRuleFormat())
                .eqIfPresent(GenerateRecordDO::getCodeType, reqVO.getCodeType())
                .eqIfPresent(GenerateRecordDO::getCharLength, reqVO.getCharLength())
                .eqIfPresent(GenerateRecordDO::getCharType, reqVO.getCharType())
                .eqIfPresent(GenerateRecordDO::getCodeNum, reqVO.getCodeNum())
                .eqIfPresent(GenerateRecordDO::getOperateUser, reqVO.getOperateUser())
                .eqIfPresent(GenerateRecordDO::getOperateUserId, reqVO.getOperateUserId())
                .eqIfPresent(GenerateRecordDO::getState, reqVO.getState())
                .eqIfPresent(GenerateRecordDO::getBelongBusinessId, reqVO.getBelongBusinessId())
                .eqIfPresent(GenerateRecordDO::getFileUrl,reqVO.getFileUrl())
                .likeIfPresent(GenerateRecordDO::getBelongBusinessName, reqVO.getBelongBusinessName())
                .betweenIfPresent(GenerateRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(GenerateRecordDO::getId));
    }

}
