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

import com.github.pagehelper.PageInfo;
import com.sundot.airport.exam.common.model.result.ExamAndTpResult;
import com.sundot.airport.exam.domain.Exam;
import com.sundot.airport.exam.logic.manage.model.params.ExamPageParam;

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

/**
 * <b>功能名：</b>ExamService<br>
 * <b>说明：</b> 考试管理表 <br>
 * <b>著作权：</b> Copyright (C) 2021 HUIFANEDU  CORPORATION<br>
 * <b>修改履历：
 *
 * @author 2021-06-23 liangxiao
 */
public interface ExamService extends BaseService<Exam> {

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

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

    /**
     * <b>方法名: </b> joinDataGet <br>
     * <b>说明: </b> 根据业务查询考试信息（包含了关联数据：试卷、试卷分类） <br>
     *
     * @param serviceId java.lang.String 考试业务id
     * @param needJoin  是否需要关联数据
     * @return java.util.Optional<com.sundot.airport.exam.common.model.result.ExamAndTpResult><br>
     * <b>修改履历: </b>
     * @author 2021/6/24 liangxiao
     */
    Optional<ExamAndTpResult> joinDataGet(String serviceId, boolean needJoin);

    /**
     * <b>方法名: </b> findByExIds <br>
     * <b>说明: </b> 通过ID查询多个考试 <br>
     *
     * @param exIds List<String>
     * @return List<Exam><br>
     * <b>修改履历: </b>
     * @author 2021/7/30 Mokou
     */
    List<Exam> findByExIds(List<String> exIds);
}
