Commit 1f2cca19 authored by Alex朱枝文's avatar Alex朱枝文

 预约相关

parent 1e8b1b01
...@@ -42,6 +42,8 @@ class YHHomeBannerView: UIView { ...@@ -42,6 +42,8 @@ class YHHomeBannerView: UIView {
} }
} }
private let viewModel = YHLiveSalesViewModel()
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
initView() initView()
...@@ -251,8 +253,23 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -251,8 +253,23 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// YHPlayerManager.shared.leaveChannel(for: player) // YHPlayerManager.shared.leaveChannel(for: player)
// player.clearPlayerView() // player.clearPlayerView()
// } // }
let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: nil, title: nil, roomId: nil, token: nil, channelId: nil, uid: nil, isLive: true, scene: .fullscreen) YHHUD.show(.progress(message: "加载中..."))
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo) viewModel.getLiveStatus(liveId: model.live_id) { liveInfo, error in
YHHUD.hide()
guard let liveInfo = liveInfo else {
let ctl = YHLiveAppointmentViewController(liveId: model.live_id)
UIViewController.current?.navigationController?.pushViewController(ctl)
return
}
if liveInfo.status == 2 {
let ctl = YHLiveAppointmentViewController(liveId: model.live_id)
UIViewController.current?.navigationController?.pushViewController(ctl)
} else {
let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: nil, title: nil, roomId: nil, token: nil, channelId: nil, uid: nil, isLive: true, scene: .fullscreen)
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo)
}
}
printLog("跳转直播") printLog("跳转直播")
case 101://录播 case 101://录播
printLog("跳转录播") printLog("跳转录播")
...@@ -276,8 +293,23 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -276,8 +293,23 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// player.clearPlayerView() // player.clearPlayerView()
// } // }
let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell
let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: nil, title: nil, roomId: nil, token: nil, channelId: nil, uid: nil, isLive: true, scene: .fullscreen) YHHUD.show(.progress(message: "加载中..."))
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo) viewModel.getLiveStatus(liveId: model.live_id) { liveInfo, error in
YHHUD.hide()
guard let liveInfo = liveInfo else {
let ctl = YHLiveAppointmentViewController(liveId: model.live_id)
UIViewController.current?.navigationController?.pushViewController(ctl)
return
}
if liveInfo.status == 2 {
let ctl = YHLiveAppointmentViewController(liveId: model.live_id)
UIViewController.current?.navigationController?.pushViewController(ctl)
} else {
let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: nil, title: nil, roomId: nil, token: nil, channelId: nil, uid: nil, isLive: true, scene: .fullscreen)
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo)
}
}
case 0://0 不需要跳转 case 0://0 不需要跳转
printLog("0 不需要跳转") printLog("0 不需要跳转")
default: default:
......
...@@ -10,6 +10,7 @@ import UIKit ...@@ -10,6 +10,7 @@ import UIKit
class YHLiveAppointmentViewController: YHBaseViewController { class YHLiveAppointmentViewController: YHBaseViewController {
private let viewModel = YHLiveSalesViewModel() private let viewModel = YHLiveSalesViewModel()
private var liveInfo: YHShareLiveInfoModel?
private lazy var topImageView: UIImageView = { private lazy var topImageView: UIImageView = {
let view = UIImageView() let view = UIImageView()
...@@ -110,6 +111,10 @@ class YHLiveAppointmentViewController: YHBaseViewController { ...@@ -110,6 +111,10 @@ class YHLiveAppointmentViewController: YHBaseViewController {
gk_navTitle = "直播预约" gk_navTitle = "直播预约"
gk_navBarAlpha = 1.0 gk_navBarAlpha = 1.0
gk_navBackgroundColor = .white gk_navBackgroundColor = .white
let rightButtonItem = UIBarButtonItem(image: UIImage(named: "share_item")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(share))
gk_navRightBarButtonItem = rightButtonItem
gk_navItemRightSpace = 16
view.backgroundColor = UIColor.contentBkgColor view.backgroundColor = UIColor.contentBkgColor
view.addSubview(topImageView) view.addSubview(topImageView)
view.addSubview(centerContainerView) view.addSubview(centerContainerView)
...@@ -210,20 +215,32 @@ class YHLiveAppointmentViewController: YHBaseViewController { ...@@ -210,20 +215,32 @@ class YHLiveAppointmentViewController: YHBaseViewController {
} }
} }
var timeStr = "直播时间:" + liveInfo.start_time var timeStr = "直播时间:" + liveInfo.start_time
if !liveInfo.end_time.isEmpty { if !liveInfo.end_time.isEmpty, !liveInfo.start_time.isEmpty {
timeStr += "~" + liveInfo.end_time let endTime = isSameDayAndGetShortEndTime(date1String: liveInfo.start_time, date2String: liveInfo.end_time)
timeStr += "~" + endTime
} }
infoTimeLabel.text = timeStr infoTimeLabel.text = timeStr
updateAppointmentButton(!liveInfo.is_schedule_live) updateAppointmentButton(!liveInfo.is_schedule_live)
} }
private func isSameDay(date1: Date, date2: Date) -> Bool { private func isSameDayAndGetShortEndTime(date1String: String, date2String: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM月dd日HH:mm"
let date1 = dateFormatter.date(from: date1String)
let date2 = dateFormatter.date(from: date2String)
guard let date1 = date1, let date2 = date2 else {
return date2String
}
let calendar = Calendar.current let calendar = Calendar.current
let components1 = calendar.dateComponents([.year, .month, .day], from: date1) let components1 = calendar.dateComponents([.month, .day, .hour, .minute], from: date1)
let components2 = calendar.dateComponents([.year, .month, .day], from: date2) let components2 = calendar.dateComponents([.month, .day, .hour, .minute], from: date2)
return components1.year == components2.year && if components1.month == components2.month &&
components1.month == components2.month && components1.day == components2.day {
components1.day == components2.day let hour = components2.hour ?? 0
let minute = components2.minute ?? 0
return String(format: "%02d:%02d", hour, minute)
}
return date2String
} }
private func updateAppointmentButton(_ isEnable: Bool) { private func updateAppointmentButton(_ isEnable: Bool) {
...@@ -231,6 +248,33 @@ class YHLiveAppointmentViewController: YHBaseViewController { ...@@ -231,6 +248,33 @@ class YHLiveAppointmentViewController: YHBaseViewController {
appointmentButton.backgroundColor = isEnable ? .brandMainColor : UIColor(hexString: "#B3C8E9") appointmentButton.backgroundColor = isEnable ? .brandMainColor : UIColor(hexString: "#B3C8E9")
appointmentButton.setTitle(isEnable ? "立即预约" : "已预约", for: .normal) appointmentButton.setTitle(isEnable ? "立即预约" : "已预约", for: .normal)
} }
@objc private func share() {
guard let liveInfo = liveInfo else {
return
}
DispatchQueue.global().async {
YHShareManager.shared.createMutilShareShortUrl(type: 1, param: ["LiveID":String(self.liveId)]) { shortUrl, error in
if let url = shortUrl {
let tmpT = url.base64Encoded ?? ""//对deepLink使用 base64编码
var oldUrl = liveInfo.live_h5_url
if oldUrl.contains("?") {
oldUrl = oldUrl + "&appDeepLink=\(tmpT)"
} else {
oldUrl = oldUrl + "?appDeepLink=\(tmpT)"
}
DispatchQueue.main.async {
YHShareAlertView.show(image: liveInfo.image, title: "@" + liveInfo.account, subMessage: liveInfo.title, linkUrl: oldUrl, isLive: true, fromAiSale: true)
}
return
}
DispatchQueue.main.async {
YHShareAlertView.show(image: liveInfo.image, title: "@" + liveInfo.account, subMessage: liveInfo.title, linkUrl: liveInfo.live_h5_url, isLive: true, fromAiSale: true)
}
}
}
}
@objc private func clickAppointmentButton() { @objc private func clickAppointmentButton() {
bookLive() bookLive()
...@@ -249,6 +293,7 @@ class YHLiveAppointmentViewController: YHBaseViewController { ...@@ -249,6 +293,7 @@ class YHLiveAppointmentViewController: YHBaseViewController {
} }
return return
} }
self.liveInfo = liveInfo
self.updateViews(liveInfo) self.updateViews(liveInfo)
} }
} }
......
...@@ -29,6 +29,8 @@ class YHShareLiveInfoModel: SmartCodable { ...@@ -29,6 +29,8 @@ class YHShareLiveInfoModel: SmartCodable {
var token: String = "" var token: String = ""
var user_id: Int = 0 var user_id: Int = 0
var watch: String = "" var watch: String = ""
// h5直播地址
var live_h5_url: String = ""
required init() { required init() {
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment