This commit is contained in:
zeng 2025-08-08 09:58:19 +08:00
parent b02f655fb1
commit f350879a40
9 changed files with 71 additions and 12 deletions

View File

@ -2110,7 +2110,7 @@
CODE_SIGN_ENTITLEMENTS = ThimraTV/ThimraTV.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = TWDZ3MP9DV;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
@ -2134,7 +2134,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.3;
MARKETING_VERSION = 1.1.4;
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -2158,7 +2158,7 @@
CODE_SIGN_ENTITLEMENTS = ThimraTV/ThimraTV.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = TWDZ3MP9DV;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
@ -2182,7 +2182,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.3;
MARKETING_VERSION = 1.1.4;
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -40,6 +40,27 @@ class SPVideoAPI: NSObject {
}
}
///
static func requestMoreVideoDetail(shortPlayId: String, activityId: String? = nil, completer: ((_ model: SPVideoDetailModel?) -> Void)?) {
var parameters: [String : Any] = [
"short_play_id" : shortPlayId,
"video_id" : "0"
]
if let activityId = activityId {
parameters["activity_id"] = activityId
}
var param = SPNetworkParameters(path: "/getVideoDetails")
param.method = .get
param.parameters = parameters
param.isToast = false
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<SPVideoDetailModel>) in
completer?(response.data)
}
}
///
static func requestCreateVideoPlayHistory(videoId: String?, shortPlayId: String) {
var param = SPNetworkParameters(path: "/createHistory")

View File

@ -55,13 +55,13 @@ class SPWalletAPI: NSObject {
}
///
static func requestVerifyOrder(orderCode: String, payId: String, productId: String, purchaseToken: String, completer: ((_ model: SPIAPVerifyModel?) -> Void)?) {
static func requestVerifyOrder(orderCode: String, payId: String, productId: String, transactionId: String, purchaseToken: String, completer: ((_ model: SPIAPVerifyModel?) -> Void)?) {
var param = SPNetworkParameters(path: "/applePaid")
param.parameters = [
"order_code" : orderCode,
"pay_setting_id" : payId,
"pkg_name" : kSPAPPBundleIdentifier,
"transaction_id" : productId,
"transaction_id" : transactionId,
"purchases_token" : purchaseToken
]

View File

@ -49,7 +49,7 @@ class SPMineHeaderView: UIView {
}
idLabel.text = "ID \(userInfo?.customer_id ?? "")"
loginButton.isHidden = !(userInfo?.is_tourist ?? true)
// loginButton.isHidden = !(userInfo?.is_tourist ?? true)
memberView.userInfo = self.userInfo
@ -162,7 +162,7 @@ class SPMineHeaderView: UIView {
stackView.addArrangedSubview(walletView)
loginButton.isHidden = false
loginButton.isHidden = !(userInfo?.is_tourist ?? true)
} else {
loginButton.isHidden = true
}

View File

@ -413,7 +413,13 @@ extension SPPlayerDetailViewController: SPPlayerListViewControllerDataSource, SP
}
func sp_playerViewControllerLoadMoreData(playerViewController: SPPlayerListViewController) {
guard self.detailDataArr.count > 0 else { return }
guard let currentDetail = self.detailDataArr[self.viewModel.currentIndexPath.section] as? SPVideoDetailModel else { return }
if currentDetail.jump_type == .moreVideo, let shortPlayId = currentDetail.jump_short_play_id, !shortPlayId.isEmpty, shortPlayId != "0" {
self.requestMoreVideoDetail(shortPlayId: shortPlayId)
}
}
}
@ -475,4 +481,23 @@ extension SPPlayerDetailViewController {
}
}
}
///
private func requestMoreVideoDetail(shortPlayId: String) {
SPVideoAPI.requestMoreVideoDetail(shortPlayId: shortPlayId) { [weak self] model in
guard let self = self else { return }
guard let model = model else { return }
self.detailDataArr.append(model)
let section = self.detailDataArr.count - 1
let indexSet: IndexSet = IndexSet(integer: section)
self.collectionView.performBatchUpdates { [weak self] in
self?.collectionView.insertSections(indexSet)
}
}
}
}

View File

@ -10,6 +10,11 @@ import SmartCodable
class SPVideoDetailModel: SPModel, SmartCodable {
enum JumpType: Int, SmartCaseDefaultable {
case moreVideo = 0
case otherApp = 1
}
var business_model: String?
var video_info: SPVideoInfoModel?
var shortPlayInfo: SPShortModel?
@ -21,4 +26,9 @@ class SPVideoDetailModel: SPModel, SmartCodable {
var revolution: Int?
var unlock_video_ad_count: Int?
var discount: Int?
//MARK: 广
var jump_type: JumpType?
///id
var jump_short_play_id: String?
}

View File

@ -121,7 +121,7 @@ class SPPlayBuyView: HWPanModalContentView {
}
override func longFormHeight() -> PanModalHeight {
return PanModalHeightMake(.content, kSPScreenHeight - kSPNavBarHeight - 10)
return PanModalHeightMake(.content, kSPScreenHeight - kSPStatusbarHeight)
}
override func showDragIndicator() -> Bool {

View File

@ -82,7 +82,8 @@ class SPIAPManager: NSObject {
let orderCode = waitRestoreModel.orderCode,
let payId = waitRestoreModel.payId,
let productId = waitRestoreModel.productId,
let receipt = waitRestoreModel.receipt
let receipt = waitRestoreModel.receipt,
let transactionId = waitRestoreModel.transactionId
else {
if isLoding {
SPToast.show(text: "movia_iap_error_toast_02".localized)
@ -93,7 +94,7 @@ class SPIAPManager: NSObject {
if isLoding {
SPHUD.show()
}
SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, purchaseToken: receipt) { model in
SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionId, purchaseToken: receipt) { model in
if isLoding {
SPHUD.dismiss()
}
@ -148,11 +149,12 @@ extension SPIAPManager: JXIAPManagerDelegate {
}
self.waitRestoreModel?.productId = productId
self.waitRestoreModel?.transactionId = transactionIdentifier
self.waitRestoreModel?.receipt = receipt
UserDefaults.jx_setObject(self.waitRestoreModel, forKey: kSPWaitRestoreIAPDefaultsKey)
SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, purchaseToken: receipt) { model in
SPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionIdentifier ?? "", purchaseToken: receipt) { model in
SPHUD.dismiss()
self.orderCode = nil

View File

@ -17,6 +17,7 @@ class SPWaitRestoreModel: SPModel, NSSecureCoding {
var productId: String?
var receipt: String?
var buyType: SPWalletAPI.BuyType?
var transactionId: String?
required init() { }