|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|