package com.ssj.service.sys.lesson.service;

import com.ssj.bean.kmt.kmt.domain.KmtCourse;
import com.ssj.bean.kmt.kmt.domain.KmtCourseTemplate;
import com.ssj.bean.sys.lesson.domain.LessonService;
import com.ssj.framework.core.common.service.BaseService;
import com.ssj.service.conch.schoolmaster.dto.*;

import java.util.List;

public interface LessonServiceService extends BaseService<LessonService, String> {
	public LessonService findPayLessonByVipId (String vipId, String masterId);

	/**
	 * 查询某个学生某个科目的一对一服务
	 * @param vipId
	 * @param masterId
	 * @param subjectName
	 * @return
	 */
	LessonService findLessonServiceByVipIdAndCourse (String vipId, String masterId, String subjectName);
	/**
	 * @param orderNo
	
	 * 方法说明:根据orderNo改变一对一辅导订单状态
	
	 * 创立日期:2018年6月11日 下午3:17:39
	 * 创建人:yangcan
	
	 */
	public void updateLessonStatus(String orderNo);
	
	/**
     * @param course
    
     * 方法说明:根据course 更新当前上课课次
    
     * 创立日期:2018年6月11日 下午3:10:28
     * 创建人:yangcan
    
     */
	public void updateCurrentCount(KmtCourse course);
	
	/**
	 * @param masterId
	 * @return
	
	 * 方法说明:查询校长下面的学生当前的学习计划
	
	 * 创立日期:2018年6月11日 下午7:34:06
	 * 创建人:yangcan
	
	 */
	public List<VipStudyDto> findByCoursePlan(String masterId);
	
	/**
	 * @param masterId
	 * @return
	
	 * 方法说明:查询校长下面学生最近一次的反馈记录
	
	 * 创立日期:2018年6月11日 下午7:37:15
	 * 创建人:yangcan
	
	 */
	public List<VipStudyDto> findByCourseFeedback(String masterId);
	
	
	/**
	 * @param masterId
	 * @return
	
	 * 方法说明:查询退费任务
	
	 * 创立日期:2018年6月13日 下午3:27:14
	 * 创建人:yangcan
	
	 */
	public List<VipStudyDto> findByCourseRefund(String masterId);
	
	/**
	 * 
	 * @Title: findServiceByOrderNo
	 * @Description: 通过订单号查询一对一订单明细
	 * @param @param orderNo
	 * @param @return    设定文件
	 * @return LessonService    返回类型
	 * @author shenhao
	 * @date 2018年6月12日 下午3:28:33
	 * @throws
	 */
	public LessonService findServiceByOrderNo(String orderNo);

	/**
	 * 通过订单查询服务记录
	 * @param orderId
	 * @param status
	 * @return
	 */
	LessonService findByOrderIdAndStatusIn (String orderId, int[] status);

	/**
	 * 查询校长关联的学生
	 * @param masterId
	 * @return
	 */
	int countVipIdByMasterId (String masterId);
	
	public LessonService findByOrderId(String orderId);
	
	public LessonService findByIdAndMasterIdAndVipIdAndCourseName(String id,String masterId,String vipId,String courseName);
	
	/**
	 * 
	
	 * 方法说明:删除12小时未支付一对一服务订单
	
	 * 创立日期:2018年6月28日 上午10:32:23
	 * 创建人:yangcan
	
	 */
	public void deleteByInvalidLessonService();
	
	/**
	 *

	 * 方法说明:删除组下没有课程订单数据(即该组下的所有课程订单均未支付)

	 * 创立日期:2018年12月5日 下午4:04:08
	 * 创建人:yangcan

	 */
	public void deleteByLessonGroup();


	/**
	 * @param teacherId
	 * @param planTime yyyy-MM-dd HH:mm:ss
	 * @return
	
	 * 方法说明:校验 老师的调课时间是否有空档
	
	 * 创立日期:2018年7月2日 下午2:24:10
	 * 创建人:yangcan
	
	 */
	public boolean validateCoursePlan(String teacherId,String planTime);
	
	
	/**
	 * @param teacherId
	 * @param courseTimeList
	 * @return
	
	 * 方法说明:校验 一对一授课老师的排课计划是否有空档
	
	 * 创立日期:2018年7月4日 上午9:49:51
	 * 创建人:yangcan
	
	 */
	public boolean validateCourseTeacher(String teacherId,List<String> courseTimeList);
	
	/**
	 * @param teacherId
	 * @param planTime
	 * @return
	
	 * 方法说明:校验老师是否支持试听课
	
	 * 创立日期:2018年7月4日 上午10:39:27
	 * 创建人:yangcan
	
	 */
	public boolean validateTeacherSupportListenTest(String teacherId,String planTime);
	
	/**
	 * @param teacherId
	 * @param planTime
	 * @return
	
	 * 方法说明:获取老师的排课计划模板
	
	 * 创立日期:2018年7月4日 上午11:13:46
	 * 创建人:yangcan
	
	 */
	public KmtCourseTemplate findTeahcerCourseTemplate(String teacherId,String planTime);
	
	/**
	 * @param vipid
	 * @retur
	 * 创立日期:2018年7月10日16:53:01
	 * 创建人:wuwen
	 */
	public List<LessonService> findLessonServiceByVipId(String vipId,String masterId);
	
	public List<String> findByNoPayIsListen(String courseTime);
	
	public void deleteKmtCourse(String lessonServiceId);
	
	public List<LessonService> findAllPayLessonService(String masterId,String vipId);
	
	public List<LessonService> findAllPayLessonService(String masterId,String vipId,String courseName);
	
	/**
	 * @param orderNo
	
	 * 方法说明:一对一学习计划退费业务回调
	
	 * 创立日期:2018年7月17日 上午11:04:43
	 * 创建人:yangcan
	
	 */
	public void refundLessonService(String orderNo);
	
	/**
	 * @param masterId
	 * @param vipId
	 * @return
	
	 * 方法说明:查询校长下某个学生的最近一次的学习反馈
	
	 * 创立日期:2018年7月17日 下午5:22:53
	 * 创建人:yangcan
	
	 */
	public FeedbackModelDto findByCourseFeedback(String masterId,String vipId,String courseName);
	
	/**
	 * @param masterId
	 * @param vipId
	 * @return
	
	 * 方法说明:查询校长下某个学生的下节课的授课信息
	
	 * 创立日期:2018年7月18日 上午9:50:02
	 * 创建人:yangcan
	
	 */
	public NextClassInfoModelDto findByNextCoursePlan(String masterId,String vipId,String courseName);
	
	public int countByVipIdAndMasterId(String vipId,String masterId);
	
	/**
	 * @param vipId
	 * @return
	
	 * 方法说明:查询待支付的一对一服务
	
	 * 创立日期:2018年8月7日 下午2:56:17
	 * 创建人:yangcan
	
	 */
	public List<LessonServicePlanDto> findParentNoPayLessonService(String vipId);
	
	
	/**
	 * @param vipId
	 * @return
	
	 * 方法说明:查询一对一当前学习计划
	
	 * 创立日期:2018年8月7日 下午3:01:53
	 * 创建人:yangcan
	
	 */
	public List<LessonServicePlanDto> findParentCoursePlan(String vipId);
	
	/**
	 * @param vipId
	 * @return
	
	 * 方法说明:查询一对一最近一次学习反馈
	
	 * 创立日期:2018年8月7日 下午3:01:56
	 * 创建人:yangcan
	
	 */
	public List<LessonServicePlanDto> findParentCourseFeedback(String vipId);
	
	/**
	 * @param vipId
	 * @param isGroup
	 * @return
	
	 * 方法说明:检查是否有一对一|小课服务
	
	 * 创立日期:2018年11月27日 下午2:55:47
	 * 创建人:yangcan
	
	 */
	public int checkIsLessonOrGroupService(String vipId,int isGroup);


	/**
	 * @param vipId
	 * @return

	 * 方法说明:查询小课未支付订单

	 * 创立日期:2018年12月5日 上午9:48:28
	 * 创建人:yangcan

	 */
	public List<LessonGroupServicePlanDto> findParentGroupNoPayLessonService(String vipId);

	/**
	 * @param vipId
	 * @return

	 * 方法说明:查询小课学生当前学习计划

	 * 创立日期:2018年12月5日 上午9:48:32
	 * 创建人:yangcan

	 */
	public List<LessonGroupServicePlanDto> findParentGroupCoursePlan(String vipId);

	/**
	 * @param vipId
	 * @return

	 * 方法说明:查询小课最近一次学习反馈

	 * 创立日期:2018年12月5日 上午9:48:40
	 * 创建人:yangcan

	 */
	public List<LessonGroupServicePlanDto> findParentGroupCourseFeedback(String vipId);

    Integer countByLessonGroupIdAndStatus(String lessonGroupId, List<Integer> statusList);

	/**
	 * 查询校长未完结服务的lessonservice
	 * @param masterId
	 * @return
	 */
	public List<LessonService> findUnfinishServiceByMasterId (String masterId);
	
	
	public boolean validateVipLessonGroupOrder(String lessonGroupId,List<String> vipIdList);
	
	public List<LessonService> findNoSignInOffLessonList(String lessonGroupId);

    Integer countCurrentCourseByLessonGroupIdAndStatus(String lessonGroupId, List<Integer> lessonServiceStatusList);

    List<LessonService> findByLessonGroupId(String lessonGroupId);
}
