You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.4 KiB
121 lines
4.4 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | LikeShop有特色的全开源社交分销电商系统
|
|
// +----------------------------------------------------------------------
|
|
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
|
// | 商业用途务必购买系统授权,以免引起不必要的法律纠纷
|
|
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
|
// | 微信公众号:好象科技
|
|
// | 访问官网:http://www.likeshop.net
|
|
// | 访问社区:http://bbs.likeshop.net
|
|
// | 访问手册:http://doc.likeshop.net
|
|
// | 好象科技开发团队 版权所有 拥有最终解释权
|
|
// +----------------------------------------------------------------------
|
|
// | Author: LikeShopTeam
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\api\logic;
|
|
|
|
use app\common\basics\Logic;
|
|
use app\common\enum\LiveRoomEnum;
|
|
use app\common\model\live\LiveRoom;
|
|
use app\common\server\UrlServer;
|
|
|
|
|
|
/**
|
|
* 直播
|
|
* Class LiveLogic
|
|
* @package app\api\logic
|
|
*/
|
|
class LiveLogic extends Logic
|
|
{
|
|
|
|
/**
|
|
* @notes 直播间列表
|
|
* @param $page_no
|
|
* @param $page_size
|
|
* @return array
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @author 段誉
|
|
* @date 2023/2/17 16:52
|
|
*/
|
|
public static function lists($page_no, $page_size)
|
|
{
|
|
$count = LiveRoom::where(['del' => 0])->count();
|
|
$lists = LiveRoom::with(['shop'])->where(['del' => 0])
|
|
->where('wx_room_id', '>', 0)
|
|
->order(['live_status' => 'asc', 'sort' => 'asc', 'id' => 'desc'])
|
|
->hidden(['share_img_id', 'feeds_img_id', 'cover_img_id'])
|
|
->select();
|
|
|
|
foreach ($lists as &$item) {
|
|
$item['share_img'] = UrlServer::getFileUrl($item['share_img']);
|
|
$item['feeds_img'] = UrlServer::getFileUrl($item['feeds_img']);
|
|
$item['cover_img'] = UrlServer::getFileUrl($item['cover_img']);
|
|
$item['live_status_text'] = LiveRoomEnum::getLiveStatusDesc($item['live_status']);
|
|
$item['start_time_tips'] = friend_date($item['start_time']);
|
|
$item['start_time_text'] = date('y-m-d H:i', $item['start_time']);
|
|
$item['end_time_text'] = date('y-m-d H:i', $item['end_time']);
|
|
}
|
|
|
|
return [
|
|
'list' => $lists,
|
|
'count' => $count,
|
|
'more' => is_more($count, $page_no, $page_size),
|
|
'page_no' => $page_no,
|
|
'page_size' => $page_size
|
|
];
|
|
}
|
|
|
|
|
|
/**
|
|
* @notes 商家直播
|
|
* @param $shopId
|
|
* @return array
|
|
* @author 段誉
|
|
* @date 2023/2/17 17:22
|
|
*/
|
|
public static function shopLive($shopId)
|
|
{
|
|
$room = LiveRoom::with(['shop'])->where([
|
|
'shop_id' => $shopId,
|
|
'live_status' => LiveRoomEnum::LIVE_STATUS_ING,
|
|
'del' => 0
|
|
])
|
|
->where('wx_room_id', '>', 0)
|
|
->order(['sort' => 'asc', 'id' => 'desc'])
|
|
->hidden(['share_img_id', 'feeds_img_id', 'cover_img_id'])
|
|
->findOrEmpty()
|
|
->toArray();
|
|
|
|
if (empty($room)) {
|
|
// 如没找到直播中,则找距离当前最近的一个未开播
|
|
$room = LiveRoom::with(['shop'])->where([
|
|
'shop_id' => $shopId,
|
|
'live_status' => LiveRoomEnum::LIVE_STATUS_WAIT,
|
|
'del' => 0
|
|
])
|
|
->where('wx_room_id', '>', 0)
|
|
->where('start_time', '>', time())
|
|
->order(['sort' => 'asc', 'id' => 'desc', 'start_time' => 'asc'])
|
|
->hidden(['share_img_id', 'feeds_img_id', 'cover_img_id'])
|
|
->findOrEmpty()
|
|
->toArray();
|
|
}
|
|
|
|
if (!empty($room)) {
|
|
$room['share_img'] = UrlServer::getFileUrl($room['share_img']);
|
|
$room['feeds_img'] = UrlServer::getFileUrl($room['feeds_img']);
|
|
$room['cover_img'] = UrlServer::getFileUrl($room['cover_img']);
|
|
$room['live_status_text'] = LiveRoomEnum::getLiveStatusDesc($room['live_status']);
|
|
$room['start_time_tips'] = friend_date($room['start_time']);
|
|
$room['start_time_text'] = date('y-m-d H:i', $room['start_time']);
|
|
$room['end_time_text'] = date('y-m-d H:i', $room['end_time']);
|
|
}
|
|
return $room;
|
|
}
|
|
|
|
|
|
}
|