package com.fs.qw.qwTask;

import com.fs.course.service.IFsUserCourseService;
import com.fs.qw.service.IQwExternalContactService;
import com.fs.qw.service.IQwGroupMsgService;
import com.fs.qw.service.IQwMaterialService;
import com.fs.qw.service.IQwUserService;
import com.fs.sop.service.impl.QwSopLogsServiceImpl;
import com.fs.sop.service.impl.QwSopServiceImpl;
import com.fs.sop.service.ISopUserLogsService;
import com.fs.statis.IFsStatisQwWatchService;
import com.fs.statis.service.FsStatisSalerWatchService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.time.LocalDate;

@Component("qwTask")
public class qwTask {

    @Autowired
    private QwSopServiceImpl qwSopService;

    @Autowired
    private QwSopLogsServiceImpl qwSopLogsService;

    @Autowired
    private IQwGroupMsgService qwGroupMsgService;

    @Autowired
    private ISopUserLogsService sopUserLogsService;
    @Autowired
    private IQwExternalContactService qwExternalContactService;

    @Autowired
    private IFsUserCourseService iFsUserCourseService;

    @Autowired
    private IQwUserService qwUserService;


    @Autowired
    private FsStatisSalerWatchService fsStatisSalerWatchService;

    @Autowired
    private IFsStatisQwWatchService fsStatisQwWatchService;

    @Autowired
    private IQwMaterialService iQwMaterialService;


    //正在使用
    public void qwExternalContact()
    {
        qwExternalContactService.qwExternalContactSync();
    }
    //正在使用
    public void qwExternalContactAddAndDel()
    {
        qwExternalContactService.qwExternalContactSyncAddAndDel();
    }
    //正在使用
    public void qwExternalContactSyncAddRedis()
    {
        qwExternalContactService.qwExternalContactSyncAddRedis();
    }
    //正在使用
    public void qwExternalContactAddRedis()
    {
        qwExternalContactService.qwExternalContactAddRedis();
    }
    //正在使用
    public void qwExternalContactAddAndDelByRedis()
    {
        qwExternalContactService.qwExternalContactAddAndDelByRedis();
    }
    //正在使用
    public void qwExternalContactAddTag()
    {
        qwExternalContactService.qwExternalContactAddCourseTag();
    }

    /**
    * 定时任务 将 qw_sop任务 符合条件的录入到sop_user_Logs(clickHouse)
    */
    public void qwCheckSopRuleTime()
    {
        qwSopService.checkSopRuleTime();
    }

    /**
    * 定时任务 将 clickHouse的sopUserLogs(营期表)按每小时的巡回 录入clickHouse的qw_sop_logs(消息发送表)
    */
    public void selectSopUserLogsListByTime(){
        sopUserLogsService.selectSopUserLogsListByTime();
    }

    /**
    * 定时 发送 通过调用 企业微信接口 发送的 SOP 群发消息
    */
    public void SendQwApiSopLogTimer(){
        qwSopLogsService.checkQwSopLogs();
    }

    /**
    * 定时获取 通过调用 企业微信接口 发送的 SOP 客户群发消息 的反馈结果
    */
    public void GetQwApiSopLogResultTimer(){
        qwSopLogsService.qwSopLogsResult();
    }

    /**
    * 定时群发API接口的 客户/群 群发
    */
    public void sendQwGroupMsgTask(){
        qwGroupMsgService.qwGroupMsgTask();
    }

    /**
    *  定时更新 待发送中已经算过期了的不能发的消息
    */
    public void updateQwSopLogsBySendStatusTask(){
        qwSopLogsService.updateQwSopLogsBySendStatus();
    }

    /**
     * 2天跑一次 将 课程的封面 上传企业微信 并上传到redis
     */
    public void processQwSopCourseMaterialTimer() {

        iFsUserCourseService.processQwSopCourseMaterialTimer();

    }
    /**
    *  同步待同步客户
    */
    public void synchronizeQwExternalContactTask(){
        qwExternalContactService.synchronizeQwExternalContactTask();
    }


    /**
     * 定时解除 已经删除了的销售 绑定的企业微信云主机。或者是没有绑定销售 却绑定了云主机的
     */
    public void unlockQwUserLoginCodeUrlTask(){
        qwUserService.unlockQwUserLoginCodeUrlTask();
    }


    /**
     * 看课统计
     */
    public void watchCourseStatis(String date){
        if("1".equals(date)){
            fsStatisSalerWatchService.writeData(null);
        } else {
            fsStatisSalerWatchService.writeData(date);
        }
    }

    /**
     * 看课统计昨天
     */
    public void watchCourseStatisPrevious(){
        LocalDate localDate = LocalDate.now().minusDays(1);
        fsStatisSalerWatchService.writeData(localDate.toString());
    }
    /**
     * 看课统计-统计当天的-每15分钟统计一次
     */
    public void watchCourseStatisToday(){
        fsStatisSalerWatchService.writeDataToday();
    }

    /**
     * 进线转化统计
     */
    public void qwWatchCourseStatis(String date){
        if("1".equals(date)){
            fsStatisQwWatchService.writeData(null);
        } else {
            fsStatisQwWatchService.writeData(date);
        }
    }

    /**
     * 进线转化统计
     */
    public void qwWatchCourseStatisToday(){
        LocalDate today = LocalDate.now();
        fsStatisQwWatchService.writeData(today.toString());
    }

    /**
    * 每俩天 更新一次 素材库
    */
    public void updateMaterialByTwoDays(){
        iQwMaterialService.updateQwMaterialByQw();
    }
}
