ChannelRecommendBooksService.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\Modules\Channel\Services;
  3. use App\Modules\Book\Services\BookConfigService;
  4. use App\Modules\Channel\Models\ChannelRecommendBooks;
  5. class ChannelRecommendBooksService
  6. {
  7. static function getChannelBid()
  8. {
  9. return ChannelRecommendBooks::pluck('bid')->all();
  10. }
  11. static function getMergerBids($channel_id,$bid)
  12. {
  13. $bids = BookConfigService::getAvailableBIdsbyBids(self::getChannelBid(),$channel_id);
  14. if(isset($bid) && $bid != 0){
  15. $key = array_keys($bids,$bid)[0];
  16. if(!empty($key)){
  17. $value = 1;
  18. if(isset($bids[$key+1])){
  19. $bidArr[] = $bids[$key+1];
  20. }else{
  21. $bidArr[] = $bids[$value-1];
  22. $value += 1;
  23. }
  24. if(isset($bids[$key+2])){
  25. $bidArr[] = $bids[$key+2];
  26. }else{
  27. $bidArr[] = $bids[$value-1];
  28. $value += 1;
  29. }
  30. if(isset($bids[$key+3])){
  31. $bidArr[] = $bids[$key+3];
  32. }else{
  33. $bidArr[] = $bids[$value-1];
  34. }
  35. }else{
  36. $bidArr = [$bids[0],$bids[1],$bids[2]];
  37. }
  38. }else{
  39. $bidArr = [$bids[0],$bids[1],$bids[2]];
  40. }
  41. return $bidArr;
  42. }
  43. static function getRecommendBooks($channel_id,$bid = 0)
  44. {
  45. if(!isset($channel_id)) return [];
  46. $bids = self::getMergerBids($channel_id,$bid);
  47. if(empty($bids)) return [];
  48. return BookConfigService::getBooksByIds($bids,[],false);
  49. }
  50. static function incrRecommendNum($channel_id,$bids)
  51. {
  52. return ChannelRecommendBooks::where('channel_id',$channel_id)->whereIn('bid',$bids)->increment('recommend_num');
  53. }
  54. }