package com.ym.mec.biz.dal.dao;

import com.ym.mec.biz.dal.dto.StudentInstrumentExportDto;
import com.ym.mec.biz.dal.entity.StudentInstrument;
import com.ym.mec.biz.dal.entity.StudentRegistration;
import com.ym.mec.common.dal.BaseDAO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface StudentInstrumentDao extends BaseDAO<Long, StudentInstrument> {

    /**
     * 批量添加
     *
     * @param studentInstruments
     * @return
     */
    int batchAdd(@Param("studentInstruments") List<StudentInstrument> studentInstruments);
    
    int batchModify(@Param("studentInstruments") List<StudentInstrument> studentInstruments);

    /**
     * 批量修改
     *
     * @return
     */
    int batchUpdate();

    /**
     * 根据服务结束时间获取列表
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<StudentInstrument> getListByEndTime(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 获取学生乐器信息
     *
     * @param orderId
     * @return
     */
    StudentInstrument getByOrderId(Long orderId);

    /**
     * 获取学生的乐器信息
     *
     * @return
     */
    StudentInstrument getStudentInstrument(@Param("studentId") Integer studentId, @Param("goodsId") Integer goodsId);

    /**
     * 获取用户已购买乐保的商品的记录
     *
     * @param startTime
     * @return
     */
    List<StudentInstrument> getOldStudentInstrument(@Param("startTime") Date startTime, @Param("goodsIds") List<Integer> goodsIds);

    /**
     * 获取乐保订单列表
     *
     * @param startTime
     * @param endTime
     * @param organId
     * @return
     */
    List<StudentInstrumentExportDto> getInstruments(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("organId") String organId, @Param("tenantId") Integer tenantId);

    /**
     * 获取学生的乐团信息
     *
     * @param userId
     * @return
     */
    StudentRegistration findStudentMusicGroup(@Param("userId") Integer userId);

    /**
     * 获取学生在有效期内的乐保数量
     *
     * @param studentIds
     * @return
     */
    List<StudentInstrument> getStudentsMaintenanceNum(@Param("studentIds") List<Integer> studentIds, @Param("musicGroupId") String musicGroupId);

    /**
     * 获取学生有效期内的乐保数量
     *
     * @param studentId
     * @return
     */
    StudentInstrument getStudentMaintenance(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
    
    List<StudentInstrument> queryById(@Param("idList") List<Long> idList);
}