package com.xinyilu.system.mapper.applet;

import com.xinyilu.system.domain.applet.AppletChildrenResultScoreInfo;
import com.xinyilu.system.domain.applet.AppletStudentScore;
import com.xinyilu.system.domain.applet.ParentAndStudentInfo;
import com.xinyilu.system.domain.parentInfo.ParentInfo;
import com.xinyilu.system.domain.studentInfo.StudentInfo;
import com.xinyilu.system.domain.vo.personalcheckreport.ExistCheckReportVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 小程序Mapper接口
 *
 * @author 纪寒
 * @date 2022-08-01
 */
public interface AppletMapper {

    /**
     * 根据手机号码查询家长信息
     *
     * @param phone 手机号码
     * @return 家长信息
     */
    ParentInfo getParentInfoByPhone(String phone);

    /**
     * 根据家长id查询孩子信息
     *
     * @param parentId 家长id
     * @return 孩子信息
     */
    List<ParentAndStudentInfo> getParentAndStudentInfo(Long parentId);

    /**
     * 根据身份证号查询孩子信息
     *
     * @param cardNo 身份证号
     * @return 孩子数量
     */
    StudentInfo getStudentInfoByCardNo(String cardNo);

    /**
     * 根据学校id和家长姓名查询家长信息
     *
     * @param studentId  学生id
     * @param parentName 家长名称
     * @return 家长信息
     */
    List<ParentInfo> getParentByStudentIdAndName(@Param("studentId") Long studentId, @Param("parentName") String parentName);

    /**
     * 根据学生id查询学生成绩信息
     *
     * @param studentIdList 学生id集合
     * @return List<AppletStudentScore> 成绩信息
     */
    List<AppletStudentScore> getAppletStudentScoreById(@Param("studentIdList") List<Long> studentIdList);

    /**
     * 根据手机号码查询家长信息
     *
     * @param openId 根据用户的openId获取家长信息
     * @return 家长信息
     */
    ParentInfo getParentInfoByOpenId(String openId);

    /**
     * 查询个人体质检测报告信息是否存在
     *
     * @param studentId 学生id
     * @param batchCode 批次编号
     * @return 个人体质检测报告
     */
    ExistCheckReportVO getAppletPersonalCheckInfo(@Param("studentId") Long studentId,
                                                  @Param("batchCode") String batchCode);

    /**
     * 根据学生id与测试项目编号查询学生最新批次的成绩与报告
     *
     * @param studentIdList 学生id集合
     * @param itemCode      测试项目编号
     * @return java.util.List<com.xinyilu.system.domain.applet.AppletChildrenResultScoreInfo>
     **/
    List<AppletChildrenResultScoreInfo> getChildrenResultScore(@Param("studentIdList") List<Long> studentIdList, @Param("itemCode") String itemCode);
}
