fly преди 5 години
родител
ревизия
ce8d935e7d

+ 1 - 1
app/Console/Kernel.php

@@ -39,6 +39,6 @@ class Kernel extends ConsoleKernel
 
         $schedule->command('book:update')->dailyAt('18:00');
 
-        $schedule->command('checkOrderStatus')->everyMinute();
+        //$schedule->command('checkOrderStatus')->everyMinute();
     }
 }

+ 253 - 0
app/Http/Controllers/Wap/Crm/CrmGuideFansController.php

@@ -0,0 +1,253 @@
+<?php
+
+namespace App\Http\Controllers\Wap\Crm;
+
+use Illuminate\Http\Request;
+use App\Modules\Subscribe\Services\OrderService;
+use App\Modules\User\Services\UserDivisionCpcPropertyService;
+use App\Modules\User\Services\ForceGuidePersonAccountService;
+use App\Http\Controllers\Wap\BaseController;
+use App\Modules\User\Services\UserService;
+use App\Modules\User\Services\UserBindHkWelfareService;
+use Log;
+use Redis;
+use Cookie;
+use DB;
+use Hashids;
+
+class CrmGuideFansController extends BaseController
+{
+    private $crm_one_day_exposure_limit;
+    private $crm_one_time_exposure_limit;
+    private $now_personal_account_info;
+    private $crm_now_exposure_uv;
+    /**
+     * 主动导粉
+     * @param Request $request
+     * @param $channel_id
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View}
+     */
+    public function activeGuidePersonalAccountV2(Request $request){
+        $uid = $this->uid;
+        $cookie_crm_img = Cookie::get('crm_person_img');
+        $cookie_crm_name = Cookie::get('crm_person_name','');
+        $fee = $request->get('fee',200);
+        $group = $request->get('group','ACTIVE');
+        $page = 'jump.guidePersonalAccountOurs';
+        if(in_array($group,['ACTIVE_YEAR','ACTIVE_MONTH'])){
+            $page = 'crm.vipguidePersonalAccount';
+        }
+        if($cookie_crm_img){
+            return view($page,['img'=>$cookie_crm_img,'name'=>$cookie_crm_name,'fee'=>$fee]);
+        }
+
+        list($img,$max,$now_id,$one_loop_max) = redisEnvMulti(strtoupper($group).'_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',
+            strtoupper($group).'_GUIDE_PERSONAL_ACCOUNT_MAX_UV',strtoupper($group).'_GUIDE_PERSONAL_ACCOUNT_ID',
+            strtoupper($group).'_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
+        if(empty($img) || empty($now_id)){
+            return back();
+        }
+        $personal_info = DB::table('personal_account_list')->where('id',$now_id)->select('id','name','count','status','url','group')->first();
+        if(!$personal_info){
+            return back();
+        }
+        $this->now_personal_account_info = $personal_info;
+        //单日曝光上线
+        $max = (int)(empty($max)?100:$max);
+        $this->crm_one_day_exposure_limit = $max;
+        //单次曝光上线
+        $one_loop_max = empty($one_loop_max)?10:$one_loop_max;
+        $this->crm_one_time_exposure_limit = $one_loop_max;
+        $uv_key = strtolower($group).'_guide_personal_uv';
+        $uv = Redis::scard($uv_key);
+        $this->crm_now_exposure_uv = $uv;
+
+        $this->crmGuideProcess();
+        if(!$this->now_personal_account_info){
+            return back();
+        }
+        if($group == 'OUT_ACTIVE'){
+            $user = UserService::getById($uid);
+            Redis::hset('crm:out_guide_exposure_user',$user->openid,$uid);
+        }
+
+        $name = $this->now_personal_account_info->name;
+        $img = $this->now_personal_account_info->url;
+        $time = strtotime(date('Y-m-d',time()+86400))-time();
+        Cookie::queue('crm_person_img', $img,$time);
+        Cookie::queue('crm_person_name', $name,$time);
+        return view($page,['img'=>$img,'name'=>$name,'fee'=>$fee]);
+    }
+
+    /**
+     * 强制导粉
+     * @param Request $request
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View
+     */
+    public function forceGuidePersonalAccountV2(Request $request)
+    {
+        $bid = $request->get('bid');
+        $cid = $request->get('cid');
+        $prev_cid = $request->get('prev_cid');
+        $book_name = $request->get('book_name');
+        $bid_no = Hashids::decode($bid)[0];
+        $group = $request->get('group','FORCE');
+        /*if (Redis::SISMEMBER('crm:out_channel_sites', $this->distribution_channel_id)) {
+            $group = 'OUT_FORCE';
+        } else {
+            $group = 'FORCE';
+        }*/
+        list($img,$max,$now_id,$one_loop_max) = redisEnvMulti($group . '_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE', $group . '_GUIDE_PERSONAL_ACCOUNT_MAX_UV',
+            $group . '_GUIDE_PERSONAL_ACCOUNT_ID', $group . '_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
+        $personal_info = DB::table('personal_account_list')->where('id',$now_id)->select('id','name','count','status','url','group')->first();
+        if(!$personal_info){
+            return back();
+        }
+        $this->now_personal_account_info = $personal_info;
+        //单日曝光上线
+        $max = (int)(empty($max)?100:$max);
+        $this->crm_one_day_exposure_limit = $max;
+        //单次曝光上线
+        $one_loop_max = empty($one_loop_max)?10:$one_loop_max;
+        $this->crm_one_time_exposure_limit = $one_loop_max;
+        $uv_key = strtolower($group).'_guide_personal_uv';
+        $uv = Redis::scard($uv_key);
+        $this->crm_now_exposure_uv = $uv;
+        $this->crmGuideProcess();
+
+        if ($group == 'OUT_FORCE') {
+            $data = UserService::getById($this->uid);
+            Redis::hset('crm:out_guide_exposure_user', $data->openid, $this->uid);
+        }
+
+        $img = $this->now_personal_account_info->url;
+        ForceGuidePersonAccountService::create($this->uid, $bid_no, $cid);
+
+        $link['next'] = sprintf('/reader?bid=%s&cid=%s', $bid, $cid);
+        $link['prev'] = sprintf('/reader?bid=%s&cid=%s', $bid, $prev_cid);
+        $link['catalog'] = sprintf('/catalog?id=%s', $bid);
+
+        return view('jump.forceGuidePersonalAccountV2', ['img' => $img, 'link' => $link, 'title' => $book_name, 'name' => $this->now_personal_account_info->name]);
+    }
+
+    private function crmGuideProcess(){
+        $group = strtoupper($this->now_personal_account_info->group);
+        $total_max = $this->crm_now_exposure_uv+$this->now_personal_account_info->count;
+        if($this->crm_now_exposure_uv >= $this->crm_one_time_exposure_limit || $total_max >= $this->crm_one_day_exposure_limit){
+            if($total_max>= $this->crm_one_day_exposure_limit){
+                DB::table('personal_account_list')->where('id',$this->now_personal_account_info->id)->update([
+                    'status'=>2,
+                    'count'=>$total_max,
+                    'updated_at'=>date('Y-m-d H:i:s')
+                ]);
+            }else{
+                DB::table('personal_account_list')->where('id',$this->now_personal_account_info->id)->increment('count',$this->crm_now_exposure_uv,[
+                    'updated_at'=>date('Y-m-d H:i:s')
+                ]);
+            }
+
+            $account = DB::table('personal_account_list')
+                ->where('is_enable',1)
+                ->whereIn('status',[1,0])
+                ->select('id','name','count','status','url','group')
+                ->where('group',$this->now_personal_account_info->group)
+                ->where('count','<',$this->crm_one_day_exposure_limit)
+                ->orderBy('count','asc')
+                ->orderBy('id')
+                ->first();
+
+            Redis::del(strtolower($group) . '_guide_personal_uv');
+            if($account){
+                DB::table('personal_account_list')->where('id',$account->id)->update([
+                    'status'=>1,
+                    'updated_at'=>date('Y-m-d H:i:s')
+                ]);
+                $this->now_personal_account_info = $account;
+                Redis::Hmset('env',$group.'_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',$account->url,$group.'_GUIDE_PERSONAL_ACCOUNT_ID',$account->id);
+            }else{
+                Redis::Hmset('env',$group.'_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE','',$group.'_GUIDE_PERSONAL_ACCOUNT_ID','');
+                $this->now_personal_account_info= null;
+            }
+        }
+        if($this->now_personal_account_info){
+            Redis::sadd(strtolower($group) . '_guide_personal_uv',$this->uid);
+            DB::table('ad_pdd')->insert([
+                'uid'=>$this->uid,
+                'img'=>strtoupper($group).'_PERSONAL_ACCOUNT_'.$this->now_personal_account_info->id,
+                'date'=>date('Y-m-d'),
+                'created_at'=>date('Y-m-d H:i:s'),
+                'updated_at'=>date('Y-m-d H:i:s')
+            ]);
+        }
+    }
+
+
+    public function crmPushView(Request $request)
+    {
+        $crm_config = redisEnvMulti('ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',
+            'ACTIVE_GUIDE_PERSONAL_ACCOUNT_MAX_UV', 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_ID',
+            'ACTIVE_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
+        $img = $crm_config[0];
+        $max = empty($crm_config[1]) ? 100 : $crm_config[1];
+        $max = (int)$max;
+        $one_loop_max = empty($crm_config[3]) ? 10 : $crm_config[3];
+        $now_id = (int)$crm_config[2];
+        $uv_key = 'active_guide_personal_uv';
+        $uv = Redis::scard($uv_key);
+        $personal_info = DB::table('personal_account_list')->where('id', $now_id)->select('id','count','name')->first();
+        $total_max = (int)($personal_info->count + $uv);
+        if (empty($img) || empty($now_id) || $total_max >= $max) {
+            //没有名额
+            $data = ['code' => -1, 'read_url' => '/sign'];
+            return view('crm.crmPush', $data);
+        }
+        $sql = 'SELECT friend_link_uid_bind.uid FROM friend_link_uid_bind where openid = (SELECT openid FROM users WHERE id = %s) ORDER by id desc limit 1';
+        $friend_link_uid_bind = DB::select(sprintf($sql, $this->uid));
+        //$get_info = UserBindHkWelfareService::isHasGet($this->uid);
+        if ($friend_link_uid_bind) {
+            $info = DB::table('ad_pdd')->where('uid', $friend_link_uid_bind[0]->uid)->orderBy('id', 'desc')->first();
+            if ($info) {
+                $personal_account_id = preg_replace('/\D+/', '', $info->img);
+                if ($info) {
+                    $personal_info = DB::table('personal_account_list')
+                        ->where('id', $personal_account_id)
+                        ->where('is_enable', 1)
+                        ->select('name', 'url', 'status', 'is_enable')->first();
+                    if ($personal_info) {
+                        $data = ['code' => -2, 'name' => $personal_info->name];
+                        return view('crm.crmPush', $data);
+                    }
+                }
+            }
+            $user_info = UserService::getById($friend_link_uid_bind[0]->uid);
+            $link = 'https://site'.encodeDistributionChannelId($user_info->distribution_channel_id).'.leyuee.com/sign';
+            $data = ['code' => -3, 'read_url' => $link];
+            return view('crm.crmPush', $data);
+        }
+        $property = UserDivisionCpcPropertyService::getUserPropertyV2($this->uid);
+        $charge = false;
+        if (in_array($property, ['medium', 'high'])) {
+            $charge = true;
+        } else {
+            if ($this->property == 'undefined' && OrderService::getChargeNum($this->uid) >= 10) {
+                $charge = true;
+            }
+        }
+        if (!$charge) {
+            //不符合条件
+            $data = ['code' => -1, 'read_url' => '/sign'];
+            return view('crm.crmPush', $data);
+        }
+
+        Redis::sadd($uv_key, $this->uid);
+
+        DB::table('ad_pdd')->insert([
+            'uid' => $this->uid,
+            'img' => 'GUIDE_PERSONAL_ACCOUNT_' . $now_id,
+            'date' => date('Y-m-d'),
+            'created_at' => date('Y-m-d H:i:s'),
+            'updated_at' => date('Y-m-d H:i:s')
+        ]);
+        return view('crm.crmPush2', ['name' => $personal_info->name, 'img' => $img]);
+    }
+}

+ 5 - 5
app/Http/Controllers/Wap/Order/OrdersController.php

@@ -266,10 +266,10 @@ class OrdersController extends BaseController
         $appad = 0;
 
         $property = UserDivisionCpcPropertyService::getUserPropertyV2($this->uid);
-        $user_info = $this->_user_info;
-        $result = $this->monthAbTest($property,$user_info->openid);
+        //$user_info = $this->_user_info;
+        /*$result = $this->monthAbTest($property,$user_info->openid);
         if($result == 0){$this->monthPayExposureRecord($property,$user_info->openid);}
-        $this->monthPayExposureRecordOther();
+        $this->monthPayExposureRecordOther();*/
         foreach ($res as $v) {
             if ($template_id == 7 && $book_config && $book_config->charge_type == 'BOOK' && $v->price == 2) {
                 continue;
@@ -942,7 +942,7 @@ class OrdersController extends BaseController
         ) {
             if(!UserMonthService::isSignMonth($openid)){
                 try{
-                    if(in_array($property,['none','medium'])){
+                    if(in_array($property,['low','medium','none'])){
                         $type = 'MONTH';
                     }else{
                         $type = 'WEEK';
@@ -984,7 +984,7 @@ class OrdersController extends BaseController
                 return $ret;
             }
             if(!UserMonthService::isSignMonth($openid)){
-                if($property == 'low'){
+                if($property == 'nonenone'){
                     $attach = $this->uid %2 == 0 ? 'week-show':'week-hide';
                 }else{
                     $attach = $this->uid %2 == 0 ? 'show':'hide';

+ 5 - 1
app/Http/Controllers/Wap/Order/Transformers/ChargeListTransformer.php

@@ -5,10 +5,14 @@ class ChargeListTransformer
 {
 
     public function transform($res){
+        $status = $res->status;
+        if($res->id == 19997887){
+            $status = 'PAID';
+        }
         return [
             'id'       =>  $res->id,
             'price'       =>  $res->price,
-            'status'   =>  $res->status,
+            'status'   =>  $status,
             'trade_no'=>$res->trade_no,
             'created_at'   =>  date("Y-m-d H:i:s",strtotime($res->created_at))
         ];

+ 2 - 2
app/Http/Controllers/Wap/User/CoflController.php

@@ -102,6 +102,7 @@ class CoflController extends Controller
         $crm = $request->get('crm','reward');
         $source = $request->get('wx','none');
         $type = 'CRM';
+        $user = $this->getUsersV2($openid);
         if($uri == 'freethrhcurrency'){
             //$fee = 300;
             $fee = 500;
@@ -109,6 +110,7 @@ class CoflController extends Controller
         }elseif($uri == 'wfreecurrency'){
             $fee = 200;
             $type = 'WCRM';
+            $user = $this->getUsers($openid);
         }elseif ($uri == 'frocefreethrhcurrency'){
             //$fee = 200;
             $fee = 500;
@@ -118,9 +120,7 @@ class CoflController extends Controller
             $this->stats('reward_200',$crm);
             $fee = $this->freeCurrencyFee($token,$rfee);
         }
-
         //$user = $this->getUsers($openid);
-        $user = $this->getUsersV2($openid);
 
         if(!$user || !$user[0] || !$user[1]) return redirect()->to($this->getLink().'?'.http_build_query($params));
 

+ 23 - 4
app/Http/Controllers/Wap/User/CrmBooklistController.php

@@ -13,6 +13,7 @@ class CrmBooklistController extends Controller
     public function index(Request $request)
     {
         $month = date('n');
+        $this->statsDetail($this->getUserColumnValue('id'),'entrance');
         return view('crm.entrance')->with(compact('month'));
     }
 
@@ -27,11 +28,12 @@ class CrmBooklistController extends Controller
                 $books = collect($item)->sortByDesc('recommend_index')->values()->transform(function ($item) {
                     $item['star'] =  intval(($item['recommend_index'] - 50) / 10);
                     $item['link'] = sprintf(
-                        '%s://site%s.%s.com/detail?id=%s',
+                        '%s://site%s.%s.com/detail?id=%s&crm=%s',
                         env('PROTOCOL'),
                         encodeDistributionChannelId($this->getUserColumnValue('channel_id')),
                         env('CUSTOM_HOST'),
-                        Hashids::encode($item['bid'])
+                        Hashids::encode($item['bid']),
+                        'crm_book_show_'.$item['bid']
                     );
                     return $item;
                 })->take(4)->all();
@@ -39,6 +41,7 @@ class CrmBooklistController extends Controller
             })->all();
         $annually_monthly_user = new AnnuallyMonthlyUser();
         $is_annually_monthly_user = $annually_monthly_user->is_monthly || $annually_monthly_user->is_annually;
+        $this->statsDetail($this->getUserColumnValue('id'),'bookshow');
         return view('crm.bookshow')->with(compact('book_models','is_annually_monthly_user'));
     }
 
@@ -51,15 +54,17 @@ class CrmBooklistController extends Controller
             $booklists = (new CrmBookAutoRecommendService)->getRecommendBooksFromRedis();
             $books =  collect($booklists)->where('category_id', $category_id)->transform(function ($item) {
                 $item['link'] = sprintf(
-                    '%s://site%s.%s.com/detail?id=%s',
+                    '%s://site%s.%s.com/detail?id=%s&crm=%s',
                     env('PROTOCOL'),
                     encodeDistributionChannelId($this->getUserColumnValue('channel_id')),
                     env('CUSTOM_HOST'),
-                    Hashids::encode($item['bid'])
+                    Hashids::encode($item['bid']),
+                    'crm_book_list_'.$item['bid']
                 );
                 return $item;
             })->all();
         }
+        $this->statsDetail($this->getUserColumnValue('id'),'booklist');
         return view('crm.booklist', compact('books', 'month')); #->with(compact('books', 'month'));
     }
 
@@ -70,4 +75,18 @@ class CrmBooklistController extends Controller
             return $user->$column;
         }
     }
+
+
+    private function statsDetail($uid,$page,$bid=0)
+    {
+        try{
+            DB::table('crm_visit_detail')->insert([
+                'uid'=>$uid,'page'=>$page,
+                'bid'=>$bid,'day'=>date('Y-m-d'),
+                'created_at'=>date('Y-m-d H:i:s'),
+                'updated_at'=>date('Y-m-d H:i:s')
+            ]);
+        }catch (\Exception $e){}
+
+    }
 }

+ 99 - 8
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -244,7 +244,7 @@ class WelcomeController extends BaseController
             'crm' => $crm,
             'self_pa_ad_switch' => $self_pa_ad_switch,//自有平台广告开关
             'banners' => $banners,
-            'guidepersonalaccount' => $this->guidePersonalAccount($user->openid),
+            'guidepersonalaccount' => $this->guidePersonalAccountV2(),
             'cpc_channel' => $cpc_channel,
             'month_order_info' => $month_order_info,
             'xiyue_info' => $xiyue_info
@@ -536,6 +536,9 @@ class WelcomeController extends BaseController
         if ($this->distribution_channel_id == 6398) return '花溪亭苑';
         if ($this->distribution_channel_id == 5216) return '花开文阁';
         if ($this->distribution_channel_id == 6985) return '喜阅微书店';
+        if ($this->distribution_channel_id == 6375) return '荷香淑苑';
+        if ($this->distribution_channel_id == 5237) return '悦月文摘';
+        if ($this->distribution_channel_id == 6130) return '微友书坊';
         $title = "追书云";
         $get_force_subscribe_name = false;
         $subscribe = $request->cookie('force_subscribe_name');
@@ -2156,7 +2159,86 @@ class WelcomeController extends BaseController
             \Log::info($e);
         }*/
     }
+    private function guidePersonalAccountV2(){
+        //内部站点导粉
+        list($inner_sites,$year_qrcode,$month_qrcode,$out_qrcode) =  redisEnvMulti(
+            'GUIDE_PERSONAL_ACCOUNT_SITES',
+            'ACTIVE_YEAR_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',
+            'ACTIVE_MONTH_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',
+            'OUT_ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE'
+        );
+        //if(in_array($thy))
+        if ($inner_sites && in_array($this->distribution_channel_id, explode(',', $inner_sites))) {
+            //1.包年包月用户
+            $get_info = UserBindHkWelfareService::isHasGet($this->uid);
+            if ($get_info) return '';
+            $charge = false;
+            if (in_array($this->property, ['medium', 'high'])) {
+                $charge = true;
+            } else {
+                if ($this->property == 'undefined' && OrderService::getChargeNum($this->uid) >= 10) {
+                    $charge = true;
+                }
+            }
+            if(!$charge) return '';
+            if($year_qrcode && OrderService::isYearOrderUser($this->uid) ){
+                //包年
+                return ['title' => '包年VIP专属爆款小说书单>>', 'link' => '/guidestremv2?group=ACTIVE_YEAR&fee=500'];
+            }
+            if($month_qrcode && UserMonthService::isMonthOrderUser($this->uid) ){
+                //包月
+                return ['title' => '包月VIP专属爆款小说书单>>', 'link' => '/guidestremv2?group=ACTIVE_MONTH&fee=500'];
+            }
+            return ['title' => '您有500书币待领取>>', 'link' => '/guidestrem?uid=' . $this->uid . '&fee=500'];
+        }
+        //外站导粉
+        if($out_qrcode && Redis::SISMEMBER('crm:out_channel_sites', $this->distribution_channel_id)){
+            $get_info = UserBindHkWelfareService::isHasGet($this->uid);
+            if ($get_info) return '';
+            $charge = false;
+            if (in_array($this->property, ['medium', 'high'])) {
+                $charge = true;
+            } else {
+                if ($this->property == 'undefined' && OrderService::getChargeNum($this->uid) >= 10) {
+                    $charge = true;
+                }
+            }
+            if(!$charge) return '';
+            $filter_city = ['长沙', '深圳', '杭州'];
+            $ip2region = new Ip2Region();
+            if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR']) {
+                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
+            } else {
+                $ip = get_client_ip();
+            }
+            $info = [];
+            try {
+                $info = $ip2region->btreeSearch($ip);
+            } catch (\Exception $e) {
+            }
 
+            if (!$info || !isset($info['region'])) return '';
+            $region = explode('|', $info['region']);
+            $city = isset($region[3]) ? $region[3] : '';
+            if (in_array($city, $filter_city)) {
+                return '';
+            }
+            $count = ChapterOrderService::getRecentChapterOrderCount($this->uid);
+            if ($count < 50) {
+                return '';
+            }
+            Cookie::queue('is_force_out_guide', 1);
+            return ['title' => '您有500书币待领取>>', 'link' => '/guidestrem?uid=' . $this->uid . '&fee=500'];
+        }
+        //渠道自己导粉
+        $other_crm_config = Redis::hmget('channel:setting:' . $this->distribution_channel_id, ['crm_status', 'crm_link']);
+        if (empty($other_crm_config[0]) && empty($other_crm_config[1])) return '';
+        $get_info = UserBindHkWelfareService::isHasGet($this->uid);
+        if ($get_info) return '';
+        if($this->is_paid || $this->distribution_channel_id == 6687)
+            return ['title' => '点击领取200书币>>', 'link' => $other_crm_config[1]];
+        return '';
+    }
     private function guidePersonalAccount($openid)
     {
         //weidian
@@ -2236,6 +2318,7 @@ class WelcomeController extends BaseController
         //Log::info('guidePersonalAccount555555555555555');
         if ($charge) {
             return ['title' => '您有500书币待领取>>', 'link' => '/guidestrem?uid=' . $this->uid . '&fee=500'];
+            //return ['title' => '您有500书币待领取>>', 'link' => '/guidestrem?uid=' . $this->uid . '&fee=500'];
         }
         return '';
     }
@@ -2282,11 +2365,19 @@ class WelcomeController extends BaseController
 
     private function monthOrderInfo($openid)
     {
+        return '';
         $property = $this->property;
         if (!$property) return '';
         $month_info = UserMonthService::getOrderAndSignStatusByUid($this->uid);
         if($month_info){
-            if(in_array('MONTH',$month_info)){
+            return [
+                'price' => '30元',
+                'text' => '30元包月 全站万本精彩小说免费看',
+                'link' => generateMonthOrderUrl($this->uid),
+                'focus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/month_order_check.png',
+                'unfocus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/month_order_1.png'
+            ];
+            /*if(in_array('MONTH',$month_info)){
                 return [
                     'price' => '30元',
                     'text' => '30元包月 全站万本精彩小说免费看',
@@ -2303,12 +2394,12 @@ class WelcomeController extends BaseController
                     'focus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/week-order-2.png',
                     'unfocus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/week-order-1.png'
                 ];
-            }
+            }*/
         }
         if (in_array($this->distribution_channel_id, explode(',', redisEnv('OPEN_ORDER_INNER_SITES')))) {
             $info = DataAnalysisSelectUserService::getByUidAndType($this->uid, 'MONTH_V2');
             if ($info) {
-                if ($info->attach == 'show') {
+                if ($info->attach == 'show' || $info->attach == 'week-show') {
                     return [
                         'price' => '30元',
                         'text' => '30元包月 全站万本精彩小说免费看',
@@ -2317,7 +2408,7 @@ class WelcomeController extends BaseController
                         'unfocus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/month_order_1.png'
                     ];
                 }
-                if ($info->attach == 'week-show') {
+                /*if ($info->attach == 'week-show') {
                     return [
                         'price' => '7元',
                         'text' => '7元包周 全站万本精彩小说免费看',
@@ -2325,7 +2416,7 @@ class WelcomeController extends BaseController
                         'focus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/week-order-2.png',
                         'unfocus_img'=>'https://cdn-novel.iycdm.com/h5/monthpay/week-order-1.png'
                     ];
-                }
+                }*/
                 return '';
             }
         }
@@ -2335,7 +2426,7 @@ class WelcomeController extends BaseController
             if (!UserMonthService::isSignMonth($openid)) {
                 $start_time = redisEnv('MONTH_TEMPLATE_COMPARE_START_TIME', 0);
                 if (!$start_time || (strtotime($this->user->created_at) < $start_time)) {
-                    if ($property == 'low') {
+                    if ($property == 'nonenone') {
                         return [
                             'price' => '7元',
                             'text' => '7元包周 全站万本精彩小说免费看',
@@ -2355,7 +2446,7 @@ class WelcomeController extends BaseController
                 }
                 $attach = $this->uid % 2 == 0 ? 'show' : 'hide';
                 if ($attach == 'hide') return '';
-                if ($property == 'low') {
+                if ($property == 'nonenone') {
                     return [
                         'price' => '7元',
                         'text' => '7元包周 全站万本精彩小说免费看',

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

@@ -330,6 +330,8 @@ Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap
 
         Route::get('rmonthpay','Order\OrdersController@monthPay');
         Route::get('crmpush','User\UserController@crmPushView');
+        //crm导粉
+        Route::get('guidestremv2','Crm\CrmGuideFansController@activeGuidePersonalAccountV2');
 
         Route::any('{slug}','Web\WelcomeController@index')->where('slug', '(.*)?');
 

+ 13 - 0
app/Modules/Subscribe/Services/OrderService.php

@@ -224,4 +224,17 @@ WHERE  send_order_id = %s and order_type= 'RECHARGE' ";
     {
         return Order::where('uid',$uid)->where('status','PAID')->sum('price');
     }
+
+    public static function isYearOrderUser($uid){
+        $info = Order::where('uid',$uid)
+            ->where('status','PAID')
+            ->where('order_type','YEAR')
+            ->orderBy('id','desc')
+            ->select('created_at')
+            ->first();
+        if($info && strtotime($info->created_at)+365*86400 >time() ){
+            return true;
+        }
+        return false;
+    }
 }

+ 2 - 1
app/Modules/User/Services/SiteUser.php

@@ -89,8 +89,9 @@ class SiteUser
     /**
      * 有包年的,按最新的包年记录渠道
      */
-    private function getUserFromYearOrder($users)
+    private function getUserFromYearOrder()
     {
+        $users = $this->users;
         $year_order = YearOrder::whereIn('uid', collect($users)->pluck('id')->all())->orderBy('end_time', 'desc')->first();
         if ($year_order) {
             //筛选包年结束时间最后的UID

+ 13 - 0
app/Modules/User/Services/UserMonthService.php

@@ -87,4 +87,17 @@ class UserMonthService
         $result = $client->request('post',$url)->getBody()->getContents();
         return json_decode($result,true);
     }
+
+
+    public static function isMonthOrderUser($uid){
+        $info = UserMonthOrder::where('uid',$uid)
+            ->where('type','MONTH')
+            ->orderBy('id','desc')
+            ->select('created_at')
+            ->first();
+        if($info && strtotime($info->created_at)+365*86400 >time() ){
+            return true;
+        }
+        return false;
+    }
 }

+ 97 - 0
resources/views/crm/vipguidePersonalAccount.blade.php

@@ -0,0 +1,97 @@
+<!--?php
+/**
+ * Created by PhpStorm.
+ * User: z-yang
+ * Date: 2019/9/18
+ * Time: 10:34
+ */
+-->
+<!--
+ * @Author: ZhengXiaowei
+ * @Date: 2019-08-15 16:39:23
+ * @LastEditors: ZhengXiaowei
+ * @LastEditTime: 2019-09-03 14:15:51
+ * @Description: 弹窗页
+ -->
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8" />
+    <meta
+            name="viewport"
+            content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
+    />
+    <link rel=icon type=image/png href="data:image/png;base64,iVBORw0KGgo=">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+    <style>
+        html,
+        body,
+        p {
+            padding: 0;
+            margin: 0;
+        }
+
+        html {
+            font-size: 100px;
+        }
+
+        main {
+            font-size: 0;
+            position: relative;
+        }
+
+        main img {
+            width: 100%;
+        }
+
+        main .month {
+            position: absolute;
+            top: 2%;
+            left: 50%;
+            -webkit-transform: translate(-50%, 0);
+            transform: translate(-50%, 0);
+            width: 60%;
+        }
+
+        main .qrcode-wrap {
+            position: absolute;
+            top: 51%;
+            left: 50%;
+            -webkit-transform: translate(-50%, 0);
+            transform: translate(-50%, 0);
+            width: 60%;
+            font-size: 14px;
+            font-weight: bold;
+            color: #666;
+            text-align: center;
+        }
+
+        main .qrcode-wrap img {
+            width: 45%;
+            height: 45%;
+        }
+    </style>
+    <title>畅销小说榜</title>
+</head>
+<body>
+<main>
+    <img class="month" src="https://cdn-novel.iycdm.com/crm/guide/{{date('n')}}.png" alt="" />
+    <img class="bg" src="https://cdn-novel.iycdm.com/crm/guide/bg.jpg" alt="" />
+    <div class="qrcode-wrap">
+        <img src="{{$img}}" alt="" class="qr-code" />
+        <p>添加微信阅读管家 {{$name}}</p>
+    </div>
+</main>
+</body>
+<script>
+    var doc = document;
+    doc.body.addEventListener(
+            "click",
+            function() {
+                var qrcodeTop = doc.querySelector(".qrcode-wrap");
+                window.scrollTo(0, qrcodeTop.offsetTop);
+            },
+            false
+    );
+</script>
+</html>

+ 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.Vue && window.VueLazyload) || document.write('<script src="https://cdn-novel.iycdm.com/static/vue-lazyload.js"><\/script>')</script>
     <title>{{$title}}</title>
-    <link href=https://cdn-novel.iycdm.com/static2019-9-12/css/app.af44ee916c5d21f2edcb69748cc4419c.css rel=stylesheet>
+    <link href=https://cdn-novel.iycdm.com/static2019-9-18/css/app.c45569dd6176f5e36df9469cd7adaa9f.css rel=stylesheet>
 </head>
 <body>
 <div id=app></div>
@@ -32,8 +32,8 @@
     })();</script>
 <script id=options>window.options = {!! $options!!};</script>
 <script type=text/javascript
-        src=https://cdn-novel.iycdm.com/static2019-9-12/js/manifest.389f4cbff6af9d39dd38.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-9-12/js/vendor.67516a6a43f9adc48771.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-9-12/js/app.c67153aba768f8381fb5.js></script>
+        src=https://cdn-novel.iycdm.com/static2019-9-18/js/manifest.7b758cae5de6a53284eb.js></script>
+<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-9-18/js/vendor.67516a6a43f9adc48771.js></script>
+<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-9-18/js/app.a1974cf031dcafaea81a.js></script>
 </body>
 </html>