zz 6 gadi atpakaļ
vecāks
revīzija
24b11fb13a

+ 13 - 2
app/Http/Controllers/Wap/Book/ChapterController.php

@@ -15,6 +15,7 @@ use App\Modules\Statistic\Services\WapVisitStatService;
 use App\Modules\Subscribe\Services\OrderService;
 use App\Modules\User\Services\ForceSubscribeUserIService;
 use App\Modules\User\Services\ReadRecordStatsService;
+use App\Modules\User\Services\UserService;
 use App\Modules\YunQi\Services\BookUserService;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Wap\BaseController;
@@ -1757,7 +1758,7 @@ class ChapterController extends BaseController
         if(!$ad_status){
             return ;
         }
-        if(!in_array($this->distribution_channel_id,[5,8,123,146,148,155,160,196,202,211,255,256,266,271,273,318,691,695,722,4025,4053,4174,4236,4237,4241,4334,4364,4426,4427,4487,4488,4593,4742,4889,4891,5204])){
+        if(!in_array($this->distribution_channel_id,[2,5,8,123,146,148,155,160,196,202,211,255,256,266,271,273,318,691,695,722,4025,4053,4174,4236,4237,4241,4334,4364,4426,4427,4487,4488,4593,4742,4889,4891,5204])){
             return ;
         }
         //按章付费才显示
@@ -1765,7 +1766,17 @@ class ChapterController extends BaseController
             return ;
         }
         //用户是否在广告样本中
-        if(!$this->isUserInAdSample()) return ;
+        //if(!$this->isUserInAdSample()) return ;
+        $is_ad_user = Cookie::get('cpc_ad_status');
+        if(!$is_ad_user){
+            $ad_user_status = UserService::isCpcUser($this->uid);
+            if($ad_user_status)
+                $is_ad_user = 'show';
+            else
+                $is_ad_user = 'unshow';
+            Cookie::queue('cpc_ad_status', $is_ad_user, 3600);
+        }
+        if(!$is_ad_user || $is_ad_user != 'show') return ;
         $cid = 0;
         if($this->chapter && $this->chapter->next_cid){
             $cid =  $this->chapter->next_cid;

+ 12 - 0
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -152,6 +152,8 @@ class WelcomeController extends BaseController
                   }
               }
         }
+        //CPC广告
+        $this->cpcAd();
         $options = json_encode([
             'distribution_channel_id' => (int)$this->distribution_channel_id,
             'send_order_id' => $send_order_id,
@@ -523,6 +525,16 @@ class WelcomeController extends BaseController
         return ['appad'=>false,'appad_banner'=>'','appad_url'=>''];
     }
 
+    //CPC广告的优化逻辑
+    private function cpcAd(){
+        if(in_array($this->distribution_channel_id,[2,5,8,123,146,148,155,160,196,202,211,255,256,266,271,273,318,691,695,722,4025,4053,4174,4236,4237,4241,4334,4364,4426,4427,4487,4488,4593,4742,4889,4891,5204])){
+            $cookie_ad_status = Cookie::get('cpc_ad_status');
+            if(!$cookie_ad_status && UserService::isCpcUser($this->uid)){
+                Cookie::queue('cpc_ad_status', 'show', 3600);
+            }
+        }
+        Cookie::queue('cpc_ad_status', 'unshow', 3600);
+    }
     /**
      * 获取客服图片
      */

+ 2 - 1
app/Http/Middleware/EncryptCookies.php

@@ -21,6 +21,7 @@ class EncryptCookies extends BaseEncrypter
         'sub_random_num',
         'reader_share_bid',
         'reader_share_cid',
-        'force_show_qrcode'
+        'force_show_qrcode',
+        'cpc_ad_status'
     ];
 }

+ 48 - 31
app/Modules/User/Services/UserService.php

@@ -266,7 +266,7 @@ class UserService
     // 扔用户一些动作到队列,异步处理一些额外逻辑
     static function PushUserActionToQueue($action_type,$distribution_channel_id,$param){
     	try{
-//     		\Log::info('PushUserActionToQueue_param_start:'.$distribution_channel_id.' action_type:'.$action_type. ' param:'.json_encode($param));
+//     		\Log::info('PushUserActionToQueue_param_start:'.$distribution_channel_id.' action_type:'.$action_type. ' param:'.json_encode($param));
     		
     		// 判断站点是否需要额外逻辑
     		$distribution_self_define_config = DistributionSelfDefineConfig::getDistributionSelfDefineConfig($distribution_channel_id,'action_call_ycsd');
@@ -288,49 +288,66 @@ class UserService
     				if($action_type == 'CallBackOrder'){
     					$order = Order::getByTradeNo($distribution_channel_id, $param['order_sn']);
     					if(isset($order->pay_merchant_id) && $order->pay_merchant_id == $pay_merchant_id){
-    						\Log::info('action_call_ycsd_old_order_continue:'.$param['order_sn']);
+    						\Log::info('action_call_ycsd_old_order_continue:'.$param['order_sn']);
     					}else{
-    						\Log::info('action_call_ycsd_has_change_pay_return:'.$distribution_channel_id);
+    						\Log::info('action_call_ycsd_has_change_pay_return:'.$distribution_channel_id);
     						return '';
-    					}
+    					}
     				}else{
-    					\Log::info('action_call_ycsd_has_change_pay_return:'.$distribution_channel_id);
+    					\Log::info('action_call_ycsd_has_change_pay_return:'.$distribution_channel_id);
     					return '';
     				}
-    			}
+    			}
 
     			\Log::info('action_call_ycsd:'.$distribution_channel_id);
     		}
-    		
-    		$data = [];
-    		$data['send_time'] = date("Y-m-d H:i:s");
-    		$data['action_type'] = $action_type;
-    		if($action_type == 'Register'){
-    			$data['openid'] =  $param['openid'];
-    			$data['uid'] = $param['uid'];
-    		}elseif($action_type == 'CreateOrder'){
-    			$data['orderSn'] =  $param['order_sn'];
-    			$data['amount'] = $param['amount'];
-    			$data['openid'] =  $param['openid'];
-    			$data['uid'] = $param['uid'];
-    		}elseif($action_type == 'CallBackOrder'){
+    		
+    		$data = [];
+    		$data['send_time'] = date("Y-m-d H:i:s");
+    		$data['action_type'] = $action_type;
+    		if($action_type == 'Register'){
+    			$data['openid'] =  $param['openid'];
+    			$data['uid'] = $param['uid'];
+    		}elseif($action_type == 'CreateOrder'){
+    			$data['orderSn'] =  $param['order_sn'];
+    			$data['amount'] = $param['amount'];
+    			$data['openid'] =  $param['openid'];
+    			$data['uid'] = $param['uid'];
+    		}elseif($action_type == 'CallBackOrder'){
     			$data['orderSn'] =  $param['order_sn'];
-    			$data['openid'] =  $param['openid'];
-    		}
-    		 
-    		$send_data=array(
-    				'send_time'=>date("Y-m-d H:i:s"),
-    				'data' => $data
-    		);
+    			$data['openid'] =  $param['openid'];
+    		}
+    		 
+    		$send_data=array(
+    				'send_time'=>date("Y-m-d H:i:s"),
+    				'data' => $data
+    		);
     		\Log::info('PushUserActionToQueue_openid:'.$data['openid'].' action_type:'.$action_type);
-    		\Log::info('$send_data');\Log::info($send_data);
-    		
-    		$delay = 0;
-    		
-    		$job = (new ActionTrigger($send_data))->onConnection('rabbitmq')->delay($delay)->onQueue('action_trigger_list');
+    		\Log::info('$send_data');\Log::info($send_data);
+    		
+    		$delay = 0;
+    		
+    		$job = (new ActionTrigger($send_data))->onConnection('rabbitmq')->delay($delay)->onQueue('action_trigger_list');
     		dispatch($job);
     	}catch(\Exception $e){
     		\Log::info('ept:'.$e->getMessage());
     	}
     }
+
+    public static function isCpcUser($uid){
+        //openid下所有强关超过三天的uid都无充值,对强关后的uid进行曝光
+        $sql_format = "SELECT u.id,f.subscribe_time,(SELECT id from orders where uid = u.id and `status` = 'PAID' LIMIT 1)as oid  FROM users u
+JOIN force_subscribe_users f on u.id = f.uid and f.is_subscribed= 1
+WHERE u.openid in (SELECT openid from users WHERE  id = %s)";
+        $result = DB::select(sprintf($sql_format,$uid));
+        if(!$result) return false;
+
+        foreach ($result as $item){
+            //有充值
+            if($item->oid) return false;
+            //强关没超过超过三天
+            if(time()-strtotime($item->subscribe_time) < 86400*3) return false;
+        }
+        return true;
+    }
 }