package com.ssj.service.weixin.library.service;

import com.ssj.bean.weixin.libmy.domain.LibVip;
import com.ssj.bean.weixin.sales.domain.LibVipService;
import com.ssj.framework.core.common.service.BaseService;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

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

public interface ILibVipService extends BaseService<LibVip, String> {

	/**
	 * 分页查询列表
	 * @param params
	 * @param sp
	 * @return
	 */
	Page<LibVip> findByPage(Map<String, Object> params, Pageable sp);

	LibVip findByUserId(String userId);
	
	
	public  void vipEnCodeAll()throws Exception;
	
	void pushVipCard(String fromUserName, String cardId);
	
	LibVip findByUserIdAndStat(String userId, String string);
	 public void updateVipByVipId(String vipId);
	
	List<Map<String, Object>> getLibVipList(Map<String, Object> searchParams);
	/**
	 * 查询该馆有服务的会员，会员结束时间，馆名称
	* @param userId
	* @param libId
	* @param species
	* @return
	* 创建人：ZhangCaibao 
	* 2018年8月18日 上午11:39:17 
	* @List<Map<String,Object>>
	 */
	List<Map<String,Object>> getServiceVip(String userId,String libId,String species);
	List<Map<String,Object>> getServiceVip(String userId,String species);
	/**
	 * 
	 * @Title: findListByUserId
	 * @Description: 根据userId查询名下所有的vip卡列表
	 * @param @param id
	 * @param @return    设定文件
	 * @return List<LibVip>    返回类型
	 * @author shenhao
	 * @date 2017年6月27日 下午2:53:54
	 * @throws
	 */
	List<LibVip> findListByUserId(String id,String species);
	/**
	 * //只查询有服务或服务过期的会员
	* @param userId
	* @param species
	* @return
	* 创建人：ZhangCaibao 
	* 2017年10月20日 上午11:34:51 
	* @List<LibVip>
	 */
	List<LibVip> findByUserIdAndSpeciseService(String userId,String species);
	List<LibVip> findByUserIdAndSpeciseService(String userId,String species,String libId);
	List<LibVip> getByUserId(String userId);
	List<LibVip> getByUserIdDerverIsNull(String userId);
	
	LibVip findByCode(String code);
	
	//当天会员新增数据
	List<Map<String, Object>> countLibVipNum();
	
	Map<String, Object> getUserCountByLib(String libId);
	
	List<Map<String, Object>> get2LibUser(String libId, String type);
	
	Integer getVipCode();
	
	//查找一个会员
	LibVip findOneByUserId(String userId);
	/**
	 * 获取作业吧报告有效时间的会员卡
	* @param startDate
	* @param endDate
	* @return
	* 创建人：ZhangCaibao 
	* 2018年1月15日 上午10:06:41 
	* @List<LibVip>
	 */
	public List<LibVip> getStartDateAndEndDateValidVip(String startDate,String endDate);
	

	public LibVip findByCardCode(String cardCode);

	public LibVip findByDerver(String derver);


	int findDitinctVipByTearcherIdTotal(String teacherUserId);


	Page<Map<String, Object>> findDistinctVipByTeacherId(Map<String, Object> searchParams, Pageable pageable);

	List<String>  findDistinctUserIdList();

	List<LibVip> findByDervers(List<String> derver);

	List<LibVip> findByIds(List<String> ids);

	List<LibVip> findByChildName (String name);
	
	public LibVip findByQrcodeUrl(String qrcodeUrl);
	
	public LibVip findByChildUserId(String childUserId);

	/**
	 * 通过家长id和孩子名称查询vip表
	 * @param parentId
	 * @param childName
	 * @return
	 */
	LibVip findByUserIdAndChildName (String parentId, String childName);
	
	List<LibVip> findByUserIdAndChildNames (String parentId, String childName);
	
	/**
	 * @param userId
	 * @param childUserId
	 * @return
	
	 * 方法说明:校验是否是家长
	
	 * 创立日期:2019年3月2日 上午10:55:27
	 * 创建人:yangcan
	
	 */
	public String validateIsParent(String userId,String childUserId);
	
	public List<LibVip> getOtherChildInfo(String userId);
	
	/**
	 * @param newGrade 新年级
	 * @param oldGrade 当前年级
	
	 * 方法说明:更新年级信息(升学用)
	
	 * 创立日期:2019年5月5日 下午3:20:43
	 * 创建人:yangcan
	
	 */
	public void updateGradeByGrade(String newGrade,String oldGrade);

	LibVipService findInnerStudentByVipId(String vipId);
	
	List<LibVip> findByLibId(String libId);
	
	List<LibVip> findByLibIdActivateTime(String libId,Date signTime);
	
	public List<Map<String, Object>> findVipByLibIdMaxActivateTime(String libId,Date activateTime,String species);
}