小说推广数据系统

ZDWxAccount.php 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Log;
  4. use App\Models\Account;
  5. use App\Services\HttpService;
  6. use App\Services\ZDService;
  7. use Illuminate\Console\Command;
  8. class ZDWxAccount extends Command
  9. {
  10. protected $signature = 'ZDWxAccount';
  11. protected $description = '掌读授权账号信息获取';
  12. protected $page = 1;
  13. protected $perPage = 100;
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. }
  18. public function handle()
  19. {
  20. \DB::connection()->disableQueryLog();
  21. $this->getAccountData();
  22. }
  23. public function getAccountData()
  24. {
  25. do {
  26. $timestamps = time();
  27. $params = [
  28. 'vipid' => ZDService::VIP_ID,
  29. 'timestamp' => $timestamps,
  30. 'page' => $this->page
  31. ];
  32. $params['sign'] = ZDService::sign($timestamps);
  33. $requestUri = ZDService::API_BASE_URL . ZDService::CHANNEL_LIST . '?' . http_build_query($params);
  34. # 获取列表
  35. $response = HttpService::httpGet($requestUri);
  36. if($response === false)
  37. Log::logError('掌读公众账号数据获取失败' . $requestUri, $params, 'ZDAccountData');
  38. $responseData = json_decode($response, true);
  39. $pageCount = isset($responseData['data']['pageCount']) ? $responseData['data']['pageCount'] : 0;
  40. $this->info('共有数据'.$pageCount.'页');
  41. $total = 0;
  42. if($pageCount > 0) {
  43. $data = isset($responseData['data']['list']) ? $responseData['data']['list'] : [];
  44. $platformId = ZDService::PLATFORM_ID;
  45. $total = count($data);
  46. foreach ($data as $item) {
  47. $insertData = [
  48. 'platform_id' => $platformId,
  49. 'channel_id' => $item['channelid'],
  50. 'site_domain' => null,
  51. 'username' => null,
  52. 'name' => $item['nickname'],
  53. 'app_id' => $item['wxappid'],
  54. 'raw_id' => $item['raw_id'],
  55. 'nickname' => $item['nickname'],
  56. 'platform_created_at' => date('Y-m-d H:i:s', $item['create_time'])
  57. ];
  58. # 创建或更新
  59. Account::updateOrCreate(
  60. ['platform_id'=>$platformId, 'name'=>$item['nickname']], $insertData
  61. );
  62. }
  63. $this->page++;
  64. } else {
  65. Log::logError('掌读账号信息获取失败', (array)$responseData, 'ZDAccountData');
  66. }
  67. $this->info('本次共同步账号'.$total.'个');
  68. } while($pageCount >= $this->page && $pageCount);
  69. }
  70. }