1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- <?php
- namespace App\Modules\Channel\Services;
- use App\Modules\Channel\Models\ChannelRecommendBooks;
- class ChannelRecommendBooksService
- {
- static function getRecommendBooks($channel_id,$id,$limit = 3,$data = [])
- {
- if(!isset($channel_id)) return [];
- $query = ChannelRecommendBooks::leftjoin('book_configs','book_configs.bid','channel_recommend_books.bid')
- ->leftjoin('books','books.id','channel_recommend_books.bid')
- ->select('books.intro','books.category_name','book_configs.book_name','book_configs.cover','book_configs.bid')
- ->orderBy('channel_recommend_books.priority','DESC')->orderBy('channel_recommend_books.created_at','DESC');
- $query->where('channel_recommend_books.channel_id',$channel_id);
- if(!empty($id) && $id != 0){
- $query->where('channel_recommend_books.id','<',$id);
- }
- $list = $query->limit($limit)->get()->toArray();
- $lists = array_merge($list,$data);
- \Log::info('merge:list');
- \Log::info($lists);
- if(count($lists) < 3){
- $count = 3 - count($lists);
- \Log::info('count:'.$count);
- self::getRecommendBooks($channel_id,0,$count,$lists);
- }
- \Log::info('return:lists');
- \Log::info($lists);
- return $lists;
- }
- static function incrRecommendNum($channel_id,$bids)
- {
- return ChannelRecommendBooks::where('channel_id',$channel_id)->whereIn('bid',$bids)->increment('recommend_num');
- }
- }
|