LiveRoom.php 2.5 KB

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