小说推广数据系统

SunnyWxFansData.php 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Log;
  4. use App\Models\SunnyTask;
  5. use App\Services\HttpService;
  6. use App\Services\SunService;
  7. use Illuminate\Console\Command;
  8. class SunnyWxFansData extends Command
  9. {
  10. protected $signature = 'SunnyWxFansData {year?}';
  11. protected $description = '阳光平台每日粉丝变化数据获取';
  12. protected $year;
  13. public function __construct()
  14. {
  15. parent::__construct();
  16. }
  17. public function handle()
  18. {
  19. \DB::connection()->disableQueryLog();
  20. $this->year = $this->argument('year') ? $this->argument('year') : null;
  21. $this->info(date('m-d H:i:s') . ' 开始整理');
  22. $this->getFansData();
  23. $this->info(date('m-d H:i:s') . ' 整理结束');
  24. }
  25. public function getFansData()
  26. {
  27. if(is_null($this->year)) {
  28. $date = date('Y-m-d', strtotime('-1 days'));
  29. $this->getInfo($date);
  30. } else {
  31. for ($month = 1; $month <= 12; $month++) {
  32. $days = getDaysByMonth($this->year, $month);
  33. foreach ($days as $day) {
  34. if($day > date("Y-m-d"))
  35. return false;
  36. sleep(2);
  37. $this->getInfo($day);
  38. }
  39. }
  40. }
  41. return true;
  42. }
  43. public function getInfo($date)
  44. {
  45. try {
  46. $this->info($date);
  47. $sTime = $date . ' 00:00:00';
  48. $eTime = (($date . ' 23:59:59') > date('Y-m-d H:i:s')) ? date('Y-m-d H:i:s') : $date . ' 23:59:59';
  49. $params = [
  50. 'vip_id' => SunService::VIP_ID,
  51. 'start_time' => $sTime,
  52. 'end_time' => $eTime,
  53. ];
  54. # 签名
  55. $params = SunService::sign($params);
  56. $requestUri = SunService::API_BASE_URL . SunService::FANS_DATA;
  57. # 获取响应数据
  58. $response = HttpService::httpPost($requestUri, $params);
  59. if($response === false)
  60. Log::logError('阳光粉丝数据获取失败' . $requestUri, $params, 'SunWxFans');
  61. $responseData = json_decode($response, true);
  62. if(isset($responseData['error_code']) && $responseData['error_code']==0) {
  63. # 记录任务信息
  64. $taskId = isset($responseData['data']['task_id']) ? $responseData['data']['task_id'] : null;
  65. if(empty($taskId)) {
  66. Log::logError('粉丝每日数据获取任务失败', $responseData, 'SunWxFans');
  67. $this->info('获取粉丝每日数据任务设置失败');
  68. return false;
  69. }
  70. $result = SunnyTask::setTask($taskId, SunnyTask::FANS_DATA_TYPE);
  71. if(!$result) {
  72. Log::logError('粉丝每日数据任务创建失败', [
  73. 'task_id' => $taskId,
  74. 'type' => SunnyTask::ORDER_TYPE
  75. ], 'SunWxFans');
  76. return false;
  77. }
  78. } else {
  79. Log::logError('粉丝每日数据任务获取失败', $responseData, 'SunWxFans');
  80. return false;
  81. }
  82. } catch (\Exception $e) {
  83. Log::logError('阳光粉丝每日数据获取发生异常', [
  84. 'msg' => $e->getMessage(),
  85. 'line' => $e->getLine(),
  86. 'date' => $date
  87. ], 'SunWxFans');
  88. return false;
  89. }
  90. return true;
  91. }
  92. }