package com.sundot.airport.exam.common.service;

import com.github.pagehelper.PageInfo;
import com.sundot.airport.exam.domain.TestPaper;
import com.sundot.airport.exam.logic.manage.model.params.TestPaperPageParam;

import java.util.List;
import java.util.Optional;

/**
 * <b>功能名：</b>TestPaperService<br>
 * <b>说明：</b> 试卷表 <br>
 * <b>著作权：</b> Copyright (C) 2021 HUIFANEDU  CORPORATION<br>
 * <b>修改履历：
 *
 * @author 2021-06-22 liangxiao
 */
public interface TestPaperService extends BaseService<TestPaper> {

    /**
     * <b>方法名: </b> pageList <br>
     * <b>说明: </b> 分页查询 <br>
     *
     * @param param com.sundot.airport.logic.manage.model.params.TestPaperPageParam 分页查询条件
     * @return com.github.pagehelper.PageInfo<com.sundot.airport.exam.domain.TestPaper><br>
     * <b>修改履历: </b>
     * @author 2021-06-22 liangxiao
     */
    PageInfo<TestPaper> pageList(TestPaperPageParam param);

    /**
     * <b>方法名: </b> batchCatUpdate <br>
     * <b>说明: </b> 根据试卷业务id列表更新试卷分类业务id <br>
     *
     * @param tpIds java.util.List</java.lang.String> 试卷业务id列表
     * @param tpcId java.lang.String 试卷分类业务id
     * @return boolean<br>
     * <b>修改履历: </b>
     * @author 2021/6/21 liangxiao
     */
    boolean batchCatUpdate(List<String> tpIds, String tpcId);

    /**
     * <b>方法名: </b> byNameCheckExistsGet <br>
     * <b>说明: </b> 根据名称检查是否存在记录 <br>
     *
     * @param tpName java.lang.String 试卷名称
     * @return java.util.Optional<com.sundot.airport.exam.domain.TestPaper><br>
     * <b>修改履历: </b>
     * @author 2021/6/21 liangxiao
     */
    Optional<TestPaper> byNameCheckExistsGet(String tpName);

    /**
     * <b>方法名: </b> byNameStartWithList <br>
     * <b>说明: </b> 根据名称查询前缀一致的个数 <br>
     *
     * @param tpName java.lang.String 试卷名称
     * @return java.util.Optional<com.sundot.airport.exam.domain.TestPaper><br>
     * <b>修改履历: </b>
     * @author 2021/6/21 liangxiao
     */
    List<TestPaper> byNameStartWithList(String tpName);

    /**
     * <b>方法名: </b> byTpIdsFindTestPaper <br>
     * <b>说明: 根据试卷表主键id集合查询试卷列表</b> <br>
     *
     * @param tpIds 试卷表业务主键id集合
     * @return java.util.List<com.sundot.airport.exam.domain.TestPaper><br>
     * <b>修改履历: </b>
     * @author 2021/7/23 lity
     */
    List<TestPaper> byTpIdsFindTestPaper(List<String> tpIds);

    /**
     * <b>方法名: </b> batchUpdate <br>
     * <b>说明: 更新试卷表的总分和题目数</b> <br>
     *
     * @param updateTestPaperList 试卷表列表
     * @return boolean<br>
     * <b>修改履历: </b>
     * @author 2021/7/23 lity
     */
    boolean batchUpdate(List<TestPaper> updateTestPaperList);

    /**
     * <b>方法名: </b> byTpcIdUpdateTpcId <br>
     * <b>说明: 根据试卷分类业务主键，更新试卷表业务主键，用于试卷替换分类</b> <br>
     *
     * @param tpcId       试卷分类表业务主键
     * @param updateTpcId 更新替换得试卷表试卷分类业务主键
     * @return boolean<br>
     * <b>修改履历: </b>
     * @author 2021/7/24 lity
     */
    boolean byTpcIdUpdateTpcId(String tpcId, String updateTpcId);
}
