BusinessChannelStatTask.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/26
  6. * Time: 下午3:29
  7. */
  8. namespace App\Console\Commands;
  9. use App\Modules\Trade\Models\OrderDayStat;
  10. use App\Modules\Trade\Models\OrderStat;
  11. use App\Modules\Channel\Services\BusinessChannelDayStatService;
  12. use App\Modules\Channel\Services\BusinessChannelStatService;
  13. use App\Modules\Channel\Services\ChannelOrdersService;
  14. use App\Modules\Channel\Services\ChannelService;
  15. use App\Modules\OfficialAccount\Services\ForceSubscribeService;
  16. use App\Modules\SendOrder\Services\SendOrderService;
  17. use App\Modules\Statistic\Services\WapVisitStatService;
  18. use App\Modules\User\Services\UserService;
  19. use Log;
  20. use Illuminate\Console\Command;
  21. class BusinessChannelStatTask extends Command
  22. {
  23. /**
  24. * 执行命令 php artisan BusinessChannelStat_task
  25. *
  26. * The name and signature of the console command.
  27. *
  28. * @var string
  29. */
  30. protected $signature = 'BusinessChannelStat_task';
  31. /**
  32. * The console command description.
  33. *
  34. * @var string
  35. */
  36. protected $description = '每日商务渠道数据生成';
  37. /**
  38. * Execute the console command.
  39. *
  40. * @return mixed
  41. */
  42. public function handle()
  43. {
  44. print_r("======每日生商务渠道数据生成 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
  45. Log::info("======每日商务渠道数据生成 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
  46. $dateNow = date("Y-m-d");
  47. // $dateNow = "2018-01-30";
  48. $yesterStartDay = date('Y-m-d', strtotime($dateNow." -1 day"))." 00:00:00";
  49. $yesterEndDay = date('Y-m-d', strtotime($dateNow))." 00:00:00";
  50. $last_monthStartDay = date('Y-m', strtotime($dateNow." -1 month"))."-01 00:00:00";
  51. $current_monthStartDay = date('Y-m', strtotime($dateNow))."-01 00:00:00";
  52. $beginLastweek=date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y')));
  53. $endLastweek=date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y')));
  54. $current_week_start = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y")));
  55. $current_week_end = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y")));
  56. $channels = ChannelService::getAllChannels();
  57. foreach ($channels as $channel) {
  58. $channel_data = OrderStat::getByChannelId($channel['id']);
  59. $channel_day_data = OrderDayStat::getYesterdaySumByChannelId($channel['id']);
  60. $business_stat = BusinessChannelStatService::getByChannelID($channel->id);
  61. if(!$channel_data || !$channel_day_data){
  62. Log::info($channel['id']."日数据未生成".date("y-m-d H:i:s"."\n"));
  63. continue;
  64. }
  65. $userRegisterNum = isset($channel_day_data->register_user_num)?$channel_day_data->register_user_num:0;//昨日注册
  66. $sendOrderDataNum = isset($channel_day_data->send_order_num)?$channel_day_data->send_order_num:0;//昨日派单创建数
  67. try{
  68. $paramsA = [
  69. 'distribution_channel_id' => $channel['id'],
  70. 'date' => $yesterStartDay,
  71. 'register_user_num' => $userRegisterNum,
  72. 'send_order_num' => $sendOrderDataNum,
  73. 'is_login_yesterday'=>UserService::judgeUserYesterdayLogin($channel['id'],$yesterStartDay,$yesterEndDay)
  74. ];
  75. BusinessChannelDayStatService::createBusinessChannelDayStat($paramsA);
  76. }catch (\Exception $exception){
  77. \Log::error($exception->getMessage());
  78. }
  79. $yesterday_register_user_num = $userRegisterNum;
  80. $total_register_user_num = $channel_data->register_user_num;
  81. $total_send_order_num = $channel_data->send_order_num;
  82. //当月新增站点充值
  83. $current_month_new_channel_recharge = strtotime($channel->created_at) >= strtotime(date('Y-m-01')) ? $channel_data->current_month_recharge_amount : 0;
  84. $current_month_channel_recharge = $channel_data->current_month_recharge_amount;//当月总充值
  85. $channel_total_recharge=$channel_data->total_recharge_amount;//历史总充值
  86. $paramsB = [
  87. 'yesterday_register_user_num' => $yesterday_register_user_num,
  88. 'total_register_user_num' => $total_register_user_num,
  89. 'total_send_order_num' => $total_send_order_num,
  90. 'current_month_new_channels_recharge'=>$current_month_new_channel_recharge,
  91. 'current_month_channels_recharge'=>$current_month_channel_recharge,
  92. 'service_account_num' =>BusinessChannelStatService::getServiceAccountNum($channel['id']),
  93. 'last_week_login_days' =>0,//BusinessChannelStatService::getLoginDays($channel['id'],$beginLastweek,$endLastweek),
  94. 'current_week_login_days'=>0,//BusinessChannelStatService::getLoginDays($channel['id'],$current_week_start,$current_week_end),
  95. 'yesterday_create_orders'=>$sendOrderDataNum,
  96. 'is_login_yesterday'=>$paramsA['is_login_yesterday'],
  97. 'channel_total_recharge'=>$channel_total_recharge,
  98. ];
  99. if(date('d')=='01'){//月初第一天
  100. $paramsB['last_month_channels_recharge'] = $channel_data->last_month_recharge_amount;
  101. $paramsB['last_month_new_channel_recharge'] =$business_stat ? $business_stat->current_month_new_channels_recharge : 0;
  102. $paramsB['last_month_register_user_num'] = $business_stat ? $business_stat->current_month_register_user_num : 0;
  103. $paramsB['current_month_register_user_num'] = $userRegisterNum;
  104. }else{
  105. $paramsB['current_month_register_user_num'] = $business_stat ? $business_stat->current_month_register_user_num + $userRegisterNum : $userRegisterNum;
  106. }
  107. if(date('w')=='1'){//周一
  108. $paramsB['last_week_actual_send_orders'] = $business_stat ? $business_stat->current_week_actual_send_orders : 0;
  109. }else{
  110. $paramsB['current_week_actual_send_orders'] = SendOrderService::getPeriodActualSendOrdersNum($channel['id'], $current_week_start,$current_week_end);
  111. }
  112. BusinessChannelStatService::crateUpdate($channel['id'], $paramsB);
  113. }
  114. Log::info("======每日商务渠道数据生成 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
  115. print_r("======每日商务渠道数据生成 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
  116. }
  117. }