瀏覽代碼

feat:增加 vip 免费试用一次

100Years 1 月之前
父節點
當前提交
76a3d2bacf

+ 20 - 1
TSLiveWallpaper/Business/TSAIListVC/TSAIPhotoDetailsVC/TSAIPhotoDetailsBrowserVC.swift

@@ -17,7 +17,11 @@ class TSAIPhotoDetailsBrowserVC: TSBaseVC {
         return nil
     }
     
-    var currentIndex:Int = 0
+    var currentIndex:Int = 0{
+        didSet{
+            reloadUI()
+        }
+    }
     
     lazy var collectionView: UICollectionView = {
 
@@ -122,12 +126,17 @@ class TSAIPhotoDetailsBrowserVC: TSBaseVC {
             if let flowLayout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
                 flowLayout.itemSize = self.collectionView.bounds.size
             }
+            self.reloadUI()
         }
     }
     
     //保存功能
     @objc func clickSaveBtn(){
         guard let infoModel = currentModel else { return }
+        if infoModel.modelType != .example{
+            if kJudgeVip(externalBool: true, vc: self) { return } //判断 vip
+        }
+        
         if infoModel.isVideo{
             TSDownloadManager.getDownLoadVideo(urlString: infoModel.response.resultUrl) { url, success in
                 if let url = url {
@@ -159,6 +168,9 @@ class TSAIPhotoDetailsBrowserVC: TSBaseVC {
     
     func clickShare() {
         guard let infoModel = currentModel else { return }
+        if infoModel.modelType != .example{
+            if kJudgeVip(externalBool: true, vc: self) { return } //判断 vip
+        }
         if infoModel.isVideo{
             TSDownloadManager.getDownLoadVideo(urlString: infoModel.response.resultUrl) { url, success in
                 if let url = url {
@@ -197,6 +209,13 @@ class TSAIPhotoDetailsBrowserVC: TSBaseVC {
     }
 }
 
+extension TSAIPhotoDetailsBrowserVC {
+    func reloadUI() {
+        guard let currentModel = currentModel else { return }
+        kSetBtnVipIcon(btn: saveBtn, show: currentModel.modelType == .normal)
+    }
+}
+
 //MARK: UICollectionViewDataSource
 extension TSAIPhotoDetailsBrowserVC:UICollectionViewDataSource,UICollectionViewDelegate {
     

+ 2 - 0
TSLiveWallpaper/Business/TSAIListVC/TSAIPhotoDetailsVC/TSAIPhotoDetailsVC/TSAIPhotoDetailsVC.swift

@@ -68,6 +68,7 @@ class TSAIPhotoDetailsVC: TSBaseVC {
     
     //分享功能
     @objc func clickShare(){
+        if kJudgeVip(externalBool: true, vc: self){ return }
         guard let infoModel = infoModel else { return }
         if infoModel.isVideo{
             TSDownloadManager.getDownLoadVideo(urlString: infoModel.response.resultUrl) { url, success in
@@ -87,6 +88,7 @@ class TSAIPhotoDetailsVC: TSBaseVC {
 
     //保存功能
     @objc func clickSaveBtn(){
+        if kJudgeVip(externalBool: true, vc: self){ return }
         guard let infoModel = infoModel else { return }
         if infoModel.isVideo{
             TSDownloadManager.getDownLoadVideo(urlString: infoModel.response.resultUrl) { url, success in

+ 5 - 2
TSLiveWallpaper/Business/TSAIListVC/TSAIPhotoGeneratorVC/TSAIListPhotoGeneratorVC.swift

@@ -143,8 +143,11 @@ class TSAIListPhotoGeneratorVC: TSAIPhotoDetailsVC {
     }
     //重新生成
     @objc func clickRegenerateBtn(){
-        
-        if kJudgeVip(externalBool: true , vc: self){ return }//判断 vip
+        if generatorModel.generatorStyle == .creatVideo {
+            if kJudgeVip(externalBool: true, vc: self){ return } //判断 vip
+        }else{
+            if kPurchaseBusiness.kJudgeVipFreeType(vipFreeNumType: .general){ return }//判断 vip
+        }
         generatorOperation()
     }
 

+ 11 - 8
TSLiveWallpaper/Business/TSAIListVC/TSAIUploadPhotoVC/TSAIRemovePhotlVC/TSAIRemovePhotlVC.swift

@@ -62,20 +62,23 @@ class TSAIRemovePhotlVC: TSAIUploadPhotoVC {
         return slider
     }()
     
-    lazy var clearButton: UIButton = {
-        let button = UIButton.createButton(image: .aiRemoveClear)
+    lazy var clearButton: TSUIExpandedTouchButton = {
+        let button = TSUIExpandedTouchButton()
+        button.setUpButton(image: .aiRemoveClear)
         button.addTarget(self, action: #selector(clearDrawing), for: .touchUpInside)
         return button
     }()
     
-    lazy var undoButton: UIButton = {
-        let button = UIButton.createButton(image: .aiRemoveBack)
+    lazy var undoButton: TSUIExpandedTouchButton = {
+        let button = TSUIExpandedTouchButton()
+        button.setUpButton(image: .aiRemoveBack)
         button.addTarget(self, action: #selector(undoDrawing), for: .touchUpInside)
         return button
     }()
     
-    lazy var redoButton: UIButton = {
-        let button = UIButton.createButton(image: .aiRemoveGo)
+    lazy var redoButton: TSUIExpandedTouchButton = {
+        let button = TSUIExpandedTouchButton()
+        button.setUpButton(image: .aiRemoveGo)
         button.addTarget(self, action: #selector(redoDrawing), for: .touchUpInside)
         return button
     }()
@@ -121,7 +124,7 @@ class TSAIRemovePhotlVC: TSAIUploadPhotoVC {
         
         drawingImageView.layer.addSublayer(drawingLayer)
     }
-    
+
     override func updateUploadImageViewFrame() {
         super.updateUploadImageViewFrame()
         clearDrawing()
@@ -406,7 +409,7 @@ class TSAIRemovePhotlVC: TSAIUploadPhotoVC {
     
     
     override func generateImage() {
-        if kJudgeVip(externalBool: true, vc: self){ return } //判断 vip
+        if kPurchaseBusiness.kJudgeVipFreeType(vipFreeNumType: .general){ return }//判断 vip
         guard let upLoadImage = upLoadImage else { return }
         guard let maskImage = getBlackWhiteMaskImage() else { return  }
         

+ 0 - 1
TSLiveWallpaper/Business/TSAIListVC/TSAIUploadPhotoVC/TSAIUploadPhotoVC+View.swift

@@ -82,7 +82,6 @@ extension TSAIUploadPhotoVC {
             guard let self = self else { return }
             generateImage()
         }
-        kSetBtnVipIcon(btn: submitBtn, show: true)
         return submitBtn
     }
     

+ 22 - 3
TSLiveWallpaper/Business/TSAIListVC/TSAIUploadPhotoVC/TSAIUploadPhotoVC.swift

@@ -105,6 +105,16 @@ class TSAIUploadPhotoVC: TSBaseVC {
         // 监听键盘事件
         NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
+        
+        NotificationCenter.default.addObserver(self, selector: #selector(updateVipView), name: .kPurchaseDidChanged, object: nil)
+        updateVipView()
+    
+    }
+    
+    @objc func updateVipView() {
+        kExecuteOnMainThread {
+            kSetBtnVipIcon(btn: self.submitBtn, show: self.generatorStyle == .creatVideo ? true: kPurchaseBusiness.generateVipShow(type: .general))
+        }
     }
     
     func setUpStackView(){
@@ -135,9 +145,14 @@ class TSAIUploadPhotoVC: TSBaseVC {
     
     
     func generateImage() {
-        if kJudgeVip(externalBool: true, vc: self){ return } //判断 vip
-        guard let upLoadImage = upLoadImage else { return }
         
+        if generatorStyle == .creatVideo {
+            if kJudgeVip(externalBool: true, vc: self){ return } //判断 vip
+        }else{
+            if kPurchaseBusiness.kJudgeVipFreeType(vipFreeNumType: .general){ return }//判断 vip
+        }
+        
+        guard let upLoadImage = upLoadImage else { return }
         let generatorModel = TSAIListPhotoGeneratorModel(upLoadImage: upLoadImage, generatorStyle: generatorStyle,additionalPrompt: additionalPrompt)
 
         if let generateModel = disCoverItemModel?.generateModel{
@@ -150,7 +165,11 @@ class TSAIUploadPhotoVC: TSBaseVC {
             }
         }
         
-        let gennerateVC = TSAIListPhotoGeneratorVC(generatorModel:generatorModel){ model in }
+        let gennerateVC = TSAIListPhotoGeneratorVC(generatorModel:generatorModel){[weak self] model in
+            guard let self = self else { return }
+            updateVipView()
+        }
+        
         gennerateVC.backstageBlock = { [weak self]  in
             guard let self = self else { return }
             TSAIListHistoryVC.showPosition()

+ 2 - 2
TSLiveWallpaper/Common/Purchase/TSPurchaseBusiness.swift

@@ -10,7 +10,7 @@ private let kTotalUseNumKey = "kTotalUseNumKey"
 
 public enum VipFreeNumType: String, CaseIterable {
     case none = "kNone"
-    case general = "kGeneral" //通用的 vip
+    case general = "kGeneralAI" //通用的 vip
 }
 
 let kPurchaseBusiness = TSPurchaseBusiness.shared
@@ -87,7 +87,7 @@ class TSPurchaseBusiness {
             freeDict = dict
         }else{
             freeDict = [
-                VipFreeNumType.general.rawValue:3
+                VipFreeNumType.general.rawValue:1
             ]
             saveForFree()
         }

+ 1 - 1
TSLiveWallpaper/Data/OperationQueue/TSGenerateBaseOperation/TSGenerateBasePhotoOperation.swift

@@ -65,7 +65,7 @@ class TSGenerateBasePhotoOperation: TSGenerateBaseOperation , @unchecked Sendabl
         TSRMShared.aiListDB.updateData(currentActionInfoModel,uuid: uuid)
     }
     override func handleGenerateSuccess() {
-//        kPurchaseBusiness.useOnceForFree(type: .general)
+        kPurchaseBusiness.useOnceForFree(type: .general)
         saveDataDB()
 
         //生成成功后,不再提示用户上传规则弹窗