package com.ssj.service.sys.opentest;

import com.ssj.bean.sys.opentest.OpenTestResult;
import com.ssj.framework.core.common.service.BaseService;

import java.util.List;

/**
 * @author Mount Liu
 * @date 2020/2/11
 */
public interface OpenTestResultService extends BaseService<OpenTestResult, String> {


    /**
     * 查找指定人结果
     * @param userId
     * @return
     */
    List<OpenTestResult> findByUserId(String userId);

    /**
     * 查找指定人结果
     * @param userId
     * @param type
     * @return
     */
    List<OpenTestResult> findByUserIdAndType(String userId, int type);

    /**
     * 查找指定人结果
     * @param userId
     * @param type
     * @return
     */
    List<OpenTestResult> findAllByUserIdAndType(String userId, int type);

    /**
     * 查找指定结果
     * @param userId
     * @param grade
     * @param subject
     * @param version
     * @return
     */
    OpenTestResult findResult(String userId, String grade, String subject, String version);

    /**
     * 查找指定结果(有效的)
     * @param userId
     * @param grade
     * @param subject
     * @param version
     * @param unit 单元
     * @param type
     * @return
     */
    OpenTestResult findResult(String userId, String grade, String subject, String version, String unit, String semester, int type);

    /**
     * 查找指定结果(包含所有的历史记录)
     * @param userId
     * @param grade
     * @param subject
     * @param version
     * @param unit
     * @param type
     * @return
     */
    List<OpenTestResult> findAllResult(String userId, String grade, String subject, String version, String unit, int type);

    /**
     * 获取我的排名
     * @param score
     * @param createTime
     * @param grade
     * @param subject
     * @param version
     * @return
     */
    int getMyRankingNo(int score, String createTime, String grade, String subject, String version);

    int getMyRankingNo(int score, String createTime, String grade, String subject, String version, String unit, int type);

}
