package cn.ey.biz.module.system.dal.mapper.codeblock;

import cn.ey.biz.common.pojo.PageResult;
import cn.ey.biz.framework.mybatis.core.mapper.BaseMapperX;
import cn.ey.biz.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.ey.biz.module.system.controller.admin.codeblock.vo.CodeBlockLegalEntityPageReqVO;
import cn.ey.biz.module.system.dal.dataobject.codeblock.CodeBlockLegalEntityDO;
import cn.ey.biz.module.system.dal.dataobject.engagement.code.SystemEngagementCodeRuleDO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface CodeBlockLegalEntityMapper extends BaseMapperX<CodeBlockLegalEntityDO> {

    default PageResult<CodeBlockLegalEntityDO> selectPage(CodeBlockLegalEntityPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<CodeBlockLegalEntityDO>()
                .inIfPresent(CodeBlockLegalEntityDO::getLegalEntityCode, reqVO.getLegalEntityCode())
                .inIfPresent(CodeBlockLegalEntityDO::getSlCode, reqVO.getSlCode())
                .inIfPresent(CodeBlockLegalEntityDO::getSslCode, reqVO.getSslCode())
                .inIfPresent(CodeBlockLegalEntityDO::getSmuCode, reqVO.getSmuCode())
                .orderByDesc(CodeBlockLegalEntityDO::getId));
    }

    void deleteBatchByIds(@Param("list") List<Long> list);

    CodeBlockLegalEntityDO selectExistByParam(@Param("legalEntityCode") String legalEntityCode,
                                              @Param("slCode") String slCode,
                                              @Param("sslCode") String sslCode,
                                              @Param("smuCode") String smuCode);

    CodeBlockLegalEntityDO selectOneForMaxTime();

}

