ChannelRecommendBooksService.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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($channel_id)
  8. {
  9. return ChannelRecommendBooks::where('channel_id',$channel_id)->pluck('bid')->all();
  10. }
  11. static function getMergerBids($channel_id,$bid)
  12. {
  13. $bids = BookConfigService::getAvailableBIdsbyBids(self::getChannelBid($channel_id),$channel_id,false);
  14. if (empty($bids)){
  15. return [];
  16. }
  17. if(isset($bid) && $bid != 0 && count($bids) > 3){
  18. $key = array_keys($bids,$bid)[0] ?? 0;
  19. if(!empty($key)){
  20. $value = 1;
  21. if(isset($bids[$key+1])){
  22. $bidArr[] = $bids[$key+1];
  23. }else{
  24. $bidArr[] = $bids[$value-1];
  25. $value += 1;
  26. }
  27. if(isset($bids[$key+2])){
  28. $bidArr[] = $bids[$key+2];
  29. }else{
  30. $bidArr[] = $bids[$value-1];
  31. $value += 1;
  32. }
  33. if(isset($bids[$key+3])){
  34. $bidArr[] = $bids[$key+3];
  35. }else{
  36. $bidArr[] = $bids[$value-1];
  37. }
  38. }else{
  39. $bidArr = [$bids[0],$bids[1],$bids[2]];
  40. }
  41. }else if(count($bids) > 3){
  42. $bidArr = [$bids[0],$bids[1],$bids[2]];
  43. }else{
  44. $bidArr = $bids;
  45. }
  46. return $bidArr;
  47. }
  48. static function getRecommendBooks($channel_id,$bid = 0)
  49. {
  50. if(!isset($channel_id)) return [];
  51. $bids = self::getMergerBids($channel_id,$bid);
  52. if(empty($bids)) return [];
  53. return BookConfigService::getBooksByIds($bids,[],false);
  54. }
  55. static function incrRecommendNum($channel_id,$bids)
  56. {
  57. return ChannelRecommendBooks::where('channel_id',$channel_id)->whereIn('bid',$bids)->increment('recommend_num');
  58. }
  59. }