MediaPushBookConfigs.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hp
  5. * Date: 2017/11/21
  6. * Time: 8:59
  7. */
  8. namespace App\Modules\MediaPush\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. use App\Modules\MediaPush\Models\MediaPushRelationBooks;
  11. class MediaPushBookConfigs extends Model
  12. {
  13. protected $table = 'media_push_book_configs';
  14. protected $fillable = ['id', 'headline', 'cover','bid', 'created_at', 'updated_at'];
  15. static function getByBid($bid)
  16. {
  17. return self::where('bid',$bid)->first();
  18. }
  19. static function getBids()
  20. {
  21. return self::select('bid')->get();
  22. }
  23. static function getDefaultHotBook()
  24. {
  25. return self::where('is_enabled',1)->orderBy('id','asc')->first();
  26. }
  27. /**
  28. * 获取推荐的书籍
  29. */
  30. static function getRecommendHotBooks($from_bids)
  31. {
  32. $recommend_bids = [];
  33. $default_book = self::getDefaultHotBook();
  34. $default_bid = isset($default_book->bid)?$default_book->bid:0;
  35. $default_relation = MediaPushRelationBooks::getByBid($default_bid);
  36. foreach ($from_bids as $from_bid){
  37. $ralation = MediaPushRelationBooks::getByBid($from_bid);
  38. if(!empty($ralation)){
  39. $recommend_bids[$from_bid] = explode(',',$ralation->pro_bids);
  40. }else{
  41. $recommend_bids[$from_bid] = explode(',',$default_relation->pro_bids);
  42. }
  43. }
  44. return $recommend_bids;
  45. }
  46. /**
  47. * 获取推荐的书籍的素材
  48. */
  49. static function getRecommendHotBookMasterials($bid)
  50. {
  51. try{
  52. $recommend_bid_materials = [];
  53. $ralations = MediaPushRelationBooks::getByBid($bid);
  54. $ralation_bids = explode(',',$ralations->pro_bids);
  55. \Log::info('getRecommendHotBookMasterials:$bid:'.$bid.' $ralation_bids:'.json_encode($ralation_bids));
  56. if(!empty($ralation_bids)){
  57. foreach($ralation_bids as $ralation_bid){
  58. \Log::info('$ralation_bid:'.$ralation_bid);
  59. $material = self::getByBid($ralation_bid);
  60. $recommend_bid_materials[] = $material;
  61. }
  62. }
  63. }catch(\Exception $e){
  64. }
  65. return $recommend_bid_materials;
  66. }
  67. public static function getMediaPushBooks($num)
  68. {
  69. return self::whereNotNull('cover')->where('is_enabled',1)->get()->random($num);
  70. }
  71. public static function getInfos($params = [], $isAll = false)
  72. {
  73. $search_object = self::leftjoin('book_configs', 'media_push_book_configs.bid', '=', 'book_configs.bid');
  74. $search_object->where('is_enabled', 1);
  75. $search_object->select('media_push_book_configs.id','media_push_book_configs.bid', 'book_configs.book_name', 'media_push_book_configs.headline', 'media_push_book_configs.cover', 'book_configs.charge_type');
  76. if (isset($params['headline']) && $params['headline']) {
  77. $search_object->where('media_push_book_configs.headline', 'like', '%' . $params['headline'] . '%');
  78. }
  79. if (isset($params['book_name']) && $params['book_name']) {
  80. $search_object->where('book_configs.book_name', 'like', '%' . $params['book_name'] . '%');
  81. }
  82. if (isset($params['charge_type']) && $params['charge_type']) {
  83. $search_object->where('book_configs.charge_type', $params['charge_type']);
  84. }
  85. \Log::info($search_object->toSql());
  86. if ($isAll) {
  87. return $search_object->get();
  88. } else {
  89. return $search_object->paginate();
  90. }
  91. }
  92. }