package com.ssj.service.conch.parents.v1.service;

import com.ssj.framework.core.util.ResponseEntity;
import com.ssj.service.conch.parents.v1.dto.ChildEasemobV1Dto;
import com.ssj.service.conch.parents.v1.dto.ParentsInfoV1Dto;
import com.ssj.service.conch.parents.v1.request.*;
import org.springframework.data.domain.Pageable;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface ParentV1Service {

	/**
	 * @param parentId
	 * @return

	 * 方法说明:家长获取我的信息

	 * 创立日期:2018年8月6日 下午2:39:12
	 * 创建人:yangcan

	 */
	ParentsInfoV1Dto getMyInfo(String parentId);

	/**
	 * @param req
	 * @param userId 家长id

	 * 方法说明:家长添加小孩

	 * 创立日期:2018年9月17日 下午8:22:14
	 * 创建人:yangcan

	 */
	public ResponseEntity addMyChildInfo(AddMyChildInfoV1Req req, String userId);

	/**
	 * @param userId 家长id
	 * @param phone 手机号
	 * @param verificationCode 验证码
	 * @return

	 * 方法说明:绑定手机号

	 * 创立日期:2018年9月17日 下午8:40:11
	 * 创建人:yangcan

	 */
	public ResponseEntity bindPhone(String userId, String phone, String verificationCode);

	/**
	 * @param req
	 * @return

	 * 方法说明:手机号登录

	 * 创立日期:2018年9月27日 下午3:59:58
	 * 创建人:yangcan

	 */
	public ResponseEntity phoneLogin(PhoneLoginV1Req req);


	public List<ChildEasemobV1Dto> getChildEasemobList(String userId);

	/**
	 * 定位获取图书馆信息
	 * @param req
	 * @param pageable
	 * @return
	 */
	ResponseEntity getLocationJoin(PositionV1Req req, Pageable pageable);

	/**
	 * 由于作业吧不需要绑定图书馆了，这里写新方法返回一个虚拟图书馆
	 * @param req
	 * @param pageable
	 * @return
	 */
	ResponseEntity getLocationJoinNew(PositionV1Req req, Pageable pageable);

	/**
	 * 保存学校信息
	 * @param name
	 * @return
	 */
	ResponseEntity saveSchoolCopy(String name);

	/**
	 * 获取续费默认信息
	 * @param vipId
	 * @return
	 */
	ResponseEntity getRenewDefaultInfo(String vipId);

	/**
	 * 查询作业吧会员服务
	 * @param leagueId
	 * @param vipId
	 * @return
	 */
	ResponseEntity findZybVipList(String leagueId, String vipId);

	/**
	 * 查询作业吧服务
	 * @param vipId
	 * @return
	 */
	ResponseEntity findZybServiceList(String vipId);

	/**
	 * 计算作业吧有效时间
	 * @param req
	 * @return
	 */
	ResponseEntity calculateValidInterval(IntervalReq req);

	/**
	 * 确认支付
	 * @param req
	 * @param request
	 * @param accessToken
	 * @return
	 */
	ResponseEntity payVIP(PayVipV1Req req, HttpServletRequest request, String accessToken);

	/**
	 * 确认支付（NEW）
	 * @param req
	 * @param request
	 * @param accessToken
	 * @return
	 */
	ResponseEntity payVIPNew(PayVipNewReq req, HttpServletRequest request, String accessToken);

	/**
	 * 推送wifi信息
	 * @param req
	 * @return
	 */
	ResponseEntity connectWifi(WifiReq req);

	/**
	 * 查看钱包信息
	 * @param userId
	 * @return
	 */
	ResponseEntity walletInfo(String userId);

	/**
	 * 充值
	 * @param accessToken
	 * @param req
	 * @return
	 */
	ResponseEntity topUp(String accessToken, TopUpReq req);

	/**
	 * 提现
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity withdraw(String userId, WithdrawReq req);

	/**
	 * 查询钱包绑定银行卡
	 * @param userId
	 * @param pageable
	 * @return
	 */
	ResponseEntity walletBankList(String userId, Pageable pageable);

	/**
	 * 支付密码校验
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity passwordCheck(String userId, PasswordCheckReq req);

	/**
	 * 修改支付密码
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity passwordModify(String userId, PasswordModifyReq req);

	/**
	 * 忘记或设置支付密码
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity passwordReset(String userId, PasswordResetReq req);

	/**
	 * 查看账单列表
	 * @param userId
	 * @param pageable
	 * @return
	 */
	ResponseEntity walletFlowList(String userId, Pageable pageable);

	/**
	 * 添加银行卡
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity addBankCard(String userId, AddBankCardReq req);

	/**
	 * 付款
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity walletPay(String userId, WalletPayReq req);

	/**
	 * 退款
	 * @param userId
	 * @param req
	 * @return
	 */
	ResponseEntity walletReturn(String userId, WalletReturnReq req);

	/**
	 * 查询支持银行列表
	 * @param pageable
	 * @return
	 */
	ResponseEntity supportBankList(Pageable pageable);

	/**
	 * @param code
	 * @param qrCode
	 * @return

	 * 方法说明:扫描孩子名片绑定

	 * 创立日期:2018年11月22日 下午4:18:53
	 * 创建人:yangcan

	 */
	public ResponseEntity swipeChildCardCode(String code, String qrCode);

	/**
	 * @param request
	 * @return

	 * 方法说明:上传拍照作业

	 * 创立日期:2018年11月22日 下午4:19:02
	 * 创建人:yangcan

	 */
	public ResponseEntity uploadHomework(UploadHomeworkRequest request);

	/**
	 * 拍完作业列表
	 * @param req
	 * @param pageable
	 * @return
	 */
	ResponseEntity homeworkPhotoList(HomeworkPhotoV1Req req, Pageable pageable);

	/**
	 * 作业记录详情
	 * @param homeworkId
	 * @return
	 */
	ResponseEntity homeworkPhotoDetail(String homeworkId);

	/**
	 * @param vipId
	 * @return

	 * 方法说明:小课任务

	 * 创立日期:2018年12月4日 下午4:28:55
	 * 创建人:yangcan

	 */
	public ResponseEntity lessonGroupServiceManager(String vipId);

	/**
	 * @param req
	 * @param userId
	 * @return

	 * 方法说明:添加小孩(业务整合)

	 * 创立日期:2019年1月9日 上午10:13:09
	 * 创建人:yangcan

	 */
	public ResponseEntity addChild(AddChildReq req, String userId);

	/**
	 * @param req
	 * @param userId
	 * @return

	 * 方法说明:小孩直接绑定贝壳/换绑贝壳

	 * 创立日期:2019年1月9日 下午4:49:34
	 * 创建人:yangcan

	 */
	public ResponseEntity bindConch(BindConchReq req, String userId);


	/**
	 * @param req
	 * @param userId
	 * @return

	 * 方法说明:小孩直接绑定校长

	 * 创立日期:2019年1月9日 下午4:50:10
	 * 创建人:yangcan

	 */
	public ResponseEntity bindMaster(BindMasterReq req, String userId);

    /**
     * 查看错题本列表
     *
     * @param req
     * @param pageable
     * @return
     */
    ResponseEntity wrongQuestionList(WrongQuestionReq req, Pageable pageable);

    /**
     * 难题回顾
     *
     * @param req
     * @param pageable
     * @return
     */
    ResponseEntity problemReview(ProblemReviewReq req, Pageable pageable) throws Exception;

    /**
     * 查看老师详情
     *
     * @param req
     * @return
     */
    ResponseEntity orgTeacherDetail(OrgTeacherDetailReq req);

    /**
     * 解绑老师
     *
     * @param req
	 * @param userId
     * @return
     */
	ResponseEntity orgTeacherUnbundling(OrgTeacherUnbundlingReq req, String userId);

    /**
     * 提交评价（解答难题老师）
     *
     * @param req
	 * @param userId
     * @return
     */
	ResponseEntity assessOrgTeacher(AssessOrgTeacherReq req, String userId);

    /**
     * 已解答难题详情
     *
     * @param req
     * @return
     */
    ResponseEntity answeredProblemDetailNew(AnsweredProblemDetailReq req);

    /**
     * 查看评价（解答难题老师）
     *
     * @param req
	 * @param userId
     * @return
     */
	ResponseEntity getOrgTeacherAssessment(OrgTeacherAssessmentReq req, String userId);

	/**
	 * 查看评价（批改老师）
	 */
    ResponseEntity getCorrectTeacherAssessment(String teacherId, String homeworkId);
    
    /**
     * @param vipId
     * @return
    
     * 方法说明:多角色家长列表
    
     * 创立日期:2019年3月5日 下午3:08:17
     * 创建人:yangcan
    
     */
    public ResponseEntity parentsRoleList(String vipId);
    
    /**
     * @param userId
     * @param req
     * @return
    
     * 方法说明:添加家长角色
    
     * 创立日期:2019年3月5日 下午3:50:45
     * 创建人:yangcan
    
     */
    public ResponseEntity addParentsRole(String userId, AddParentsRoleReq req);
    
    /**
     * @param vipId
     * @param roleUserId
     * @return
    
     * 方法说明:解绑家长角色
    
     * 创立日期:2019年3月5日 下午3:11:10
     * 创建人:yangcan
    
     */
    public void untieParentsRole(String vipId, String roleUserId);
}
