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

import com.ssj.bean.weixin.libmy.domain.LibVip;
import com.ssj.framework.core.security.exception.CommonException;
import com.ssj.framework.core.util.ResponseEntity;
import com.ssj.service.conch.parents.request.*;
import com.ssj.service.conch.parents.request.version4.AnswdProblemOnedayReq;
import com.ssj.service.conch.parents.request.version4.ChildInfoV2Req;
import com.ssj.service.conch.parents.request.version4.SwipePadLoginReq;
import com.ssj.service.conch.parents.v1.dto.BookDTO;
import com.ssj.service.conch.parents.v1.dto.ChildEasemobV1Dto;
import com.ssj.service.conch.parents.v1.request.*;
import com.ssj.service.conch.parents.v2.dto.*;
import com.ssj.service.conch.parents.v2.request.*;
import com.ssj.service.conch.teacher.request.teacherorg.AnsweredProblemReq;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

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

/**
 * @author Mount Liu
 * @date 2019/4/18
 */
public interface ParentV2Service {

    /**
     * @param parentId
     * @return 方法说明:家长获取我的信息
     * <p>
     * 创立日期:2018年8月6日 下午2:39:12
     * 创建人:yangcan
     */
    ParentsInfoV2Dto getMyInfo(String parentId);

    /**
     * @param userId
     * @param vipId
     * @return

     * 方法说明:获取小孩资料

     * 创立日期:2019年3月13日 上午10:45:44
     * 创建人:yangcan

     */
    ChildV2Dto getMyChildInfo(String userId, String vipId);

    /**
     * @param req
     * @param userId 家长id
     *               <p>
     *               方法说明:家长添加小孩
     *               <p>
     *               创立日期:2018年9月17日 下午8:22:14
     *               创建人:yangcan
     */
    public ResponseEntity addMyChildInfo(AddMyChildInfoV1Req req, String userId);

    /**
     * @param userId           家长id
     * @param phone            手机号
     * @param verificationCode 验证码
     * @return 方法说明:绑定手机号
     * <p>
     * 创立日期:2018年9月17日 下午8:40:11
     * 创建人:yangcan
     */
    public ResponseEntity bindPhone(String userId, String phone, String verificationCode);

    /**
     * @param req
     * @return 方法说明:手机号登录
     * <p>
     * 创立日期: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
     * @param appType 程序端(6:家长端小程序;12:app家长端)
     * @return
     */
    ResponseEntity findZybVipList(String vipId, int appType);

    /**
     * 查询作业吧所有可购买的会员服务
     * @return
     */
    ResponseEntity findZybVipList(String vipId);

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

    /**
     * 查询作业吧服务
     * @param vipId
     * @param libId
     * @return
     * @throws Exception
     */
    ResponseEntity findOwnServiceList(String vipId, String libId);

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

    /**
     * 计算作业吧有效时间
     * @param vipId 会员id
     * @param num 数量
     * @param priceType 卡类型（C004:作业吧月卡;C005:作业吧半年卡;C006:作业吧年卡;C015:作业吧季卡;C023:平台服务（校区购买）;C024:校区服务）
     * @return
     */
    //ResponseEntity calculateValidInterval(String vipId, int num, String priceType);

    /**
     * 计算作业吧有效时间
     * @param num 数量
     * @param priceType 卡类型（C004:作业吧月卡;C005:作业吧半年卡;C006:作业吧年卡;C015:作业吧季卡;C023:平台服务（校区购买）;C024:校区服务）
     * @param beginDate
     * @param vipId
     * @return
     */
    ResponseEntity calculateValidInterval(int num, String priceType, String beginDate, String vipId);

    /**
     * 获取会员卡有效时间间隔
     *
     * @param beginTime 服务开始时间
     * @param type      卡类型：C004作业吧月卡C005作业吧半年卡C006作业吧年卡C015季度卡
     * @param num       数量
     * @return
     */
    Map<String, String> getInterVal(Date beginTime, String type, int num);

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

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

    ResponseEntity payVIP(PayVipV2Req req, String clientIP, 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 方法说明:扫描孩子名片绑定
     * <p>
     * 创立日期:2018年11月22日 下午4:18:53
     * 创建人:yangcan
     */
    public ResponseEntity swipeChildCardCode(String code, String qrCode);

    /**
     * @param request
     * @return 方法说明:上传拍照作业
     * <p>
     * 创立日期: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 方法说明:小课任务
     * <p>
     * 创立日期:2018年12月4日 下午4:28:55
     * 创建人:yangcan
     */
    public ResponseEntity lessonGroupServiceManager(String vipId);

    /**
     * @param req
     * @param userId
     * @return 方法说明:添加小孩(业务整合)
     * <p>
     * 创立日期:2019年1月9日 上午10:13:09
     * 创建人:yangcan
     */
    public ResponseEntity addChild(AddChildV2Req req, String userId) throws CommonException;

    LibVip addChildVip(AddChildV2Req req, String userId) throws CommonException;

    /**
     * @param req
     * @param userId
     * @return 方法说明:小孩直接绑定贝壳/换绑贝壳
     * <p>
     * 创立日期:2019年1月9日 下午4:49:34
     * 创建人:yangcan
     */
    public ResponseEntity bindConch(BindConchReq req, String userId);


    /**
     * @param req
     * @param userId
     * @return 方法说明:小孩直接绑定校长
     * <p>
     * 创立日期:2019年1月9日 下午4:50:10
     * 创建人:yangcan
     */
    public ResponseEntity bindMaster(BindMasterReq req, String userId);

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

    /**
     * 删除错题
     *
     * @param req
     * @return
     */
    ResponseEntity wrongQuestionDelete(WrongQuestionDeleteReq req);

    /**
     * 错题本获取模块
     *
     * @param req
     * @return
     */
    ResponseEntity wrongQuestionModuleList(ModuleListReq req);

    /**
     * 难题回顾
     *
     * @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 方法说明:多角色家长列表
     * <p>
     * 创立日期:2019年3月5日 下午3:08:17
     * 创建人:yangcan
     */
    public ResponseEntity parentsRoleList(String vipId);

    /**
     * @param userId
     * @param req
     * @return 方法说明:添加家长角色
     * <p>
     * 创立日期:2019年3月5日 下午3:50:45
     * 创建人:yangcan
     */
    public ResponseEntity addParentsRole(String userId, AddParentsRoleReq req);

    /**
     * @param vipId
     * @param roleUserId
     * @return 方法说明:解绑家长角色
     * <p>
     * 创立日期:2019年3月5日 下午3:11:10
     * 创建人:yangcan
     */
    public void untieParentsRole(String vipId, String roleUserId);

    /**
     * 通讯服务续费默认信息
     *
     * @param req
     * @return
     */
    ResponseEntity commuDefaultInfo(CommuDefaultInfoReq req);

    /**
     * 计算通讯服务有效时间
     *
     * @param req
     * @return
     */
    ResponseEntity calculateValidIntervalOfCommu(IntervalCommuReq req);

    /**
     * 确认支付(通讯费)
     *
     * @param req
     * @param accessToken
     * @return
     */
    ResponseEntity payCommuService(PayCommuReq req, String accessToken);

    /**
     * 根据年级、科目分页查询教辅列表
     *
     * @param grade    年级
     * @param subject  科目
     * @param bookName
     * @param pageable 分页信息
     * @return
     */
    Page<BookDTO> findBookPage(String grade, String subject, String bookName, Pageable pageable);

    /**
     * 根据学生id查询教辅列表
     *
     * @param vipId 学生id
     */
    List<BookDTO> findChildBookList(String vipId);

    void upMyChildInfo(ChildInfoV2Req req);

    /**
     * 根据孩子id、科目，查询孩子存在错题的知识点的模块
     * @param req 科目
     */
    List<String> findWrongQuestionKnowModuleList(ModuleReq req);

    /**
     * 查询错题本知识点列表
     *
     * @param vipId   孩子id
     * @param subject 科目
     * @param module  模块
     */
    Page<WrongBookKnowledgeDTO> findWrongQuestionKnowledgePage(String vipId, String subject, String module, Pageable pageable);

    /**
     * 根据知识点id、孩子id查询错题
     *
     * @param vipId           孩子id
     * @param knowHowDetailId 知识点id
     * @return
     */
    Page<WrongBookQuestionDTO> findWrongBookQuestionPage(String vipId, String knowHowDetailId, Pageable pageable);

    /**
     * 错题本删除错题
     *
     * @param knowHowDetailDTOList 知识点id
     * @param homeworkId           作业id
     */
    void deleteWrongBookQuestion(List<KnowHowDetailDTO> knowHowDetailDTOList, String homeworkId);

    /**
     * 查询错题本知识点列表
     *
     * @param req  模块
     * @return
     */
    com.ssj.framework.basic.common.bean.Page<WrongBookKnowledgeDTO2> findWrongQuestionKnowledgePage2(WrongQuestionV2Req req, Pageable pageable);

    /**
     * 查询错题
     *
     * @param req 知识点列表
     * @param includeDeleted
     * @return
     */
    com.ssj.framework.basic.common.bean.Page<WrongBookQuestionDTO> findWrongBookQuestionPage3(WrongBookQuestionReq3 req, boolean includeDeleted, Pageable pageable);

    /**
     * 任务日历查询某天已解答难题列表
     *
     * @param req
     * @return
     */
    ResponseEntity calendarAnsweredProblem(AnswdProblemOnedayReq req);

    /**
     * 查询孩子列表
     *
     * @param userId
     * @return
     */
    ResponseEntity getChildAndLibList(String userId);

    /**
     * 获取图书馆列表
     *
     * @param req
     * @param pageable
     * @return
     */
    ResponseEntity getLibList(GetLibReq req, Pageable pageable);
    ResponseEntity getLibListV1(GetLibReq req, Pageable pageable);

    /**
     * 绑定图书馆
     *
     * @param req
     * @return
     */
    ResponseEntity bindVipLib(VipAndLibReq req);
    ResponseEntity bindVipLibV1(VipAndLibReq req);

    /**
     * 更新redis中学生离馆记录
     * @param vipId 学生id
     * @param oldLibId 离开此馆
     * @param newLibId 加入此馆
     */
    void updateExitLibRecord(String vipId, String oldLibId, String newLibId);

    /**
     * 解绑图书馆
     *
     * @param req
     * @return
     */
    ResponseEntity unbindVipLib(VipAndLibReq req);

    ResponseEntity unbindVipLib(String vipId, String libId);

    /**
     * 优惠码兑换
     *
     * @param req
     * @return
     */
    ResponseEntity codeExchange(CodeExchangeReq req);

    /**
     * 删除孩子相册中的照片
     * @param parentId 家长id
     * @param vipId 孩子id
     * @param smarttimeId 照片id
     * @return
     */
    ResponseEntity deleteSmartTimePhoto(String parentId, String vipId, String smarttimeId);

    /**
     * @param parentId
     * @param vipId
     * @return

     * 方法说明:删除孩子

     * 创立日期:2019年5月27日 下午4:36:48
     * 创建人:yangcan

     */
    public ResponseEntity delChild(String parentId, String vipId);

    /**
     * 根据图片id查询对应的题库原题
     */
    ResponseEntity findQuestionList(WrongBookQuestionListReq req);

    Page<WrongBookQuestionDTO> findWrongBookQuestionPage2(WrongBookQuestionReq2 req, Pageable pageable);

    /**
     * 根据作业图片id列表，查询原题列表，如果需要也查询推荐的题目
     */
    ResponseEntity findWrongAndRecommendQuestionList(WrongBookQuestionListReq req);

    /**
     * 查询学生的学习成长报告（周）
     */
    ResponseEntity findLearningGrowthReport(LearningGrowthReportReq req);

    /**
     * 查询提分训练推荐题目
     */
    ResponseEntity findTrainRecommendQuestion(TrainRecommendQuestionReq req);

    /**
     * 查询学习成长报告（月）
     */
    ResponseEntity findLearningGrowthReportMonth(LearningGrowthReportForMonthReq req);

    /**
     * 查询提分训练推荐题目v2
     */
    ResponseEntity findTrainRecommendQuestionV2(TrainRecommendQuestionReqV2 req);

    String getRandomChildImg(String imgUrl);

    Map<String, Integer> getRecommendTypeAndNum(String subject, double mastery);

    /**
     * 学生难题回顾
     * @param req
     * @return
     */
    Map<String, Object> findProblemPictureList (AnsweredProblemReq req);

    /**
     * 查询学生的学习成长报告（周）V2
     */
    ResponseEntity findLearningGrowthReportV2(LearningGrowthReportReq req);

    /**
     * 家长扫小塾学伴pad登录
     * @param req
     * @return
     */
    ResponseEntity swipePadLogin(SwipePadLoginReq req);

    /**
     * 查询学生的学习成长报告（月）V2
     */
    ResponseEntity findLearningGrowthReportMonthV2(LearningGrowthReportForMonthReq req);

    /**
     * 错题本查询知识点维度
     * @param req 请求参数 com.ssj.service.conch.parents.v2.request.ModuleReqV2
     * @return 知识点维度名称列表
     */
    List<String> findWrongQuestionKnowModuleListV2(ModuleReqV2 req);

    /**
     * 错题本查询指定维度下知识点列表
     * @param req 请求参数
     * @param pageable 分页规则
     * @return 知识点列表
     */
    com.ssj.framework.basic.common.bean.Page<WrongBookKnowledgeDTO2> findWrongQuestionKnowledgePageV3(WrongQuestionV3Req req, Pageable pageable);

    /**
     * 查询周报历史记录
     * @param req 请求参数
     * @return 历史记录列表
     */
    ResponseEntity findWeeklyReportHistory(ReportHistoryReq req);

    /**
     * 查询月报历史记录
     * @param req 请求参数
     * @return 历史记录列表
     */
    ResponseEntity findMonthlyReportHistory(ReportHistoryReq req);

    /**
     * 根据知识点列表查询错题题目（type=2时，查询错题原题；type=1、3、4、5时，查询错题作业图片），若没有错题或原题，则查询推荐题（练习册题目）
     * @param req 请求参数
     * @param pageable 分页
     * @return 响应实体
     */
    ResponseEntity findWrongBookQuestionPageV5(WrongBookQuestionReqV4 req, Pageable pageable);

    /**
     * 根据题目id列表，查询原题列表，如果需要也查询推荐的题目
     */
    ResponseEntity findWrongAndRecommendQuestionListV2(WrongBookQuestionListReqV2 req);

    /**
     * 根据题目id列表，查询原题列表，如果需要也查询推荐的题目
     */
    ResponseEntity findWrongAndRecommendQuestionListV3(WrongBookQuestionListReqV2 req);

    /**
     * 家长自批改未批改作业数量
     * @param teacherId
     * @return
     */
    int unCorrectHomeworkSum(String teacherId);

    /**
     * 查询提分训练推荐题目v2
     * @param req 参数
     * @return 题目列表
     */
    ResponseEntity findTrainRecommendQuestionV3(TrainRecommendQuestionReqV3 req);

    /**
     * 查询有冲突的服务
     * @param req
     * @return
     */
    ResponseEntity findConflictServiceList(ConflictServiceReq req);

    /**
     * 查询提分训练推荐题目v4
     *
     * @param req 参数
     *
     * @return 题目列表
     */
    ResponseEntity findTrainRecommendQuestionV4(TrainRecommendQuestionReqV3 req);

    /**
     * 错题本查询知识点维度
     * @param req 请求参数 com.ssj.service.conch.parents.v2.request.ModuleReqV3
     * @return 知识点维度名称列表
     */
    List<String> findWrongQuestionKnowModuleListV3(ModuleReqV3 req);

    /**
     * 错题本查询指定维度下知识点列表
     * @param req 请求参数
     * @param pageable 分页规则
     * @return 知识点列表
     */
    com.ssj.framework.basic.common.bean.Page<WrongBookKnowledgeDTO2> findWrongQuestionKnowledgePageV4(WrongQuestionV4Req req, Pageable pageable);

    /**
     * 根据知识点列表查询错题题目（type=2时，查询错题原题；type=1、3、4、5时，查询错题作业图片），若没有错题或原题，则查询推荐题（练习册题目）
     * @param req 请求参数
     * @param pageable 分页
     * @return 响应实体
     */
    ResponseEntity findWrongBookQuestionPageV6(WrongBookQuestionReqV6 req, Pageable pageable);

    /**
     * 错题本查询知识点维度
     * @param req 请求参数 com.ssj.service.conch.parents.v2.request.ModuleReqV3
     * @return 知识点维度名称列表
     */
    List<String> findWrongQuestionKnowModuleListV3New(ModuleReqV3 req);

    /**
     * 错题本查询指定维度下知识点列表
     * @param req 请求参数
     * @param pageable 分页规则
     * @return 知识点列表
     */
    com.ssj.framework.basic.common.bean.Page<WrongBookKnowledgeDTO2> findWrongQuestionKnowledgePageV4New(WrongQuestionV4Req req, Pageable pageable);

    /**
     * 注销用户角色
     * @param parentId 家长id
     */
    ResponseEntity cancelUserRole(String parentId) throws Exception;

    ResponseEntity bindVipLibV2(VipAndLibReq req);

    ResponseEntity bindVipLibV3(VipAndLibReq req);

    ResponseEntity againChooseLib(String vipId);

    ResponseEntity getPeiyouBookVersion(GetPeiyouBookVersionReq req);

    ResponseEntity getPeiyouBookUnit(GetPeiyouBookUnitReq req);

    ResponseEntity getSecondUnitInfo(String unitId);

    ResponseEntity getBookFileInfo(String secondUnitId, int type);

    /**
     * 历年真题获取教材版本
     *
     * @param vipId
     * @param courseName 科目(语文,数学,英语)
     * @return
     */
    ResponseEntity getQuestionVersion(String vipId, String courseName);

    /**
     * 历年真题获取教材版本下的省份
     *
     * @param vipId
     * @param courseName 科目(语文,数学,英语)
     * @param bookName   教材版本
     * @return
     */
    ResponseEntity getQuestionProvince(String vipId, String courseName, String bookName);

    /**
     * 历年真题获取教材版本下的省份下城市
     *
     * @param provinceTermtrainId 省份对应的表唯一id
     * @return
     */
    ResponseEntity getQuestionCity(String provinceTermtrainId);

    /**
     * 历年真题获取教材版本下的城市下区域
     *
     * @param cityTermtrainId 城市对应的表唯一id
     * @return
     */
    ResponseEntity getQuestionArea(String cityTermtrainId);

    /**
     * 历年真题获取教材版本下的省市区筛选的时间
     *
     * @param areaTermtrainId 区域对应的表唯一id
     * @return
     */
    ResponseEntity getQuestionYear(String areaTermtrainId);

    /**
     * 历年真题获取教材版本下的省市区时间筛选的真题文件
     *
     * @param yearTermtrainId 时间对应的表唯一id
     * @return
     */
    ResponseEntity getRealQuestionInfo(String yearTermtrainId);

    /**
     * 查询每周同步训练题目列表
     *
     * @param req 入参
     */
    ResponseEntity findWeeklySynchronousTrainQuestionList(WeeklySynchronousTrainReq req);

    /**
     * 查询定制冲刺题目
     * @param req
     * @return
     */
    ResponseEntity getCustomizedSprintPaper (GetCustomizedSprintPaperReq req);

    /**
     * 分享增加积分
     * @param req
     * @return
     */
    ResponseEntity shareMsgAddIntegral(ShareReq req);

    /**
     * 获取分享数据
     * @param req
     * @return
     */
    ResponseEntity shareDataForMonthReport(ShareDataReq req) throws Exception;

}
