action_type){ case MqConstants::ROUTING_KEY_COLLECT_CHANNEL_PAY: //渠道付费用户统计 $this->transferCollectUserSub($dotObject); break; case MqConstants::ROUTING_KEY_SUBSCRIBE_REFERER: //主服务号关注带推广ID $this->transferCollectReferralSub($dotObject); break; case MqConstants::ROUTING_KEY_UNSUBSCRIBE_REFERRAL: $this->transferCollectReferralSub($dotObject); break; case MqConstants::ROUTING_KEY_SUBSCRIBE: //主服务号关注无推广ID $this->transferCollectUserSub($dotObject); break; case MqConstants::ROUTING_KEY_UNSUBSCRIBE: //主服务号取消关注 $this->transferCollectUserSub($dotObject); break; case MqConstants::ROUTING_KEY_SUBSCRIBE_OBSCURE_REFERER: //模糊关注带推广ID //$this->transferCollectReferralPv($dotObject); $this->transferCollectReferralSub($dotObject); break; case MqConstants::ROUTING_KEY_SUBSCRIBE_OBSCURE: //模糊关注无推广ID $this->transferCollectUserSub($dotObject); break; case MqConstants::ROUTING_KEY_REFERRAL_UV: //推广链接uv $this->transferCollectReferralPv($dotObject); break; case MqConstants::ROUTING_KEY_APP_REGISTER: //APP用户注册 $this->transferCollectAppRegister($dotObject); break; case MqConstants::ROUTING_KEY_APP_BIND: //APP用户绑定手机号 $this->transferCollectAppRegister($dotObject); break; case MqConstants::ROUTING_KEY_APP_BIND_CODE: //APP用户绑定动态码 $this->transferCollectAppRegister($dotObject); break; case MqConstants::ROUTING_KEY_APP_GUIDE_UV: //app 引导位uv统计 $this->transferCollectAppGuideUv($dotObject); break; } } catch (\Exception $exception){ LogService::error(' handleTask error '. $exception->getMessage()); } Log::info('handleTask:: END'); } /** * 用户关注 * @param DotObject $dotObject array */ public function transferCollectUserSub(DotObject $dotObject) { $mq = MqService::instance()->getDotMqInstance(); $exchangname = self::exchangename; $data = $this->orgDataCollectUserSub($dotObject); $mq->transferExchange($data, $exchangname, MqConstants::COLLECT_USER_SUBSCRIBE, 'topic'); } /** * 推广连接 关注 * @param DotObject $dotObject array */ public function transferCollectReferralSub(DotObject $dotObject) { $mq = MqService::instance()->getDotMqInstance(); $exchangname = self::exchangename; $data = $this->orgDataCollectReferralSub($dotObject); $mq->transferExchange($data, $exchangname, MqConstants::COLLECT_REFERRAL_SUBSCRIBE, 'topic'); } /** * * 推广连接 pv * @param DotObject $dotObject array */ public function transferCollectReferralPv(DotObject $dotObject) { $mq = MqService::instance()->getDotMqInstance(); $exchangname = self::exchangename; $data = $this->orgDataCollectReferralPv($dotObject); $mq->transferExchange($data, $exchangname, MqConstants::COLLECT_REFERRAL_PV, 'topic'); } /** * APP用户注册 pv * @param DotObject $dotObject array */ public function transferCollectAppRegister(DotObject $dotObject) { $mq = MqService::instance()->getDotMqInstance(); $exchangname = self::exchangename; $data = $this->orgDataCollectAppUserRegister($dotObject); $mq->transferExchange($data, $exchangname, MqConstants::COLLECT_USER_APP_REGISTER, 'topic'); } /** * APP 引导位uv统计 * @param DotObject $dotObject array */ public function transferCollectAppGuideUv(DotObject $dotObject) { $mq = MqService::instance()->getDotMqInstance(); $exchangname = self::exchangename; $data = $this->orgDataCollectAppGuideUv($dotObject); $mq->transferExchange($data, $exchangname, MqConstants::COLLECT_USER_APP_GUIDE_UV, 'topic'); } /** * 构建:统计.用户.关注 数据 * @param DotObject $dotObject array * @return array */ public function orgDataCollectUserSub(DotObject $dotObject) { if ($dotObject->type == MqConstants::MSG_TYPE_FOLLOW) { $data = [ 'admin_id' => $dotObject->channel_id, 'user_id' => $dotObject->user_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; } elseif ($dotObject->type == MqConstants::MSG_TYPE_UNFOLLOW) { $data = [ 'admin_id' => $dotObject->channel_id, 'user_id' => $dotObject->user_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; } elseif ($dotObject->type == MqConstants::MSG_TYPE_INCREASE) { $data = [ 'admin_id' => $dotObject->channel_id, 'sex' => $dotObject->sex, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; } elseif ($dotObject->type == MqConstants::MSG_TYPE_GUIDE_FOLLOW) { $data = [ 'admin_id' => $dotObject->channel_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; } elseif ($dotObject->type == MqConstants::MSG_TYPE_SEX) { $data = [ 'admin_id' => $dotObject->channel_id, 'sex' => $dotObject->sex, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; }elseif ($dotObject->type == MqConstants::MSG_TYPE_PAY){ $data = [ 'admin_id' => $dotObject->channel_id, 'sex' => $dotObject->sex, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; } else if ($dotObject->type == MqConstants::MSG_TYPE_NEW_USER_RECHARGE) { $data = [ 'admin_id' => $dotObject->channel_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0, 'user_id' => $dotObject->user_id, 'money' => $dotObject->money, ]; } else { $data = [ 'admin_id' => $dotObject->channel_id, 'sex' => $dotObject->sex, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time(), 'business_line' => $dotObject->business_line ?? 0 ]; } return $data; } /** * 构建:统计.推广.关注 数据 * @param DotObject $dotObject array * @return array */ public function orgDataCollectReferralSub(DotObject $dotObject) { if($dotObject->type == MqConstants::MSG_TYPE_FOLLOW){ $data = [ 'referral_id' => $dotObject->referral_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time() ]; }elseif($dotObject->type == MqConstants::MSG_TYPE_UNFOLLOW){ $data = [ 'referral_id' => $dotObject->referral_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time() ]; }else{ $data = [ 'referral_id' => $dotObject->referral_id, 'type' => $dotObject->type, 'event_time' => $dotObject->event_time ?? time() ]; } return $data; } /** * 构建:统计.推广.pv 数据 * @param DotObject $dotObject array * @return array */ public function orgDataCollectReferralPv(DotObject $dotObject) { $data = [ 'user_id' => $dotObject->user_id, 'referral_id' => $dotObject->referral_id, 'event_time' => $dotObject->event_time ?? time() ]; return $data; } /** * 构建:统计.app.user 数据 * @param DotObject $dotObject array * @return array */ public function orgDataCollectAppUserRegister(DotObject $dotObject) { $data = [ 'user_id' => $dotObject->user_id, 'admin_id' => $dotObject->channel_id, 'sex' => $dotObject->sex, 'type' => $dotObject->type, 'action_type' => $dotObject->action_type, 'business_line' => $dotObject->business_line, 'event_time' => $dotObject->event_time ?? time() ]; return $data; } /** * 构建:统计.app.guide UV 数据 * @param DotObject $dotObject array * @return array */ public function orgDataCollectAppGuideUv(DotObject $dotObject) { $data = [ 'user_id' => $dotObject->user_id, 'admin_id' => $dotObject->channel_id, 'action_type' => $dotObject->action_type, 'guide_idx' => $dotObject->guide_idx, 'guide_op_type' => $dotObject->guide_op_type, 'event_time' => $dotObject->event_time ?? time() ]; return $data; } public function saveTrackInfo($url, $zone, $adid, $book_id, $track_ids = []) { $parseUrl = parse_url($url); $user_id = UserService::instance()->getUserInfo()->id; // $cache_key = $user_id . '_' . $book_id; $cache_key = CacheConstants::getTrackCacheKey($user_id, $book_id); if (array_key_exists('query', $parseUrl) && $parseUrl['query']) { $query = parse_query($parseUrl['query']); } else { $query = []; } $query = array_merge($query, $track_ids); $data = [ 'book_id' => $book_id, 'page' => $parseUrl['path'], 'map' => $query, 'zone' => $zone, 'adid' => $adid, ]; $expire = CacheConstants::getTrackCacheTime(); Redis::instance()->set($cache_key, json_encode($data), $expire); return json($data); } public function getTrackCache($user_id, $book_id) { $newCacheKey = CacheConstants::getTrackCacheKey($user_id, $book_id); $cache = Redis::instance()->get($newCacheKey); return $cache; } }