小说推广数据系统

FansDataService.php 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Services;
  3. use App\Log;
  4. use App\Services\HttpService;
  5. class FansDataService
  6. {
  7. public static function fansDataCube($userAppId, $startTime, $endTime, $channelId)
  8. {
  9. # 获取公众号AccessToken
  10. $accessToken = ZZYService::getAccessToken($channelId);
  11. if(empty($accessToken)) {
  12. Log::logError('授权方令牌获取失败', ['channel_id'=>$channelId], 'FansDataAnalysis');
  13. return false;
  14. }
  15. # 获取粉丝增减量数据
  16. $userSummary = self::getUserSummary($startTime, $endTime, $accessToken, $userAppId);
  17. # 获取粉丝总量数据
  18. $userCumulate = self::getUserCumulate($startTime, $endTime, $accessToken, $userAppId);
  19. // Log::logInfo('总量数据', $userCumulate, 'userData1016');
  20. try{
  21. $fansStatistics = [];
  22. $userCumulateData = isset($userCumulate['list']) ? $userCumulate['list'] : [];
  23. $userSummaryData = isset($userSummary['list']) ? $userSummary['list'] : [];
  24. $data = [];
  25. foreach ($userCumulateData as $key=>$val) {
  26. $fansStatistics['app_id'] = $userAppId;
  27. $fansStatistics['ref_date'] = $val['ref_date'];
  28. $fansStatistics['cumulate_user'] = $val['cumulate_user'];
  29. $fansStatistics['new_user'] = 0;
  30. $fansStatistics['cancel_user'] = 0;
  31. foreach ($userSummaryData as $index=>$item) {
  32. if($item['ref_date'] == $val['ref_date']) {
  33. $fansStatistics['new_user'] += $item['new_user'];
  34. $fansStatistics['cancel_user'] += $item['cancel_user'];
  35. }
  36. }
  37. $fansStatistics['net_increase'] = $fansStatistics['new_user'] - $fansStatistics['cancel_user'];
  38. $fansStatistics['cancel_percent'] = $fansStatistics['cumulate_user'] > 0 ?
  39. round($fansStatistics['cancel_user'] / ($fansStatistics['cumulate_user'] + $fansStatistics['new_user']), 4) : 0;
  40. $data[$key] = $fansStatistics;
  41. }
  42. } catch (\Exception $e) {
  43. Log::logError('获取粉丝增减量API响应异常', $e->getMessage(), 'GetUserSummary');
  44. return [];
  45. }
  46. return $data;
  47. }
  48. /*
  49. * 获取粉丝增减量
  50. * */
  51. public static function getUserSummary($startTime, $endTime, $accessToken, $userAppId='')
  52. {
  53. $fansSummaryUrl = config('data.fans_summary'); // 获取粉丝增减量URL
  54. $fansSummaryUrl .= $accessToken;
  55. $postData = [
  56. 'begin_date' => $startTime,
  57. 'end_date' => $endTime,
  58. ];
  59. # 获取数据
  60. $response = HttpService::httpPost($fansSummaryUrl, json_encode($postData), true);
  61. if(!$response) {
  62. Log::logError('获取粉丝增减量API请求失败', [], 'GetUserSummary');
  63. return false;
  64. }
  65. $responseData = json_decode($response, true);
  66. if(isset($responseData['errcode']) && $responseData['errcode'] > 0) {
  67. Log::logError('获取粉丝增减量API响应异常, AppId为:'.$userAppId. '('. $startTime. '~'. $endTime.')【'.$fansSummaryUrl.'】', $responseData, 'GetUserSummary');
  68. return false;
  69. }
  70. return $responseData;
  71. }
  72. /*
  73. * 获取粉丝总量
  74. * */
  75. public static function getUserCumulate($startTime, $endTime, $accessToken, $userAppId='')
  76. {
  77. $fansCumulateUrl = config('data.fans_cumulate'); // 获取粉丝总量URL
  78. $fansCumulateUrl .= $accessToken;
  79. $postData = [
  80. 'begin_date' => $startTime,
  81. 'end_date' => $endTime,
  82. ];
  83. # 获取数据
  84. $response = HttpService::httpPost($fansCumulateUrl, json_encode($postData), true);
  85. if(!$response) {
  86. Log::logError('获取粉丝总量API请求失败', [], 'GetUserCumulate');
  87. return false;
  88. }
  89. $responseData = json_decode($response, true);
  90. if(isset($responseData['errcode']) && $responseData['errcode'] > 0) {
  91. Log::logError('获取粉丝总量API响应异常,AppId:' . $userAppId .'('. $startTime .')', $responseData, 'GetUserCumulate');
  92. return false;
  93. }
  94. return $responseData;
  95. }
  96. }