无故事王国
2024-07-04 d7282009847ce7dffcd5ec5c3faf2ef569f75744
fix bug
11个文件已修改
93 ■■■■■ 已修改文件
DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_Game_Pocket_CCell.swift 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/TCell/HomeListen_item_TCell.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/View/Lesson_4_AnswerView.swift 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/Listen/View/Lesson_4_AnswerView.xib 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DolphinEnglishLearnStudent/Moudle/Home/HomeListenFight_lesson_1_VC.swift
@@ -250,6 +250,7 @@
                //回答正确
                private func answerSuccess(_ cell:ListenFight_lesson_1_CCell){
                                menuView?.snp.removeConstraints()
                                menuView?.playing()
                                let v = cell.view_topHandle.convert(cell.bounds, to: self.view)
                                UIView.animate(withDuration: 0.3) {
                                                self.menuView?.snp.updateConstraints { make in
DolphinEnglishLearnStudent/Moudle/Home/Listen/CCell/ListenFight_Game_Pocket_CCell.swift
@@ -10,6 +10,11 @@
class ListenFight_Game_Pocket_CCell: UICollectionViewCell {
                enum PocketEnum{
                                case toFrom
                                case toback
                }
                lazy var mask_img:UIImageView = {
                                let image = UIImageView(image: UIImage(named: "bg_card"))
                                return image
@@ -32,6 +37,8 @@
                let img1 = UIImageView(image: UIImage(named: "icon_play_1")!.withTintColor(UIColor(hexString: "#41A2EB")!))
                let img2 = UIImageView(image: UIImage(named: "icon_playing")!.withTintColor(UIColor(hexString: "#41A2EB")!))
                private var pocketEnum = PocketEnum.toback
                let stateImg = UIImageView()
@@ -86,7 +93,8 @@
                                }
                                playBtn.addTarget(self, action: #selector(playAction), for: .touchUpInside)
                                playBtn.setImage(UIImage(named: "icon_play")?.withTintColor(UIColor(hexString: "#41A2EB")!), for: .normal)
                                playBtn.setBackgroundImage(UIImage(named: "icon_play")?.withTintColor(UIColor(hexString: "#41A2EB")!), for: .normal)
                                playBtn.isEnabled = false
                                contentVoiceView.addSubview(playBtn)
                                playBtn.snp.makeConstraints { make in
                                                make.right.equalTo(-self.width * 0.0958)
@@ -150,8 +158,11 @@
                }
                @objc func playAction(){
                                VoicePlayer.share().playerAt(url: model.voice)
                                cellPlaying()
                                //防止穿透点击播放
                                if pocketEnum == .toFrom{
                                                VoicePlayer.share().playerAt(url: model.voice)
                                                cellPlaying()
                                }
                }
                func setSimpleModel(_ model:SimpleListenDataModel){
@@ -170,6 +181,8 @@
                func toFromAction(_ superView:UIView? = nil,c:Bool? = nil){
                                superView?.isUserInteractionEnabled = false
                                pocketEnum = .toFrom
                                playBtn.isEnabled = true
                                UIView.transition(from: mask_img, to: answer_img, duration: 0.6, options: [.transitionFlipFromLeft,.showHideTransitionViews]) { _ in
                                                if c == true{
                                                                superView?.isUserInteractionEnabled = true
@@ -179,6 +192,8 @@
                func toBackAction(_ superView:UIView? = nil,c:Bool? = nil){
                                superView?.isUserInteractionEnabled = false
                                pocketEnum = .toback
                                playBtn.isEnabled = false
                                UIView.transition(from: answer_img, to: mask_img, duration: 0.6,options: [.transitionFlipFromRight,.showHideTransitionViews]){ _ in
                                                if c == true{
                                                                superView?.isUserInteractionEnabled = true
DolphinEnglishLearnStudent/Moudle/Home/Listen/TCell/HomeListen_item_TCell.swift
@@ -29,7 +29,7 @@
                                                label_state.text = "已完成"
                                }else if progress > 0 && progress < 100{
                                                view_state.backgroundColor = UIColor(hexString: "#FF8A66")
                                                label_state.text = String(format: "%ld%%", progress)
                                                label_state.text = String(format: "剩余:%ld%%", progress)
                                }
                }
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFightVC.swift
@@ -330,7 +330,7 @@
                                                                                case .story1,.story2:
                                                                                                if let dict = noti.object as? Dictionary<String,Any>{
                                                                                                                let type = weakSelf.viewModel.listenType.value == .story1 ? 1:2
                                                                                                                let accracy = String(format: "%.0lf", Double(weakSelf.viewModel.correctNum) / Double(weakSelf.viewModel.correctNum + weakSelf.viewModel.errorNum) * 100).int ?? 0
                                                                                                                let accracy = floor(Double(weakSelf.viewModel.correctNum) / Double(weakSelf.viewModel.correctNum + weakSelf.viewModel.errorNum) * 100).int
                                                                                                                weakSelf.storyComplete(storyId: dict["storyId"] as! Int, accuracy: accracy, studyTime: weakSelf.viewModel.times, type: type, integral: dict["storyIntegral"] as! Int)
                                                                                                }
                                                                }
@@ -394,17 +394,10 @@
                /// 学习类完成
                /// - Parameter ignorePush: 是否忽略跳转(未完成答题 :true)
                private func studyComplete(){
                                //                                var toalIntegral:Int = 0
                                let ids:String = viewModel.answerItems_1.keys.sorted().joined(separator: ",")
                                switch viewModel.listenType.value {
                                                case .lesson1,.lesson2,.lesson3,.lesson4,.lesson5:
                                                                let data = (data as! ListenNewModel).data
                                                                //                                                                toalIntegral = data?.integral ?? 0
                                                default:break
                                }
                                //正确率
                                let accracy = String(format: "%.0lf", Double(viewModel.correctNum) / Double(viewModel.correctNum + viewModel.errorNum) * 100).int ?? 0
                                let accracy = floor(Double(viewModel.correctNum) / Double(viewModel.correctNum + viewModel.errorNum) * 100).int
                                Services.completeLearing(type: viewModel.listenType.value.rawValue, studyTime: viewModel.times, studyIds: ids, quarter: viewModel.quarter.value!, week: viewModel.week.value!, day: viewModel.day.value!, accracy: accracy).subscribe(onNext: {data in
                                                NotificationCenter.default.post(name: Refresh_ListenSchedule_Noti, object: nil)
@@ -412,8 +405,6 @@
                                }).disposed(by: disposeBag)
                                timer.invalidate()
                                //                                toalIntegral = floor(Double(toalIntegral) * (Double(accracy) / 100.0)).int
                                let vc = HomeStudyCompleteVC(viewModel: viewModel,studyScheduleModel: studyScheduleModel!)
                                vc.title = viewModel.listenType.value.rawTitle
@@ -427,27 +418,22 @@
                                var name = ""
                                var accuracy:Int = 0
                                var totalNum:Double = 0
                                //                                var toalIntegral:Int = 0
                                if viewModel.listenType.value == .game1{
                                                name = "超级听力"
                                                totalNum =  Double(viewModel.correctNum + viewModel.errorNum)
                                                if totalNum > 0{
                                                                accuracy = String(format: "%.0lf", Double(viewModel.correctNum) / totalNum * 100).int ?? 0
                                                                accuracy = floor(Double(viewModel.correctNum) / totalNum * 100).int
                                                }
                                                //                                                toalIntegral = floor(Double(integral) * (Double(accuracy) / 100.0)).int
                                }else{
                                                name = "超级记忆"
                                                let v = viewModel.answerItems.first?.value as! Listen1Model
                                                //11887:完成答题页,总题目、错误题目 数量计算逻辑错误(只要是没有答对的题目就算错误题目,不管是否答,相当于错误题目就是总题目减去正确题目)
                                                totalNum = Double(v.photoList.count)
                                                if totalNum > 0 && viewModel.correctNum > 0 && viewModel.errorNum > 0{
                                                                accuracy = String(format: "%.0lf", Double(viewModel.correctNum) / Double(totalNum) * 100).int ?? 0
                                                                accuracy = floor(Double(viewModel.correctNum) / Double(totalNum) * 100).int
                                                }
                                                viewModel.errorNum = Int(totalNum) - viewModel.correctNum
                                                //                                                toalIntegral = floor(Double(integral) * (Double(accuracy) / 100.0)).int
                                }
                                Services.completeGames(gameId: gameId, gameName: name, difficulty: viewModel.gameLevel.value, accuracy: accuracy, useTime: viewModel.times).subscribe(onNext: {data in
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_4_VC.swift
@@ -396,6 +396,12 @@
                func playComplete() {
                                self.view.isUserInteractionEnabled = true
                                for subV in stackView.arrangedSubviews{
                                                if let s = subV as? Lesson_4_AnswerView{
                                                                s.playEnd()
                                                }
                                }
                                if let indexPath = viewModel.selectIndex.value ,let cell = collectionView.cellForItem(at: indexPath) as? ListenFight_lesson_4_CCell{
                                                cell.playEnd()
                                }
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
@@ -235,13 +235,13 @@
                                }
                                let tempSubV = stackView.arrangedSubviews[self.playVoiceRealAt!] as! VoiceHandleView
                                label_hint.text = ""
                                switch answerType {
                                                case .success:
                                                                answterCount += 1
                                                                rootViewModel.correctNum += 1
                                                                viewModel.answerType.accept(.success)
                                                                label_hint.text = ""
                                                                let copyView = tempSubV.copyView()
                                                                copyView.listenType = .lesson5
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenGame_1_VC.swift
@@ -368,7 +368,8 @@
                                view_studyHandleView.playing()
                                timer?.fireDate = .distantFuture //播放中,暂停计时
//                                label_hint.text = "播放中"
                                label_hint.text = ""
//                                label_hint.text = ""
                                label_hint.text = "请在\(times)s内选择答案!"
                }
}
DolphinEnglishLearnStudent/Moudle/Home/Listen/View/Lesson_4_AnswerView.swift
@@ -16,6 +16,7 @@
                @IBOutlet weak var view_handle: UIView!
                @IBOutlet weak var btn_isAnswer: UIButton!
                @IBOutlet weak var img_play: UIImageView!
                @IBOutlet weak var btn_playing: UIButton!
                
                var voiceUrl:String?
                var isCopy:Bool = false
@@ -25,11 +26,11 @@
                                super.awakeFromNib()
                                img_state.alpha = 0
                                img_play.alpha = 0
                                VoicePlayer.share().playEnd {
                                                if self.isCopy{
                                                                self.img_play.alpha = 1
                                                }
                                }
//                                VoicePlayer.share().playEnd {
//                                                if self.isCopy{
//                                                                self.img_play.alpha = 1
//                                                }
//                                }
                }
                func copyView()->Lesson_4_AnswerView{
@@ -42,11 +43,20 @@
                                self.playAtClouse = clouse
                }
                func playEnd(){
                                btn_isAnswer.isHidden = false
                                btn_playing.setImage(UIImage(named: "icon_play_1"), for: .normal)
                }
                @IBAction func playAction(_ sender: UIButton) {
                                if let url = voiceUrl{
                                                VoicePlayer.share().playerAt(url: url)
                                                img_play.alpha = 0
                                                playAtClouse?(self.tag)
                                                btn_playing.setImage(UIImage(named: "icon_playing"), for: .normal)
                                                btn_isAnswer.isHidden = true
                                                img_play.isHidden = true
                                }
                }
}
DolphinEnglishLearnStudent/Moudle/Home/Listen/View/Lesson_4_AnswerView.xib
@@ -20,17 +20,17 @@
                            <rect key="frame" x="0.0" y="0.0" width="152" height="52"/>
                            <subviews>
                                <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="otl-1Z-qED">
                                    <rect key="frame" x="18" y="15" width="28" height="22"/>
                                    <rect key="frame" x="15.5" y="15" width="28" height="22"/>
                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                    <state key="normal" image="icon_answer"/>
                                </button>
                                <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mba-RI-50M">
                                    <rect key="frame" x="65" y="12.5" width="27" height="27"/>
                                    <rect key="frame" x="62.5" y="12.5" width="27" height="27"/>
                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                    <state key="normal" image="icon_play_1"/>
                                </button>
                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_fail" translatesAutoresizingMaskIntoConstraints="NO" id="mkh-g4-79e">
                                    <rect key="frame" x="103" y="10" width="32" height="32"/>
                                    <rect key="frame" x="100.5" y="10" width="32" height="32"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="32" id="unt-83-tZW"/>
                                        <constraint firstAttribute="width" constant="32" id="yDR-8r-kHx"/>
@@ -52,15 +52,16 @@
                                <constraint firstItem="mba-RI-50M" firstAttribute="leading" secondItem="otl-1Z-qED" secondAttribute="trailing" constant="19" id="0nx-t9-1zV"/>
                                <constraint firstItem="YeU-8E-35u" firstAttribute="centerY" secondItem="tfO-7L-o0T" secondAttribute="centerY" id="2DM-IT-SGr"/>
                                <constraint firstAttribute="width" constant="152" id="3Zx-vg-H2U"/>
                                <constraint firstItem="otl-1Z-qED" firstAttribute="leading" secondItem="qsr-6I-w3R" secondAttribute="leading" constant="18" id="6CA-c8-Zr7"/>
                                <constraint firstAttribute="bottom" secondItem="tfO-7L-o0T" secondAttribute="bottom" id="8ro-2n-YNH"/>
                                <constraint firstAttribute="trailing" secondItem="tfO-7L-o0T" secondAttribute="trailing" id="A2h-po-R4k"/>
                                <constraint firstAttribute="trailing" secondItem="YeU-8E-35u" secondAttribute="trailing" constant="18" id="DAX-dg-Ase"/>
                                <constraint firstItem="mba-RI-50M" firstAttribute="centerY" secondItem="otl-1Z-qED" secondAttribute="centerY" id="FTc-eb-PWk"/>
                                <constraint firstItem="tfO-7L-o0T" firstAttribute="top" secondItem="qsr-6I-w3R" secondAttribute="top" id="HqC-Ia-1OU"/>
                                <constraint firstItem="mba-RI-50M" firstAttribute="centerX" secondItem="tfO-7L-o0T" secondAttribute="centerX" id="M4G-fi-i36"/>
                                <constraint firstItem="mkh-g4-79e" firstAttribute="centerY" secondItem="otl-1Z-qED" secondAttribute="centerY" id="N6f-d4-80e"/>
                                <constraint firstItem="tfO-7L-o0T" firstAttribute="leading" secondItem="qsr-6I-w3R" secondAttribute="leading" id="QfH-1Q-LyV"/>
                                <constraint firstItem="mkh-g4-79e" firstAttribute="leading" secondItem="mba-RI-50M" secondAttribute="trailing" constant="11" id="a9o-Lq-9SP"/>
                                <constraint firstItem="mba-RI-50M" firstAttribute="centerY" secondItem="tfO-7L-o0T" secondAttribute="centerY" id="gPd-3s-zX2"/>
                                <constraint firstItem="otl-1Z-qED" firstAttribute="centerY" secondItem="qsr-6I-w3R" secondAttribute="centerY" id="v0P-gn-zbN"/>
                            </constraints>
                            <userDefinedRuntimeAttributes>
@@ -101,6 +102,7 @@
            <connections>
                <outlet property="btn_choose" destination="v7f-gv-EWR" id="wFE-Gp-xAd"/>
                <outlet property="btn_isAnswer" destination="otl-1Z-qED" id="0Fg-A8-9dl"/>
                <outlet property="btn_playing" destination="mba-RI-50M" id="Gmt-aT-rn4"/>
                <outlet property="img_play" destination="YeU-8E-35u" id="Xvc-ls-0sz"/>
                <outlet property="img_state" destination="mkh-g4-79e" id="IzD-w8-jjK"/>
                <outlet property="view_handle" destination="qsr-6I-w3R" id="ptU-09-NIc"/>
DolphinEnglishLearnStudent/Moudle/Home/VC/HomeStudyCompleteVC.swift
@@ -56,7 +56,7 @@
                                if viewModel.correctNum + viewModel.errorNum == 0{
                                                label_ratioNum.text = String(format: "正确率:0%%")
                                }else{
                                                label_ratioNum.text = String(format: "正确率:%.0lf%%", Double(viewModel.correctNum) / Double(viewModel.correctNum + viewModel.errorNum) * 100)
                                                label_ratioNum.text = String(format: "正确率:%ld%%", floor(Double(viewModel.correctNum) / Double(viewModel.correctNum + viewModel.errorNum) * 100).int)
                                }
                                if totalNum != nil && viewModel.listenType.value == .game2{
DolphinEnglishLearnStudent/Moudle/Me/View/ShareView.swift
@@ -75,7 +75,7 @@
                                                                SDWebImageDownloader.shared.downloadImage(with: URL(string: m.img)) { iamge, data, error, state in
                                                                                hiddenHUD()
                                                                                guard error == nil else {alert(msg: "图片获取失败");return}
                                                                                WeChatTools.shareUrl("https://dollearn.com/", title: m.title, desc: "", thumb: iamge!, scene: scene)
                                                                                WeChatTools.shareUrl("https://dollearn.com/", title:"海豚智能教育平台" , desc: m.title, thumb: iamge!, scene: scene)
                                                                }
                                                }
                                }).disposed(by: disposeBag)