Browse Source

对免费生成次数做统一处理和生成判断

100Years 3 weeks ago
parent
commit
c64493b274

+ 2 - 4
AIRingtone.xcodeproj/project.pbxproj

@@ -197,7 +197,6 @@
 		A840A7F92D916D9A0044B8B9 /* TSGeneratePosterOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratePosterOperation.swift; sourceTree = "<group>"; };
 		A840A7F92D916D9A0044B8B9 /* TSGeneratePosterOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratePosterOperation.swift; sourceTree = "<group>"; };
 		A840A7FD2D916DB40044B8B9 /* TSGeneratePhotoOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratePhotoOperation.swift; sourceTree = "<group>"; };
 		A840A7FD2D916DB40044B8B9 /* TSGeneratePhotoOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGeneratePhotoOperation.swift; sourceTree = "<group>"; };
 		A840A8022D9194590044B8B9 /* TSGenerateBaseOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGenerateBaseOperation.swift; sourceTree = "<group>"; };
 		A840A8022D9194590044B8B9 /* TSGenerateBaseOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSGenerateBaseOperation.swift; sourceTree = "<group>"; };
-		A840A8042D925E910044B8B9 /* TSUserDefaultData1.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSUserDefaultData1.swift; sourceTree = "<group>"; };
 		A868A8992D75505800F6D884 /* TSThemeBannerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeBannerCell.swift; sourceTree = "<group>"; };
 		A868A8992D75505800F6D884 /* TSThemeBannerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeBannerCell.swift; sourceTree = "<group>"; };
 		A868A89B2D75506500F6D884 /* TSThemeContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeContentCell.swift; sourceTree = "<group>"; };
 		A868A89B2D75506500F6D884 /* TSThemeContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeContentCell.swift; sourceTree = "<group>"; };
 		A868A89D2D7560B900F6D884 /* TSPageNullView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPageNullView.swift; sourceTree = "<group>"; };
 		A868A89D2D7560B900F6D884 /* TSPageNullView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPageNullView.swift; sourceTree = "<group>"; };
@@ -624,7 +623,6 @@
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				A83F871C2D79409300D29B1B /* TSUserDefaultData.swift */,
 				A83F871C2D79409300D29B1B /* TSUserDefaultData.swift */,
-				A840A8042D925E910044B8B9 /* TSUserDefaultData1.swift */,
 			);
 			);
 			path = Data;
 			path = Data;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -1325,7 +1323,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				GENERATE_INFOPLIST_FILE = YES;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = AIRingtone/Info.plist;
 				INFOPLIST_FILE = AIRingtone/Info.plist;
@@ -1367,7 +1365,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				GENERATE_INFOPLIST_FILE = YES;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = AIRingtone/Info.plist;
 				INFOPLIST_FILE = AIRingtone/Info.plist;

+ 2 - 0
AIRingtone/Business/TSAIPhotoVC/TSAIPhotoChildVC/View/TSAIPhotoImageCell.swift

@@ -49,8 +49,10 @@ class TSAIPhotoImageCell: TSBaseCollectionCell {
             guard let oldModel = model else { return }
             guard let oldModel = model else { return }
             
             
             if style == .posterHistory {
             if style == .posterHistory {
+                if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: .posetr){ return }
                 TSGeneratePosterOperationQueue.shared.creatOperation(uuid: oldModel.uuid).creatPoster(oldModel: oldModel, prompt: oldModel.request.prompt, promptSort: oldModel.request.promptSort)
                 TSGeneratePosterOperationQueue.shared.creatOperation(uuid: oldModel.uuid).creatPoster(oldModel: oldModel, prompt: oldModel.request.prompt, promptSort: oldModel.request.promptSort)
             }else if style == .photoHistory {
             }else if style == .photoHistory {
+                if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: .photo){ return }
                 TSGeneratePhotoOperationQueue.shared.creatOperation(uuid: oldModel.uuid).creatPhoto(oldModel: oldModel, prompt: oldModel.request.prompt, promptSort: oldModel.request.promptSort)
                 TSGeneratePhotoOperationQueue.shared.creatOperation(uuid: oldModel.uuid).creatPhoto(oldModel: oldModel, prompt: oldModel.request.prompt, promptSort: oldModel.request.promptSort)
             }
             }
             
             

+ 0 - 1
AIRingtone/Business/TSAIPhotoVC/TSGeneralPicVC/TSGeneralPicVC+Event.swift

@@ -151,7 +151,6 @@ extension TSGeneralPicVC {
         netWorkImageView.isHidden = false
         netWorkImageView.isHidden = false
         regenerateBtn.isHidden = false
         regenerateBtn.isHidden = false
 
 
-        kPurchaseToolShared.useOnceForFree(type: vipFreeNumType)
     }
     }
 
 
 }
 }

+ 5 - 7
AIRingtone/Business/TSAIPhotoVC/TSGeneralPicVC/TSGeneralPicVC.swift

@@ -95,8 +95,6 @@ class TSGeneralPicVC: TSBottomAlertVC {
 //    }
 //    }
     
     
     override func clickAgainBtn() {
     override func clickAgainBtn() {
-        //判断 vip
-        if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: vipFreeNumType, vc: self){ return }
         creatImage()
         creatImage()
     }
     }
     
     
@@ -122,15 +120,15 @@ class TSGeneralPicVC: TSBottomAlertVC {
     }
     }
 
 
     override func dealThings() {
     override func dealThings() {
-        //判断 vip
-        if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: vipFreeNumType, vc: self){ return }
+
         creatImage()
         creatImage()
     }
     }
     
     
     func creatImage() {
     func creatImage() {
-        
+        //判断 vip
+        if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: vipFreeNumType, vc: self){ return }
         if gennerateType == .poster {
         if gennerateType == .poster {
-            let operation:TSGeneratePosterOperation = TSGeneratePosterOperationQueue.shared.creatOperation(uuid: UUID().uuidString) as! TSGeneratePosterOperation
+            let operation:TSGeneratePosterOperation = TSGeneratePosterOperationQueue.shared.creatOperation(uuid: UUID().uuidString) 
             operation.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
             operation.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
                 guard let self = self else { return }
                 guard let self = self else { return }
                 self.upDateView(state: state, model: model)
                 self.upDateView(state: state, model: model)
@@ -138,7 +136,7 @@ class TSGeneralPicVC: TSBottomAlertVC {
             operation.creatPoster(oldModel: self.infoModel, prompt: prompt, promptSort: promptSort)
             operation.creatPoster(oldModel: self.infoModel, prompt: prompt, promptSort: promptSort)
 
 
         }else if gennerateType == .photo {
         }else if gennerateType == .photo {
-            let operation:TSGeneratePhotoOperation = TSGeneratePhotoOperationQueue.shared.creatOperation(uuid: UUID().uuidString) as! TSGeneratePhotoOperation
+            let operation:TSGeneratePhotoOperation = TSGeneratePhotoOperationQueue.shared.creatOperation(uuid: UUID().uuidString) 
             operation.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
             operation.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
                 guard let self = self else { return }
                 guard let self = self else { return }
                 self.upDateView(state: state, model: model)
                 self.upDateView(state: state, model: model)

+ 1 - 0
AIRingtone/Business/TSAIRintoneVC/TSAIRintoneVC/View/TSAIRintoneHistoryCell.swift

@@ -48,6 +48,7 @@ class TSAIRintoneHistoryCell: SwipeCollectionViewCell  {
         generateView.refreshHandel = { [weak self]  in
         generateView.refreshHandel = { [weak self]  in
             guard let self = self else { return }
             guard let self = self else { return }
             guard let oldModel = model else { return }
             guard let oldModel = model else { return }
+            if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: .ringtones){ return }//判断 vip
             TSGenerateRintoneOperationQueue.shared.creatOperation(uuid: oldModel.uuid).creatRintone(oldModel: oldModel, prompt: oldModel.request.prompt, promptSort: oldModel.request.promptSort)
             TSGenerateRintoneOperationQueue.shared.creatOperation(uuid: oldModel.uuid).creatRintone(oldModel: oldModel, prompt: oldModel.request.prompt, promptSort: oldModel.request.promptSort)
         }
         }
         return generateView
         return generateView

+ 0 - 2
AIRingtone/Business/TSAIRintoneVC/TSGeneralRintoneVC/TSGeneralRintoneVC+Event.swift

@@ -114,7 +114,5 @@ extension TSGeneralRintoneVC {
         ringView.isHidden = false
         ringView.isHidden = false
         regenerateBtn.isHidden = false
         regenerateBtn.isHidden = false
         
         
-        kPurchaseToolShared.useOnceForFree(type: .ringtones)
- 
     }
     }
 }
 }

+ 2 - 2
AIRingtone/Business/TSAIRintoneVC/TSGeneralRintoneVC/TSGeneralRintoneVC.swift

@@ -125,7 +125,7 @@ class TSGeneralRintoneVC: TSBottomAlertVC {
     }
     }
     
     
     override func dealThings() {
     override func dealThings() {
-        if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: .ringtones, vc: self){ return }//判断 vip
+        
 //        viewModel.creatRintone(text: self.aiText)
 //        viewModel.creatRintone(text: self.aiText)
 //        viewModel.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
 //        viewModel.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
 //            guard let self = self else { return }
 //            guard let self = self else { return }
@@ -136,7 +136,7 @@ class TSGeneralRintoneVC: TSBottomAlertVC {
     }
     }
     
     
     func creatRintone() {
     func creatRintone() {
-        
+        if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: .ringtones, vc: self){ return }//判断 vip
         self.uuidString = UUID().uuidString
         self.uuidString = UUID().uuidString
         let operation:TSGenerateRintoneOperation = TSGenerateRintoneOperationQueue.shared.creatOperation(uuid: self.uuidString) as! TSGenerateRintoneOperation
         let operation:TSGenerateRintoneOperation = TSGenerateRintoneOperationQueue.shared.creatOperation(uuid: self.uuidString) as! TSGenerateRintoneOperation
         operation.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
         operation.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in

+ 1 - 1
AIRingtone/Business/VIewTool/TSButton.swift

@@ -70,7 +70,7 @@ class TSAppBtnView: TSBaseView {
         self.vipFreeNumType = vipFreeNumType
         self.vipFreeNumType = vipFreeNumType
         self.clickBlock = clickBlock
         self.clickBlock = clickBlock
         
         
-        contentView.removeAllSubviews()
+        contentView.removeAllSubViews()
         
         
         switch style {
         switch style {
         case .generate:
         case .generate:

+ 11 - 6
AIRingtone/Common/Purchase/TSPurchaseManager/TSPurchaseTool.swift

@@ -27,9 +27,9 @@ class TSPurchaseTool {
     var freeDict:[String:Int] = [:]
     var freeDict:[String:Int] = [:]
     
     
     var isVip:Bool{
     var isVip:Bool{
-        #if DEBUG
-            return true
-        #endif
+//        #if DEBUG
+//            return true
+//        #endif
         return kPurchaseDefault.isVip
         return kPurchaseDefault.isVip
     }
     }
     /// 使用一次免费次数
     /// 使用一次免费次数
@@ -114,7 +114,7 @@ extension TSPurchaseTool{
 
 
 extension TSPurchaseTool{
 extension TSPurchaseTool{
     func kJudgeVipFreeType(vipFreeNumType:VipFreeNumType,
     func kJudgeVipFreeType(vipFreeNumType:VipFreeNumType,
-                   vc:UIViewController,
+                   vc:UIViewController? = nil,
                    closePageBlock:(()->Void)? = nil) -> Bool {
                    closePageBlock:(()->Void)? = nil) -> Bool {
         //判断 vip
         //判断 vip
         return kJudgeVip(externalBool: kPurchaseToolShared.freeNumAvailable(type: vipFreeNumType) == false, vc: vc,closePageBlock: closePageBlock)
         return kJudgeVip(externalBool: kPurchaseToolShared.freeNumAvailable(type: vipFreeNumType) == false, vc: vc,closePageBlock: closePageBlock)
@@ -122,13 +122,18 @@ extension TSPurchaseTool{
 
 
 
 
     func kJudgeVip(externalBool:Bool,
     func kJudgeVip(externalBool:Bool,
-                   vc:UIViewController,
+                   vc:UIViewController? = nil,
                    closePageBlock:(()->Void)? = nil) -> Bool {
                    closePageBlock:(()->Void)? = nil) -> Bool {
         //判断 vip
         //判断 vip
         if externalBool,
         if externalBool,
            kPurchaseToolShared.isVip == false
            kPurchaseToolShared.isVip == false
         {
         {
-            TSPurchaseVC.show(target: vc, closePageBlock: nil)
+            if let vc = vc {
+                TSPurchaseVC.show(target: vc, closePageBlock: nil)
+            }else if let rootVC = WindowHelper.getRootViewController() {
+                TSPurchaseVC.show(target: rootVC, closePageBlock: nil)
+            }
+            
             return true
             return true
         }
         }
         return false
         return false

+ 5 - 0
AIRingtone/Common/Tool/OperationQueue/TSGenerateBaseOperation/TSGenerateBaseOperation.swift

@@ -88,6 +88,10 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
     }
     }
     
     
     func replaceSaveInfoModel(model:TSActionInfoModel){ }
     func replaceSaveInfoModel(model:TSActionInfoModel){ }
+    
+    func handleGenerateSuccess(){
+        
+    }
 
 
     func handleFailInfoModel(errorString:String?){
     func handleFailInfoModel(errorString:String?){
         self.currentActionInfoModel.actionStatus = .failed
         self.currentActionInfoModel.actionStatus = .failed
@@ -113,6 +117,7 @@ class TSGenerateBaseOperation: TSBaseOperation , @unchecked Sendable{
                         TSToastShared.hideLoading()
                         TSToastShared.hideLoading()
                         self.stateDatauPblished = (.success(nil),genmojiModel)
                         self.stateDatauPblished = (.success(nil),genmojiModel)
                         generatingProgress = 0
                         generatingProgress = 0
+                        handleGenerateSuccess()
                     case .failed:
                     case .failed:
                         self.stateDatauPblished = (.failed(kNetWorkMessage(data: data) ?? ""),nil)
                         self.stateDatauPblished = (.failed(kNetWorkMessage(data: data) ?? ""),nil)
                         generatingProgress = 0
                         generatingProgress = 0

+ 4 - 0
AIRingtone/Common/Tool/OperationQueue/TSGenerateBaseOperation/TSGeneratePhotoOperation.swift

@@ -51,6 +51,10 @@ class TSGeneratePhotoOperation: TSGenerateBaseOperation , @unchecked Sendable{
         currentActionInfoModelChanged?(currentActionInfoModel)
         currentActionInfoModelChanged?(currentActionInfoModel)
     }
     }
     
     
+    override func handleGenerateSuccess() {
+        kPurchaseToolShared.useOnceForFree(type: .photo)
+    }
+    
 //    //模拟数据
 //    //模拟数据
 //    func creatPhoto(oldModel:TSActionInfoModel? = nil,prompt:String,promptSort:String) {
 //    func creatPhoto(oldModel:TSActionInfoModel? = nil,prompt:String,promptSort:String) {
 //        if let model = oldModel {
 //        if let model = oldModel {

+ 4 - 0
AIRingtone/Common/Tool/OperationQueue/TSGenerateBaseOperation/TSGeneratePosterOperation.swift

@@ -52,6 +52,10 @@ class TSGeneratePosterOperation: TSGenerateBaseOperation , @unchecked Sendable{
         currentActionInfoModelChanged?(currentActionInfoModel)
         currentActionInfoModelChanged?(currentActionInfoModel)
     }
     }
 
 
+    override func handleGenerateSuccess() {
+        kPurchaseToolShared.useOnceForFree(type: .posetr)
+    }
+    
     //模拟数据
     //模拟数据
 //    func creatPoster(oldModel:TSActionInfoModel? = nil,prompt:String,promptSort:String) {
 //    func creatPoster(oldModel:TSActionInfoModel? = nil,prompt:String,promptSort:String) {
 //        if let model = oldModel {
 //        if let model = oldModel {

+ 5 - 0
AIRingtone/Common/Tool/OperationQueue/TSGenerateBaseOperation/TSGenerateRintoneOperation.swift

@@ -52,6 +52,11 @@ class TSGenerateRintoneOperation: TSGenerateBaseOperation , @unchecked Sendable{
         dePrint("model actionStatus 发出=\(model.actionStatus)")
         dePrint("model actionStatus 发出=\(model.actionStatus)")
         currentActionInfoModelChanged?(currentActionInfoModel)
         currentActionInfoModelChanged?(currentActionInfoModel)
     }
     }
+    
+    override func handleGenerateSuccess() {
+        kPurchaseToolShared.useOnceForFree(type: .ringtones)
+    }
+    
 
 
 //    //模拟数据
 //    //模拟数据
 //    func creatRintone(oldModel:TSActionInfoModel? = nil,prompt:String,promptSort:String) {
 //    func creatRintone(oldModel:TSActionInfoModel? = nil,prompt:String,promptSort:String) {

+ 1 - 0
Podfile

@@ -19,6 +19,7 @@ target 'AIRingtone' do
   pod 'Masonry'
   pod 'Masonry'
   pod 'SwipeCellKit'
   pod 'SwipeCellKit'
   pod 'TSSmalCoacopods', :path => '../TSSmalCoacopods'
   pod 'TSSmalCoacopods', :path => '../TSSmalCoacopods'
+  #pod 'TSSmalCoacopods',:git=>"http://hubgit.cn/zhouzhenshuai/TSSmalCoacopods.git", :branch => 'main'
   pod 'BetterSegmentedControl', '~> 2.0'
   pod 'BetterSegmentedControl', '~> 2.0'
 end
 end
 
 

+ 1 - 1
Podfile.lock

@@ -121,6 +121,6 @@ SPEC CHECKSUMS:
   SwipeCellKit: 3972254a826da74609926daf59b08d6c72e619ea
   SwipeCellKit: 3972254a826da74609926daf59b08d6c72e619ea
   TSSmalCoacopods: 6aa97167f0c76b16fc7d1fd1eb198bb6aece4f68
   TSSmalCoacopods: 6aa97167f0c76b16fc7d1fd1eb198bb6aece4f68
 
 
-PODFILE CHECKSUM: 0d445941f585aa08bd08d8aadd1bdfb535c72899
+PODFILE CHECKSUM: 1ca24296fbc1745640e1f2f7038f00d9d3fcdb0f
 
 
 COCOAPODS: 1.16.2
 COCOAPODS: 1.16.2