<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        Commands\ChapterImageTask::class,
        Commands\BillTask::class,
        Commands\PaymentQueryTask::class,
        Commands\PaymentStatisticTask::class,
        Commands\BusinessChannelStatTask::class,
        Commands\BookAdjust::class,
        Commands\BookAdjustOne::class,
        Commands\BookSpider::class,
        Commands\BookUpdate::class,
        Commands\BookUpdateOne::class,
        Commands\UpdateBookClickCount::class,
        Commands\BookTest::class,
        Commands\SignReward::class,
        Commands\NoPayRemind::class,
        Commands\Trade\GenerateOrderDayStat::class,
        Commands\Trade\GenerateOrderStat::class,
        Commands\SendServiceMsg::class,
        Commands\FailOrderAlert::class,
        Commands\BookAfterSpider::class,
        Commands\PayChannelCheck::class,
        Commands\ChangePay::class,
        Commands\WechatCustumerPushStatistical::class,
        Commands\Sub\GenerateCpSubDayStat::class,
        Commands\Channel\CheckStatus::class,
        Commands\ChapterOrderTotal::class,
        Commands\SendOrder\GenerateForceDayStat::class,
        Commands\SendOrder\GenerateStat::class,
        Commands\SendOrder\SetExtraStats::class,
        Commands\SendOrder\GenerateBookUvRegisterStat::class,
        Commands\SendOrder\UserActivityStats::class,
        Commands\CheckAndSend::class,
        Commands\RecoverPush::class,
        Commands\ForceUserActive::class,
        Commands\ForceUserActiveDetail::class,
        Commands\PaidUserRemind::class,
        Commands\SendOrderBreakevenForceUser::class,
        Commands\UnPaidUserActivity::class,
        Commands\CustomSubscribePush::class,
        Commands\CustomSignPush::class,

        Commands\SmartPush\AllPushHotBook::class,
        Commands\SmartPush\PaidPushPointBook::class,
        Commands\SmartPush\UnPaidPushHotBook::class,
        Commands\SmartPush\UnPaidPushPointBook::class,
        Commands\SmartPush\UnPaidUserBigActivity::class,
        Commands\SmartPush\UnPaidUserSmallActivity::class,
        Commands\SmartPush\LongChapterTemplate::class,
        Commands\SmartPush\LongChapterCustom::class,
        Commands\SmartPush\PaidUserCustom::class,
        
        Commands\Tool\OfficialAccountUserTranser::class,
        Commands\Tool\TestSmartPush::class,
        Commands\Tool\MaintainTempForceSubscribeUser::class,
        Commands\Tool\MaintainSubscribeReplyRedisData::class,
        Commands\Tool\TitleImageStatistics::class,
        Commands\Tool\ThirdPlatomUserTranser::class,
        
        
        Commands\DistributionStats\WeeklyDailyStats::class,
        
        Commands\SubscribeDataStats::class,
        Commands\ForBiddenOfficialAccountRemind::class,
        Commands\RepeatBookOrderRecover::class,
        Commands\SubscribeAlert::class,
        Commands\CheckOfficialAccountTemplate::class,
        Commands\OfficialAccountStat\SubUserRecharge::class,
        Commands\Temp\UserSign::class,
        Commands\Temp\FansArpu::class,
        Commands\Temp\Siorder::class,
        Commands\Temp\FixRealReg::class,
        Commands\Temp\OfficialAccountSubStat::class,
        Commands\WapVisitStat::class,
        Commands\CP\GenerateCpBookStat::class,
        Commands\CP\GenerateCpBookBetweenStat::class,
        Commands\AutoSendTrusteeShipCustomerMsg::class,
        Commands\WelfareNextDay::class,
        Commands\WelfarePrize::class,
        Commands\BookAttr::class,
        Commands\OfficialAccountBillsTask::class,
        Commands\Temp\PayUserAutoSub::class,
        Commands\Temp\SelectPayUser::class,
        Commands\Temp\SensitiveChapter::class,

        Commands\SendOrder\SendStatsEmail::class,
        Commands\ProductStats\SendMonthStatsEmail::class,
        Commands\ProductStats\DailyProductionStats::class,
        Commands\ProductStats\MonthlyProductionStats::class,
        Commands\ProductStats\SendDailyProductionStats::class,
        Commands\ProductStats\SendMonthlyProductStats::class,
        Commands\SuperiorBooks\DailyScanForSupriorNewBook::class,
        Commands\SuperiorBooks\HistorySupriorBook::class,

        Commands\UserSubscribleStatistic::class,
        Commands\SuperiorBooks\TempCommand::class,
        Commands\CheckBookCover::class,
        Commands\fansMaximumNotice::class,
        Commands\BookGiftStats\BookGiftStatsByBook::class,
        Commands\BookGiftStats\BookGiftStatsByGift::class,
        Commands\MovedChannelsReback::class,
        Commands\WholeBookOrderData::class,
        Commands\ChargeTemplateStat::class,

        Commands\TemporaryTask::class,
        Commands\CheckSiteStatus::class,
        Commands\AutoWithdrawCash::class,

        Commands\ChannelReaderVisitStats::class,

        Commands\ChannelReaderVisitStats::class,
        Commands\UserPayUpdateTask::class,
        Commands\CheckZhangDuSiteStatus::class,
        Commands\YqBook::class
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        //每日派单数据生成
        $schedule->command('send_order:generate_force_day_stat')->dailyAt("04:30");

        $schedule->command('bill_task')->dailyAt("00:30");

        //每日打款报表
        $schedule->command('payment_statistic_task')->dailyAt("00:30");
        //打款状态查询 10分钟执行一次
        $schedule->command('payment_query_task')->everyTenMinutes();

        //每日商务渠道数据报表
        $schedule->command('BusinessChannelStat_task')->dailyAt("00:30");

        //点击率
        $schedule->command('book:clicknumupdate')->dailyAt('01:00');

        //更新图书
        $schedule->command('book:update')->dailyAt('22:00');

        //未支付提醒
        $schedule->command('Pay:remind')->hourly();

        //检查公众号模板
        $schedule->command('CheckOfficialAccountTemplate')->hourly();

        //订单相关
        //生成渠道日统计
        $schedule->command('generate_order_day_stat')->dailyAt("00:05");
        //生成渠道汇总统计
        $schedule->command('generate_order_stat')->dailyAt("00:25");

        //订单预警
        $schedule->command('foa')->everyMinute();
        //$schedule->command('foa --qrcode')->everyMinute();
        //签到推送
        //$schedule->command('sign:reward')->everyMinute();
        //测试账号支付通道切换
        //$schedule->command('pay:change')->dailyAt('00:00');
        //推送统计
        $schedule->command('pay:wcps')->dailyAt('02:30');
        //托管推送
        $schedule->command('pay:wcps --auto')->dailyAt('05:20');

        //更新章节订购统计
        $schedule->command('book:cot')->dailyAt('01:15');

        //检查渠道账号状态
        //$schedule->command('channel_user_check_status')->dailyAt('03:30');

        $schedule->command('CheckAndSend')->everyMinute();

        // 检查公众号被封
        $schedule->command('ForBiddenOfficialAccountRemind')->everyFiveMinutes();

        //付费用户每日提醒
//         $schedule->command('PaidUserRemind')->dailyAt('08:00');
        
        //更新粉丝数
        $schedule->command('sendorderbreadforceuser')->dailyAt('02:50');
        //签到统计
        $schedule->command('sign:reward --record')->dailyAt('02:00');
        //cp订阅书币和充值币和赠送币
        $schedule->command('book:cot --type=cp')->dailyAt('02:20');
        //order_day_stats 阅书币和充值币和赠送币
        $schedule->command('book:cot --type=order')->dailyAt('02:40');
        //send_orders_stats 阅书币和充值币和赠送币
        $schedule->command('book:subds')->dailyAt('03:10');

        //粉丝预警
        $schedule->command('subscribealert --type=getTopAlert')->hourly();
        //强关预警
        $schedule->command('subscribealert --type=subscribeRateAlert')->hourly();

        //uv pv redis持久
        $schedule->command('wvs 9')->dailyAt('04:00');

        // 每天周报数据

        $schedule->command('WeeklyDailyStats all')->dailyAt('02:02');

        // CP 
        // cp书籍订阅数据,需在order_day_stats后执行,每周一执行一次
//         $schedule->command('cp_generate_cp_book_stat')->weekly()->mondays()->at('05:10');
        //  cp书籍订阅数据,需在order_day_stats后执行,改为每天执行一次
        $schedule->command('cp_generate_cp_book_stat')->dailyAt('05:10');

        // 自动提现申请
        $schedule->command('AutoWithdrawCash')->dailyAt('01:20');
        
        //自动推送托管客服消息
        $schedule->command('AutoSendTrusteeShipCustomerMsg')->dailyAt('19:00');

        //跑派单ID的24小时的uv、pv
        $schedule->command('send_order:set_extra_stats')->everyMinute();

        //分销红包
        $schedule->command('welfare:prize')->everyMinute();
        $schedule->command('welfare:nextday')->dailyAt('23:55');

        //服务号每日充值统计
        $schedule->command('official_account_bills_task')->dailyAt('05:00');
        //每日派单数量统计
        $schedule->command('book:attr')->dailyAt('04:40');

        //书币消耗 筛选必须在刷之后
        $schedule->command('temp:select_user_pay')->dailyAt('16:00');
        $schedule->command('temp:pay_user_auto_do')->dailyAt('06:00');

        //统计每周派单发送邮件
        $schedule->command('sendOrderEmail')->dailyAt('08:00');
        $schedule->command('sendMonthOrderEmail')->monthlyOn(3, '08:00');
        //每日作品统计
        //$schedule->command('saveDailyProductsStats')->dailyAt('00:10');
        //$schedule->command('saveMonthlyProductsStats')->monthlyOn(1, '00:20');
        //$schedule->command('SendDailyProductsStats')->dailyAt('08:00');
        $schedule->command('SendMonthlyProductsStats')->monthlyOn(1, '08:20');

        //优质书库
        $schedule->command('addSuperiorBook')->dailyAt('00:50');
        $schedule->command('addHistorySuperiorBook')->dailyAt('01:20');

        /********** 智能推送统一这里管理 ***********/

        //全量推送热门书籍
        $schedule->command('SmartPush:AllPushHotBook')->hourly()->between('6:00', '24:00');
        //已付费推送定制书籍
        $schedule->command('SmartPush:PaidPushPointBook')->hourly()->between('6:00', '24:00');
        //未付费推送热门书籍
        $schedule->command('SmartPush:UnpaidPushHotBook')->hourly()->between('6:00', '24:00');
        //未付费推送定制书籍
        $schedule->command('SmartPush:UnpaidPushPointBook')->hourly()->between('6:00', '24:00');
        //未支付新用户优惠充值活动（更多充值选项）
        $schedule->command('SmartPush:UnPaidUserBigActivity')->hourly()->between('6:00', '24:00');
        //未支付新用户9.9充值活动
        $schedule->command('SmartPush:UnPaidUserSmallActivity')->hourly()->between('6:00', '24:00');
        //支付用户6小时后推送客服消息
        $schedule->command('SmartPush:PaidUserCustom')->hourly()->between('6:00', '24:00');
        
        //测试用户推送长篇客服
        $schedule->command('SmartPush:LongChapterCustom')->hourly()->between('6:00', '24:00');
        //测试用户推送长篇模板
        $schedule->command('SmartPush:LongChapterTemplate')->hourly()->between('6:00', '24:00');
        
        //关注智能推送
        $schedule->command('CustomSubscribePush')->everyTenMinutes();

        //签到智能推送
        $schedule->command('CustomSignPush')->everyTenMinutes();

        /********** 智能推送 end ***********/

        //敏感章节生成查询
        $schedule->command('temp:sensitive_chapter')->dailyAt('03:20');

        //粉丝统计:用户强关行为统计
        $schedule->command('user_subscribe_statistic')->dailyAt('01:10');

        //强关中间表每日维护
        $schedule->command('MaintainTempForceSubscribeUser')->dailyAt('03:02');

        $schedule->command('check_book_cover_status')->weekly()->mondays()->at('04:10');
        //阈值提醒
        $schedule->command('addFansMaximumNotice')->hourly();

        //用户打赏统计
        $schedule->command('BookGiftDailyStatsByBook')->dailyAt('01:05');
        $schedule->command('BookGiftDailyStatsByGift')->dailyAt('01:10');

        $schedule->command('compensateForChannels')->everyMinute();

        //内外部派单按数据统计数据
        $schedule->command('sendOrder_book_uv_register_stat')->dailyAt('7:00');

        //掌中云新增站点信息采集
        $schedule->command('check_site_status')->dailyAt('6:00');
        //掌读新增站点信息采集
        $schedule->command('check_zhang_du_site_status')->dailyAt('6:00');

        //阅读页面PV 和  UV 的记录
        $schedule->command('channel_reader_visit_stats')->dailyAt('8:00');

        //更新user_pay表
        $schedule->command('userPayUpdateTask')->dailyAt('03:00');
    }
}
