zz пре 6 година
родитељ
комит
97034498bb

+ 41 - 0
app/Console/Commands/WapVisitStat.php

@@ -87,6 +87,9 @@ class WapVisitStat extends Command
             case 11:
                 $this->substituteStats();
                 break;
+            case 12:
+                $this->StylePushStats();
+                break;
         }
         return false;
     }
@@ -653,4 +656,42 @@ class WapVisitStat extends Command
         }
         Redis::del('substitutepagepvuv'.$day);
     }
+
+    private function StylePushStats(){
+        $date = date('Y-m-d',time()-86400);
+        $record = Redis::SMEMBERS(sprintf('push:stylepush:date:%s',$date));
+        if(!$record)return ;
+        $i = 0;
+        $data = [];
+        foreach ($record as $item){
+            $item_array = explode('_',$item);
+            $distribution_channel_id = $item_array[0];
+            $gxhp = $item_array[1];
+            $uv_key = sprintf('push:stylepush:uv:%s:gxhp:%s:date:%s',$distribution_channel_id,$gxhp,$date);
+            $pv_key = sprintf('push:stylepush:pv:%s:gxhp:%s:date:%s',$distribution_channel_id,$gxhp,$date);
+            $uv = Redis::scard($uv_key);
+            $pv = Redis::get($pv_key);
+            $data[] = [
+                'day' => $date,
+                'key' => $distribution_channel_id,
+                'from_type' => $gxhp,
+                'pv' => $pv,
+                'uv' => $uv,
+                'type' => 8,
+                'created_at' => date('Y-m-d H:i:s'),
+                'updated_at' => date('Y-m-d H:i:s')
+            ];
+            Redis::del($uv_key);
+            Redis::del($pv_key);
+            if($i && $i%100 == 0){
+                DB::table('wap_visit_stats')->insert($data);
+                $data = [];
+            }
+            $i++;
+        }
+        if($data){
+            DB::table('wap_visit_stats')->insert($data);
+        }
+        Redis::del(sprintf('push:stylepush:date:%s',$date));
+    }
 }

+ 10 - 0
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\Subscribe\Services\OrderParamService;
 use App\Modules\Subscribe\Services\SubstituteOrderService;
 use App\Modules\User\Services\ReadRecordService;
 use Illuminate\Routing\Controller;
@@ -298,6 +299,7 @@ class OrdersController extends Controller
         if($result)
         {
             $this->orderCreated($init_order);
+            $this->recordOtherParam($result->id, $uid);
         }
 
         if ($request->get('suid')) {
@@ -473,6 +475,7 @@ class OrdersController extends Controller
         if($result)
         {
             $this->orderCreated($init_order);
+            $this->recordOtherParam($result->id, $uid);
         }
         if ($suid) {
             $this->createSubstituteOrder($result->id, $uid, $suid);
@@ -1498,6 +1501,13 @@ class OrdersController extends Controller
         SubstituteOrderService::createOrder($order_id, $uid, $pay_uid);
     }
 
+    private function recordOtherParam($order_id, $uid){
+        $gxhp = ReadRecordService::getByField($uid,'gxhp');
+        if($gxhp){
+            OrderParamService::create($order_id,$gxhp);
+        }
+    }
+
     private function substituteOrderPrice($order_id,$prize_fee=500)
     {
         SubstituteOrderService::SubstituteOrderPrize($order_id, $prize_fee);

+ 18 - 0
app/Http/Middleware/ReadOauth.php

@@ -107,6 +107,9 @@ class ReadOauth
             Redis::hset('book_read:' . $uid_cookie, 'send_order_id', $uri_send_order_id);
         }
 
+        //个性化推送
+        $this->stylePush($request,$uid_cookie,$distribution_channel_id);
+
         //禁止明文访问
         if ($this->isForbidPrimaryNumberChannleID($origin_distribution_channel_id, $uid_cookie)) {
             return response('<html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>该网站地址暂停访问</title></head><body style="padding:0;margin:0;font-size:0"><div style="width:300px;height:100px;margin: 20px auto"><p style="font-size:20px;color:red;text-align:center">该网站地址暂停访问,请联系客服微信获取新地址:wuxinchao12</p></body></html>');
@@ -762,6 +765,21 @@ class ReadOauth
         return $redirect;
     }
 
+    //个性化推送
+    private function stylePush(Request $request,$uid,$distribution_channel_id){
+        $gxhp = $request->get('gxhp');
+        if(!$gxhp || !$uid || !$distribution_channel_id) return ;
+
+        $date = date('Y-m-d');
+        $uv_key = sprintf('push:stylepush:uv:%s:gxhp:%s:date:%s',$distribution_channel_id,$gxhp,$date);
+        $pv_key = sprintf('push:stylepush:pv:%s:gxhp:%s:date:%s',$distribution_channel_id,$gxhp,$date);
+        try{
+            Redis::hset('book_read:' . $uid, 'gxhp', $gxhp);
+            Redis::sadd($uv_key, $uid);
+            Redis::incr($pv_key);
+            Redis::sadd(sprintf('push:stylepush:date:%s',$date),sprintf('%s_%s',$distribution_channel_id,$gxhp));
+        }catch (\Exception $e){}
+    }
     private function yqTest(Request $request, $uid,$channel_id)
     {
         if (!$request->has('fromtype')) return '';

+ 11 - 0
app/Modules/Subscribe/Models/OrderParam.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Modules\Subscribe\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class OrderParam extends Model
+{
+    protected $table = 'order_params';
+    protected $fillable = ['order_id','gxhp'];
+}

+ 20 - 0
app/Modules/Subscribe/Services/OrderParamService.php

@@ -0,0 +1,20 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: z-yang
+ * Date: 2019/2/26
+ * Time: 18:52
+ */
+
+namespace App\Modules\Subscribe\Services;
+
+use App\Modules\Subscribe\Models\OrderParam;
+
+class OrderParamService
+{
+    public static function create($order_id,$gxhp){
+        try{
+            OrderParam::create(compact('order_id','gxhp'));
+        }catch (\Exception $e){}
+    }
+}

+ 10 - 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_day','smart_push','inner_send_order_id'];
+    private static $not_uid_key = ['last_read','send_order_id','sign_count','sign_counts','sign_day','smart_push','inner_send_order_id','gxhp'];
 
     /**
      * 获取
@@ -485,4 +485,13 @@ class ReadRecordService
         }
         return [];
     }
+
+    public static function getByField(int $uid,$field){
+        try{
+            return Redis::hget('book_read:' . $uid,$field);
+
+        }catch (\Exception $e){
+        }
+        return '';
+    }
 }

+ 2 - 2
config/app.php

@@ -159,7 +159,7 @@ return [
         App\Providers\SQLServiceProvider::class,
         Vinkla\Hashids\HashidsServiceProvider::class,
         Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
-        Mews\Captcha\CaptchaServiceProvider::class,
+        //Mews\Captcha\CaptchaServiceProvider::class,
         //VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider::class,
     ],
 
@@ -208,7 +208,7 @@ return [
         'View' => Illuminate\Support\Facades\View::class,
          'Hashids' => Vinkla\Hashids\Facades\Hashids::class,
         'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class ,
-        'Captcha' => Mews\Captcha\Facades\Captcha::class,
+        //'Captcha' => Mews\Captcha\Facades\Captcha::class,
     ],
 
 ];