tags = BookTagsService::getBookTags($bid); return $res; } /** * 根据bid数组获取多本图书 * @param $where * @param null $order * @return mixed */ public static function getBooksByIds(array $where, $order = []) { if(empty($where)){ return (object)array(); } if ($order) $res = BookConfig::getBooksByIds($where, $order); else $res = BookConfig::getBooksByIds($where); return $res; } /** * * 根据条件获取图书 * @param array $where ['key'=>'根据关键词查询','category_id'=>'根据分类id查询','is_on_shelf'=>上下架查询,'channel_name'=>'频道查询(男频女频)'] * @param array $order 排序 默认是bid排序 * @param int $page_size * @return mixed */ public static function getBooks(array $where, array $order = [], $page_size = 15) { return BookConfig::getBooks($where, $order, $page_size); } /** * * 根据条件获取图书 * @param array $where ['key'=>'根据关键词查询','category_id'=>'根据分类id查询','is_on_shelf'=>上下架查询,'channel_name'=>'频道查询(男频女频)'] * @param array $order 排序 默认是bid排序 * @param int $page_size * @return mixed */ public static function getPromotionBooks(array $where, array $bids, array $order = [], $page_size = 15) { return BookConfig::getPromotionBooks($where, $bids, $order, $page_size); } /** * @param array $where * @param array $data */ public static function getPromotionBooksV2(array $where, array $whereIn, array $data, array $orwhereIn,$whereDeedIn='',$superior_lib='',$keywords='') { //全站派单 $total_send_order_sum = '(select sum(num) as total_send_order_sum from book_send_order_stats where book_send_order_stats.bid=book_configs.bid) as total_send_order_sum'; //七天派单数 $week_send_orders = sprintf( "(select sum(num) as week_send_order_sum from book_send_order_stats as a where a.bid=book_configs.bid and a.day>='%s') as week_send_order_sum", date('Y-m-d', strtotime('-7 day')) ); //我的派单 $channel_send_orders = sprintf( "(select sum(num) as channel_send_order_sum from book_send_order_stats as a where a.bid=book_configs.bid and a.distribution_channel_id=%s) as channel_send_order_sum", $data['distribution_channel_id'] ); //我的派单数 $res = BookConfig::join('books', 'book_configs.bid', '=', 'Books.id') ->leftjoin('chapters','books.first_cid','=','chapters.id') ->leftjoin('book_categories', 'book_categories.id', 'books.category_id') ->leftjoin('book_channel_scores', function ($join) use ($data) { $join->where('book_channel_scores.distribution_channel_id', '=', $data['distribution_channel_id']) ->on('book_channel_scores.bid', '=', 'book_configs.bid'); }); if($superior_lib){ $res->leftjoin($superior_lib,$superior_lib.'.bid','=','book_configs.bid'); } $res->select( 'book_configs.book_name', 'book_configs.bid', 'book_categories.category_name', 'book_categories.channel_name', 'books.chapter_count', 'books.size', 'book_configs.cover', 'book_configs.charge_type', 'books.status', 'book_channel_scores.score as own_score', 'book_configs.recommend_index', 'book_configs.editor_recommend', 'book_configs.created_at', 'book_configs.editor_recommend', DB::raw($total_send_order_sum), DB::raw($week_send_orders), DB::raw($channel_send_orders), 'books.first_cid', 'chapters.name as first_chapter_name', 'books.chapter_count' )->where($where); if ($whereIn) { $res->whereNotIn('book_configs.bid', $whereIn); } if($whereDeedIn){ $res->whereIn('book_configs.bid',$whereDeedIn); } $res->where(function ($query) use ($orwhereIn) { $query->where('book_configs.is_on_shelf', 2); if ($orwhereIn) { $query->orWhere('book_configs.is_on_shelf', 1)->whereIn('book_configs.bid', $orwhereIn); } }); if ($keywords) { $res->where(function ($query) use ($keywords) { $query->where('book_configs.book_name', 'like', '%' . $keywords . '%') ->orWhere([ ['book_configs.roles','like','%'.$keywords.'%'], ['book_configs.is_on_shelf','=',2] ]); //->orWhere('book_configs.roles', 'like', '%' . $keywords . '%'); }); } /*if ($orwhere) { $res->orWhere(function ($query) use ($orwhere, $orwhereIn,$whereDeedIn) { if($whereDeedIn){ $orwhereIn = $whereDeedIn; } $query->where($orwhere)->whereIn('book_configs.bid', $orwhereIn); }); }*/ //\Log::info('books_list:books_data:'.json_encode($data)); if(in_array($data['order_field'],['total_send_order_sum','week_send_order_sum','order_index'])) { //\Log::info('books_list:order_filed:'.$data['order_field']); return $res->orderBy($data['order_field'], $data['order_type']) ->orderBy('recommend_index', 'desc') ->orderBy('books.size', 'desc') ->paginate(); }else{ $res->orderBy($data['order_field'], $data['order_type']); if($data['order_field']=='recommend_index'){ $res->orderBy('books.size','desc'); } return $res->paginate(); } } /** * 根据关键词查询 * @param $key * @param int $page_size * @param int|Array $is_on_shelf 上架信息 * @return mixed */ public static function getBooksByKey($key, $page_size = 15, $is_on_shelf = null) { if (!$is_on_shelf) { $is_on_shelf = [1, 2]; } $res = BookConfig::getBooksByKey($key, $page_size, $is_on_shelf); return $res; } /** * 更新图书 * 可以修改的字段 * ['force_subscribe_chapter_seq'=>'强关章节','price'=>价格,cover=>封面,book_name,charge_type,hot, * is_on_shelf,recommend_index,is_show_index_content,click_count,copyright_limit_data] * @param $bid * @param array $data * @return bool */ public static function updateBookConfig($bid, array $data) { if (empty($data)) return false; $book_info = BookConfig::getBookById($bid); if (!$book_info) return false; if (isset($data['price']) && $data['price'] != '') { if ($data['price'] != $book_info->price) { $product = ProductService::addProduct(['price' => $data['price'], 'type' => 'BOOK_ORDER', 'given' => 0]); $data['product_id'] = $product->id; } } return BookConfig::updateBookInfo($bid, $data); } /** * @param $protuct_id * @return mixed */ public static function getBookByProduct($protuct_id) { return BookConfig::getBookByProduct($protuct_id); } /** * 获取相同频道的高推荐书籍 循环获取未读的 * @param $bid * @param $num * @param $uid * @param string $property * @return false */ public static function getSimpleChannelBookLoop($bid, $num,$uid, $property = '') { return BookConfig::getSimpleChannelBookLoop($bid, $num,$uid, $property); } /** * 获取相同频道的高推荐书籍 超哥客服消息专用 * @param $bid * @param int $num * @return bool */ public static function getSimpleChannelBook($bid, $num = 4) { return BookConfig::getSimpleChannelBook($bid, $num); } /** * 获取托管智能推送的书籍,头条要95分以上,其余4条优质书库随机,按分数倒叙排列 * @param $bid * @param int $num * @return bool */ public static function getTrusteeShipChannelBook($distribution_channel_id, $channel_name, $num = 4) { return BookConfig::getTrusteeShipChannelBook($distribution_channel_id, $channel_name, $num); } /** * 获取阅读完的推荐 * @param $category_id * @param int $num * @return mixed */ public static function getRecommendBooks($bid, $category_id, $num = 4) { return BookConfig::getRecommendBooks($bid, $category_id, $num); } /** * 修改推荐位 * @param int $bid * @param int $cid * @return mixed */ public static function editRecommendCid($bid, $cid) { return BookConfig::where('bid', $bid)->update(['recommend_cid' => $cid]); } /** * 是否优质书籍 * @param int $bid * @param int $high * @return mixed */ public static function editIsHighQuality($bid, $high) { return BookConfig::where('bid', $bid)->update(['is_high_quality' => $high]); } /** * 签到推荐 * @param array $bid * @param $channel_name * @param int $num * @return mixed */ public static function getSignRecommendBooks(array $bid, $channel_name, $num = 2) { return BookConfig::getSignRecommendBooks($bid, $channel_name, $num); } /** * 获取指定bid的书籍 */ public static function getBidRecommendBooks(array $bids) { return BookConfig::getBidRecommendBooks($bids); } public static function getH5RecommendBooks($uid, $pos, $num) { return BookConfig::getH5RecommendBooks($uid, $pos, $num); } public static function getSpecialHotRandomRecommendBooks($num,$channel_name) { return BookConfig::getSpecialHotRandomRecommendBooks($num,$channel_name); } /** * 修改vip卡点 */ public static function editVipSeq($bid, $seq) { return BookConfig::updateVipSeq($bid, $seq); } public static function getAllBooks($on_shelf, $order = []) { return BookConfig::getAllBooks($on_shelf, $order); } /** * 根据条件获取 不分页 */ public static function getBooksNoPage(array $where = [], array $order = [], array $on_shelf, $limit = 20) { return BookConfig::getBooksNoPage($where, $order, $on_shelf, $limit); } /** * @param string $name */ public static function getBooksByName(string $name) { return BookConfig::where('book_name', 'like', '%' . $name . '%')->whereIn('is_on_shelf', [1, 2])->select('bid', 'book_name')->limit(10)->get(); } public static function getSimpleBooksByIds(array $ids) { $str = implode(',', $ids); $field = 'bid,' . $str; return BookConfig::whereIn('bid', $ids)->select('bid', 'book_name')->orderBy(DB::raw('field(' . $field . ')'))->get(); } /** * 获取图书简介 * @param int $bid * @return mixed */ public static function getBookIntroByBid(int $bid ,string $book_name){ $where = []; if($bid){ $where[] = ['book_configs.bid',$bid]; } if($book_name){ $where[] = ['book_configs.book_name','like','%'.$book_name.'%']; } if(empty($where)){ return false; } return BookConfig::where($where) ->join('books','book_configs.bid','=','books.id') ->select( 'books.intro', DB::raw('concat(book_configs.book_name,"(",book_configs.bid,")") as book_name')) ->get(); } public static function getBookByIdAndStatus($bid,$status){ return BookConfig::getBookByIdAndStatus($bid,$status); } public static function get_all_test_books($is_all){ return BookConfig::get_all_test_books($is_all); } public static function get_test_books($status){ return BookConfig::get_test_books($status); } public static function updateTestBook($bid, $status,$plan_push_user_num){ return BookConfig::updateTestBook($bid, $status,$plan_push_user_num); } public static function get_all_smart_push_books($is_all){ return BookConfig::get_all_smart_push_books($is_all); } public static function getHotRandomRecommendBookText($distribution_channel_id,$uid, $num){ return BookConfig::getHotRandomRecommendBookText($distribution_channel_id,$uid, $num); } public static function resetBookLibRedis($category_type){ $force_update = true; $is_high_quality = 1; $boy = '男频'; $girl = '女频'; \Log::info('resetBookLibRedis,category_type:'.$category_type); try{ // 更新全库 BookConfig::getLeftRecommendBook($boy, $is_high_quality,$force_update); BookConfig::getLeftRecommendBook($girl, $is_high_quality,$force_update); }catch(Exception $e){ \Log::info('resetBookLibRedis_ept:'.$e->getMessage()); } } }