Live.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace common\models;
  3. class Live extends Common
  4. {
  5. public function rules()
  6. {
  7. return [
  8. ['title', 'required', 'message' => '{attribute}不能为空'],
  9. ['title', 'string', 'max' => 255],
  10. ['img', 'string'],
  11. [['hid', 'city', 'sort'], 'number'],
  12. ['hid', 'unique', 'targetClass' => 'common\models\Live', 'on' => 'add', 'message' => '该楼盘已经存在'],
  13. [['video_url', 'rtmp_url', 'time'], 'string']
  14. ];
  15. }
  16. public function attributeLabels()
  17. {
  18. return [
  19. 'hid' => '楼盘',
  20. 'city' => '区域',
  21. 'title' => '标题',
  22. 'video_url' => '回放地址',
  23. 'rtmp_url' => '拉流地址',
  24. 'time' => '直播时间'
  25. ];
  26. }
  27. public function getList($input)
  28. {
  29. $query = self::find();
  30. $query->select(['pfg_live.id', 'pfg_live.img', 'pfg_live.title', 'pfg_live.time', 'pfg_live.create_at', 'pfg_live.sort',
  31. 'pfg_house.name', 'pfg_category_city.city_name']);
  32. $query->leftJoin('pfg_house', 'pfg_live.hid = pfg_house.id');
  33. $query->leftJoin('pfg_category_city', 'pfg_live.city = pfg_category_city.id');
  34. if (!empty($input['title'])) {
  35. $query->andWhere(['like', 'pfg_live.title', $input['title']]);
  36. }
  37. if (!empty($input['page'])) {
  38. $query->limit = $input['limit'];
  39. $query->offset = ($input['page'] - 1) * $input['limit'];
  40. }
  41. return $query->orderBy(['pfg_live.sort' => SORT_DESC, 'pfg_live.create_at' => SORT_DESC])->asArray()->all();
  42. }
  43. public function Total($input)
  44. {
  45. $query = self::find();
  46. if (!empty($input['title'])) {
  47. $query->andWhere(['like', 'pfg_live.title', $input['title']]);
  48. }
  49. $query->leftJoin('pfg_category_city', 'pfg_live.city = pfg_category_city.id');
  50. $query->leftJoin('pfg_house', 'pfg_live.hid = pfg_house.id');
  51. return $query->count();
  52. }
  53. public function showList($input)
  54. {
  55. $query = self::find();
  56. $query->select(['pfg_live.id', 'pfg_live.hid', 'pfg_live.city', 'pfg_live.img', 'pfg_live.title', 'pfg_live.time', 'pfg_live.video_url', 'pfg_live.create_at', 'pfg_category_city.city_name']);
  57. $query->joinWith(['house', 'house.cityNameByProvince']);
  58. $query->leftJoin('pfg_category_city', 'pfg_live.city = pfg_category_city.id');
  59. $query->joinWith(['house.cityNameByProvince']);
  60. if (!empty($input['title'])) {
  61. $query->andWhere(['like', 'pfg_live.title', $input['title']]);
  62. }
  63. if (!empty($input['city'])) {
  64. $query->andWhere(['pfg_live.city' => $input['city']]);
  65. }
  66. if (!empty($input['page'])) {
  67. $query->limit = $input['limit'];
  68. $query->offset = ($input['page'] - 1) * $input['limit'];
  69. } else {
  70. $query->limit = 4;
  71. }
  72. return $query->orderBy(['pfg_live.sort' => SORT_DESC, 'pfg_live.create_at' => SORT_DESC])->asArray()->all();
  73. }
  74. public function getListArea()
  75. {
  76. $query = self::find();
  77. $query->select(['pfg_live.id', 'pfg_live.hid', 'pfg_live.img', 'pfg_live.title', 'pfg_live.time', 'pfg_live.create_at', 'pfg_category_city.city_name', 'pfg_live.city']);
  78. $query->joinWith(['house', 'house.cityNameByProvince']);
  79. $query->leftJoin('pfg_category_city', 'pfg_live.city = pfg_category_city.id');
  80. $query->joinWith(['house.cityNameByProvince']);
  81. return $query->orderBy(['pfg_category_city.sort' => SORT_DESC])->asArray()->all();
  82. }
  83. public function getHouse()
  84. {
  85. return $this->hasOne(House::className(), ['id' => 'hid'])->select(['id', 'name', 'province']);
  86. }
  87. public function getHouseInfo()
  88. {
  89. return $this->hasOne(House::className(), ['id' => 'hid']);
  90. }
  91. public function getLiveBySameArea($city, $lid)
  92. {
  93. $query = self::find()->andWhere(['city' => $city])->andWhere(['not', ['pfg_live.id' => $lid]])
  94. ->orderBy('RAND()')->limit(4)->asArray()->all();
  95. return $query;
  96. }
  97. /**
  98. * 获取所有区域
  99. * @return array|\yii\db\ActiveRecord[]
  100. */
  101. public function getProvince()
  102. {
  103. $query = self::find();
  104. $query->select(['pfg_live.city']);
  105. return $query->column();
  106. }
  107. /**
  108. * 获取指定条数的直播以及相应的楼盘信息
  109. * */
  110. public function getLiveHouseInfo($limit = null)
  111. {
  112. $select = [
  113. 'pfg_house.id',
  114. 'pfg_house.name',
  115. 'pfg_house.thumb',
  116. 'pfg_house.sale_price',
  117. 'pfg_house.click_num',
  118. 'pfg_house_detail.price_unit',
  119. 'pfg_category_city.city_name',
  120. 'pfg_live.img'
  121. ];
  122. $query = self::find();
  123. $query->select($select);
  124. $query->leftJoin('pfg_house','pfg_live.hid = pfg_house.id');
  125. $query->leftJoin('pfg_house_detail','pfg_house.id = pfg_house_detail.hid');
  126. $query->leftJoin('pfg_category_city','pfg_house.city = pfg_category_city.id');
  127. if(!empty($limit)){
  128. $query->limit($limit);
  129. }
  130. return $query->orderBy(['pfg_live.time'=>SORT_DESC])->asArray()->all();
  131. }
  132. /*
  133. * 20207.16 lyy 获取楼盘直播视频
  134. *
  135. * */
  136. public function GetOneLiveByHouse($hid)
  137. {
  138. $dataOne = self::find()->where(['hid' => $hid])->select('*')->asArray()->one();
  139. return $dataOne;
  140. }
  141. }