<?php

namespace App\Console;

use Illuminate\Console\Command;
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\UpdateBookClickCount::class,
        Commands\SignReward::class,
        Commands\NoPayRemind::class,
        Commands\Trade\GenerateOrderDayStat::class,
        Commands\Trade\GenerateOrderStat::class,
        Commands\SendServiceMsg::class,
        Commands\FailOrderAlertV2::class,
        Commands\BookAfterSpider::class,
        Commands\ChangePay::class,
        Commands\WechatCustumerPushStatistical::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\AsyncUserSign::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\MaintainTempForceSubscribeUser::class,
        Commands\Tool\MaintainUserSign::class,
        Commands\Tool\TitleImageStatistics::class,
        Commands\Tool\ThirdPlatomUserTranser::class,
        Commands\Tool\MaintainMenus::class,

        Commands\Tool\createTable::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\WapVisitStat::class,
        Commands\AutoSendTrusteeShipCustomerMsg::class,
        Commands\CustomMsg\CustomMsgStrategyAutoSend::class,
        Commands\BookAttr::class,
        Commands\OfficialAccountBillsTask::class,

        Commands\SendOrder\SendStatsEmail::class,
        Commands\ProductStats\SendMonthStatsEmail::class,
        Commands\ProductStats\DailyProductionStats::class,
        Commands\ProductStats\DailyProductionStats::class,
        Commands\ProductStats\SendDailyNewProductionStats::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\fansMaximumNotice::class,
        Commands\BookGiftStats\BookGiftStatsByBook::class,
        Commands\BookGiftStats\BookGiftStatsByGift::class,
        Commands\WholeBookOrderData::class,

        Commands\AutoWithdrawCash::class,

        Commands\ChannelReaderVisitStats::class,

        Commands\ChannelReaderVisitStats::class,
        Commands\UserPayUpdateTask::class,
        Commands\CheckZsySiteStatus::class,

        Commands\UpdateUserActualSubscribeNum::class,
        Commands\ReadRecordPersistence::class,

        Commands\SmartPush\UpdateMediaPushRechargeInfo::class,
        Commands\SmartPush\UpdateRecommandBooks::class,
        Commands\ZsyAlert::class,

        Commands\ActiveUser::class,
        Commands\UserRegisterDayStat::class,

        Commands\SendOrder\GenerateDayByBooksStat::class,

        Commands\OfficialAccountStat\OfficialAccountForbiddenStatus::class,
        Commands\LatestCustomerMsg::class,
        Commands\BookSearchInfoStat::class,

        Commands\ActivitiesStats::class,

        Commands\SuperiorBooks\UpdateHighQualityBooks::class,
        Commands\userProperty::class,
        Commands\Channel\SiteTitle::class,

        Commands\SendOrder\UpdateSendOrderPreSendDate::class, //派单预计发送时间
        Commands\Book\BookRechargePredict::class, //书籍充值位置预测
        Commands\Book\NewBookTestData::class, //新书测试数据填充
        Commands\Book\NewBookTestUserDetail::class, //新书测试用户数据记录


        //派单pvuv
        Commands\SendOrder\SendOrderSendOrderPvUv::class,
        Commands\Trade\RecalcOrderStatistic::class,
        Commands\User\SetUserNovelPorperty::class,
        Commands\User\CreateDropTable::class,
        Commands\SendOrder\StatSendOrderByDate::class,
        Commands\Trade\GenNewUserChargeDayStatistic::class,
        Commands\Trade\NewUserStatistic::class,

        Commands\Book\ChapterRetentionRate::class,

        //每日生成派单按用户注册统计
        Commands\SendOrder\GenerateUserRegistStat::class,

        //限免统计
        Commands\Book\FreeBookStats::class,

        //用户最近订阅的书
        Commands\User\UserLastChapterOrder::class,
        //bookChargeStats 图书充值统计
        Commands\Book\bookChargeStats::class,
        
        // temp
        Commands\Temp\NewBookTestType::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('GenerateUserRegistStat')->dailyAt('04:20');

        $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("02:30");

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


        //图书预充位置计算
        $schedule->command('book_recharge_predict')->dailyAt('03:01');

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

        //检查公众号模板
        $schedule->command('CheckOfficialAccountTemplate')->dailyAt("04:25");

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

        //订单预警
//         $schedule->command('foav2')->everyMinute();

        //异步签到插入
        $schedule->command('AsyncUserSign')->everyMinute();

        //推送统计
        $schedule->command('pay:wcps')->dailyAt('02:30');
        //托管推送
        $schedule->command('pay:wcps --auto')->dailyAt('05:20');

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

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

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

        //更新粉丝数
        $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('auth_send_custom_msg_by_strategy')->hourlyAt(4);

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


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

        //统计每周派单发送邮件
        $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:05');
        $schedule->command('SendDailyNewProductsStats')->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')->everyFiveMinutes();

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

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


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

        //强关中间表每日维护
        $schedule->command('MaintainTempForceSubscribeUser')->dailyAt('03:02');
        //签到中间表每日维护
        $schedule->command('MaintainUserSign')->dailyAt('03:04');
        //阈值提醒
        $schedule->command('addFansMaximumNotice')->hourly();

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

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

        //封号
//         $schedule->command('check_official_account_forbidden_status')->dailyAt('7:03');


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

        //更新服务号实际新增用户数
        $schedule->command('updateUserSubNum')->dailyAt('8:10');

        //完整 阅读记录
        $schedule->command('ReadRecordPersistence')->everyFiveMinutes();



        //注册用户地区信息统计
        $schedule->command('user_register_day_stat')->dailyAt('05:04');

        //最近3天的客服消息
        $schedule->command('LatestCustomerMsg')->everyTenMinutes();

        //搜素关键字统计
        $schedule->command('book_search_stat')->weekly()->fridays()->at('05:02');

        // 创建表 
        $schedule->command('createtable')->monthlyOn(15);

        //更新优质书库
        $schedule->command('update_high_quality_books')->everyTenMinutes();
        //用户精致
        $schedule->command('userProperty')->dailyAt("01:18");

        //设置站点名称
        $schedule->command('SetSiteTitle')->everyFifteenMinutes();

        $schedule->command('new_book_test_data')->everyMinute(); //更新新书测试数据
        $schedule->command('new_book_test_user_detail')->everyFifteenMinutes(); //更新新书测试用户数据


        //派单pvuv
        $schedule->command('SendOrder:SendOrderSendOrderPvUv')->everyFiveMinutes();
        $schedule->command('SendOrder:SendOrderSendOrderPvUv --type=history')->dailyAt('00:09');

        $schedule->command('create_drop_table')->dailyAt('00:01');
//         $schedule->command('set_user_novel_property', ['--is_init' => 0])->hourlyAt(13);
        //腾讯商品库
//         $schedule->command('gen_ams_xml_file')->hourly()->between('6:00', '21:00');

        $schedule->command('temp:cal_send_order_time')->monthlyOn(3, '08:00');
        $schedule->command('new_user_charge_statistic', ['--begin_date' => '', '--end_date' => '', '--date' => ''])->dailyAt('03:10');

        /**
         * 书籍留存率
         */
        $schedule->command('calc_chapter_retention_rate', ['--is_all' => 1])->dailyAt('00:07');

        /**
         * 派单充值数据统计
         */
        $schedule->command('send_order_recharge_stat')->dailyAt('01:00');

        $schedule->command('book:FreeBookStats')->dailyAt('02:13');

        $schedule->command('get_new_book_test_type')->hourlyAt(43);
        //用户最近订阅
        $schedule->command('User:UserLastChapterOrder')->cron('*/6 * * * * ');


        //检查切张错误
        $schedule->command('check_cid_error')->dailyAt('04:00');
        //图书充值统计
        $schedule->command('bookChargeStats')->dailyAt('01:33');
        //站点配置
        $schedule->command('Tool:ConfigSetting')->dailyAt('11:33');

        $schedule->command('cp_agent_book_day_stat')->dailyAt('01:27');
        $schedule->command('cp_agent_day_stat')->dailyAt('01:44');
        $schedule->command('new_user_charge_day_statistic')->dailyAt('05:44');


    }
}