package com.ym.mec.task;

import com.ym.mec.common.config.FeignConfiguration;
import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(name = "web-server", contextId = "TaskRemoteService", configuration = {FeignConfiguration.class}, fallback = TaskRemoteServiceFallback.class)
public interface TaskRemoteService {

    @GetMapping(value = "task/pushWaitSendMessageTask")
    // 每天9点推送前一天22点之后的推送消息
    public void pushWaitSendMessageTask();

    @GetMapping(value = "task/pushTeacherExceptionAttendanceTask")
    // 教师异常考勤推送
    public void pushTeacherExceptionAttendanceTask();

    @GetMapping(value = "task/updateMusicGroupStudentFeeStatus")
    // 更新学员缴费状态（新）
    public void updateMusicGroupStudentFeeStatus();

    @GetMapping(value = "task/refreshPaymentFeeStatus")
    // 刷新付费状态
    public void refreshPaymentFeeStatus();

    @GetMapping(value = "task/refreshUserMusicGroupPaymentStatusTask")
    // 刷新学员乐团付费状态
    public void refreshUserMusicGroupPaymentStatusTask();

    @GetMapping(value = "task/vipGroupAwardedMonthlyRewards")
    // vip课月度奖励
    public void vipGroupAwardedMonthlyRewards();

    @GetMapping(value = "task/updateCourseScheduleToOverStatus")
        // 更新课程状态至已结束
    void updateCourseScheduleToOverStatus();

    @GetMapping("task/pushNoSignOutMessage")
    // 推送未签退消息提醒
    public void pushNoSignOutMessage();

    @GetMapping("task/vipGroupTeacherSalarySettlement")
    // vip课课酬结算
    public void vipGroupTeacherSalarySettlement();

    @GetMapping("task/practiceTeacherSalarySettlement")
    // 陪练课课酬结算
    public void practiceTeacherSalarySettlement();

    @GetMapping("task/musicGroupTeacherSalarySettlement")
    void MusicGroupTeacherSalarySettlement();

    @GetMapping("task/studentCoursesScheduleRemind")
    // 学生有课提醒
    public void studentCoursesScheduleRemind();

    @GetMapping("task/studentSignInRemind")
    // 学生上课提醒
    public void studentSignInRemind();

    @GetMapping("task/studentHomeworkRemind")
    // 学生作业提醒
    public void studentHomeworkRemind();

    @GetMapping("task/teacherCoursesScheduleRemind")
    // 老师有课提醒
    public void teacherCoursesScheduleRemind();

    @GetMapping("task/teacherSignInRemind")
    // 老师上课提醒
    public void teacherSignInRemind();

    @GetMapping("task/homeworkNoReplyRemind")
    // 老师未回复作业提醒
    public void homeworkNoReplyRemind();

    @GetMapping("task/queryOrderStatus")
    // 订单状态查询
    public void queryOrderStatus();

    @GetMapping("task/updateVipGroupToFinishedStatus")
    // 更新VIP课程状态至已结束
    public void updateVipGroupToFinishedStatus();

    @GetMapping("task/stopVipGroupWithNoCreate")
    // 取消达到报名时间未达到报名人数的vip课
    public void stopVipGroupWithNoCreate();

    @GetMapping("task/teacherCourseStatistic")
    // 老师课酬统计
    public void teacherCourseStatistic();

    //更新历史陪练课至已结束
    @GetMapping("task/updateHistoryPracticeGroupStatus")
    public void updateHistoryPracticeGroupStatus();

    //练习报告定时推送
    @GetMapping("task/pushStudyReport")
    void pushStudyReport();

    //新增待填写月报定时推送(推送老师)
    @GetMapping("task/pushNeedPostReport")
    void pushNeedPostReport();

    //预生成待提交月报
    @GetMapping("task/createEvaluate")
    void createEvaluate();

    //新增待填写评论定时推送(推送老师)
    @GetMapping("task/pushNeedReview2Teacher")
    void pushNeedReview2Teacher();

    //对外无学生课程组提醒
    @GetMapping("task/noStudentsCourseGroupRemind")
    void noStudentsCourseGroupRemind();

    @GetMapping("task/finishCourseGroup")
    void finishCourseGroup();

    @GetMapping("task/exercisesSituationStatistics")
    void exercisesSituationStatistics();

    //更新学生运营指标
    @GetMapping("task/updateStudentOperatingTag")
    void updateStudentOperatingTag();

    // 更新乐团缴费日历的状态
    @GetMapping("task/updateMusicGroupPaymentCalenderStatus")
    void updateMusicGroupPaymentCalenderStatus();

    //老师本周应布置课外训练
    @GetMapping("task/studentServeRemind")
    void studentServeRemind();

    //经营报表
    @GetMapping("task/operatingReport")
    void operatingReport();

    //商品库存预警
    @GetMapping("task/repertoryWarn")
    void goodsRepertoryFBIWarnTask();

    //自动确认收货
    @GetMapping("task/autoAffirmReceiveTask")
    void autoAffirmReceiveTask();

    //首页数据统计
    @GetMapping("task/countIndexBaseData")
    void countIndexBaseData();

    //巡查日程提醒
    @GetMapping("task/inspectionPlan")
    void inspectionPlan();

    /**
     * 关闭学员服务指标
     */
    @GetMapping("task/closeStudentServiceTag")
    void closeStudentServiceTag();

    //乐保到期提醒
    @GetMapping("task/maintenanceNotice")
    void maintenanceNotice();

    /**
     * 更新学生年级
     */
    @GetMapping("task/updateGrade")
    void updateGrade();

    //乐保历史数据处理
    @GetMapping("task/maintenanceOldDateAdd")
    void maintenanceOldDateAdd();

    //更新学员指导老师和声部信息
    @GetMapping("task/updateStudentTeacherAndSubject")
    void updateStudentTeacherAndSubject();

    //推送查看今日收入提醒
    @GetMapping("task/todayIncomeRemind")
    void todayIncomeRemind();

    //大雅基本工资标记
    @GetMapping("task/salaryMarkNew")
    void salaryMarkNew();

    //同步即时通讯聊天记录
    @GetMapping("task/syncImHistoryMessageTask")
    void syncImHistoryMessageTask();

    //历史异常数据记录
    @GetMapping("task/indexErrDataRecordTask")
    void indexErrDataRecord();

    //每天凌晨3点清理所有的乐团预排课
    @GetMapping("task/autoCleanPreCourseTask")
    void autoCleanPreCourseTask();

    //每天10点推送排课、续费、退团提醒
    @GetMapping("task/musicSchoolTermPush")
    void musicSchoolTermPush();

    //会员结束后第三天自动退团
    @GetMapping("task/memberEndAutoQuitMusic")
    void memberEndAutoQuitMusic();

    //会员到期后清空会员信息
    @GetMapping("task/cleanStudentMember")
    void cleanStudentMember();

    /**
     * 清理学员云教练连续使用天数
     */
    @GetMapping("task/cleanStudentCloudStudySequenceDays")
    void cleanStudentCloudStudySequenceDays();

    /**
     * 本周学员训练提醒
     */
    @GetMapping("task/curWeekStudentTrainRemind")
    void curWeekStudentTrainRemind();

    /**
     * 标记进行中乐团在读学员+VIP、网管有课学员（除弦乐声部、去重）
     */
    @GetMapping("task/remarkCountFlag")
    void remarkCountFlag();

    /**
     * 定时校验-机构订单状态
     */
    @GetMapping("task/checkTenantOrder")
    void checkTenantOrder();

    /**
     * 每晚12点-检查机构状态
     */
    @GetMapping("task/checkTenantState")
    void checkTenantState();

    /**
     * 兑换码分配数量底告警
     */
    @GetMapping("task/redemptionCodeWarn")
    void redemptionCodeWarn();

    /**
     * 查询老师协议签订状态
     */
    @GetMapping("task/queryTeacherContractSignStatus")
    void queryTeacherContractSignStatus();

    /**
     * 每分钟-查询是否有直播间需要创建
     */
    @GetMapping("task/createLiveRoom")
    void createLiveRoom();

    /**
     * 每分钟-查询是否有直播间需要销毁
     */
    @GetMapping("task/destroyExpiredLiveRoom")
    void destroyExpiredLiveRoom();

    /**
     * 学员小课统计
     */
    @GetMapping("task/studentSmallClassStatistics")
    void studentSmallClassStatistics();

    @GetMapping("task/checkCampState")
    void checkCampState();

    /**
     * 每天早上8点执行-提醒当天开启训练营并已分群的用户开始训练
     */
    @GetMapping("task/pushStartTrain")
    void pushStartTrain();

    //新经营报表统计
    @GetMapping("task/operatingReportMonth")
    void operatingReportMonth();

    @GetMapping("task/findAllWaitVisit")
    void findAllWaitVisit();
}
