123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- namespace App\Services;
- use App\Log;
- use App\Services\HttpService;
- class FansDataService
- {
- public static function fansDataCube($userAppId, $startTime, $endTime, $channelId)
- {
- # 获取公众号AccessToken
- $accessToken = ZZYService::getAccessToken($channelId);
- if(empty($accessToken)) {
- Log::logError('授权方令牌获取失败', ['channel_id'=>$channelId], 'FansDataAnalysis');
- return false;
- }
- # 获取粉丝增减量数据
- $userSummary = self::getUserSummary($startTime, $endTime, $accessToken, $userAppId);
- # 获取粉丝总量数据
- $userCumulate = self::getUserCumulate($startTime, $endTime, $accessToken, $userAppId);
- // Log::logInfo('总量数据', $userCumulate, 'userData1016');
- try{
- $fansStatistics = [];
- $userCumulateData = isset($userCumulate['list']) ? $userCumulate['list'] : [];
- $userSummaryData = isset($userSummary['list']) ? $userSummary['list'] : [];
- $data = [];
- foreach ($userCumulateData as $key=>$val) {
- $fansStatistics['app_id'] = $userAppId;
- $fansStatistics['ref_date'] = $val['ref_date'];
- $fansStatistics['cumulate_user'] = $val['cumulate_user'];
- $fansStatistics['new_user'] = 0;
- $fansStatistics['cancel_user'] = 0;
- foreach ($userSummaryData as $index=>$item) {
- if($item['ref_date'] == $val['ref_date']) {
- $fansStatistics['new_user'] += $item['new_user'];
- $fansStatistics['cancel_user'] += $item['cancel_user'];
- }
- }
- $fansStatistics['net_increase'] = $fansStatistics['new_user'] - $fansStatistics['cancel_user'];
- $fansStatistics['cancel_percent'] = $fansStatistics['cumulate_user'] > 0 ?
- round($fansStatistics['cancel_user'] / ($fansStatistics['cumulate_user'] + $fansStatistics['new_user']), 4) : 0;
- $data[$key] = $fansStatistics;
- }
- } catch (\Exception $e) {
- Log::logError('获取粉丝增减量API响应异常', $e->getMessage(), 'GetUserSummary');
- return [];
- }
- return $data;
- }
- /*
- * 获取粉丝增减量
- * */
- public static function getUserSummary($startTime, $endTime, $accessToken, $userAppId='')
- {
- $fansSummaryUrl = config('data.fans_summary'); // 获取粉丝增减量URL
- $fansSummaryUrl .= $accessToken;
- $postData = [
- 'begin_date' => $startTime,
- 'end_date' => $endTime,
- ];
- # 获取数据
- $response = HttpService::httpPost($fansSummaryUrl, json_encode($postData), true);
- if(!$response) {
- Log::logError('获取粉丝增减量API请求失败', [], 'GetUserSummary');
- return false;
- }
- $responseData = json_decode($response, true);
- if(isset($responseData['errcode']) && $responseData['errcode'] > 0) {
- Log::logError('获取粉丝增减量API响应异常, AppId为:'.$userAppId. '('. $startTime. '~'. $endTime.')【'.$fansSummaryUrl.'】', $responseData, 'GetUserSummary');
- return false;
- }
- return $responseData;
- }
- /*
- * 获取粉丝总量
- * */
- public static function getUserCumulate($startTime, $endTime, $accessToken, $userAppId='')
- {
- $fansCumulateUrl = config('data.fans_cumulate'); // 获取粉丝总量URL
- $fansCumulateUrl .= $accessToken;
- $postData = [
- 'begin_date' => $startTime,
- 'end_date' => $endTime,
- ];
- # 获取数据
- $response = HttpService::httpPost($fansCumulateUrl, json_encode($postData), true);
- if(!$response) {
- Log::logError('获取粉丝总量API请求失败', [], 'GetUserCumulate');
- return false;
- }
- $responseData = json_decode($response, true);
- if(isset($responseData['errcode']) && $responseData['errcode'] > 0) {
- Log::logError('获取粉丝总量API响应异常,AppId:' . $userAppId .'('. $startTime .')', $responseData, 'GetUserCumulate');
- return false;
- }
- return $responseData;
- }
- }
|