GenerateForceDayStat.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sogndb
  5. * Date: 2018/02/05
  6. * Time: 下午5:26
  7. */
  8. namespace App\Console\Commands\SendOrder;
  9. use App\Modules\SendOrder\Services\SendOrderForceDayStatService;
  10. use App\Modules\SendOrder\Services\SendOrderService;
  11. use Illuminate\Console\Command;
  12. use Log;
  13. use DB;
  14. class GenerateForceDayStat extends Command
  15. {
  16. /**
  17. * 执行命令 php artisan send_order_generate_force_day_stat
  18. *
  19. * The name and signature of the console command.
  20. *
  21. * @var string
  22. */
  23. protected $signature = 'send_order:generate_force_day_stat';
  24. /**
  25. * The console command description.
  26. *
  27. * @var string
  28. */
  29. protected $description = '每日图书派单数据生成';
  30. /**
  31. * Execute the console command.
  32. *
  33. * @return mixed
  34. */
  35. public function handle()
  36. {
  37. ini_set('memory_limit', '1280M');
  38. print_r("======每日图书派单数据生成 【任务执行开始】=====" . date("y-m-d H:i:s" . "\n"));
  39. Log::info("======每日图书派单数据生成 【任务执行开始】=====" . date("y-m-d H:i:s" . "\n"));
  40. $date = date("Y-m-d", strtotime(' -1 day'));
  41. try{
  42. SendOrderForceDayStatService::generateForceDayStat($date);
  43. }catch (\Exception $e){
  44. Log::info("======每日图书派单数据生成 =====".$e . date("y-m-d H:i:s" . "\n"));
  45. };
  46. Log::info("======每日图书派单数据生成 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
  47. print_r("======每日图书派单数据生成 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
  48. $i=1;
  49. $date = date("Y-m-d", strtotime(' -' . $i . ' day'));
  50. print_r("======每日男女频充值数据 【任务执行开始】=====" . date("y-m-d H:i:s" . "\n"));
  51. Log::info("======每日男女频充值数据 【任务执行开始】=====" . date("y-m-d H:i:s" . "\n"));
  52. //开始生成男女频充值数据
  53. $end_order_stats = DB::table('send_orders_force_day_stats')
  54. ->join('books','send_orders_force_day_stats.bid','=','books.id')
  55. ->join('book_categories','book_categories.id','=','books.category_id')
  56. ->where('send_orders_force_day_stats.date',$date)
  57. ->select([DB::raw('sum(send_orders_force_day_stats.recharge_amount) as total_recharge'),'pid'])
  58. ->groupBy('book_categories.pid')
  59. ->get();
  60. $male_recharge=$female_recharge=0;
  61. foreach ($end_order_stats as $end_order_stat){
  62. if($end_order_stat->pid==1) $male_recharge = $end_order_stat->total_recharge;
  63. if($end_order_stat->pid==2) $female_recharge = $end_order_stat->total_recharge;
  64. }
  65. $insert_data = compact('male_recharge','female_recharge');
  66. $insert_data['date'] = $date;
  67. $insert_data['month'] = date('Y-m',strtotime(' -'.$i.' day'));
  68. $insert_data['created_at']=date('Y-m-d H:i:s');
  69. $insert_data['updated_at']=date('Y-m-d H:i:s');
  70. DB::table('order_gender_stats')->insert($insert_data);
  71. Log::info("======每日男女频充值数据 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
  72. print_r("======每日男女频充值数据 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
  73. print_r("======书籍数据每日统计 【任务执行开始】=====" . date("y-m-d H:i:s" . "\n"));
  74. Log::info("======书籍数据每日统计 【任务执行开始】=====" . date("y-m-d H:i:s" . "\n"));
  75. $data = SendOrderForceDayStatService::getSendOrdersDayStatsByBid($date);
  76. $end_date = date('Y-m-d', strtotime($date) + 86400);
  77. $send_num_data = SendOrderService::getBookdSendNum($date, $end_date);
  78. $to_insert = json_decode(json_encode($data), true);
  79. $once_data = [];
  80. $once_num = 500;
  81. foreach ($to_insert as $_item) {
  82. $real_send_order_num = isset($send_num_data[$_item['bid']]) ? $send_num_data[$_item['bid']] : 0;
  83. $_item['real_send_order_num'] = $real_send_order_num;
  84. $once_data[] = $_item;
  85. if (count($once_data) >= $once_num) {
  86. DB::table('book_promotion_day_stats')->insert($once_data);
  87. $once_data = [];
  88. }
  89. }
  90. $once_data && DB::table('book_promotion_day_stats')->insert($once_data);
  91. Log::info("======书籍数据每日统计 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
  92. print_r("======书籍数据每日统计 【任务执行结束】=====" . date("y-m-d H:i:s" . "\n"));
  93. }
  94. }