소스 검색

'判断用户属性'

zhuchengjie 2 년 전
부모
커밋
16b74c20fb
1개의 변경된 파일75개의 추가작업 그리고 0개의 파일을 삭제
  1. 75 0
      app/Http/Controllers/QuickApp/Book/BookController.php

+ 75 - 0
app/Http/Controllers/QuickApp/Book/BookController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers\QuickApp\Book;
 
+use App\Consts\BaseConst;
 use App\Libs\Utils;
 use App\Modules\Book\Services\BookAuditService;
 use App\Modules\Channel\Services\ChannelRecommendBookConfigService;
@@ -9,6 +10,7 @@ use App\Modules\Channel\Services\ChannelRecommendBooksService;
 use App\Modules\RecommendBook\Services\QappRecommendService;
 use App\Modules\RecommendBook\Services\RecommendService;
 use App\Modules\Book\Services\RecoBannerService;
+use App\Modules\Trade\Services\OrderService;
 use App\Modules\User\Models\QappPackage;
 use App\Modules\User\Services\QappUserService;
 
@@ -27,6 +29,7 @@ use App\Modules\Subscribe\Services\ChapterOrderService;
 use App\Modules\Subscribe\Services\YearOrderService;
 use App\Modules\User\Services\ReadRecordService;
 use Hashids;
+use Illuminate\Support\Facades\Redis;
 
 class BookController extends BaseController
 {
@@ -652,6 +655,12 @@ class BookController extends BaseController
             return response()->success([]);
         }
 
+        //根据频率和用户属性决定是否需要返回
+        $res = $this->checkUsersAuth($config);
+        if(!$res){
+            return response()->success([]);
+        }
+
         $list = ChannelRecommendBooksService::getRecommendBooks($package_info->channel_id,$id);
 
         //获取返回的bid
@@ -663,5 +672,71 @@ class BookController extends BaseController
         return response()->success($list);
     }
 
+    /**
+     * 判断用户是否需要推荐
+     * @param $config
+     * @return bool
+     */
+    protected function checkUsersAuth($config)
+    {
+        $res = false;
+        switch($config->person)
+        {
+            case 'pay':
+                //付费用户
+                $orders = OrderService::getUserLastestOrder($this->uid);
+                if($orders){
+                    $res = true;
+                }
+                break;
+            case 'send_order':
+                //派单用户
+                if($this->send_order_id != 0){
+                    $res = true;
+                }
+                break;
+            case 'pay_send_order':
+                //付费派单用户
+                $orders = OrderService::getUserLastestOrder($this->uid);
+                if($orders && $this->send_order_id != 0){
+                    $res = true;
+                }
+                break;
+            case 'all':
+                $res = true;
+                break;
+        }
+
+        if($res === false){
+            return false;
+        }
+
+        //频率判断
+        if($config->frequency == 'back'){
+            //返回即推送
+            return true;
+        }
+
+        $day = strtotime(date('Y-m-d H:i:s'));
+        $nextDay = strtotime( date('Y-m-d'). ' +1 day');
+        $nextWeek = strtotime(date('Y-m-d',strtotime('+1 week last monday')));
+        if($config->frequency == 'day'){
+            //每日推送
+            if(!Redis::exists('recommend:'.$config->channel_id.':'.$this->uid)){
+                Redis::setex('recommend:'.$config->channel_id.':'.$this->uid,($nextDay-$day),1);
+                return true;
+            }
+            return false;
+        }
+
+        if($config->frequency == 'week'){
+            //每周推送
+            if(!Redis::exists('recommend:'.$config->channel_id.':'.$this->uid)){
+                Redis::setex('recommend:'.$config->channel_id.':'.$this->uid,($nextWeek-$day),1);
+                return true;
+            }
+            return false;
+        }
+    }
 
 }