package com.ym.mec.biz.service;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

import com.ym.mec.biz.dal.entity.SysUserTsign;
import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;

public interface ContractService {

	/**
	 * 用户注册
	 * @param userId
	 * @param realName
	 * @param idCardNo
	 * @param mobileNo
	 * @return
	 */
	SysUserTsign register(Integer userId, String realName, String idCardNo, String mobileNo);

	/**
	 * 传递注册协议至第三方公证平台
	 * @param userId
	 * @return
	 */
	boolean transferRegisterContract(Integer userId);

	/**
	 * 查询注册协议内容
	 * @param userId
	 * @return
	 */
	String queryRegisterContract(Integer userId);

	/**
	 * 传递乐团课程协议
	 * @param userId
	 * @param musicGroupId
	 * @return
	 */
	boolean transferMusicGroupCoursesContract(Integer userId, String musicGroupId);

	/**
	 * 查询乐团课程协议
	 * @param userId
	 * @param vipGroupId
	 * @return
	 */
	String queryMusicGroupCoursesContract(Integer userId, String vipGroupId);

	/**
	 * 传递VIP课程协议
	 * @param userId
	 * @param vipGroupId
	 * @return
	 */
	boolean transferVipGroupCoursesContract(Integer userId, Long vipGroupId);

	/**
	 * 查询VIP课程协议
	 * @param userId
	 * @param vipGroupId
	 * @return
	 */
	String queryVipGroupCoursesContract(Integer userId, Long vipGroupId);

	/**
	 * 传递商品协议
	 * @param userId
	 * @param musicGroupId
	 * @param goodsIds
	 * @param kitGroupPurchaseTypeEnum
	 * @return
	 */
	boolean transferGoodsContract(Integer userId, String musicGroupId, String goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseTypeEnum);

	/**
	 * 查询商品协议
	 * @param userId
	 * @param musicGroupId
	 * @param goodsIds
	 * @param kitGroupPurchaseTypeEnum
	 * @return
	 */
	String queryGoodsContract(Integer userId, String musicGroupId, String goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseTypeEnum);

	/**
	 * 查询陪练课购买协议
	 * @param userId
	 * @param courseSectionNum 课程数
	 * @param startDate 开始日期
	 * @param endDate 结束日期
	 * @param fee 费用
	 * @return
	 */
	String queryPracticeCoursesContract(Integer userId, int courseSectionNum, Date startDate, Date endDate, BigDecimal fee);

	/**
	 * 生成陪练课购买协议
	 * @param userId
	 * @param courseSectionNum
	 * @param startDate
	 * @param endDate
	 * @param fee
	 * @return
	 */
	boolean transferPracticeCoursesContract(Integer userId, int courseSectionNum, Date startDate, Date endDate, BigDecimal fee);

	/**
	 * 传递产品协议
	 * @param userId
	 * @return
	 */
	boolean transferProduceContract(Integer userId,String musicGroupId);

	/**
	 * 查询产品协议
	 * @param userId
	 * @return
	 */
	Map<String, Object> queryProductContract(Integer userId,String musicGroupId);
}
