浏览代码

Merge branch 'stabble' into free_share

tusx 6 年之前
父节点
当前提交
0e1d449cb9

+ 1 - 1
app/Http/Controllers/Wap/Advertises/AdvertiseController.php

@@ -96,7 +96,7 @@ class AdvertiseController extends BaseController
         AdvertiseUserQueueService::addToQueue($toQueue);
         $adInfo = AdvertiseService::getOneById($ad);
         \Log::info($adInfo);
-        header('Location:'.($adInfo->source_url));
+        header('Location:'.'https://url.cn/5T6fJWf');
     }
 
     public function getAds(Request $request){

+ 2 - 1
app/Http/Controllers/Wap/Help/HelpController.php

@@ -14,7 +14,8 @@ class HelpController extends Controller
     {
         $lists = HelpService::getEnableHelpList();
         $distribution_channel_id = $request->get('distribution_channel_id', 0);
-        $qrcode = 'https://cdn-novel.iycdm.com/static/img/kefu20190319.jpg';
+        $qrcode = env('KE_FU_QRCODE','https://cdn-novel.iycdm.com/static/img/kefu20190330.jpg');
+        //$qrcode = 'https://cdn-novel.iycdm.com/static/img/kefu20190330.jpg';
         if ($distribution_channel_id) {
 
             if(!is_numeric($distribution_channel_id)){

+ 104 - 54
app/Http/Controllers/Wap/Order/OrdersController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers\Wap\Order;
 
+use App\Modules\Subscribe\Models\Order;
 use App\Http\Controllers\Wap\BaseController;
 use App\Modules\Book\Services\BookConfigService;
 use App\Modules\Channel\Services\ChannelService;
@@ -11,6 +12,7 @@ use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\Statistic\Services\AdVisitStatService;
 use App\Modules\Statistic\Services\DataAnalysisSelectUserService;
 use App\Modules\User\Services\ForceSubscribeUserIService;
+use App\Modules\User\Services\UserDivisionPropertyService;
 use App\Modules\User\Services\UserService;
 use App\Modules\Book\Services\BookService;
 use App\Modules\Channel\Services\PayTemplateService;
@@ -34,6 +36,9 @@ class OrdersController extends BaseController
      */
 
     private $force_subscribe_info;
+
+    private $chargeList;
+
     /**
      * @apiVersion 1.0.0
      * @apiDescription 充值列表
@@ -201,7 +206,7 @@ class OrdersController extends BaseController
         \Log::info('order:$template_id:' . $template_id);
         \Log::info('order:$distribution_channel_id:' . ($this->distribution_channel_id));
         $book_config = null;
-        if($bid){
+        if ($bid) {
             $bid = Hashids::decode($bid)[0];
             //$book = BookService::getBookById($bid);
             $book_config = BookConfigService::getBookById($bid);
@@ -209,12 +214,13 @@ class OrdersController extends BaseController
         if ($template_id == 2) { //模板2只有在长篇小说过来的用户才显示
             //部分渠道需要2元模板不管哪个入口进来都展示
             $exclude_channels = explode(',', env('PRICE_TWO_SHOW_ALL_CHANNEL'));
+
             if(!in_array($this->distribution_channel_id,$exclude_channels))
             {
                 if($book_config){
                     if($book_config->charge_type == 'BOOK') $template_id = 1;
                 }else{
-                    $template_id = 1;
+                    //$template_id = 1;
                 }
                 /*if ($bid) {
                     $bid = Hashids::decode($bid)[0];
@@ -242,25 +248,26 @@ class OrdersController extends BaseController
         }*/
 
         //男频站点 支付模板
-        if( ($male_site_template = $this->maleSite($this->distribution_channel_id)) ){
+        if (($male_site_template = $this->maleSite($this->distribution_channel_id))) {
             //\Log::info('$male_site_template is: '.$male_site_template);
             $template_id = $male_site_template;
         }
 
-        if( ($compare_id = $this->templateCompare()) ){
+        /*if( ($compare_id = $this->templateCompare()) ){
             $template_id = $compare_id;
-        }
+        }*/
 
         /*if( ($comparev2_id = $this->templateCompareV2()) ){
             $template_id = $comparev2_id;
         }*/
-
+        $this->outstandingYearOrder($this->uid);
         \Log::info('recordFirstIntoPayPage:$template_id:' . $template_id);
         $res = ProductService::getChargeProduct($template_id);
         if (!$res) {
             return response()->error('WAP_SYS_ERROR');
         }
-
+        $this->chargeList = $res;
+        $this->exchangeList();
         /*if ($this->send_order_id) {
             try {
                 Redis::sadd('pay_page_uv' . $this->send_order_id, $this->uid);
@@ -276,27 +283,27 @@ class OrdersController extends BaseController
         //yqLog('user')->info('user is ',['user'=>$user]);
         //yqLog('user')->info('user is ',['charge_count'=>$user->charge_count]);
         $data = [];
-        $appad =0;
-        if(in_array($this->distribution_channel_id,explode(',',env('ADS_OPEN_SITE')))){
+        $appad = 0;
+        if (in_array($this->distribution_channel_id, explode(',', env('ADS_OPEN_SITE')))) {
             $appad = $this->appad();
             $my_bid = $bid;
-            if($appad) {
-                try{
-                    AdvertiseUsersService::addAdAccessRec(['uid'=>$this->uid,
-                        'bid'=>$my_bid,
-                        'position'=>'RECHARGE',
-                        'created_at'=>date('Y-m-d H:i:s'),
-                        'updated_at'=>date('Y-m-d H:i:s'),
-                        'remark'=>$request->url()
+            if ($appad) {
+                try {
+                    AdvertiseUsersService::addAdAccessRec(['uid' => $this->uid,
+                        'bid' => $my_bid,
+                        'position' => 'RECHARGE',
+                        '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());
+                } catch (\Exception $e) {
+                    \Log::error('insert into advertise_access_rec failded:' . $e->getMessage());
                 }
             }
         }
         //\Log::info('ad-tu:uid:'.$uid.':'.$appad);
         foreach ($res as $v) {
-            if($template_id == 7 && $book_config && $book_config->charge_type == 'BOOK' && $v->price == 2){
+            if ($template_id == 7 && $book_config && $book_config->charge_type == 'BOOK' && $v->price == 2) {
                 continue;
             }
 
@@ -317,7 +324,7 @@ class OrdersController extends BaseController
                     'today_special' => false,
                     'save_text' => round($v->given / 100, 1) . '元',
                     'product_id' => $v->id,
-                    'show_free_ads'=>$appad
+                    'show_free_ads' => $appad
                 ];
                 $data[] = $temp;
             } elseif ($v->type == 'YEAR_ORDER') {
@@ -334,7 +341,7 @@ class OrdersController extends BaseController
                     'today_special' => false,
                     'save_text' => $save_text,
                     'product_id' => $v->id,
-                    'show_free_ads'=>$appad
+                    'show_free_ads' => $appad
                 ];
                 $data[] = $temp;
             } else {
@@ -357,7 +364,7 @@ class OrdersController extends BaseController
                     'today_special' => $v->is_default == 1 ? true : false,
                     'save_text' => $save_text,
                     'product_id' => $v->id,
-                    'show_free_ads'=>$appad
+                    'show_free_ads' => $appad
                 ];
                 $data[] = $temp;
             }
@@ -544,10 +551,10 @@ class OrdersController extends BaseController
         $chapter_model = new ChapterOrderService();
         $page_size = $request->input('page_size', 15);
         $chapter_order = $chapter_model->getByUid($this->uid, $page_size);
-        foreach ($chapter_order as $item){
-            if($item->fee == 0){
-                $result = AdVisitStatService::getInfoV2($this->uid,$item->cid,['UNLOCK','UNLOCK_2']);
-                if($result) $item->fee = '解锁';
+        foreach ($chapter_order as $item) {
+            if ($item->fee == 0) {
+                $result = AdVisitStatService::getInfoV2($this->uid, $item->cid, ['UNLOCK', 'UNLOCK_2']);
+                if ($result) $item->fee = '解锁';
             }
         }
         return response()->pagination(new ChapterOrderTransformer(), $chapter_order);
@@ -647,13 +654,13 @@ class OrdersController extends BaseController
     {
         $start_time = env('RECORD_FIRST_VISIT_PAY_PAGE_TIME');
         $template_id = 0;
-        if (in_array($this->distribution_channel_id,[123,211])  && $start_time && $this->uid) {
+        if (in_array($this->distribution_channel_id, [123, 211]) && $start_time && $this->uid) {
             $user = $this->_user_info;
             if (strtotime($user->created_at) > $start_time) {
                 $old = DB::table('user_first_visit_pay_page')->where('uid', $this->uid)->select('uid', 'template_type')->first();
                 if ($old) {
                     $template_id = $old->template_type;
-                    if($template_id) return $template_id;
+                    if ($template_id) return $template_id;
                 }
                 if ($bid && $bid == 1148) {
                     $template_id = $this->uid % 2 == 0 ? 2 : 1;
@@ -674,13 +681,14 @@ class OrdersController extends BaseController
         return $template_id;
     }
 
-    private function templateCompare(){
+    private function templateCompare()
+    {
         //if(!in_array($this->distribution_channel_id,[2,14,211,155,4427,4488,256,691,146,255,722,4364,5,202,318,4237,266,196,273,4236,148,8,4241,160,271,4053,123,4334,4487,4593,695,4025,4426,4174])){
         /*$start_time = env('TEMPLATE_COMPARE_START_TIME_3',0);
         if(!$start_time){
             return 0;
         }*/
-        if(!in_array($this->distribution_channel_id,[14,123,211,5,8,160,4236,4237,4241,374,243,244,245,320,321,324,337,338,538,539,751,752,753,754,4331,4384,4578,4580,4768,4769,4778,130,163,164,165,166,4126])){
+        if (!in_array($this->distribution_channel_id, [14, 123, 211, 5, 8, 160, 4236, 4237, 4241, 374, 243, 244, 245, 320, 321, 324, 337, 338, 538, 539, 751, 752, 753, 754, 4331, 4384, 4578, 4580, 4768, 4769, 4778, 130, 163, 164, 165, 166, 4126])) {
             return 0;
         }
 
@@ -689,8 +697,8 @@ class OrdersController extends BaseController
             return 0;
         }*/
         $template_id = 0;
-        $user = DataAnalysisSelectUserService::getByUidAndType($this->uid,'TEMPLATE_COMPARE_V3');
-        if($user){
+        $user = DataAnalysisSelectUserService::getByUidAndType($this->uid, 'TEMPLATE_COMPARE_V3');
+        if ($user) {
             $template_id = $user->attach;
         }
 
@@ -698,25 +706,26 @@ class OrdersController extends BaseController
     }
 
 
-    private function templateCompareV2(){
-        $start_time = env('TEMPLATE_COMPARE_START_TIME',0);
-        if(!$start_time){
+    private function templateCompareV2()
+    {
+        $start_time = env('TEMPLATE_COMPARE_START_TIME', 0);
+        if (!$start_time) {
             return 0;
         }
 
-        if(!in_array($this->distribution_channel_id,[2,146 ,155 ,255 ,256 ,691 ,722 ,4364 ,695 ,4174 ,4025 ,4593 ,4426 ,4742 ,4053 ,4334 ,4487])){
+        if (!in_array($this->distribution_channel_id, [2, 146, 155, 255, 256, 691, 722, 4364, 695, 4174, 4025, 4593, 4426, 4742, 4053, 4334, 4487])) {
             return 0;
         }
         $user = $this->_user_info;
-        if(strtotime($user->created_at) < $start_time){
+        if (strtotime($user->created_at) < $start_time) {
             return 0;
         }
 
-        $user = DataAnalysisSelectUserService::getByUidAndType($this->uid,'TEMPLATE_COMPAREV2');
-        if($user){
+        $user = DataAnalysisSelectUserService::getByUidAndType($this->uid, 'TEMPLATE_COMPAREV2');
+        if ($user) {
             $template_id = $user->attach;
-        }else{
-            $template_id = $this->uid % 2 == 0? 1:6;
+        } else {
+            $template_id = $this->uid % 2 == 0 ? 1 : 6;
             DataAnalysisSelectUserService::create(
                 $this->uid,
                 $this->distribution_channel_id,
@@ -727,41 +736,82 @@ class OrdersController extends BaseController
         return $template_id;
     }
 
-    private function maleSite($distribution_channel_id){
+    private function maleSite($distribution_channel_id)
+    {
         $info = ChannelService::getChannelCompanyInfo($distribution_channel_id);
         //\Log::info('maleSite info is:');
         //\Log::info($info);
-        if($info && isset($info->fans_gender)){
-            if($info->fans_gender == 1){
+        if ($info && isset($info->fans_gender)) {
+            if ($info->fans_gender == 1) {
                 return 1;
             }
         }
         return 0;
     }
 
-    private function appad(){
-        if($this->force_subscribe_info){
+    private function appad()
+    {
+        if ($this->force_subscribe_info) {
             $force_subscribe_info = $this->force_subscribe_info;
-        }else{
+        } else {
             $force_subscribe_info = $this->force_subscribe_info = ForceSubscribeService::forceSubscribeUsersByUid(['uid' => $this->uid]);
         }
-        if(!$force_subscribe_info){
+        if (!$force_subscribe_info) {
             return 0;
         }
         //\Log::info('force1:'.json_encode($force_subscribe_info));
         $force_sub_user_by_openid = ForceSubscribeUserIService::getForceSubscribeByUidOpenid($this->uid);
-        if($force_sub_user_by_openid){
+        if ($force_sub_user_by_openid) {
             $force_subscribe_info = $force_sub_user_by_openid;
             //\Log::info('force:'.json_encode($force_subscribe_info));
         }
-        if($force_subscribe_info->subscribe_time &&
-            (time()-strtotime($force_subscribe_info->subscribe_time) >=3*86400)
+        if ($force_subscribe_info->subscribe_time &&
+            (time() - strtotime($force_subscribe_info->subscribe_time) >= 3 * 86400)
             && !OrderService::isPaidUserByOpenid($force_subscribe_info->openid) &&
             !AdvertiseUserQueueService::getUserAdvertise($this->uid) &&
-            in_array($this->distribution_channel_id,explode(',',env('ADS_OPEN_SITE')))
-        ){
+            in_array($this->distribution_channel_id, explode(',', env('ADS_OPEN_SITE')))
+        ) {
             return 1;
         }
         return 0;
     }
+
+    private function outstandingYearOrder($uid)
+    {
+        if (!in_array($this->distribution_channel_id, explode(',', env('OUTSTANDING_YEAR_ORDER_SITE')))) {
+            return '';
+        }
+        $exist = DataAnalysisSelectUserService::getByUidAndType($uid, 'OUTSTANDING_YEAR_ORDER');
+        if($exist) return  '';
+        $userDivisionProperty = UserDivisionPropertyService::getUserProperty($uid);
+        if (!$userDivisionProperty) return '';
+
+        if ($userDivisionProperty != 'high') return '';
+
+        if ($uid % 2 == 0) {
+            $template_id = 1;
+        } else {
+            $template_id = 2;
+        }
+
+        DataAnalysisSelectUserService::create(
+            $uid,
+            $this->distribution_channel_id,
+            'OUTSTANDING_YEAR_ORDER',
+            -1, $template_id);
+        return '';
+    }
+
+    public function exchangeList(){
+        foreach ($this->chargeList as &$item){
+            if(!$item->switch_to) continue;
+            $order = Order::where('uid',$this->uid)->where('status','PAID')->where('product_id',$item->id)->first();
+            if($order){
+                $change = ProductService::getProductSingle($item->switch_to);
+                $item->id = $change->id;
+                $item->price = $change->price;
+                $item->given = $change->given;
+            }
+        }
+    }
 }

+ 30 - 3
app/Http/Controllers/Wap/Pay/OrdersController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers\Wap\Pay;
 
 use App\Modules\Book\Services\ChapterService;
+use App\Modules\OfficialAccount\Services\OfficialAccountService;
 use App\Modules\Subscribe\Services\OrderParamService;
 use App\Modules\Subscribe\Services\SubstituteOrderService;
 use App\Modules\User\Services\ReadRecordService;
@@ -137,6 +138,7 @@ class OrdersController extends Controller
         $pay_merchant = DB::table('pay_merchants')->select('id','appid', 'source', 'config_info')->where('id', $channel->pay_merchant_id)->where('is_enabled', 1)->first();
         if (!$pay_merchant || !$pay_merchant->appid || !$pay_merchant->source) return response()->error('WAP_PARAM_ERROR');
         if($pay_merchant->source == 'PALMPAYV2'){
+
             return redirect()->to($this->paympay($request,$pay_merchant));
         }
         //重定向 获取用户信息的次数
@@ -219,7 +221,7 @@ class OrdersController extends Controller
         $data['openid'] = $openid;//
 
         $data['body'] = 'novel read';
-        $official_name = $this->getSubscribeOfficialName($uid);
+        $official_name = $this->getSubscribeOfficialName($uid,$distribution_channel_id);
         if ($official_name) {
             $data['body'] = '搜索公众号' . $official_name . ',请继续阅读';
         }
@@ -435,7 +437,7 @@ class OrdersController extends Controller
         $data['price'] = $price;
         $data['create_ip'] = $ip;
         $data['body'] = 'novel read';
-        $official_name = $this->getSubscribeOfficialName($uid);
+        $official_name = $this->getSubscribeOfficialName($uid,$distribution_channel_id);
         if ($official_name) {
             $data['body'] = '搜索公众号' . $official_name . ',请继续阅读';
         }
@@ -531,6 +533,19 @@ class OrdersController extends Controller
         \Log::info('$wechatPay ok-------------------');
         $pay_info = $wechatPay->send($data);
         \Log::info('send ok-------------------');
+        
+        // 注册动作-》创建订单
+        $action_type = 'CreateOrder';
+        $param = [
+	        'openid' => isset($openid)?$openid:'0',
+	        'uid' =>isset($uid)?$uid:'0',
+	        'order_sn' => isset($trade_no)?$trade_no:'0',
+	        'amount' => isset($price)?$price:'0',
+        ];
+        \Log::info('FUCK_PALMPAYV2');
+        UserService::PushUserActionToQueue($action_type,$distribution_channel_id,$param);
+         
+        
         return $pay_info;
     }
 
@@ -1186,6 +1201,14 @@ class OrdersController extends Controller
                         Log::info('redis remote error-----------------------');
                         Log::info($e);
                     }
+                    
+                    // 注册动作-》回调订单
+                    $action_type = 'CallBackOrder';
+                    $param = [
+	                    'order_sn' => isset($trade_no)?$trade_no:'0',
+	                    'openid' => isset($uid)?$uid:'0',// 没有openid,用uid写log
+                    ];
+                    UserService::PushUserActionToQueue($action_type,$distribution_channel_id,$param);
 
                 }
             } else {
@@ -1473,7 +1496,7 @@ class OrdersController extends Controller
         return DB::table('force_subscribe_users')->where('uid',$uid)->where('is_subscribed', 1)->get();
     }
 
-    public function getSubscribeOfficialName($uid)
+    public function getSubscribeOfficialName($uid,$distribution_channel_id)
     {
         $subscribe = $this->getSubscribe($uid);
         if ($subscribe && isset($subscribe->appid)) {
@@ -1482,6 +1505,10 @@ class OrdersController extends Controller
                 return $official->nickname;
             }
         }
+        $res = OfficialAccountService::canUseOfficialAccountByChannelId(compact('distribution_channel_id'));
+        if (isset($res->nickname) && !empty($res->nickname)) {
+            return $res->nickname;
+        }
         return '';
     }
 

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

@@ -96,8 +96,13 @@ class LinkSubscribeController extends Controller
         }
 
         if($this->appad($uid,$distribution_channel_id)){
-            $this->userForceSubscribeTemplate($uid,$distribution_channel_id,4);
-            return view('wap.subscribeV3', compact('title', 'img', 'head_img', 'num', 'template'));
+            if($uid % 2 == 0){
+                $this->userForceSubscribeTemplate($uid,$distribution_channel_id,4);
+                return view('wap.subscribeV3', compact('title', 'img', 'head_img', 'num', 'template'));
+            }else{
+                $this->userForceSubscribeTemplate($uid,$distribution_channel_id,3);
+                return view('wap.subscribeV2', compact('title', 'img', 'head_img', 'num', 'template'));
+            }
         }else{
             return view('wap.subscribeV2', compact('title', 'img', 'head_img', 'num', 'template'));
         }

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

@@ -0,0 +1,116 @@
+<?php
+
+namespace App\Http\Controllers\Wap\User;
+
+use App\Modules\Book\Services\BookConfigService;
+use App\Modules\User\Models\User;
+use App\Modules\User\Services\ReadRecordService;
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use Hashids;
+use EasyWeChat\Foundation\Application;
+use Log;
+use Exception;
+
+/**
+ * 朋友圈链接
+ * Class CoflController
+ * @package App\Http\Controllers\Wap\User
+ */
+class CoflController extends Controller
+{
+    public function index(Request $request){
+        $bid = $request->get('bid');
+        if(empty($bid)){
+            $default_ink = $this->getLink();
+            return redirect()->to($default_ink);
+        }
+        $openid = $request->get('openid');
+        //授权
+        $params = $request->except('_url');
+        if(empty($openid)){
+            //$url = str_replace('http://', env('PROTOCOL') . '://', url()->current() . '?' . http_build_query($params));
+            $url = url()->current() . '?' . http_build_query($params);
+            $params['redirect_url'] = urlencode($url);
+            $app = new Application($this->auth($params));
+            return $app->oauth->redirect();
+        }
+        try{
+            $bid = Hashids::decode($bid)[0];
+        }catch (Exception $e){
+            return redirect()->to($this->getLink());
+        }
+
+        //获取用户
+        $user = $this->getUsers($openid);
+        if(!$user[0]){
+            $user[1] = 123;
+        }
+        //有阅读纪录的跳转
+        $read_record = ReadRecordService::getByField($user[0],$bid);
+        if($read_record){
+            $cid = explode('_',$read_record)[0];
+        }else{
+            //没有阅读记录的跳转
+            $book_info = BookConfigService::getBookById($bid);
+            $cid = $book_info->first_cid;
+        }
+        $params['cid'] = $cid;
+        if(isset($params['openid']))  unset($params['openid']);
+        if(isset($params['unionid']))  unset($params['unionid']);
+        $url = $this->getLink($user[1]).'reader?'.http_build_query($params);
+        return redirect()->to($url);
+    }
+
+    private function getUsers($openid){
+        $users = User::where('openid',$openid)->select('id','distribution_channel_id')->get();
+        if($users->isEmpty()) return [0,0];
+        $temp = null;
+        $distribution_channel_id = 0;
+        $uid = 0;
+        foreach ($users as $user){
+            $last_read = ReadRecordService::getByField($user->id,'last_read');
+            if(!$last_read) continue;
+            if(!$temp ){
+                $distribution_channel_id = $user->distribution_channel_id;
+                $uid  = $user->id;
+                $temp = $last_read;
+            }else{
+                $temp_last_read_info = explode('_',$temp);
+                $last_read_info = explode('_',$last_read);
+                if($last_read_info[2] > $temp_last_read_info[2]){
+                    $uid = $user->id;
+                    $distribution_channel_id = $user->distribution_channel_id;
+                    $temp = $last_read;
+                }
+            }
+        }
+        return [$uid,$distribution_channel_id];
+    }
+
+    private function getLink($distribution_channel_id=123){
+        $url_format = '%s://site%s.%s.com/';
+        return  sprintf(
+            $url_format,
+            env('PROTOCOL'),
+            encodeDistributionChannelId($distribution_channel_id),
+            env('CUSTOM_HOST')
+        );
+    }
+
+
+
+    private function auth($param){
+        $param['appid'] = 'wx9d389a73b88bbeae';
+        $options = [
+            'app_id' => 'wx9d389a73b88bbeae',
+            'secret' => '2f6594bb595dfa256b5512e43a32a3d3',
+            'oauth' => [
+                'scopes' => ['snsapi_base'],
+                'callback' => env('AUTH_CALLBACK_URL') . '?' . http_build_query($param),
+            ],
+        ];
+        return $options;
+    }
+
+}

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

@@ -297,5 +297,9 @@ class UserController extends BaseController
     	Cookie::queue(env('COOKIE_AUTH_WEB_WECHAT'), $uid, env('U_COOKIE_EXPIRE'), null, null, false, false);
     	return response('add_cookie:'.$uid);
     }
+
+    private function bindTelephoneStatus(){
+
+    }
     
 }

+ 19 - 2
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -13,6 +13,7 @@ use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\Statistic\Services\DataAnalysisSelectUserService;
 use App\Modules\Subscribe\Services\OrderService;
 use App\Modules\User\Services\ForceSubscribeUserIService;
+use App\Modules\User\Services\UserDivisionPropertyService;
 use App\Modules\User\Services\UserService;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Wap\BaseController;
@@ -130,6 +131,9 @@ class WelcomeController extends BaseController
             'appad_banner'=>'',
             'appad_url'=>''
         ];
+        //突出包年的充值页面
+        $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','');
@@ -183,7 +187,8 @@ class WelcomeController extends BaseController
             'yctj_url'=>$yctj_url,
             'appad'=>$add_ad_status['appad'],
             'appad_banner'=>$add_ad_status['appad_banner'],
-            'appad_url'=>$add_ad_status['appad_url']
+            'appad_url'=>$add_ad_status['appad_url'],
+            'outstanding_year_order'=>$outstanding_year_order
         ]);
         if ($this->uid == env('SPECIAL_USER_LOG', 2)) {
             myLog('special')->info('welcome --------------------------');
@@ -261,6 +266,17 @@ class WelcomeController extends BaseController
         return $channel_activities_flag;
     }
 
+    private function outstandingYearOrder(){
+        $outstanding_year_order = false;
+        if( in_array($this->distribution_channel_id,explode(',',env('OUTSTANDING_YEAR_ORDER_SITE'))) ){
+            if($this->uid%2 == 0){
+                $userDivisionProperty = UserDivisionPropertyService::getUserProperty($this->uid);
+                \Log::info('$userDivisionProperty is :'.$userDivisionProperty);
+                $userDivisionProperty && $userDivisionProperty == 'high' && $outstanding_year_order = true;
+            }
+        }
+        return $outstanding_year_order;
+    }
     private function luckyUserForeverFree()
     {
         $lucky_user = 0;
@@ -500,7 +516,8 @@ class WelcomeController extends BaseController
         if ($setting && $setting->customer_img_url) {
             $customer_service = $setting->customer_img_url;
         } else {
-            $customer_service = "https://cdn-novel.iycdm.com/static/img/kefu20190319.jpg";
+            $customer_service = env('KE_FU_QRCODE','https://cdn-novel.iycdm.com/static/img/kefu20190319.jpg');
+            //$customer_service = 'https://cdn-novel.iycdm.com/static/img/kefu20190330.jpg';
         }
         return $customer_service;
     }

+ 10 - 8
app/Http/Middleware/ReadOauth.php

@@ -8,6 +8,7 @@ use App\Modules\Channel\Services\ChannelService;
 use App\Modules\OfficialAccount\Services\ForceSubscribeService;
 use App\Modules\SendOrder\Services\SendOrderService;
 use App\Modules\Statistic\Services\WapVisitStatService;
+use App\Modules\Subscribe\Services\OrderService;
 use App\Modules\User\Models\YqMove;
 use App\Modules\User\Services\ReadRecordService;
 use App\Modules\User\Services\UserService;
@@ -60,14 +61,7 @@ class ReadOauth
         if (!$distribution_channel_id) {
             return response()->error('WAP_SYS_ERROR');
         }
-        //禁止访问的site
-        $not_allow_access_site = env('NOT_ALLOW_ACCESS_SITE', '');
-        if ($not_allow_access_site) {
-            $not_allow_access_site_arr = explode(',', $not_allow_access_site);
-            if (in_array($distribution_channel_id, $not_allow_access_site_arr)) {
-                return response($this->notAccessPage())->header('Content-Type', 'text/html');
-            }
-        }
+
         $uri_send_order_id = 0;
         $uri = $request->input('_url');
         if (strpos($uri, '/yun/') !== false) {
@@ -101,6 +95,14 @@ class ReadOauth
             }
         }
 
+        //禁止访问的site
+        $not_allow_access_site = env('NOT_ALLOW_ACCESS_SITE', '');
+        if ($not_allow_access_site) {
+            $not_allow_access_site_arr = explode(',', $not_allow_access_site);
+            if (in_array($distribution_channel_id, $not_allow_access_site_arr) && !OrderService::isPaidUser($uid_cookie)) {
+                return response($this->notAccessPage())->header('Content-Type', 'text/html');
+            }
+        }
         //个性化推送
         $this->stylePush($request, $uid_cookie, $distribution_channel_id);
 

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

@@ -39,10 +39,15 @@ 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::get('friendlink','User\CoflController@index');
+});
+
 Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap','middleware'=>'EnableCross'],function(){
 
     Route::any('help','Web\RedirectController@help');
 
+    Route::any('friendlink','User\CoflController@index');
 
     Route::any('testLogin','Web\RedirectController@testLogin');
 

+ 4 - 1
app/Libs/Helpers.php

@@ -538,6 +538,9 @@ function specialChannelAuthInfoV2(){
         '4980'=>'wx002be80fb65d808e',
         '5148'=>'wx8e9ff7a97fa67675',
         '5189'=>'wx475125bc6dd942f9',
-        '4941'=>'wxe7f83fba4596cb03'
+        '4941'=>'wxe7f83fba4596cb03',
+        '5319'=>'wxa697fd62760dfc53',
+        '5365'=>'wx40c098d5ef384b2d',
+        '5366'=>'wx1fd33388075778fe'
     ];
 }

+ 3 - 2
app/Modules/Product/Models/Product.php

@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
 class Product extends Model
 {
     protected $table = 'products';
-    protected $fillable = ['price', 'type', 'given', 'is_default', 'is_enabled', 'sequence'];
+    protected $fillable = ['price', 'type', 'given', 'is_default', 'is_enabled', 'sequence','switch_to'];
 
     public static function getChargeProduct($template_type)
     {
@@ -20,7 +20,8 @@ class Product extends Model
                 'products.type',
                 'products.given',
                 'products.is_default',
-                'products.sequence'
+                'products.sequence',
+                'products.switch_to'
             )
             ->orderBy('sequence')->get();
     }

+ 2 - 2
app/Modules/Subscribe/Services/ChapterOrderService.php

@@ -38,7 +38,7 @@ class ChapterOrderService
     {
         $chapter_model = new ChapterOrder();
         $chapter_model->setCurrentTable($uid);
-        return $chapter_model->where('uid', $uid)->orderBy('created_at', 'desc')->paginate($page_size);
+        return $chapter_model->where('uid', $uid)->orderBy('id', 'desc')->paginate($page_size);
     }
 
 
@@ -55,7 +55,7 @@ class ChapterOrderService
         $chapter_model = new ChapterOrder();
         $chapter_model->setCurrentTable($uid);
 
-        $chapter = $chapter_model->where('uid', $uid)->orderBy('updated_at', 'desc');
+        $chapter = $chapter_model->where('uid', $uid)->orderBy('id', 'desc');
         if ($startTime) {
             $chapter->where('updated_at', '>=', $startTime);
         }

+ 11 - 0
app/Modules/User/Models/UserDivisionProperty.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Modules\User\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class UserDivisionProperty extends Model
+{
+    protected $table = 'user_division_property';
+    protected $fillable = ['uid','property','is_enable'];
+}

+ 11 - 1
app/Modules/User/Services/ReadRecordService.php

@@ -17,7 +17,7 @@ use DB;
 class ReadRecordService
 {
 
-    private static $not_uid_key = ['last_read','send_order_id','sign_count','sign_counts','sign_info','sign_day','smart_push','inner_send_order_id','gxhp'];
+    private static $not_uid_key = ['last_read','send_order_id','sign_count','sign_counts','sign_info','sign_day','smart_push','inner_send_order_id','gxhp','property','bind_phone_status'];
 
     /**
      * 获取
@@ -499,4 +499,14 @@ class ReadRecordService
         }
         return '';
     }
+
+    public static function setByField(int $uid,$field,$value){
+        if(!in_array($field,self::$not_uid_key)){
+            return false;
+        }
+        try{
+            return Redis::hset('book_read:' . $uid,$field,$value);
+        }catch (\Exception $e){}
+        return '';
+    }
 }

+ 119 - 0
app/Modules/User/Services/UserDivisionPropertyService.php

@@ -0,0 +1,119 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: z-yang
+ * Date: 2019/3/22
+ * Time: 10:53
+ */
+
+namespace App\Modules\User\Services;
+
+use App\Modules\User\Models\UserDivisionProperty;
+use DB;
+
+class UserDivisionPropertyService
+{
+
+    const PROPERTY='property';
+
+    public static function getUserProperty($uid){
+        if(($result = self::getUserPropertyFromRedis($uid)))  return $result;
+
+        if(($result = self::getUserPropertyFromTable($uid))) return $result;
+
+        return self::getUserPropertyFromStats($uid);
+    }
+
+    public static function getUserPropertyFromRedis($uid){
+        return ReadRecordService::getByField($uid,self::PROPERTY);
+    }
+    public static function getUserPropertyFromTable($uid){
+        $result = UserDivisionProperty::where('uid',$uid)->where('is_enable',1)->select('property','created_at')->first();
+        if($result){
+            return $result->property;
+        }
+        return '';
+    }
+
+    public static function getUserPropertyFromStats($uid){
+        $sql = "SELECT f.uid,f.subscribe_time,f.appid,(o.price) FROM force_subscribe_users f  LEFT JOIN orders o on f.uid = o.uid and  o.`status` = 'PAID' 
+and o.created_at>=f.subscribe_time and o.created_at <= DATE_ADD(f.subscribe_time,INTERVAL 3 day) where f.is_subscribed = 1 and f.uid = %s ";
+        $res = DB::select(sprintf($sql,$uid));
+        if(!$res){
+            return '';
+        }
+        $data = [];
+        foreach ($res as $value){
+            $data[] = ['subscribe_time'=>$value->subscribe_time,'appid'=>$value->appid,'price'=>$value->price];
+        }
+        if(!$data) return '';
+        $collection = collect($data);
+        $sort = $collection->groupBy('appid')->sortByDesc(function($item, $key){
+            return $item[0]['subscribe_time'];
+        });
+
+        foreach ($sort as $key=>$v){
+            if(isset($v[0]) && !empty($v[0])){
+                $charge_amount = $v[0]['price']?$v[0]['price']:0;
+                if($charge_amount >=50){
+                    self::createUser($uid,'high');
+                    ReadRecordService::setByField($uid,self::PROPERTY,'high');
+                    return 'high';
+                }
+                if(time()-strtotime($v[0]['subscribe_time']) >= 3*86400){
+                    //强关时间大于3天
+                    if($charge_amount >=50){
+                        self::createUser($uid,'high');
+                        ReadRecordService::setByField($uid,self::PROPERTY,'high');
+                        return 'high';
+                    }elseif($charge_amount>2){
+                        self::createUser($uid,'medium');
+                        ReadRecordService::setByField($uid,self::PROPERTY,'medium');
+                        return 'medium';
+                    }elseif ($charge_amount==2){
+                        self::createUser($uid,'low');
+                        ReadRecordService::setByField($uid,self::PROPERTY,'low');
+                        return 'low';
+                    }else{
+                        self::createUser($uid,'none');
+                        ReadRecordService::setByField($uid,self::PROPERTY,'none');
+                        return 'none';
+                    }
+                }
+            }
+        }
+        return '';
+    }
+
+    public static function createUser($uid,$property){
+        UserDivisionProperty::where('uid',$uid)->update(['is_enable'=>0]);
+        UserDivisionProperty::create([
+            'uid'=>$uid,
+            'property'=>$property,
+            'is_enable'=>1
+        ]);
+    }
+
+    public static function getUserBindPhoneStatus($uid,$page){
+        $value_format = 'sign_readrecord_%s_%s';
+        if( !($property = self::getUserProperty($uid)) ){
+            return '';
+        }
+        $result = [
+            'sign'=>0,
+            'readrecord'=>0,
+            'is_bind'=>0,
+            'bind_day'=>0
+        ];
+        $info = ReadRecordService::getByField($uid,'bind_phone_status');
+        if($info){
+            $info = json_decode($info,1);
+        }else{
+            $page == 'sign' && $result['sign'] = 1;
+            $page == 'readrecord' && $result['readrecord'] = 1;
+            ReadRecordService::setByField($uid,'bind_phone_status',json_encode($result));
+        }
+
+        return $result;
+    }
+}

+ 14 - 0
app/Modules/User/Services/UserService.php

@@ -12,6 +12,7 @@ use App\Modules\User\Models\User;
 use DB;
 use App\Jobs\ActionTrigger;
 use App\Modules\OfficialAccount\Models\DistributionSelfDefineConfig;
+use App\Modules\Channel\Models\Channel;
 
 class UserService
 {
@@ -263,12 +264,25 @@ 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));
+    		
     		// 判断站点是否需要额外逻辑
     		$distribution_self_define_config = DistributionSelfDefineConfig::getDistributionSelfDefineConfig($distribution_channel_id,'action_call_ycsd');
     		if(empty($distribution_self_define_config)){
 //     			\Log::info('not_action_call_ycsd:'.$distribution_channel_id);
     			return '';
     		}else{
+    			\Log::info('PushUserActionToQueue_param:'.$distribution_channel_id.' action_type:'.$action_type. ' param:'.json_encode($param));
+    			// 如果支付通道已经切换回去,则不推送了
+    			$pay_merchant_id = env('YCSD_CALL_PAY_MERCHANT_ID');
+    			$channel = Channel::getById($distribution_channel_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);
+    			if($current_pay_merchant_id != $pay_merchant_id){
+    				\Log::info('action_call_ycsd_has_change_pay_return:'.$distribution_channel_id);
+    				return '';
+    			}
+
     			\Log::info('action_call_ycsd:'.$distribution_channel_id);
     		}
     		

+ 3 - 2
resources/views/wap/advertise.blade.php

@@ -176,7 +176,7 @@
             // 判断是否在微信内
             // 判断是否在微信内
             if (isWechat) {
-                mask.style.display = "block";
+                //mask.style.display = "block";
                 $.ajax({
                     url:'/advertise/recieveUserBehavior',
                     type:'post',
@@ -186,10 +186,11 @@
                         'position':'DOWNLOAD_BTN'
                     }
                 })
-                return;
+                //return;
             }
             // 执行下载操作
             location.href='/advertise/jump?uid='+uid+'&bid='+bid+'&ad='+ ad_id +'&sign=' +sign+ '&timestamp=' + timestamp;
+            //location.href='https://url.cn/5T6fJWf';
         },
         false
     );

+ 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-3-26/css/app.0b9e8cd3ffa9e3bce71ec9a23c4fe830.css rel=stylesheet>
+    <link href=https://cdn-novel.iycdm.com/static2019-3-28/css/app.4b6ad5b81ea3c409d155f262e77e66b4.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-3-26/js/manifest.eab4045afbca18aae068.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-3-26/js/vendor.ffff3089fc2f18220e2f.js></script>
-<script type=text/javascript src=https://cdn-novel.iycdm.com/static2019-3-26/js/app.8947b7a2af3613459c62.js></script>
+        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>
 </body>
 </html>