Quellcode durchsuchen

Merge branch 'stabble' into free_share

tusx vor 6 Jahren
Ursprung
Commit
35e92459cf

+ 10 - 5
app/Console/Commands/Tool/TestSmartPush.php

@@ -10,7 +10,6 @@ use Illuminate\Console\Command;
 use App\Modules\User\Services\UserService;
 use App\Modules\User\Services\UserService;
 use App\Modules\User\Services\UserSignService;
 use App\Modules\User\Services\UserSignService;
 use App\Modules\Book\Services\BookConfigService;
 use App\Modules\Book\Services\BookConfigService;
-
 use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\OfficialAccount\Services\OfficialAccountService;
 use App\Modules\OfficialAccount\Services\OfficialAccountService;
 use App\Modules\User\Services\ReadRecordService;
 use App\Modules\User\Services\ReadRecordService;
@@ -58,11 +57,17 @@ class TestSmartPush extends Command
 //         $result = OfficialAccountService::get_short_url($distribution_channel_id,$url);
 //         $result = OfficialAccountService::get_short_url($distribution_channel_id,$url);
         
         
 //         $result = ReadRecordService::getFirstReadRecord($uid);
 //         $result = ReadRecordService::getFirstReadRecord($uid);
-        for($i =109861725;$i<=109861735;$i++){
-        	UserSignService::signToday($i);
-        }
-        
+//         for($i =109861725;$i<=109861735;$i++){
+//         	UserSignService::signToday($i);
+//         }
         
         
+        // 注册动作-》回调订单
+        $action_type = 'CallBackOrder';
+        $param = [
+	        'order_sn' => '123',
+	        'openid' => '123',// 没有openid,用uid写log
+        ];
+        UserService::PushUserActionToQueue($action_type,14,$param);
         
         
         print_r("======智能推送测试 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
         print_r("======智能推送测试 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
         print_r('memory_used:'.memory_get_usage()."\n");
         print_r('memory_used:'.memory_get_usage()."\n");

+ 13 - 6
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\Subscribe\Services\OrderService;
 use App\Modules\User\Services\ForceSubscribeUserIService;
 use App\Modules\User\Services\ForceSubscribeUserIService;
 use App\Modules\User\Services\ReadRecordStatsService;
 use App\Modules\User\Services\ReadRecordStatsService;
+use App\Modules\User\Services\UserService;
 use App\Modules\YunQi\Services\BookUserService;
 use App\Modules\YunQi\Services\BookUserService;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Wap\BaseController;
 use App\Http\Controllers\Wap\BaseController;
@@ -419,10 +420,6 @@ class ChapterController extends BaseController
         //用户是否强关
         //用户是否强关
         $this->is_had_subscribe = $is_had_subscribe = $inter_not_need_sub ? true : $this->getSubscribe();
         $this->is_had_subscribe = $is_had_subscribe = $inter_not_need_sub ? true : $this->getSubscribe();
 
 
-        //阅读记录
-        ReadRecordService::addReadRecord(['uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name,
-            'cid' => $cid, 'chapter_name' => $chapter->name]);
-
         //判断当前是否有强制显示服务号信息的cookie、已经关注 跳转到服务号信息引导页
         //判断当前是否有强制显示服务号信息的cookie、已经关注 跳转到服务号信息引导页
         if($has_force_show_qrcode_cookie && $is_had_subscribe)
         if($has_force_show_qrcode_cookie && $is_had_subscribe)
         {
         {
@@ -485,6 +482,9 @@ class ChapterController extends BaseController
                     $my_log = myLog('special');
                     $my_log = myLog('special');
                     $my_log->info('need subscribe-------------------------');
                     $my_log->info('need subscribe-------------------------');
                 }
                 }
+                //阅读记录
+                ReadRecordService::addReadRecord(['uid' => $this->uid, 'bid' => $bid, 'book_name' => $book_info->book_name,
+                    'cid' => $cid, 'chapter_name' => $chapter->name]);
                 return response()->error($force_data['error_type'], $force_data['data']);
                 return response()->error($force_data['error_type'], $force_data['data']);
             }
             }
 
 
@@ -765,6 +765,10 @@ class ChapterController extends BaseController
         //章节内容
         //章节内容
         $chapter_content = ChapterService::getChapter($this->book_info->bid, $this->cid);
         $chapter_content = ChapterService::getChapter($this->book_info->bid, $this->cid);
         $this->chapter->content = str_replace($chapter_content->name, '', $chapter_content->content);
         $this->chapter->content = str_replace($chapter_content->name, '', $chapter_content->content);
+
+        //阅读记录
+        ReadRecordService::addReadRecord(['uid' => $this->uid, 'bid' => $this->book_info->bid, 'book_name' => $this->book_info->book_name,
+            'cid' => $this->cid, 'chapter_name' => $this->chapter->name]);
         //统计
         //统计
         $this->chapterStats();
         $this->chapterStats();
         //123特殊强关
         //123特殊强关
@@ -1757,7 +1761,7 @@ class ChapterController extends BaseController
         if(!$ad_status){
         if(!$ad_status){
             return ;
             return ;
         }
         }
-        if(!in_array($this->distribution_channel_id,[2,5,14,8,123,146,148,155,160,196,202,211,255,256,266,271,273,318,691,722,4053,4236,4237,4241,4334,4364,4427,4487,4488])){
+        if(!in_array($this->distribution_channel_id,[2,5,8,14,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 ;
             return ;
         }
         }
         //按章付费才显示
         //按章付费才显示
@@ -1765,7 +1769,10 @@ class ChapterController extends BaseController
             return ;
             return ;
         }
         }
         //用户是否在广告样本中
         //用户是否在广告样本中
-        if(!$this->isUserInAdSample()) return ;
+        //if(!$this->isUserInAdSample()) return ;
+        $is_ad_user = Cookie::get('cpc_ad_status');
+
+        if(!$is_ad_user || $is_ad_user != 'show') return ;
         $cid = 0;
         $cid = 0;
         if($this->chapter && $this->chapter->next_cid){
         if($this->chapter && $this->chapter->next_cid){
             $cid =  $this->chapter->next_cid;
             $cid =  $this->chapter->next_cid;

+ 10 - 0
app/Http/Controllers/Wap/Pay/OrdersController.php

@@ -1509,6 +1509,16 @@ class OrdersController extends Controller
         if (isset($res->nickname) && !empty($res->nickname)) {
         if (isset($res->nickname) && !empty($res->nickname)) {
             return $res->nickname;
             return $res->nickname;
         }
         }
+        try{
+            $official = DB::table('official_accounts')
+                ->where('distribution_channel_id', $distribution_channel_id)
+                ->where('is_auth',1)
+                ->orderBy('id','desc')
+                ->select('nickname')->first();
+            if ($official && isset($official->nickname)) {
+                return $official->nickname;
+            }
+        }catch (\Exception $e){}
         return '';
         return '';
     }
     }
 
 

+ 2 - 14
app/Http/Controllers/Wap/Subscribe/LinkSubscribeController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Wap\Subscribe;
 use App\Modules\Cpa\Services\AdvertiseUserQueueService;
 use App\Modules\Cpa\Services\AdvertiseUserQueueService;
 use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\Subscribe\Services\OrderService;
 use App\Modules\Subscribe\Services\OrderService;
+use App\Modules\User\Services\UserService;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Controller;
 use App\Modules\Channel\Services\ChannelSubscribeSettingService;
 use App\Modules\Channel\Services\ChannelSubscribeSettingService;
@@ -128,19 +129,6 @@ class LinkSubscribeController extends Controller
         if (!in_array($distribution_channel_id, explode(',', env('ADS_OPEN_SITE')))) {
         if (!in_array($distribution_channel_id, explode(',', env('ADS_OPEN_SITE')))) {
             return false;
             return false;
         }
         }
-        $force_subscribe_info = ForceSubscribeService::forceSubscribeUsersByUid(['uid' => $uid]);
-
-        if (!$force_subscribe_info) {
-            return false;
-        }
-
-        if ($force_subscribe_info->subscribe_time &&
-            (time() - strtotime($force_subscribe_info->subscribe_time) >= 3 * 86400)
-            && !OrderService::isPaidUser($uid) &&
-            !AdvertiseUserQueueService::getUserAdvertise($uid)
-        ) {
-            return true;
-        }
-        return false;
+        return UserService::isCpcUser($uid);
     }
     }
 }
 }

+ 36 - 0
app/Http/Controllers/Wap/User/CoflController.php

@@ -2,6 +2,7 @@
 
 
 namespace App\Http\Controllers\Wap\User;
 namespace App\Http\Controllers\Wap\User;
 
 
+use App\Modules\Activity\Services\ActivityService;
 use App\Modules\Book\Services\BookConfigService;
 use App\Modules\Book\Services\BookConfigService;
 use App\Modules\User\Models\User;
 use App\Modules\User\Models\User;
 use App\Modules\User\Services\ReadRecordService;
 use App\Modules\User\Services\ReadRecordService;
@@ -62,6 +63,41 @@ class CoflController extends Controller
         return redirect()->to($url);
         return redirect()->to($url);
     }
     }
 
 
+    public function activity(Request $request){
+        $token = $request->get('token');
+        if(empty($token)){
+            $default_ink = $this->getLink();
+            return redirect()->to($default_ink);
+        }
+        $openid = $request->get('openid');
+        //授权
+        $params = $request->except('_url');
+        if(empty($openid)){
+            $url = url()->current() . '?' . http_build_query($params);
+            $params['redirect_url'] = urlencode($url);
+            $app = new Application($this->auth($params));
+            return $app->oauth->redirect();
+        }
+
+        $activity = ActivityService::getByToken($token);
+        if($activity){
+            $user = $this->getUsers($openid);
+            if($user[0]){
+                $url_format = '%s://site%s.%s.com%s';
+                $url = sprintf(
+                    $url_format,
+                    env('PROTOCOL'),
+                    encodeDistributionChannelId($user[1]),
+                    env('CUSTOM_HOST'),
+                    $activity->activity_page
+                );
+                return redirect()->to($url);
+            }
+        }
+        $default_ink = $this->getLink();
+        return redirect()->to($default_ink);
+    }
+
     private function getUsers($openid){
     private function getUsers($openid){
         $users = User::where('openid',$openid)->select('id','distribution_channel_id')->get();
         $users = User::where('openid',$openid)->select('id','distribution_channel_id')->get();
         if($users->isEmpty()) return [0,0];
         if($users->isEmpty()) return [0,0];

+ 18 - 0
app/Http/Controllers/Wap/User/UserController.php

@@ -287,8 +287,26 @@ class UserController extends BaseController
     {
     {
         setcookie(env('COOKIE_AUTH_WEB_WECHAT'), '', -1);
         setcookie(env('COOKIE_AUTH_WEB_WECHAT'), '', -1);
         setcookie('u', '', -1);
         setcookie('u', '', -1);
+        setcookie('force_show_qrcode', '', -1);
+        setcookie('sub_random_num', '', -1);
+        setcookie('cpc_ad_status', '', -1);
         return response('logout');
         return response('logout');
     }
     }
+
+    function setOrderDelCookie(Request $request){
+        $param = $request->except('_url');
+        $type = isset($param['type']) ?$param['type']:'set';
+
+        foreach ($param as $k=>$v){
+            if($k == 'type') continue;
+            if($type == 'set'){
+                Cookie::queue($k, $v, 1000, null, null, false, false);
+            }else{
+                setcookie($k, '', -1);
+            }
+        }
+        return response('ok');
+    }
     
     
     function test_add_user_login_cookie(Request $request)
     function test_add_user_login_cookie(Request $request)
     {
     {

+ 1 - 0
app/Http/Controllers/Wap/Web/RedirectController.php

@@ -197,6 +197,7 @@ class RedirectController extends BaseController
         if (env('APP_ENV', '') == 'local') {
         if (env('APP_ENV', '') == 'local') {
             echo encodeDistributionChannelId($siteid);
             echo encodeDistributionChannelId($siteid);
             Cookie::queue(env('COOKIE_AUTH_WEB_WECHAT'), 1, env('U_COOKIE_EXPIRE'), null, null, false, false);
             Cookie::queue(env('COOKIE_AUTH_WEB_WECHAT'), 1, env('U_COOKIE_EXPIRE'), null, null, false, false);
+            Cookie::queue('cpc_ad_status', 'show', 3600,null, null, false, false);
         }
         }
     }
     }
 
 

+ 78 - 21
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -94,7 +94,7 @@ class WelcomeController extends BaseController
         $ad_status = env('AD_STATUS', 1);
         $ad_status = env('AD_STATUS', 1);
         $adTargetId = false;
         $adTargetId = false;
         if ($ad_status) {
         if ($ad_status) {
-            $adTargetId = $this->isUserInAdSample();
+            $adTargetId = $this->cpcAd();
         }
         }
         //广告frame
         //广告frame
         $is_show_ad_frame_setting = env('IS_SHOW_AD_FRAME_SETTING', '123');
         $is_show_ad_frame_setting = env('IS_SHOW_AD_FRAME_SETTING', '123');
@@ -121,7 +121,7 @@ class WelcomeController extends BaseController
         //原创pv uv
         //原创pv uv
         $yctj = false;
         $yctj = false;
         $yctj_url = '';
         $yctj_url = '';
-        if(in_array($this->distribution_channel_id,[2,5,8,146,155,255,691,722,4053,4174,4364,4426])){
+        if(in_array($this->distribution_channel_id,[2,146,155,255,691,722,4053,4174,4364,4426])){
             $yctj = true;
             $yctj = true;
             $yctj_url = 'https://m.ycsd.cn/continue';
             $yctj_url = 'https://m.ycsd.cn/continue';
         }
         }
@@ -134,24 +134,6 @@ class WelcomeController extends BaseController
         //突出包年的充值页面
         //突出包年的充值页面
         $outstanding_year_order = $this->outstandingYearOrder();
         $outstanding_year_order = $this->outstandingYearOrder();
 
 
-        if(in_array($this->distribution_channel_id,explode(',',env('ADS_OPEN_SITE'))))  {
-              $add_ad_status = $this->appad();
-              $my_bid = $request->input('bid','');
-              $ua = $_SERVER['HTTP_USER_AGENT'];
-              if($add_ad_status['appad'] == true && $my_bid && preg_match('/Android/',$ua)) {
-                  try{
-                      AdvertiseUsersService::addAdAccessRec(['uid'=>$this->uid,
-                          'bid'=>Hashids::decode($my_bid)[0],
-                          'position'=>'READER',
-                          'created_at'=>date('Y-m-d H:i:s'),
-                          'updated_at'=>date('Y-m-d H:i:s'),
-                          'remark'=>$request->url()
-                      ]);
-                  }catch(\Exception $e){
-                      \Log::error('insert into advertise_access_rec failded:'.$e->getMessage());
-                  }
-              }
-        }
         $options = json_encode([
         $options = json_encode([
             'distribution_channel_id' => (int)$this->distribution_channel_id,
             'distribution_channel_id' => (int)$this->distribution_channel_id,
             'send_order_id' => $send_order_id,
             'send_order_id' => $send_order_id,
@@ -375,8 +357,24 @@ class WelcomeController extends BaseController
                 }
                 }
             }
             }
         }
         }
-        $activity_setting = ActivityService::getActivitySetting();
 
 
+        //自定义新用户活动
+        $show_custom_new_user_activity_channel = env('SHOW_CUSTOM_NEW_USER_ACTIVITY_CHANNEL', '');
+        if($show_custom_new_user_activity_channel && in_array($this->distribution_channel_id, explode(',', $show_custom_new_user_activity_channel ))){
+            $custom_activity_page = ActivityService::getActiveCustomActivityByType($this->distribution_channel_id,'CUSTOM_NEW_USER');
+            if($custom_activity_page){
+                $charge_count = Order::where('uid',$this->uid)->where('status','PAID')->count();
+                if($charge_count ==0 ){
+                    $url = $h5_scheme . '://' . _domain() . $custom_activity_page->activity_page;
+                    $is_show_activity = 1;
+                    $activity_title = '优惠活动';
+                    $bottom_show_type = 1;
+                    $activity_img = 'https://cdn-novel.iycdm.com/h5/2019-04-04-banner.jpg';
+                }
+            }
+        }
+
+        $activity_setting = ActivityService::getActivitySetting();
         if ($activity_setting) {
         if ($activity_setting) {
             $activity_id = isset($activity_setting['activity_id']) ? $activity_setting['activity_id'] : 0;
             $activity_id = isset($activity_setting['activity_id']) ? $activity_setting['activity_id'] : 0;
             $activity_info = Activity::find($activity_id);
             $activity_info = Activity::find($activity_id);
@@ -507,6 +505,19 @@ class WelcomeController extends BaseController
         return ['appad'=>false,'appad_banner'=>'','appad_url'=>''];
         return ['appad'=>false,'appad_banner'=>'','appad_url'=>''];
     }
     }
 
 
+    //CPC广告的优化逻辑
+    private function cpcAd(){
+        if(in_array($this->distribution_channel_id,[2,5,8,14,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) return $cookie_ad_status == 'show';
+            if(UserService::isCpcUser($this->uid)){
+                Cookie::queue('cpc_ad_status', 'show', 3600);
+                return true;
+            }
+        }
+        Cookie::queue('cpc_ad_status', 'unshow', 3600);
+        return false;
+    }
     /**
     /**
      * 获取客服图片
      * 获取客服图片
      */
      */
@@ -990,6 +1001,52 @@ class WelcomeController extends BaseController
         return view('pay.order.longactivitysixtyeight', ['url' => '###', 'img'=>$img, 'code' => -1, 'start_time' => date('Y-m-d', time() - 86400 * 2), 'end_time' => date('Y-m-d', time() - 86400)]);
         return view('pay.order.longactivitysixtyeight', ['url' => '###', 'img'=>$img, 'code' => -1, 'start_time' => date('Y-m-d', time() - 86400 * 2), 'end_time' => date('Y-m-d', time() - 86400)]);
     }
     }
 
 
+    public function channelNewUserActivity(Request $request)
+    {
+        $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
+        $token = $request->get('token');
+        $activity_info = ActivityService::getByToken($token);
+
+        $from = $request->get('fromtype', 'main');
+        $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
+        $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
+
+        if ($activity_info && $activity_info->product_id){
+            $activity_id = $activity_info->id;
+            $uv_key = sprintf($uv_key_format, $activity_id, $this->distribution_channel_id, date('Y-m-d'));
+            $pv_key = sprintf($pv_key_format, $activity_id, $this->distribution_channel_id);
+            Redis::sadd($uv_key, $this->uid);
+            Redis::hincrby($pv_key, date('Y-m-d'), 1);
+            //活动未开始
+            if (time() < strtotime($activity_info->start_time)) {
+                return view('pay.order.newUserActivity', ['url' => '###', 'code' => -3, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+            }
+
+            //活动结束
+            if (time() > strtotime($activity_info->end_time)) {
+                return view('pay.order.newUserActivity', ['url' => '###', 'code' => -2, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+            }
+
+            $charge_count = Order::where('uid',$this->uid)->where('status','PAID')->count();
+            if($charge_count >0){
+                //不是新用户
+                return view('pay.order.newUserActivity', ['url' => '###', 'code' => -1, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+            }
+
+            $param = [
+                'uid' => $this->uid,
+                'distribution_channel_id' => $this->distribution_channel_id,
+                'product_id' => $activity_info->product_id,
+                'activity_id' => $activity_info->id,
+                'fromtype' => $from,
+                'pay_redirect_url' => env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person'
+            ];
+            $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
+            return view('pay.order.newUserActivity', ['url' => $url, 'code' => 0, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+        }
+        return view('pay.order.newUserActivity', ['url' => '###', 'code' => -2, 'start_time' => date('Y-m-d',time()-86400*2), 'end_time' => date('Y-m-d',time()-86400)]);
+    }
+
     /**
     /**
      * 清明活动
      * 清明活动
      */
      */

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

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

+ 3 - 0
app/Http/Routes/Wap/WapRoutes.php

@@ -41,6 +41,7 @@ Route::group(['domain'=>env('share_domain'),'namespace'=>'App\Http\Controllers\W
 
 
 Route::group(['domain'=>env('FRIEND_LINK_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
 Route::group(['domain'=>env('FRIEND_LINK_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){
     Route::get('friendlink','User\CoflController@index');
     Route::get('friendlink','User\CoflController@index');
+    Route::get('friendactivitylink','User\CoflController@activity');
 });
 });
 
 
 Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap','middleware'=>'EnableCross'],function(){
 Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap','middleware'=>'EnableCross'],function(){
@@ -50,6 +51,7 @@ Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap
     Route::any('friendlink','User\CoflController@index');
     Route::any('friendlink','User\CoflController@index');
 
 
     Route::any('testLogin','Web\RedirectController@testLogin');
     Route::any('testLogin','Web\RedirectController@testLogin');
+    Route::get('mmdggce','User\UserController@setOrderDelCookie');
 
 
     Route::get('pay/wait','Pay\OrdersController@waitPage');
     Route::get('pay/wait','Pay\OrdersController@waitPage');
     Route::get('pay/waitv2','Pay\OrdersController@waitPageV2');
     Route::get('pay/waitv2','Pay\OrdersController@waitPageV2');
@@ -203,6 +205,7 @@ Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap
         Route::get('sale/channelsalenine','Web\WelcomeController@channelActivityNine');
         Route::get('sale/channelsalenine','Web\WelcomeController@channelActivityNine');
         Route::get('sale/channelsalesixty','Web\WelcomeController@channelActivitySixtyEight');
         Route::get('sale/channelsalesixty','Web\WelcomeController@channelActivitySixtyEight');
         Route::get('sale/channelsaleforty','Web\WelcomeController@channelActivityFortyEight');
         Route::get('sale/channelsaleforty','Web\WelcomeController@channelActivityFortyEight');
+        Route::get('sale/channelnewuser','Web\WelcomeController@channelNewUserActivity');
         Route::get('sale/qingMingActivity','Web\WelcomeController@qingMingActivity');
         Route::get('sale/qingMingActivity','Web\WelcomeController@qingMingActivity');
         Route::get('sale/readDayActivity','Web\WelcomeController@readDayActivity');
         Route::get('sale/readDayActivity','Web\WelcomeController@readDayActivity');
         Route::get('sale/laborDayActivity','Web\WelcomeController@readDayActivity');
         Route::get('sale/laborDayActivity','Web\WelcomeController@readDayActivity');

+ 8 - 1
app/Libs/Helpers.php

@@ -541,6 +541,13 @@ function specialChannelAuthInfoV2(){
         '4941'=>'wxe7f83fba4596cb03',
         '4941'=>'wxe7f83fba4596cb03',
         '5319'=>'wxa697fd62760dfc53',
         '5319'=>'wxa697fd62760dfc53',
         '5365'=>'wx40c098d5ef384b2d',
         '5365'=>'wx40c098d5ef384b2d',
-        '5366'=>'wx1fd33388075778fe'
+        '5366'=>'wx1fd33388075778fe',
+        '5427'=>'wxb54db864aae35e43',
+        '5428'=>'wx46d1c3dc66bb08c6',
+        '5429'=>'wx953c1a61bd82a358',
+        '5430'=>'wx956fd17a5d81c122',
+        '5444'=>'wx3f11071d2c51fe3c',
+        '5464'=>'wxe06f1e737730cda8',
+        '5225'=>'wx25d970a3f95ebebe'
     ];
     ];
 }
 }

+ 1 - 1
app/Modules/Activity/Models/Activity.php

@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
 class Activity extends Model
 class Activity extends Model
 {
 {
     protected $table = 'activity';
     protected $table = 'activity';
-    protected $fillable = ['id', 'name', 'start_time', 'end_time', 'activity_page', 'product_id', 'token', 'default_template_id', 'customer_msg', 'distribution_channel_id', 'setting'];
+    protected $fillable = ['id', 'name', 'start_time', 'end_time', 'activity_page', 'product_id', 'token', 'default_template_id', 'customer_msg', 'distribution_channel_id', 'setting','type'];
 
 
     //查询活动信息
     //查询活动信息
     static function search($params = [], $is_all = false)
     static function search($params = [], $is_all = false)

+ 9 - 0
app/Modules/Activity/Services/ActivityService.php

@@ -91,6 +91,15 @@ class ActivityService
             ->first();
             ->first();
     }
     }
 
 
+    static function getActiveCustomActivityByType($chanel_id,$type='DEFAULT'){
+        return Activity::where('distribution_channel_id', $chanel_id)
+            ->where('start_time', '<=', date('Y-m-d H:i:s'))
+            ->where('end_time', '>', date('Y-m-d H:i:s'))
+            ->where('type', $type)
+            ->select('activity_page')
+            ->first();
+    }
+
     /**
     /**
      * 活动统计
      * 活动统计
      * @param $activity_id
      * @param $activity_id

+ 1 - 1
app/Modules/Book/Models/BookConfig.php

@@ -926,7 +926,7 @@ class BookConfig extends Model
                 , 'book_configs.recommend_cid', 'book_configs.is_high_quality', 'books.updated_at as last_update_time'
                 , 'book_configs.recommend_cid', 'book_configs.is_high_quality', 'books.updated_at as last_update_time'
             )
             )
             ->where('book_categories.channel_name', $channel_name)
             ->where('book_categories.channel_name', $channel_name)
-            ->whereIn('book_configs.is_on_shelf', [1,2])
+            ->where('book_configs.is_on_shelf', 2)
             ->whereNotIn('book_configs.bid', $bid)
             ->whereNotIn('book_configs.bid', $bid)
             ->where('book_configs.is_high_quality', 1)
             ->where('book_configs.is_high_quality', 1)
             ->get();
             ->get();

+ 6 - 0
app/Modules/Channel/Services/PayTemplateService.php

@@ -9,6 +9,7 @@
 namespace App\Modules\Channel\Services;
 namespace App\Modules\Channel\Services;
 
 
 use App\Modules\Channel\Models\PayTemplate;
 use App\Modules\Channel\Models\PayTemplate;
+use App\Modules\OfficialAccount\Models\OfficialAccount;
 
 
 class PayTemplateService
 class PayTemplateService
 {
 {
@@ -18,6 +19,11 @@ class PayTemplateService
      * @return int
      * @return int
      */
      */
     public static function getPayTemplate(int $distribution_channel_id){
     public static function getPayTemplate(int $distribution_channel_id){
+        //没有授权服务号的站点 充值模板默认是1
+        $offical = OfficialAccount::where('distribution_channel_id',$distribution_channel_id)->where('is_auth',1)->count();
+        if(!$offical){
+            return 1;
+        }
         $res = PayTemplate::where('distribution_channel_id',$distribution_channel_id)->select('product_template_type')->first();
         $res = PayTemplate::where('distribution_channel_id',$distribution_channel_id)->select('product_template_type')->first();
         $template_type = 2;
         $template_type = 2;
         if($res){
         if($res){

+ 5 - 1
app/Modules/Trade/Models/Order.php

@@ -222,7 +222,11 @@ class Order extends Model
         if (isset($params['distribution_channel_id']) && $params['distribution_channel_id']) $search_obj->where('distribution_channel_id', $params['distribution_channel_id']);
         if (isset($params['distribution_channel_id']) && $params['distribution_channel_id']) $search_obj->where('distribution_channel_id', $params['distribution_channel_id']);
         return $search_obj->count();
         return $search_obj->count();
     }
     }
-
+    static function getByTradeNo($distribution_channel_id,$trade_no)
+    {
+    	return self::where('distribution_channel_id', $distribution_channel_id)->where('trade_no', $trade_no)->first();
+    }
+    
     //获取派单下的普通用户订单总数
     //获取派单下的普通用户订单总数
     static function getNormalOrderCount($send_order_id)
     static function getNormalOrderCount($send_order_id)
     {
     {

+ 63 - 30
app/Modules/User/Services/UserService.php

@@ -13,6 +13,8 @@ use DB;
 use App\Jobs\ActionTrigger;
 use App\Jobs\ActionTrigger;
 use App\Modules\OfficialAccount\Models\DistributionSelfDefineConfig;
 use App\Modules\OfficialAccount\Models\DistributionSelfDefineConfig;
 use App\Modules\Channel\Models\Channel;
 use App\Modules\Channel\Models\Channel;
+use App\Modules\Trade\Models\Order;
+use Redis;
 
 
 class UserService
 class UserService
 {
 {
@@ -264,7 +266,7 @@ class UserService
     // 扔用户一些动作到队列,异步处理一些额外逻辑
     // 扔用户一些动作到队列,异步处理一些额外逻辑
     static function PushUserActionToQueue($action_type,$distribution_channel_id,$param){
     static function PushUserActionToQueue($action_type,$distribution_channel_id,$param){
     	try{
     	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');
     		$distribution_self_define_config = DistributionSelfDefineConfig::getDistributionSelfDefineConfig($distribution_channel_id,'action_call_ycsd');
@@ -274,47 +276,78 @@ class UserService
     		}else{
     		}else{
     			\Log::info('PushUserActionToQueue_param:'.$distribution_channel_id.' action_type:'.$action_type. ' param:'.json_encode($param));
     			\Log::info('PushUserActionToQueue_param:'.$distribution_channel_id.' action_type:'.$action_type. ' param:'.json_encode($param));
     			// 如果支付通道已经切换回去,则不推送了
     			// 如果支付通道已经切换回去,则不推送了
-    			$pay_merchant_id = env('YCSD_CALL_PAY_MERCHANT_ID');
+//     			$pay_merchant_id = env('YCSD_CALL_PAY_MERCHANT_ID');
+
+    			// 当前默认
+    			$pay_merchant_id = Redis::get('YCSD_CALL_PAY_MERCHANT_ID');
     			$channel = Channel::getById($distribution_channel_id);
     			$channel = Channel::getById($distribution_channel_id);
     			$current_pay_merchant_id = isset($channel->pay_merchant_id)?$channel->pay_merchant_id:'';
     			$current_pay_merchant_id = isset($channel->pay_merchant_id)?$channel->pay_merchant_id:'';
     			\Log::info('action_call_ycsd:'.$distribution_channel_id.' $pay_merchant_id:'.$pay_merchant_id.' $current_pay_merchant_id:'.$current_pay_merchant_id);
     			\Log::info('action_call_ycsd:'.$distribution_channel_id.' $pay_merchant_id:'.$pay_merchant_id.' $current_pay_merchant_id:'.$current_pay_merchant_id);
     			if($current_pay_merchant_id != $pay_merchant_id){
     			if($current_pay_merchant_id != $pay_merchant_id){
-    				\Log::info('action_call_ycsd_has_change_pay_return:'.$distribution_channel_id);
-    				return '';
-    			}
+    				//  判断订单是否是默认支付,放行,切换期间的bug
+    				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']);
+    					}else{
+    						\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);
+    					return '';
+    				}
+    			}
 
 
     			\Log::info('action_call_ycsd:'.$distribution_channel_id);
     			\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['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('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);
     		dispatch($job);
     	}catch(\Exception $e){
     	}catch(\Exception $e){
     		\Log::info('ept:'.$e->getMessage());
     		\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;
+    }
 }
 }

+ 4 - 4
resources/views/wap/index.blade.php

@@ -9,7 +9,7 @@
     <script>window.VueRouter || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-router.min.js"><\/script>')</script>
     <script>window.VueRouter || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-router.min.js"><\/script>')</script>
     <script>(window.Vue && window.VueLazyload) || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-lazyload.js"><\/script>')</script>
     <script>(window.Vue && window.VueLazyload) || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-lazyload.js"><\/script>')</script>
     <title>{{$title}}</title>
     <title>{{$title}}</title>
-    <link href=https://cdn-novel.iycdm.com/static2019-3-28/css/app.4b6ad5b81ea3c409d155f262e77e66b4.css rel=stylesheet>
+    <link href=https://cdn-novel.iycdm.com/static2019-4-10/css/app.e21c03ed1ad34bd77778e920f5e518d4.css rel=stylesheet>
 </head>
 </head>
 <body>
 <body>
 <div id=app></div>
 <div id=app></div>
@@ -32,8 +32,8 @@
     })();</script>
     })();</script>
 <script id=options>window.options = {!! $options!!};</script>
 <script id=options>window.options = {!! $options!!};</script>
 <script type=text/javascript
 <script type=text/javascript
-        src=https://cdn-novel.iycdm.com/static2019-3-28/js/manifest.3880b99d4e8ffc4f7ba0.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-3-28/js/vendor.ffff3089fc2f18220e2f.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-3-28/js/app.e2e31dc047c509546061.js></script>
+        src=https://cdn-novel.iycdm.com/static2019-4-10/js/manifest.93d2eaccf14fa3ac57b1.js></script>
+<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-4-10/js/vendor.ffff3089fc2f18220e2f.js></script>
+<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-4-10/js/app.558bae1c478fd2ab2fbe.js></script>
 </body>
 </body>
 </html>
 </html>