package com.ssj.service.test;


import com.ssj.framework.core.util.ResponseEntity;

import java.util.List;

/**
 * 用来测试方法、后台手动操作脚本等
 *
 * @author Mount Liu
 * @date 2019/12/11
 */
public interface DeveloperService {

    /**
     * 测试某一个方法
     *
     * @return
     */
    ResponseEntity testOneMethod();

    /**
     * 测试成长报告推送
     * @param vipId  学生id
     * @return 响应
     */
    ResponseEntity testGrowthReportNotifyTask(String vipId);

    /**
     * 推送所有学生成长报告提醒
     */
    void testAllGrowthReportNotifyTask();

    /**
     * 统计生成知识点错题统计数据
     * @return 生成记录数
     * @param homeworkId
     */
    int generateKnowledgeWrongQuestionCount(String homeworkId);

    /**
     * 全量更新es索引kmt_exercise_question_know中的数据
     * @return 更新数量
     */
    long updateAllKmtQuestion2Es();

    /**
     * 更新指定月份月报中的transcended_student_proportion（超过?比例的同级学生）
     * @param month 月份
     * @return 更新记录数
     */
    int updateTranscendedStudentProportion(String month);

    /**
     * 统计生成学期知识点掌握熟练度数据
     * @param countAllHomework 是否根据所有作业生成
     * @return 生成记录数
     */
    int generateMasteryOfSemesterKnowledge(Boolean countAllHomework);

    /**
     * 更新es中zyb_know_how_details_sort索引的数据
     */
    void updateKnowHowDetailsSortInEs();

    /**
     * 更新错题知识点统计数据题目状态
     * @return 更新记录数
     */
    int updateKnowledgeWrongQuestionCountQuestionStatus();

    /**
     * 更新kmt_exercise_book.book_status
     *
     * @param exerciseBookId 练习册id，未指定则更新全部
     *
     * @return 更新数量
     */
    int updateKmtExerciseBookStatus(String exerciseBookId);

    /**
     * 更新kmt_exercise_book_status_count
     *
     * @param exerciseBookId 练习册id，未指定则更新全部
     *
     * @return 生成记录数
     */
    int updateKmtExerciseBookStatusCount(String exerciseBookId);

    /**
     * 更新scon_knowledge_proficiency.knowledge_version
     * @return 更新数量
     */
    int updateKnowledgeProficiencyKnowledgeVersion();

    /**
     * 更新zyb_student_push.type
     *
     * @return 更新数量
     */
    int updateStudentPushType();

    /**
     * 添加出版社
     *
     * @param pressList
     */
    void addPress(List<String> pressList);

    /**
     * 删除出版社
     * @param pressList
     */
    void deletePress(List<String> pressList);

    /**
     * 刷新练习册分配导出数据
     *
     * @param exerciseBookId 练习册id
     */
    void refreshExerciseBookDistributionCount(String exerciseBookId);

    /**
     * 更新指定学生的当天的反馈报告状态（3->6）
     *
     * @param vipId 学生id
     *
     * @return 更新数量
     */
    int updateFeedbackReportAndNotifyParent(String vipId);

    int regenerateTrainingRecommendQuestion(String studentWeeklyReportId);
}
