Browse Source

所有生成接口,增加次数检查限制

100Years 4 weeks ago
parent
commit
4d926c8947

+ 2 - 2
AIEmoji.xcodeproj/project.pbxproj

@@ -2472,7 +2472,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -2511,7 +2511,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;

+ 18 - 2
AIEmoji/Business/TSAILIstVC/TSAIChangeEmoteVC/TSAIChangeEmoteVC.swift

@@ -14,6 +14,17 @@ class TSAIChangeEmoteVC: TSBaseVC {
         case changeEmote
         case changehairColor
         case changehair
+        
+        var checkURLType:TSNeURLType{
+            switch self {
+                case .changeEmote:
+                return .changeEmotion
+                case .changehairColor:
+                return .imageRewriteV2
+                case .changehair:
+                return .changeHair
+            }
+        }
     }
     
     lazy var viewModel: TSAIChangeEmoteVM = {
@@ -189,8 +200,13 @@ extension TSAIChangeEmoteVC {
             self.pickSinglePhoto()
         }else{
             if kJudgeVip(externalBool: true, vc: self){ return }//判断 vip
-            viewModel.selectStyleModel = model
-            viewModel.uploadAndCreatImage()
+            TSNetworkShared.generateCheck(checkURLType: .changeHair, animationView: self.contentView) { [weak self] data, error in
+                guard let self = self else { return }
+                if error == nil{
+                    viewModel.selectStyleModel = model
+                    viewModel.uploadAndCreatImage()
+                }
+            }
         }
     }
     

+ 4 - 7
AIEmoji/Business/TSAILIstVC/TSAIChangeEmoteVC/ViewModel/TSAIChangeEmoteVM.swift

@@ -85,27 +85,24 @@ extension TSAIChangeEmoteVM {
         stateDatauPblished = (.start,nil)
         stateDatauPblished = (.progressString(generating(progress: 0.0)),nil)
         
-        var urlType:TSNeURLType = .changeEmotion
         var postDict:[String:Any] = [:]
         switch style {
         case .changeEmote:
-            urlType = .changeEmotion
             postDict = ["emotionType":selectStyleModel.style,
                         "imageUrl":imageUrl,
                         "device":getUserInfoJsonString()]
-        case .changehairColor:
-            urlType = .imageRewrite
-            postDict = ["prompt":selectStyleModel.prompt,
+        case .changehairColor:kAppName
+            postDict = ["styleId":kPTPNoStyle,//无风格
+                        "prompt":selectStyleModel.prompt,
                         "imageUrl":imageUrl,
                         "device":getUserInfoJsonString()]
         case .changehair:
-            urlType = .changeHair
             postDict = ["hairType":Int(selectStyleModel.style) ?? 101,
                         "imageUrl":imageUrl,
                         "device":getUserInfoJsonString()]
         }
             
-        creatRequest = TSNetworkShared.post(urlType: urlType,parameters:postDict) { [weak self] data,error in
+        creatRequest = TSNetworkShared.post(urlType: style.checkURLType,parameters:postDict) { [weak self] data,error in
             guard let self = self else { return }
             
             if let dataDict = kNetWorkCodeSuccess(data: data),

+ 16 - 12
AIEmoji/Business/TSAILIstVC/TSAIExpandImageVC/TSAIExpandImageVC.swift

@@ -222,20 +222,24 @@ extension TSAIExpandImageVC {
     
     func generateImage() {
         if kJudgeVip(externalBool: true, vc: self){ return } //判断 vip
-        
-        guard let upLoadImage = upLoadImage else { return }
-        let model = TSAIListPhotoGeneratorModel(
-            upLoadImage: upLoadImage,
-            generatorStyle: .photoExpand,
-            expandEdge: photoExpand,
-            expandViewSizes: (expandAreaView.bgImageView.size,expandAreaView.showImageView.size)
-        )
-        let gennerateVC = TSAIListPhotoGeneratorBaseVC(generatorModel: model) { [weak self] model in
+        TSNetworkShared.generateCheck(checkURLType: .photoExpand, animationView: self.contentView) { [weak self] data, error in
             guard let self = self else { return }
-            saveModel(model: model)
+            if error == nil{
+                guard let upLoadImage = upLoadImage else { return }
+                let model = TSAIListPhotoGeneratorModel(
+                    upLoadImage: upLoadImage,
+                    generatorStyle: .photoExpand,
+                    expandEdge: photoExpand,
+                    expandViewSizes: (expandAreaView.bgImageView.size,expandAreaView.showImageView.size)
+                )
+                let gennerateVC = TSAIListPhotoGeneratorBaseVC(generatorModel: model) { [weak self] model in
+                    guard let self = self else { return }
+                    saveModel(model: model)
+                }
+                kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
+            }
         }
-        
-        kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
+
     }
     
     func saveModel(model:TSActionInfoModel){

+ 6 - 1
AIEmoji/Business/TSAILIstVC/TSAIPhotoGeneratorBaseVC/TSAIListPhotoGeneratorBaseVC.swift

@@ -174,7 +174,12 @@ class TSAIListPhotoGeneratorBaseVC: TSAIPhotoGeneratorBaseVC {
         //判断 vip
         if kJudgeVip(externalBool: kPurchaseDefault.freeNumAvailable(type: .picToPic) == false, vc: self){ return }
         
-        viewModel.uploadAndCreatImage()
+        TSNetworkShared.generateCheck(checkURLType: viewModel.generatorModel.generatorStyle.checkURLType, animationView: self.contentView,resetNavigationState: true) { [weak self] data, error in
+            guard let self = self else { return }
+            if error == nil{
+                viewModel.uploadAndCreatImage()
+            }
+        }
     }
     
     //保存功能

+ 4 - 3
AIEmoji/Business/TSAILIstVC/TSAIPhotoGeneratorBaseVC/TSAIPhotoGeneratorBaseVM/TSAIListPhotoGeneratorBaseVM.swift

@@ -153,12 +153,13 @@ class TSAIListPhotoGeneratorBaseVM {
 //                postDict = ["imageUrl":imageUrl,
 //                            "device":getUserInfoJsonString()
 //                           ]
-                urlType = .imageRewrite
-                postDict = ["prompt":"提高上传图片的清晰度,不要改变任何",
+                urlType = .imageRewriteV2
+                postDict = ["styleId":kPTPNoStyle,//无风格
+                            "prompt":"提高上传图片的清晰度,不要改变任何",
                             "imageUrl":imageUrl,
                             "device":getUserInfoJsonString()]
         }
-        creatRequest = TSNetworkShared.post(urlType: urlType,parameters: postDict) { [weak self] data,error in
+        creatRequest = TSNetworkShared.post(urlType: generatorModel.generatorStyle.checkURLType,parameters: postDict) { [weak self] data,error in
             guard let self = self else { return }
             
             if let dataDict = kNetWorkCodeSuccess(data: data),

+ 31 - 6
AIEmoji/Business/TSAILIstVC/TSAIUploadPhotoBaseVC/TSAIUploadPhotoBaseVC.swift

@@ -15,6 +15,28 @@ enum TSGeneratorImageStyle {
     case photoLive     //把照片变活
     case photoExpand     //照片扩展
     case photoQuality    //照片变高清
+    
+
+    var checkURLType:TSNeURLType{
+        switch self {
+            case .ageOld:
+            return .changeAge
+            case .ageChild:
+            return .changeAge
+            case .oldPhoto:
+            return .imageRestore
+            case .eyeOpen:
+            return .eyeOpen
+            case .pretty:
+            return .pretty
+            case .photoLive:
+            return .photoAnimation
+            case .photoExpand:
+            return .photoExpand
+            case .photoQuality:
+            return .imageRewriteV2
+        }
+    }
 }
 
 class TSAIUploadPhotoBaseVC: TSBaseVC {
@@ -268,13 +290,17 @@ extension TSAIUploadPhotoBaseVC {
     func generateImage() {
         if kJudgeVip(externalBool: true, vc: self){ return } //判断 vip
         
-        guard let upLoadImage = upLoadImage else { return }
-        let gennerateVC = TSAIListPhotoGeneratorBaseVC(generatorModel: TSAIListPhotoGeneratorModel(upLoadImage: upLoadImage, generatorStyle: generatorStyle)){ [weak self] model in
+        TSNetworkShared.generateCheck(checkURLType: generatorStyle.checkURLType, animationView: self.contentView) { [weak self] data, error in
             guard let self = self else { return }
-            saveModel(model: model)
+            if error == nil{
+                 guard let upLoadImage = upLoadImage else { return }
+                 let gennerateVC = TSAIListPhotoGeneratorBaseVC(generatorModel: TSAIListPhotoGeneratorModel(upLoadImage: upLoadImage, generatorStyle: generatorStyle)){ [weak self] model in
+                     guard let self = self else { return }
+                     saveModel(model: model)
+                 }
+                 kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
+            }
         }
-        
-        kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
     }
     
     func saveModel(model:TSActionInfoModel){
@@ -297,5 +323,4 @@ extension TSAIUploadPhotoBaseVC {
             TSRMShared.photoQualityDBHistory.updateData(model)
         }
     }
-
 }

+ 13 - 6
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/TSGenmojiVC.swift

@@ -105,16 +105,23 @@ extension TSGenmojiVC {
             guard let self = self else { return }
         }{ return }
         
-        let gennerateVC = TSGenmojiGennerateVC(aiText: text) {[weak self] model in
+        TSNetworkShared.generateCheck(checkURLType: .imageEmoji, animationView: self.contentView) { [weak self] data, error in
             guard let self = self else { return }
-            if viewModel.saveModel(model:model) {
-                updateListDataView()
-            }else{
-                collectionComponent.reloadData()
+            if error == nil{
+                let gennerateVC = TSGenmojiGennerateVC(aiText: text) {[weak self] model in
+                    guard let self = self else { return }
+                    if viewModel.saveModel(model:model) {
+                        updateListDataView()
+                    }else{
+                        collectionComponent.reloadData()
+                    }
+                }
+                
+                kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
             }
         }
         
-        kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
+
     }
     
     func updateListDataView(){

+ 10 - 5
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/View/TSGenmojiItemCell.swift

@@ -75,14 +75,19 @@ class TSGenmojiItemCell: TSBaseCollectionCell ,TSSimpleConfigurableView {
             guard let self = self else { return }
             if dataModel.upImageURLExpired { //任务已经过期了
                 self.actionHandler(any: "delete_task_expired")
-                delegate?.collectionView(didTrigger: TSSimpleCellEvent(action: .buttonTapped("delete_task_expired"), indexPath: indexPath ?? IndexPath(item: 0, section: 0), data: self.dataModel))
+                delegate?.collectionView(didTrigger: TSSimpleCellEvent(action: .buttonTapped("delete_task_expired"), indexPath: indexPath, data: self.dataModel))
             }else{
                 if kJudgeVipFreeType(vipFreeNumType: .picToPic){ return }
                 if TSGeneratePTPOperationQueue.shared.isAvailability {
-                    let generatePTPOperation = TSGeneratePTPOperationQueue.shared.creatOperation(uuid: dataModel.uuid)
-                    generatePTPOperation.isSaveDB = true
-                    generatePTPOperation.creatImage(oldModel: dataModel)
-                    generateView.setProgress(progress: 0)
+                    TSNetworkShared.generateCheck(checkURLType: .imageRewriteV2, animationView: self.contentView) { [weak self] data, error in
+                        guard let self = self else { return }
+                        if error == nil{
+                            let generatePTPOperation = TSGeneratePTPOperationQueue.shared.creatOperation(uuid: dataModel.uuid)
+                            generatePTPOperation.isSaveDB = true
+                            generatePTPOperation.creatImage(oldModel: dataModel)
+                            generateView.setProgress(progress: 0)
+                        }
+                    }
                 }
             }
         }

+ 7 - 4
AIEmoji/Business/TSPTPGeneratorVC/TSAbnormalPopUpAlertVC/TSAbnormalPopUpAlertVC.swift

@@ -26,7 +26,7 @@ class TSAbnormalPopUpAlertVC: TSBaseVC {
 //        fatalError("init(coder:) has not been implemented")
 //    }
     
-    
+    var isResetNavigationState:Bool = false
     lazy var alertView: UIView = {
         let alertView = UIView()
         alertView.cornerRadius = 20
@@ -50,7 +50,10 @@ class TSAbnormalPopUpAlertVC: TSBaseVC {
                 self.dismiss()
             }
             
-            TSAbnormalPopUpAlertVC.resetNavigationState()
+            if isResetNavigationState {
+                TSAbnormalPopUpAlertVC.resetNavigationState()
+            }
+            
         }
         return submitBtn
     }()
@@ -94,12 +97,12 @@ class TSAbnormalPopUpAlertVC: TSBaseVC {
 }
 
 extension TSAbnormalPopUpAlertVC {
-    static func showRobotWarning() {
+    static func showRobotWarning(resetNavigationState:Bool = false) {
         guard let window = WindowHelper.getKeyWindow() else { return }
         shared.view.frame = window.bounds
         shared.text = "We've detected unusually high generation activity. You may be a bot. Please try again tomorrow.".localized
         shared.isAddView = true
-        
+        shared.isResetNavigationState = resetNavigationState
         UIView.animate(withDuration: 0.3){
             window.addSubview(shared.view)
         }

+ 8 - 12
AIEmoji/Business/TSPTPGeneratorVC/TSPTPGeneratorVC/TSPTPGeneratorVC.swift

@@ -105,10 +105,6 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
         }
     }
     
-//    override func closePage() {
-//        self.dismiss(animated: true, completion: nil)
-//    }
-    
     //重试
     @objc override func clickTryAgainBtn(){
         clickRegenerateBtn()
@@ -132,8 +128,14 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
     @objc override func clickRegenerateBtn(){
         //判断 vip
         if kJudgeVip(externalBool: kPurchaseDefault.freeNumAvailable(type: .picToPic) == false, vc: self) { return }
-//        viewModel.uploadAndCreatImage()
-        
+        TSNetworkShared.generateCheck(checkURLType: .imageRewriteV2, animationView: self.contentView,resetNavigationState: true) { [weak self] data, error in
+            if error == nil{
+                self?.regenerateCreat()
+            }
+        }
+    }
+    
+    func regenerateCreat(){
         if let model = self.infoModel {
             if model.actionStatus == .success  {
                 model.id = Date.timestampInt //如果是成功,且再生成一个,则更换一个 id ,作为新数据保存
@@ -142,7 +144,6 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
         }else {
             uploadImageCreatOperation()
         }
-        
     }
     
     //保存功能
@@ -159,11 +160,6 @@ class TSPTPGeneratorVC: TSAIPhotoGeneratorBaseVC {
     }
     
     override func dealThings() {
-//        viewModel.uploadAndCreatImage()
-//        viewModel.$stateDatauPblished.receive(on: DispatchQueue.main).sink {[weak self]  (state,model) in
-//            guard let self = self else { return }
-//            self.upDateView(state: state, model: model)
-//        }.store(in: &cancellable)
         creatImage()
     }
     

+ 10 - 2
AIEmoji/Business/TSPTPGeneratorVC/TSPTPInputVC/TSPTPInputVC.swift

@@ -253,7 +253,7 @@ class TSPTPInputVC: TSBaseVC {
         let creatBtnView = TSAppBtnView()
         creatBtnView.setUpButton(style: .generate, vipFreeNumType: .picToPic) { [weak self] in
             guard let self = self else { return }
-            generateImage()
+            generateCheck()
         }
         creatBtnView.setBtnEnabled(isEnabled: false)
         creatBtnView.isIconVipBlock = { [weak self] in
@@ -496,7 +496,16 @@ extension TSPTPInputVC {
         view.endEditing(true)
     }
 
+    func generateCheck() {
+        TSNetworkShared.generateCheck(checkURLType: .imageRewriteV2, animationView: self.contentView) { [weak self] data, error in
+            if error == nil{
+                self?.generateImage()
+            }
+        }
+    }
+    
     func generateImage() {
+ 
         viewModel.selectedPTPStyleModel.upLoadImage = viewModel.upLoadImage
         viewModel.selectedPTPStyleModel.upLoadImageUrl = nil
         let gennerateVC = TSPTPGeneratorVC(generateStyleModel: viewModel.selectedPTPStyleModel) { [weak self] _ in
@@ -517,7 +526,6 @@ extension TSPTPInputVC {
 
         kPresentModalVC(target: self, modelVC: gennerateVC, transitionStyle: .crossDissolve)
     }
-
     func setCreatBtnEnabled() {
         let isAvailability = TSGeneratePTPOperationQueue.shared.isAvailability
         if viewModel.isCanGennerate, isAvailability {

+ 13 - 8
AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/TSTTPInputVC.swift

@@ -150,15 +150,20 @@ extension TSTTPInputVC {
         }
         
         if kJudgeVip(externalBool: isVip, vc: self) { return } //判断 vip
-        let gennerateVC = TSTextPicGennerateVC(generateStyleModel: generateStyleModel) {[weak self] model in
-            guard let self = self else { return }
-            model.request.promptSort = viewModel.promptText
-            viewModel.saveModel(model: model)
-            updateVipView()
-            reloadUIBlock?()
+
+        TSNetworkShared.generateCheck(checkURLType: .textPicCreate, animationView: self.contentView) { [weak self] data, error in
+        guard let self = self else { return }
+         if error == nil{
+             let gennerateVC = TSTextPicGennerateVC(generateStyleModel: generateStyleModel) {[weak self] model in
+                 guard let self = self else { return }
+                 model.request.promptSort = viewModel.promptText
+                 viewModel.saveModel(model: model)
+                 updateVipView()
+                 reloadUIBlock?()
+             }
+             kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
+            }
         }
-        
-        kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
     }
 
 }

+ 6 - 1
AIEmoji/Business/TSTextGeneralPictureVC/TSTextPicGennerateVC/TSTextPicGennerateVC.swift

@@ -82,7 +82,12 @@ class TSTextPicGennerateVC: TSAIPhotoGeneratorBaseVC {
             guard let self = self else { return }
         }{ return }
         
-        viewModel.creatImageEmoji()
+        TSNetworkShared.generateCheck(checkURLType: .textPicCreate, animationView: self.contentView,resetNavigationState: true) { [weak self] data, error in
+        guard let self = self else { return }
+            if error == nil{
+             self.viewModel.creatImageEmoji()
+            }
+        }
     }
     
 

+ 11 - 5
AIEmoji/Common/NetworkManager/TSNetWork/TSNetworkManager.swift

@@ -334,19 +334,25 @@ extension TSNetworkManager {
     
 }
 
-
+func kNetWorkGetCode(data:Any?) -> Int? {
+    guard let data = data else { return nil }
+    if let dataDict = data as? [String:Any]{
+        let code = dataDict.safeInt(forKey: "code")
+        return code
+    }
+    return nil
+}
 
 func kNetWorkCodeSuccess(data:Any?) -> [String:Any]? {
     guard let data = data else { return nil }
     if let dataDict = data as? [String:Any]{
         let code = dataDict.safeInt(forKey: "code")
-        
         switch code {
         case 200://成功
             return dataDict
-        case 400://机器人提示
-            TSAbnormalPopUpAlertVC.showRobotWarning()
-            return nil
+//        case 400://机器人提示
+//            TSAbnormalPopUpAlertVC.showRobotWarning()
+//            return nil
         default:
             return nil
         }

+ 2 - 0
AIEmoji/Common/Tool/TSCommonTool/TSCommonTool.swift

@@ -224,3 +224,5 @@ func kExecuteOnMainThread(_ block: @escaping () -> Void) {
 let kAppName:String = "AI Image" //Chibii Chibi Ghiblii
 let kUploadImageMaxBit10Size:Int = 10 * 1024 * 1024 //10M
 let kUploadImageMaxBit5Size:Int = 5 * 1024 * 1024 //5M
+let kPTPNoStyle:String = "ImageToImage-40"  //图生图,无风格
+