LiveRoom.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace app\api\model\wxapp;
  3. use app\common\model\wxapp\LiveRoom as LiveRoomModel;
  4. use app\common\enum\live\LiveStatus as LiveStatusEnum;
  5. /**
  6. * 微信小程序直播间模型
  7. * Class LiveRoom
  8. * @package app\api\model\wxapp
  9. */
  10. class LiveRoom extends LiveRoomModel
  11. {
  12. /**
  13. * 隐藏的字段
  14. * @var array
  15. */
  16. protected $hidden = [
  17. 'is_delete',
  18. 'wxapp_id',
  19. 'create_time',
  20. 'update_time',
  21. ];
  22. /**
  23. * 获取直播间列表
  24. * @return \think\Paginator
  25. * @throws \think\exception\DbException
  26. */
  27. public function getList()
  28. {
  29. // 直播间列表
  30. // mix: 可设置live_status条件来显示不同直播状态的房间
  31. $this->where('live_status', '<>', 107); // 已过期的不显示
  32. $list = $this->where('is_delete', '=', 0)
  33. ->order([
  34. 'is_top' => 'desc',
  35. 'live_status' => 'asc',
  36. 'create_time' => 'desc'
  37. ])->paginate(15, false, [
  38. 'query' => \request()->request()
  39. ]);
  40. // 整理api数据
  41. foreach ($list as &$item) {
  42. $item['live_status_text_1'] = LiveStatusEnum::data()[$item['live_status']]['name'];
  43. $item['live_status_text_2'] = $item['live_status_text_1'];
  44. $item['live_status'] == 101 && $item['live_status_text_1'] = '正在直播中';
  45. $item['live_status'] == 102 && $item['live_status_text_1'] = $this->semanticStartTime($item->getData('start_time')) . ' 开播';
  46. }
  47. return $list;
  48. }
  49. /**
  50. * 语义化开播时间
  51. * @param $startTime
  52. * @return string
  53. */
  54. private function semanticStartTime($startTime)
  55. {
  56. // 转换为 YYYYMMDD 格式
  57. $startDate = date('Ymd', $startTime);
  58. // 获取今天的 YYYY-MM-DD 格式
  59. $todyDate = date('Ymd');
  60. // 获取明天的 YYYY-MM-DD 格式
  61. $tomorrowDate = date('Ymd', strtotime('+1 day'));
  62. // 使用IF当作字符串判断是否相等
  63. if ($startDate == $todyDate) {
  64. return date('今天H:i', $startTime);
  65. } elseif ($startDate == $tomorrowDate) {
  66. return date('明天H:i', $startTime);
  67. }
  68. // 常规日期格式
  69. return date('m/d H:i', $startTime);
  70. }
  71. }