瀏覽代碼

视频播放 - iats 扫码 完成 bug修复完成

openlockPPP 3 月之前
父節點
當前提交
60709555ee
共有 44 個文件被更改,包括 710 次插入266 次删除
  1. 2 2
      Podfile
  2. 28 28
      Podfile.lock
  3. 5 5
      Pods/ADSuyiKit/ADSuyiKit/Classes/ADSuyiKit.xcframework/Info.plist
  4. 5 5
      Pods/ADSuyiSDK/ADSuyiSDK/Classes/core/ADSuyiSDK.xcframework/Info.plist
  5. 二進制
      Pods/Ads-CN/SDK/CSJAdSDK.bundle/Info.plist
  6. 1 1
      Pods/Ads-CN/SDK/CSJAdSDK.bundle/version.txt
  7. 二進制
      Pods/GDTMobSDK/lib/libGDTMobSDK.a
  8. 28 28
      Pods/Manifest.lock
  9. 46 46
      Pods/Pods.xcodeproj/project.pbxproj
  10. 26 10
      jiaPei.xcodeproj/project.pbxproj
  11. 二進制
      jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate
  12. 2 0
      jiaPei/Modules/HomePageModule/RQHomePageModule.h
  13. 29 21
      jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m
  14. 6 6
      jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsCell.xib
  15. 2 1
      jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsCell01.m
  16. 6 6
      jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsCell01.xib
  17. 20 0
      jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialVideoHeaderView.h
  18. 38 0
      jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialVideoHeaderView.m
  19. 39 0
      jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialVideoHeaderView.xib
  20. 17 0
      jiaPei/Modules/HomePageModule/ViewController/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewController.h
  21. 133 0
      jiaPei/Modules/HomePageModule/ViewController/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewController.m
  22. 22 0
      jiaPei/Modules/HomePageModule/ViewController/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewController.xib
  23. 24 20
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageOneOrFourSmallItemViewModel.m
  24. 22 14
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageSimulationExamItemViewModel.m
  25. 3 1
      jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/分段练习/NYBlockExerciseViewModel.m
  26. 32 3
      jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewModel.m
  27. 18 0
      jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/易错专项/NYFailSpecialVideoGroupViewModel.h
  28. 13 0
      jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/易错专项/NYFailSpecialVideoGroupViewModel.m
  29. 3 2
      jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.m
  30. 5 1
      jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYQuestionContentView.m
  31. 8 1
      jiaPei/Modules/OtherModules/ExerciseModule/View/ExercisePage/RQExerciseQuestionCell.m
  32. 22 14
      jiaPei/Modules/OtherModules/ExerciseModule/View/ExerciseSubPage/考试相关/RQSimulateExamBeginCell.m
  33. 31 23
      jiaPei/Modules/OtherModules/ExerciseModule/ViewModel/ExercisePage/RQExerciseSubViewModel.m
  34. 1 1
      jiaPei/Modules/OtherModules/PTObjectMolule/RQPTObjectMolule.m
  35. 22 14
      jiaPei/Modules/OtherModules/VIPModule/View/怎么学/RQVipContentCell.m
  36. 2 0
      jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.h
  37. 2 1
      jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.m
  38. 2 0
      jiaPei/TrainDetailCell.h
  39. 2 1
      jiaPei/TrainDetailCell.m
  40. 20 10
      jiaPei/TrainDetailCell.xib
  41. 2 1
      jiaPei/TrainDetailVC.m
  42. 2 0
      jiaPei/TrainInfoTableViewCell.h
  43. 9 0
      jiaPei/TrainInfoTableViewCell.m
  44. 10 0
      jiaPei/TrainInfoVC.m

+ 2 - 2
Podfile

@@ -8,7 +8,7 @@ source 'https://gitee.com/huazi-rongchuang/cxhadsdk-ios-repo.git'
 # Private Speces
 #source 'https://github.com/ScareCrowInMountain/RQPrivateSpec.git'
 
-# 说明平台是ios,版本是11.0
+# 说明平台是ios,版本是13.0
 platform:ios,'13.0'
 
 # 忽略引入库的所有警告(强迫症者的福音啊)
@@ -46,7 +46,7 @@ target  'jiaPei'  do
 
     
     # AD
-    pod 'ADSuyiSDK','~> 3.9.6.08304' # 主SDK 必选
+    pod 'ADSuyiSDK','~> 3.9.9.12031' # 主SDK 必选
     pod 'ADSuyiSDK/ADSuyiSDKPlatforms/bu' # 穿山甲(头条)
     pod 'ADSuyiSDK/ADSuyiSDKPlatforms/gdt' # 优量汇(广点通)
     pod 'ADSuyiSDK/ADSuyiSDKPlatforms/ks' # 快手(非内容版本,内容与非内容版本不可同时导入)

+ 28 - 28
Podfile.lock

@@ -1,42 +1,42 @@
 PODS:
-  - Ads-CN (6.4.1.0):
-    - Ads-CN/BUAdSDK (= 6.4.1.0)
-  - Ads-CN/BUAdSDK (6.4.1.0)
-  - ADSuyiKit (0.7.3.08301)
+  - Ads-CN (6.5.0.9):
+    - Ads-CN/BUAdSDK (= 6.5.0.9)
+  - Ads-CN/BUAdSDK (6.5.0.9)
+  - ADSuyiKit (0.7.4.12031)
   - ADSuyiLocationManager (0.2.1.01301)
   - ADSuyiNetwork (0.2.1.06291):
     - ADSuyiKit (~> 0.7.0)
-  - ADSuyiSDK (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
-    - ADSuyiSDK/core (= 3.9.6.08304)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (3.9.6.08304):
-    - Ads-CN (= 6.4.1.0)
-    - ADSuyiKit (~> 0.7.3.08301)
+    - ADSuyiSDK/core (= 3.9.9.12031)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (3.9.9.12031):
+    - Ads-CN (= 6.5.0.9)
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
     - GDTMobSDK (= 4.15.10)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
     - KSAdSDK (= 3.3.69.3)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - TianmuSDK (= 2.2.6.2)
-  - ADSuyiSDK/core (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+    - TianmuSDK (= 2.2.9.1)
+  - ADSuyiSDK/core (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - AFNetworking (4.0.1):
@@ -536,8 +536,8 @@ PODS:
     - SDWebImage/Core (~> 5.10)
   - SGQRCode (4.1.0)
   - SocketRocket (0.6.1)
-  - TianmuSDK (2.2.6.2):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - TianmuSDK (2.2.9.1):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - TTTAttributedLabel (1.13.4)
@@ -579,7 +579,7 @@ PODS:
   - ZXSDK (3.3.1)
 
 DEPENDENCIES:
-  - ADSuyiSDK (~> 3.9.6.08304)
+  - ADSuyiSDK (~> 3.9.9.12031)
   - ADSuyiSDK/ADSuyiSDKPlatforms/bu
   - ADSuyiSDK/ADSuyiSDKPlatforms/gdt
   - ADSuyiSDK/ADSuyiSDKPlatforms/ks
@@ -732,11 +732,11 @@ CHECKOUT OPTIONS:
     :git: https://github.com/Tencent/MLeaksFinder.git
 
 SPEC CHECKSUMS:
-  Ads-CN: 0ee655efd5a77b0f64248f18e7d5d107fd4768b2
-  ADSuyiKit: e2569b4766c32cbe7b68ef89c937a1e4ee1df795
+  Ads-CN: 1d65518db43f7da28b47275105d56d74a88a9f1f
+  ADSuyiKit: b62039de91d6c32b2dfeb28968d3aeaa74404d2d
   ADSuyiLocationManager: 498421794430a1554dd85beac729221487e8394b
   ADSuyiNetwork: e3cd29320932f9a6d523a561357a2f38de83189d
-  ADSuyiSDK: d75571c11d397fce1d4890a9ec449027c703c800
+  ADSuyiSDK: 0f21bf110620d6e80527039b3efda0bdc90138f0
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   BaiduMapKit: f60b49c47dddb5892e9afde8e551b120644a07de
   BMKLocationKit: 7048cb9f9e6cd21d803a71013d175fce57db7f77
@@ -754,7 +754,7 @@ SPEC CHECKSUMS:
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
   FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b
   FMDB: 57486c1117fd8e0e6b947b2f54c3f42bf8e57a4e
-  GDTMobSDK: 71e264496ba2ade7d9ce528f4eba1a5424a86654
+  GDTMobSDK: 17a7af711cf6b7c8a3a0a4edc3916dc2467877e9
   GKLivePhotoManager: 61fe3f9f1923929295020b89de8e4849912e3a6a
   GKPhotoBrowser: d86e744252eda71d0b80960bd9e1b93a6c1a9d6b
   GKSliderView: 7c6f853afeb0ae370bb8dce76ec669d6e9109d1d
@@ -794,7 +794,7 @@ SPEC CHECKSUMS:
   SDWebImageWebPCoder: bbf46e29fb8d1980a78ad3d5e9b4123c77f10ebc
   SGQRCode: 6ad664d63f38f2842503bc5087812c5a3136d924
   SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
-  TianmuSDK: 1e80c80fe3981fded01f27cfd90a63251dbab182
+  TianmuSDK: 0b7ca4b1b41d8d5c4b6fcc5df9b5647b5b0f1b14
   TTTAttributedLabel: 0a2ac7b2dd726d32a070dafb01446026b11e624f
   TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
   UICKeyChainStore: 85db518bb1d294366d15ec9b92a416c4e670518f
@@ -812,6 +812,6 @@ SPEC CHECKSUMS:
   ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13
   ZXSDK: 184f25c5ffdab3222b1941d1dc4864c30341a942
 
-PODFILE CHECKSUM: 0a3a0145910f1a37fb882075ad1b067062667866
+PODFILE CHECKSUM: 37efe03d7ea1dd14af5e70adba81f5ebaeaa6cae
 
 COCOAPODS: 1.15.2

+ 5 - 5
Pods/ADSuyiKit/ADSuyiKit/Classes/ADSuyiKit.xcframework/Info.plist

@@ -8,32 +8,32 @@
 			<key>BinaryPath</key>
 			<string>ADSuyiKit.framework/ADSuyiKit</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiKit.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>BinaryPath</key>
 			<string>ADSuyiKit.framework/ADSuyiKit</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiKit.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

+ 5 - 5
Pods/ADSuyiSDK/ADSuyiSDK/Classes/core/ADSuyiSDK.xcframework/Info.plist

@@ -8,32 +8,32 @@
 			<key>BinaryPath</key>
 			<string>ADSuyiSDK.framework/ADSuyiSDK</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>BinaryPath</key>
 			<string>ADSuyiSDK.framework/ADSuyiSDK</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

二進制
Pods/Ads-CN/SDK/CSJAdSDK.bundle/Info.plist


+ 1 - 1
Pods/Ads-CN/SDK/CSJAdSDK.bundle/version.txt

@@ -1 +1 @@
-6.4.1.0
+6.5.0.9

二進制
Pods/GDTMobSDK/lib/libGDTMobSDK.a


+ 28 - 28
Pods/Manifest.lock

@@ -1,42 +1,42 @@
 PODS:
-  - Ads-CN (6.4.1.0):
-    - Ads-CN/BUAdSDK (= 6.4.1.0)
-  - Ads-CN/BUAdSDK (6.4.1.0)
-  - ADSuyiKit (0.7.3.08301)
+  - Ads-CN (6.5.0.9):
+    - Ads-CN/BUAdSDK (= 6.5.0.9)
+  - Ads-CN/BUAdSDK (6.5.0.9)
+  - ADSuyiKit (0.7.4.12031)
   - ADSuyiLocationManager (0.2.1.01301)
   - ADSuyiNetwork (0.2.1.06291):
     - ADSuyiKit (~> 0.7.0)
-  - ADSuyiSDK (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
-    - ADSuyiSDK/core (= 3.9.6.08304)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (3.9.6.08304):
-    - Ads-CN (= 6.4.1.0)
-    - ADSuyiKit (~> 0.7.3.08301)
+    - ADSuyiSDK/core (= 3.9.9.12031)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (3.9.9.12031):
+    - Ads-CN (= 6.5.0.9)
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
     - GDTMobSDK (= 4.15.10)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
     - KSAdSDK (= 3.3.69.3)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - TianmuSDK (= 2.2.6.2)
-  - ADSuyiSDK/core (3.9.6.08304):
-    - ADSuyiKit (~> 0.7.3.08301)
+    - TianmuSDK (= 2.2.9.1)
+  - ADSuyiSDK/core (3.9.9.12031):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - AFNetworking (4.0.1):
@@ -536,8 +536,8 @@ PODS:
     - SDWebImage/Core (~> 5.10)
   - SGQRCode (4.1.0)
   - SocketRocket (0.6.1)
-  - TianmuSDK (2.2.6.2):
-    - ADSuyiKit (~> 0.7.3.08301)
+  - TianmuSDK (2.2.9.1):
+    - ADSuyiKit (~> 0.7.4.12031)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - TTTAttributedLabel (1.13.4)
@@ -579,7 +579,7 @@ PODS:
   - ZXSDK (3.3.1)
 
 DEPENDENCIES:
-  - ADSuyiSDK (~> 3.9.6.08304)
+  - ADSuyiSDK (~> 3.9.9.12031)
   - ADSuyiSDK/ADSuyiSDKPlatforms/bu
   - ADSuyiSDK/ADSuyiSDKPlatforms/gdt
   - ADSuyiSDK/ADSuyiSDKPlatforms/ks
@@ -732,11 +732,11 @@ CHECKOUT OPTIONS:
     :git: https://github.com/Tencent/MLeaksFinder.git
 
 SPEC CHECKSUMS:
-  Ads-CN: 0ee655efd5a77b0f64248f18e7d5d107fd4768b2
-  ADSuyiKit: e2569b4766c32cbe7b68ef89c937a1e4ee1df795
+  Ads-CN: 1d65518db43f7da28b47275105d56d74a88a9f1f
+  ADSuyiKit: b62039de91d6c32b2dfeb28968d3aeaa74404d2d
   ADSuyiLocationManager: 498421794430a1554dd85beac729221487e8394b
   ADSuyiNetwork: e3cd29320932f9a6d523a561357a2f38de83189d
-  ADSuyiSDK: d75571c11d397fce1d4890a9ec449027c703c800
+  ADSuyiSDK: 0f21bf110620d6e80527039b3efda0bdc90138f0
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   BaiduMapKit: f60b49c47dddb5892e9afde8e551b120644a07de
   BMKLocationKit: 7048cb9f9e6cd21d803a71013d175fce57db7f77
@@ -754,7 +754,7 @@ SPEC CHECKSUMS:
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
   FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b
   FMDB: 57486c1117fd8e0e6b947b2f54c3f42bf8e57a4e
-  GDTMobSDK: 71e264496ba2ade7d9ce528f4eba1a5424a86654
+  GDTMobSDK: 17a7af711cf6b7c8a3a0a4edc3916dc2467877e9
   GKLivePhotoManager: 61fe3f9f1923929295020b89de8e4849912e3a6a
   GKPhotoBrowser: d86e744252eda71d0b80960bd9e1b93a6c1a9d6b
   GKSliderView: 7c6f853afeb0ae370bb8dce76ec669d6e9109d1d
@@ -794,7 +794,7 @@ SPEC CHECKSUMS:
   SDWebImageWebPCoder: bbf46e29fb8d1980a78ad3d5e9b4123c77f10ebc
   SGQRCode: 6ad664d63f38f2842503bc5087812c5a3136d924
   SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
-  TianmuSDK: 1e80c80fe3981fded01f27cfd90a63251dbab182
+  TianmuSDK: 0b7ca4b1b41d8d5c4b6fcc5df9b5647b5b0f1b14
   TTTAttributedLabel: 0a2ac7b2dd726d32a070dafb01446026b11e624f
   TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
   UICKeyChainStore: 85db518bb1d294366d15ec9b92a416c4e670518f
@@ -812,6 +812,6 @@ SPEC CHECKSUMS:
   ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13
   ZXSDK: 184f25c5ffdab3222b1941d1dc4864c30341a942
 
-PODFILE CHECKSUM: 0a3a0145910f1a37fb882075ad1b067062667866
+PODFILE CHECKSUM: 37efe03d7ea1dd14af5e70adba81f5ebaeaa6cae
 
 COCOAPODS: 1.15.2

+ 46 - 46
Pods/Pods.xcodeproj/project.pbxproj

@@ -18527,9 +18527,9 @@
 			};
 			name = Debug;
 		};
-		0FADAA629E317F91EEEDA60354F4426A /* Debug */ = {
+		0F815BF23A745CADBC0AB8310934C687 /* Release */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 32F6C06F1ADC193786B55F6C9CC4069F /* Ads-CN.debug.xcconfig */;
+			baseConfigurationReference = D16986222314F71B3E1CE914983015F6 /* Ads-CN.release.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
@@ -18539,12 +18539,11 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				OTHER_SWIFT_FLAGS = "$(inherited) -Onone";
 				SDKROOT = iphoneos;
-				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
 				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
 			};
-			name = Debug;
+			name = Release;
 		};
 		12645BBCCF9CEC52FA6340FFE35C71FC /* Release */ = {
 			isa = XCBuildConfiguration;
@@ -19153,6 +19152,25 @@
 			};
 			name = Release;
 		};
+		379452EC4C1D12DBD1DDBFBCAC318B0F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 32F6C06F1ADC193786B55F6C9CC4069F /* Ads-CN.debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ENABLE_OBJC_WEAK = NO;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				OTHER_SWIFT_FLAGS = "$(inherited) -Onone";
+				SDKROOT = iphoneos;
+				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
 		39BDCA5E995C752B545A18DB6F9A7D96 /* Release */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = FDB8C691AA717B5A5291F78F97861382 /* JXPagingView.release.xcconfig */;
@@ -19820,24 +19838,6 @@
 			};
 			name = Debug;
 		};
-		63AD3425A0EB11D574551230D83A1516 /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 383A9CFC96FBDFD00FEAF101B3993632 /* ADSuyiSDK.release.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
-				CLANG_ENABLE_OBJC_WEAK = NO;
-				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				SDKROOT = iphoneos;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
 		63B80833C5E9DAF0399D055849AA17C9 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = F6EF125836C702949D428D8A44096B8F /* JXCategoryView.debug.xcconfig */;
@@ -21093,6 +21093,24 @@
 			};
 			name = Debug;
 		};
+		A4BA2FB9E51FCEF1F14546E7B1D402DB /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 383A9CFC96FBDFD00FEAF101B3993632 /* ADSuyiSDK.release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ENABLE_OBJC_WEAK = NO;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
 		A4C6A211C31FFAE3BC68F46D89217F81 /* Release */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 9595BE172EF9B7D6D1BD73A20B00ACED /* HappyDNS.release.xcconfig */;
@@ -21342,7 +21360,7 @@
 			};
 			name = Debug;
 		};
-		B38592BB3817A44A9386E050885715C6 /* Debug */ = {
+		B1EF3869B4827C3A5D2581BAEF2445C9 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 54F4B1702ACB00C1BA3FB2D5014B3E0D /* ADSuyiSDK.debug.xcconfig */;
 			buildSettings = {
@@ -21581,24 +21599,6 @@
 			};
 			name = Debug;
 		};
-		CA59F3D45357B16604B1077D513BDCD2 /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = D16986222314F71B3E1CE914983015F6 /* Ads-CN.release.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
-				CLANG_ENABLE_OBJC_WEAK = NO;
-				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				SDKROOT = iphoneos;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
 		CA9AAB95DDD64D2FC28A6E12AAAA9716 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 5927AAF60DD55BFF50D3EF4E06EC8C96 /* CocoaSecurity.debug.xcconfig */;
@@ -22839,8 +22839,8 @@
 		BB1E1EBEFDE3DEF8F1797F8D37D42102 /* Build configuration list for PBXAggregateTarget "Ads-CN" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				0FADAA629E317F91EEEDA60354F4426A /* Debug */,
-				CA59F3D45357B16604B1077D513BDCD2 /* Release */,
+				379452EC4C1D12DBD1DDBFBCAC318B0F /* Debug */,
+				0F815BF23A745CADBC0AB8310934C687 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
@@ -22902,8 +22902,8 @@
 		D8344B569D44417554919BB6A27A0C25 /* Build configuration list for PBXAggregateTarget "ADSuyiSDK" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				B38592BB3817A44A9386E050885715C6 /* Debug */,
-				63AD3425A0EB11D574551230D83A1516 /* Release */,
+				B1EF3869B4827C3A5D2581BAEF2445C9 /* Debug */,
+				A4BA2FB9E51FCEF1F14546E7B1D402DB /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;

+ 26 - 10
jiaPei.xcodeproj/project.pbxproj

@@ -156,6 +156,9 @@
 		90AC53AB2A935EF90073D90F /* NYTestingCentreCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AC53A92A935EF90073D90F /* NYTestingCentreCell.m */; };
 		90AC53AC2A935EF90073D90F /* NYTestingCentreCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AC53AA2A935EF90073D90F /* NYTestingCentreCell.xib */; };
 		90AC53B22A9457070073D90F /* NYExerciseTestingCentreViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AC53B12A9457070073D90F /* NYExerciseTestingCentreViewModel.m */; };
+		90AF8B802D36574800D43E11 /* NYFailSpecialVideoHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AF8B7E2D36574800D43E11 /* NYFailSpecialVideoHeaderView.m */; };
+		90AF8B812D36574800D43E11 /* NYFailSpecialVideoHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AF8B7F2D36574800D43E11 /* NYFailSpecialVideoHeaderView.xib */; };
+		90AF8B842D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AF8B832D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.m */; };
 		90B0F6862A70E9E300B448DC /* QCloudTTS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90B0F6852A70E9E300B448DC /* QCloudTTS.framework */; };
 		90B0F68A2A711C5E00B448DC /* NYVoiceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B0F6892A711C5E00B448DC /* NYVoiceManager.m */; };
 		90BA2E822A3177B50029A54A /* NYTheoryTimeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2E802A3177B50029A54A /* NYTheoryTimeVC.m */; };
@@ -172,6 +175,7 @@
 		90BA2EA72A3316510029A54A /* NYGetjobStartRuleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EA52A3316510029A54A /* NYGetjobStartRuleCell.m */; };
 		90BA2EA82A3316510029A54A /* NYGetjobStartRuleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */; };
 		90BA2EAB2A3317510029A54A /* NYGetjobStartRuleViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */; };
+		90BE26912D2FBECD007614C7 /* RQHomePageOneOrFourSmallItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BE26902D2FBECD007614C7 /* RQHomePageOneOrFourSmallItemViewModel.m */; };
 		90C3D1AC2D0147E300126535 /* NYBlockExerciseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C3D1AA2D0147E200126535 /* NYBlockExerciseViewController.m */; };
 		90C3D1AD2D0147E300126535 /* NYBlockExerciseViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90C3D1AB2D0147E200126535 /* NYBlockExerciseViewController.xib */; };
 		90C3D1B22D01492E00126535 /* NYBlockExerciseViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C3D1B12D01492E00126535 /* NYBlockExerciseViewModel.m */; };
@@ -1432,7 +1436,6 @@
 		D09C56DE28535C8A00088A2E /* RQHomePageSimulationExamCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D09C56DC28535C8A00088A2E /* RQHomePageSimulationExamCell.xib */; };
 		D09C56E1285363CC00088A2E /* RQHomePageSimulationExamItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D09C56E0285363CC00088A2E /* RQHomePageSimulationExamItemViewModel.m */; };
 		D09C56E42853643700088A2E /* RQHomePageOneOrFourBigItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D09C56E32853643700088A2E /* RQHomePageOneOrFourBigItemViewModel.m */; };
-		D09C56E72853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D09C56E62853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.m */; };
 		D09E5C2525E39B9C0099E87C /* BDFaceParamsConfig.json in Resources */ = {isa = PBXBuildFile; fileRef = D09E5BC525E39B9A0099E87C /* BDFaceParamsConfig.json */; };
 		D09E5D3B25E3AA260099E87C /* BDFaceToastView.m in Sources */ = {isa = PBXBuildFile; fileRef = D09E5CDF25E3AA250099E87C /* BDFaceToastView.m */; };
 		D09E5D3C25E3AA260099E87C /* UIColor+BDFaceColorUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D09E5CE025E3AA250099E87C /* UIColor+BDFaceColorUtils.m */; };
@@ -1992,6 +1995,11 @@
 		90AC53AA2A935EF90073D90F /* NYTestingCentreCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYTestingCentreCell.xib; sourceTree = "<group>"; };
 		90AC53B02A9457070073D90F /* NYExerciseTestingCentreViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExerciseTestingCentreViewModel.h; sourceTree = "<group>"; };
 		90AC53B12A9457070073D90F /* NYExerciseTestingCentreViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExerciseTestingCentreViewModel.m; sourceTree = "<group>"; };
+		90AF8B7D2D36574800D43E11 /* NYFailSpecialVideoHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYFailSpecialVideoHeaderView.h; sourceTree = "<group>"; };
+		90AF8B7E2D36574800D43E11 /* NYFailSpecialVideoHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYFailSpecialVideoHeaderView.m; sourceTree = "<group>"; };
+		90AF8B7F2D36574800D43E11 /* NYFailSpecialVideoHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYFailSpecialVideoHeaderView.xib; sourceTree = "<group>"; };
+		90AF8B822D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYFailSpecialVideoGroupViewModel.h; sourceTree = "<group>"; };
+		90AF8B832D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYFailSpecialVideoGroupViewModel.m; sourceTree = "<group>"; };
 		90B0F6852A70E9E300B448DC /* QCloudTTS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QCloudTTS.framework; sourceTree = "<group>"; };
 		90B0F6882A711C5E00B448DC /* NYVoiceManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYVoiceManager.h; sourceTree = "<group>"; };
 		90B0F6892A711C5E00B448DC /* NYVoiceManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYVoiceManager.m; sourceTree = "<group>"; };
@@ -2020,6 +2028,7 @@
 		90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYGetjobStartRuleCell.xib; sourceTree = "<group>"; };
 		90BA2EA92A3317510029A54A /* NYGetjobStartRuleViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYGetjobStartRuleViewModel.h; sourceTree = "<group>"; };
 		90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYGetjobStartRuleViewModel.m; sourceTree = "<group>"; };
+		90BE26902D2FBECD007614C7 /* RQHomePageOneOrFourSmallItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RQHomePageOneOrFourSmallItemViewModel.m; sourceTree = "<group>"; };
 		90C3D1A92D0147E200126535 /* NYBlockExerciseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYBlockExerciseViewController.h; sourceTree = "<group>"; };
 		90C3D1AA2D0147E200126535 /* NYBlockExerciseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYBlockExerciseViewController.m; sourceTree = "<group>"; };
 		90C3D1AB2D0147E200126535 /* NYBlockExerciseViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYBlockExerciseViewController.xib; sourceTree = "<group>"; };
@@ -3929,7 +3938,6 @@
 		D09C56E22853643700088A2E /* RQHomePageOneOrFourBigItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RQHomePageOneOrFourBigItemViewModel.h; sourceTree = "<group>"; };
 		D09C56E32853643700088A2E /* RQHomePageOneOrFourBigItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RQHomePageOneOrFourBigItemViewModel.m; sourceTree = "<group>"; };
 		D09C56E52853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RQHomePageOneOrFourSmallItemViewModel.h; sourceTree = "<group>"; };
-		D09C56E62853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RQHomePageOneOrFourSmallItemViewModel.m; sourceTree = "<group>"; };
 		D09E5BC525E39B9A0099E87C /* BDFaceParamsConfig.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = BDFaceParamsConfig.json; sourceTree = "<group>"; };
 		D09E5C7A25E39F1A0099E87C /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
 		D09E5CA425E3A5530099E87C /* IDLFaceSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IDLFaceSDK.framework; path = jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/IDLFaceSDK.framework; sourceTree = "<group>"; };
@@ -4927,6 +4935,8 @@
 				90EAB9EC2D0AE3160024F379 /* NYFailSpecialExerciseDetailItemModel.m */,
 				9056897A2D0C1F0700B27B7E /* NYFailGroupPointDataModel.h */,
 				9056897B2D0C1F0700B27B7E /* NYFailGroupPointDataModel.m */,
+				90AF8B822D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.h */,
+				90AF8B832D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.m */,
 			);
 			path = "易错专项";
 			sourceTree = "<group>";
@@ -4950,6 +4960,9 @@
 				90038E2B2D116A2D006A1637 /* NYFailSpecialExerciseDetailsCell01.xib */,
 				90038E2E2D117CE5006A1637 /* NYFailItemPointCellView01.h */,
 				90038E2F2D117CE5006A1637 /* NYFailItemPointCellView01.m */,
+				90AF8B7D2D36574800D43E11 /* NYFailSpecialVideoHeaderView.h */,
+				90AF8B7E2D36574800D43E11 /* NYFailSpecialVideoHeaderView.m */,
+				90AF8B7F2D36574800D43E11 /* NYFailSpecialVideoHeaderView.xib */,
 			);
 			path = "易错专项";
 			sourceTree = "<group>";
@@ -9429,12 +9442,12 @@
 		D0B2D4F4289A571500D6C5F4 /* itemViewModel */ = {
 			isa = PBXGroup;
 			children = (
+				90BE26902D2FBECD007614C7 /* RQHomePageOneOrFourSmallItemViewModel.m */,
 				D09C56E22853643700088A2E /* RQHomePageOneOrFourBigItemViewModel.h */,
 				D09C56E32853643700088A2E /* RQHomePageOneOrFourBigItemViewModel.m */,
 				D0CE9ADE28575ADE00EBDCCF /* RQHomePageSectionOneGroupViewModel.h */,
 				D0CE9ADF28575ADE00EBDCCF /* RQHomePageSectionOneGroupViewModel.m */,
 				D09C56E52853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.h */,
-				D09C56E62853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.m */,
 				D0CE9AE128575B0400EBDCCF /* RQHomePageSectionTwoGroupViewModel.h */,
 				D0CE9AE228575B0400EBDCCF /* RQHomePageSectionTwoGroupViewModel.m */,
 				D09C56DF285363CC00088A2E /* RQHomePageSimulationExamItemViewModel.h */,
@@ -10945,6 +10958,7 @@
 				D0295CE2243F0B8C00B46AB1 /* 1-4-48.jpg in Resources */,
 				D0295B7B243F0B8A00B46AB1 /* 1-2-20.jpg in Resources */,
 				D081CCFE27F15A2C0054317F /* kc.db in Resources */,
+				90AF8B812D36574800D43E11 /* NYFailSpecialVideoHeaderView.xib in Resources */,
 				D0295D2D243F0B8C00B46AB1 /* 1-4-67.jpg in Resources */,
 				D0B2D4EA289A442B00D6C5F4 /* RQExerciseExamKnowAlertView.xib in Resources */,
 				D0295C2A243F0B8B00B46AB1 /* 1-11-10.jpg in Resources */,
@@ -11142,7 +11156,6 @@
 				D09E5D5D25E3AA260099E87C /* BDFaceLivingConfigModel.m in Sources */,
 				D04A766024A0AD6D009B58BA /* SMSDemoHelper.m in Sources */,
 				D0481FF02863287300BD0E4E /* RQSpecialQuestionCell.m in Sources */,
-				D09C56E72853647E00088A2E /* RQHomePageOneOrFourSmallItemViewModel.m in Sources */,
 				D04DF6BD27006C56006E3633 /* RQCollectionView.m in Sources */,
 				D0E8D7BB28D854D000107E40 /* RQVipReminderCell.m in Sources */,
 				D05FC78C27CDEA2D00DA3209 /* RQVipAuthorityCell.m in Sources */,
@@ -11404,6 +11417,7 @@
 				D07426E0280F9DE400CD7EFF /* HWPanModalPresentationController+RQExtension.m in Sources */,
 				D074574629272C680050BE10 /* QMChatRoomMoreView.m in Sources */,
 				D0870E4C2701B5A0004EC94E /* RQUserModel.m in Sources */,
+				90BE26912D2FBECD007614C7 /* RQHomePageOneOrFourSmallItemViewModel.m in Sources */,
 				D0295EB2243F1B8700B46AB1 /* DB_Que_Helper.m in Sources */,
 				D05A6FB727F44C6E00C096DB /* RQYDTHCQuestionModule.m in Sources */,
 				D00A15082754A41C00793046 /* RQVideoListCell.m in Sources */,
@@ -11435,6 +11449,7 @@
 				D09C56E1285363CC00088A2E /* RQHomePageSimulationExamItemViewModel.m in Sources */,
 				D0508CE027D87ED100CBF1FC /* MPUserDynamicTransition.m in Sources */,
 				D0870D6D2701A6B9004EC94E /* UIAlertView+BlocksKit.m in Sources */,
+				90AF8B842D3658FF00D43E11 /* NYFailSpecialVideoGroupViewModel.m in Sources */,
 				D0354B22230E3EDA00E1C54D /* PrecautionsView.m in Sources */,
 				D056D3B928B71DAB0003F024 /* RQHTTPService+RQMyScore.m in Sources */,
 				D02010DA29373AE8001B9F4D /* SLMosaicView.m in Sources */,
@@ -11471,6 +11486,7 @@
 				D09E5D4825E3AA260099E87C /* BDFaceAdjustParams.m in Sources */,
 				D00A15262754A82400793046 /* CGXVerticalMenuTitleCell+RQExtension.m in Sources */,
 				D084D87227CDFF2D00E521F0 /* RQVipAuthoritySmallCell.m in Sources */,
+				90AF8B802D36574800D43E11 /* NYFailSpecialVideoHeaderView.m in Sources */,
 				D0481D9E289904AD00F90D55 /* RQSimulateExamSituationCell.m in Sources */,
 				D05FC78827CDC2DA00DA3209 /* RQVipAllPriceItemViewModel.m in Sources */,
 				D055CC8A28C0416A00EA31E9 /* RQSynchronizationViewModel.m in Sources */,
@@ -12214,7 +12230,7 @@
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_RESOURCE_RULES_PATH[sdk=*]" = "";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2282024112102;
+				CURRENT_PROJECT_VERSION = 2292024112102;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -12239,7 +12255,7 @@
 				);
 				INFOPLIST_FILE = jiaPei/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = "极速驾培";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -12252,7 +12268,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.2.7;
+				MARKETING_VERSION = 2.2.8;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_CFLAGS = (
 					"$(inherited)",
@@ -12297,7 +12313,7 @@
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2282024112102;
+				CURRENT_PROJECT_VERSION = 2292024112102;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -12322,7 +12338,7 @@
 				);
 				INFOPLIST_FILE = jiaPei/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = "极速驾培";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -12335,7 +12351,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.2.7;
+				MARKETING_VERSION = 2.2.8;
 				ONLY_ACTIVE_ARCH = NO;
 				OTHER_CFLAGS = (
 					"$(inherited)",

二進制
jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate


+ 2 - 0
jiaPei/Modules/HomePageModule/RQHomePageModule.h

@@ -52,6 +52,7 @@ FOUNDATION_EXTERN NSString * const RQHomeSubEditListTypeKey;
 #import "RQHomePageJiaoGuan12123Cell.h"
 #import "RQHomePageDriveMethodCell.h"
 #import "RQHomePageSubjectModuleCell.h"
+#import "NYFailSpecialVideoHeaderView.h"
 
 #import "RQSpecialPracticeCell.h"                             /// 专项练习
 #import "RQSpecialAddCell.h"
@@ -123,6 +124,7 @@ FOUNDATION_EXTERN NSString * const RQHomeSubEditListTypeKey;
 #import "RQHomePageDriveMethodItemViewModel.h"
 #import "RQHomePageSubjectModuleItemViewModel.h"
 
+#import "NYFailSpecialVideoGroupViewModel.h"
 #import "NYFailGroupPointDataModel.h"
 #import "NYFailSpecialExerciseDetailItemModel.h"
 #import "NYFailSpecialExerciseDetailsViewModel.h"

+ 29 - 21
jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m

@@ -142,31 +142,35 @@
     if (RQ_USER_MANAGER.isShouldLogin) {
         [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
             if (isVip) {
-                //                        username subject headimg gs 替换-> model
-                //                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                //                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                //                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                //                        webViewModel.prefersNavigationBarHidden = YES;
-                //                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-                
-                //显示真实考场
-                NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-                examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-                [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
-                
-            } else {
-                if (RQ_VIP_Module.freeLookSimExamNum == 1||
-                    RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
-                    //                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                    //                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                    //                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                    //                            webViewModel.prefersNavigationBarHidden = YES;
-                    //                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-                    
+//                                        username subject headimg gs 替换-> model
+                if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                    NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                    RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                    webViewModel.prefersNavigationBarHidden = YES;
+                    [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                }else{
                     //显示真实考场
                     NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
                     examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
                     [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                }
+                
+            } else {
+                if (RQ_VIP_Module.freeLookSimExamNum == 1||
+                    RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                    if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                        webViewModel.prefersNavigationBarHidden = YES;
+                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                    }else{
+                        //显示真实考场
+                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                    }
                     RQ_VIP_Module.freeLookSimExamNum = 0;
                 } else {
                     if(!RQ_COMMON_MANAGER.APP_SWITCH){
@@ -196,6 +200,10 @@
 //易错专项
 - (IBAction)btnFallibilityAction:(UIButton *)sender {
     if (RQ_USER_MANAGER.isShouldLogin) {
+        if(RQ_YDTQuestion_Module.carType != RQHomePageCarType_Car){
+            ShowMsg(@"只支持小车");
+            return;
+        }
         NYFailSpecialExerciseViewModel *failSpecialExerciseViewModel = [[NYFailSpecialExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
             RQHomePageSubjectTypeKey : @(self.viewModel.homePageSubjectType),
         }];

+ 6 - 6
jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsCell.xib

@@ -60,9 +60,9 @@
                                                 <rect key="frame" x="0.0" y="113" width="333" height="44"/>
                                                 <subviews>
                                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XBW-iM-cie">
-                                                        <rect key="frame" x="110" y="8" width="113" height="28"/>
+                                                        <rect key="frame" x="85" y="6" width="163" height="32"/>
                                                         <color key="backgroundColor" red="0.28627450980392155" green="0.55686274509803924" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
-                                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                         <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                                         <state key="normal" title="去练题"/>
                                                         <userDefinedRuntimeAttributes>
@@ -77,11 +77,11 @@
                                                 </subviews>
                                                 <color key="backgroundColor" red="0.75686274509803919" green="0.84313725490196079" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                                                 <constraints>
-                                                    <constraint firstAttribute="trailing" secondItem="XBW-iM-cie" secondAttribute="trailing" constant="110" id="KgU-fV-1vk"/>
+                                                    <constraint firstAttribute="trailing" secondItem="XBW-iM-cie" secondAttribute="trailing" constant="85" id="KgU-fV-1vk"/>
                                                     <constraint firstAttribute="height" constant="44" id="blU-PA-V1e"/>
-                                                    <constraint firstAttribute="bottom" secondItem="XBW-iM-cie" secondAttribute="bottom" constant="8" id="crr-q8-tj1"/>
-                                                    <constraint firstItem="XBW-iM-cie" firstAttribute="top" secondItem="qUf-eg-gg0" secondAttribute="top" constant="8" id="ndt-h3-RMw"/>
-                                                    <constraint firstItem="XBW-iM-cie" firstAttribute="leading" secondItem="qUf-eg-gg0" secondAttribute="leading" constant="110" id="zvs-do-yC4"/>
+                                                    <constraint firstAttribute="bottom" secondItem="XBW-iM-cie" secondAttribute="bottom" constant="6" id="crr-q8-tj1"/>
+                                                    <constraint firstItem="XBW-iM-cie" firstAttribute="top" secondItem="qUf-eg-gg0" secondAttribute="top" constant="6" id="ndt-h3-RMw"/>
+                                                    <constraint firstItem="XBW-iM-cie" firstAttribute="leading" secondItem="qUf-eg-gg0" secondAttribute="leading" constant="85" id="zvs-do-yC4"/>
                                                 </constraints>
                                             </view>
                                         </subviews>

+ 2 - 1
jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsCell01.m

@@ -507,13 +507,14 @@
         [self.itop_view addSubview:imageView];
     }
     
-    // 初始化按钮
     CGFloat yOffset = 0; // 初始偏移量
     CGFloat cellHeight = 1.f; // 每个 Cell 的高度(根据实际设计调整)
     for (int i= 0; i<10; i++) {
         UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, yOffset, RQ_SCREEN_WIDTH-22*2, cellHeight)];
         imageView.tag = 99+i;
         imageView.hidden = YES;
+        imageView.layer.cornerRadius = 10.f;
+        imageView.layer.masksToBounds = YES;
         // 添加到 tbList_view
         [self.item_view addSubview:imageView];
         // 调整偏移量

+ 6 - 6
jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsCell01.xib

@@ -56,12 +56,12 @@
                                         </constraints>
                                     </imageView>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NfW-LJ-PIE">
-                                        <rect key="frame" x="126" y="168" width="113" height="30"/>
+                                        <rect key="frame" x="95" y="163" width="175" height="35"/>
                                         <color key="backgroundColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="calibratedRGB"/>
                                         <constraints>
-                                            <constraint firstAttribute="height" constant="30" id="cGC-BZ-CpN"/>
+                                            <constraint firstAttribute="height" constant="35" id="cGC-BZ-CpN"/>
                                         </constraints>
-                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                         <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                         <state key="normal" title="去练题"/>
                                         <userDefinedRuntimeAttributes>
@@ -101,7 +101,7 @@
                                         </constraints>
                                     </view>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KDU-E8-yHY">
-                                        <rect key="frame" x="16" y="45" width="333" height="115"/>
+                                        <rect key="frame" x="16" y="45" width="333" height="110"/>
                                         <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                     </view>
                                 </subviews>
@@ -114,7 +114,7 @@
                                     <constraint firstItem="80p-MY-DnZ" firstAttribute="top" secondItem="7DJ-ub-ofg" secondAttribute="top" constant="10" id="F0y-3v-kQY"/>
                                     <constraint firstAttribute="trailing" secondItem="KDU-E8-yHY" secondAttribute="trailing" constant="16" id="FeL-y9-1ll"/>
                                     <constraint firstItem="eY5-ix-ttB" firstAttribute="leading" secondItem="7DJ-ub-ofg" secondAttribute="leading" id="Htu-RQ-UzV"/>
-                                    <constraint firstItem="NfW-LJ-PIE" firstAttribute="leading" secondItem="7DJ-ub-ofg" secondAttribute="leading" constant="126" id="KfN-SU-vzc"/>
+                                    <constraint firstItem="NfW-LJ-PIE" firstAttribute="leading" secondItem="7DJ-ub-ofg" secondAttribute="leading" constant="95" id="KfN-SU-vzc"/>
                                     <constraint firstItem="x4n-ZG-8qa" firstAttribute="top" secondItem="7DJ-ub-ofg" secondAttribute="top" constant="12" id="Mu9-Tg-EBo"/>
                                     <constraint firstItem="QYr-eO-ybw" firstAttribute="centerY" secondItem="x4n-ZG-8qa" secondAttribute="centerY" id="XgG-nU-fwu"/>
                                     <constraint firstItem="NfW-LJ-PIE" firstAttribute="top" secondItem="KDU-E8-yHY" secondAttribute="bottom" constant="8" id="acx-S7-tSh"/>
@@ -124,7 +124,7 @@
                                     <constraint firstItem="KDU-E8-yHY" firstAttribute="top" secondItem="80p-MY-DnZ" secondAttribute="bottom" constant="8" id="lOQ-5p-fmf"/>
                                     <constraint firstItem="QYr-eO-ybw" firstAttribute="leading" secondItem="x4n-ZG-8qa" secondAttribute="trailing" constant="5" id="o4E-yR-4p5"/>
                                     <constraint firstItem="80p-MY-DnZ" firstAttribute="leading" secondItem="7DJ-ub-ofg" secondAttribute="leading" constant="4" id="p2L-Fc-Mpl"/>
-                                    <constraint firstAttribute="trailing" secondItem="NfW-LJ-PIE" secondAttribute="trailing" constant="126" id="qlG-c5-2xW"/>
+                                    <constraint firstAttribute="trailing" secondItem="NfW-LJ-PIE" secondAttribute="trailing" constant="95" id="qlG-c5-2xW"/>
                                     <constraint firstAttribute="bottom" secondItem="NfW-LJ-PIE" secondAttribute="bottom" constant="16" id="tI8-ow-49D"/>
                                 </constraints>
                             </view>

+ 20 - 0
jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialVideoHeaderView.h

@@ -0,0 +1,20 @@
+//
+//  NYFailSpecialVideoHeaderView.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/14.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYFailSpecialVideoHeaderView : RQCommonReusableView
+
+@property (weak, nonatomic) IBOutlet UIView *palyerView;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 38 - 0
jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialVideoHeaderView.m

@@ -0,0 +1,38 @@
+//
+//  NYFailSpecialVideoHeaderView.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/14.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYFailSpecialVideoHeaderView.h"
+
+@interface NYFailSpecialVideoHeaderView ()
+@property (nonatomic, readwrite, strong) NYFailSpecialVideoGroupViewModel *viewModel;
+
+@end
+
+@implementation NYFailSpecialVideoHeaderView
+
++ (instancetype)reusableViewWithCollectionView:(UICollectionView *)collectionView OfKind:(NSString *)elementKind forIndexPath:(NSIndexPath *)indexPath {
+    NSString *ID = [NSString stringWithFormat:@"%@%@", @"NYFailSpecialVideoHeaderView",elementKind];
+    [collectionView registerNib:[UINib nibWithNibName:@"NYFailSpecialVideoHeaderView" bundle:nil] forSupplementaryViewOfKind:elementKind withReuseIdentifier:ID];
+    NYFailSpecialVideoHeaderView *reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:elementKind withReuseIdentifier:ID forIndexPath:indexPath];
+    if (!reusableView) reusableView = [self rq_viewFromXib];
+    return reusableView;
+}
+
+
+- (void)bindViewModel:(NYFailSpecialVideoGroupViewModel *)viewModel {
+    self.viewModel = viewModel;
+    
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+@end
+

+ 39 - 0
jiaPei/Modules/HomePageModule/View/HomeSubPage/易错专项/NYFailSpecialVideoHeaderView.xib

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionReusableView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="U6b-Vx-4bR" customClass="NYFailSpecialVideoHeaderView">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="120"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="77Y-P2-tdv">
+                    <rect key="frame" x="0.0" y="0.0" width="320" height="120"/>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                </view>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="77Y-P2-tdv" secondAttribute="bottom" id="Vcw-Ei-Und"/>
+                <constraint firstItem="77Y-P2-tdv" firstAttribute="top" secondItem="U6b-Vx-4bR" secondAttribute="top" id="xbS-Xn-fQk"/>
+                <constraint firstItem="77Y-P2-tdv" firstAttribute="leading" secondItem="U6b-Vx-4bR" secondAttribute="leading" id="yAV-s9-Cmn"/>
+                <constraint firstAttribute="trailing" secondItem="77Y-P2-tdv" secondAttribute="trailing" id="yza-Hn-ASn"/>
+            </constraints>
+            <connections>
+                <outlet property="palyerView" destination="77Y-P2-tdv" id="nGA-bZ-CLU"/>
+            </connections>
+            <point key="canvasLocation" x="39.694656488549619" y="11.971830985915494"/>
+        </collectionReusableView>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 17 - 0
jiaPei/Modules/HomePageModule/ViewController/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewController.h

@@ -0,0 +1,17 @@
+//
+//  NYFailSpecialExerciseDetailsViewController.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/12/12.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYFailSpecialExerciseDetailsViewController : RQCommonCollectionViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 133 - 0
jiaPei/Modules/HomePageModule/ViewController/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewController.m

@@ -0,0 +1,133 @@
+//
+//  NYFailSpecialExerciseDetailsViewController.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/12/12.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYFailSpecialExerciseDetailsViewController.h"
+
+@interface NYFailSpecialExerciseDetailsViewController ()
+/// viewModel
+@property (nonatomic, readonly, strong) NYFailSpecialExerciseDetailsViewModel *viewModel;
+
+@property (nonatomic, strong) UIView *headerView;
+@end
+
+@implementation NYFailSpecialExerciseDetailsViewController
+
+@dynamic viewModel;
+#pragma mark - SystemMethod
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    /// 初始化
+    [self rq_setup];
+}
+
+- (void)viewDidLayoutSubviews {
+    [super viewDidLayoutSubviews];
+    self.view.frame = CGRectMake(0, 0, RQ_SCREEN_WIDTH, RQ_SCREEN_HEIGHT);
+}
+
+- (void)dealloc {
+    [RQ_Video_Module.playerController stop];
+    if (self.headerView) {
+        [self.headerView removeFromSuperview];
+        self.headerView = nil;
+    }
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    RQ_Video_Module.playerController.viewControllerDisappear = NO;
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+    [super viewWillDisappear:animated];
+    RQ_Video_Module.playerController.viewControllerDisappear = YES;
+}
+
+- (BOOL)shouldAutorotate {
+    return NO;
+}
+
+- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
+    if (RQ_Video_Module.playerController.player.isFullScreen) {
+        return UIInterfaceOrientationMaskLandscape;
+    }
+    return UIInterfaceOrientationMaskPortrait;
+}
+
+
+#pragma mark - PrivateMethods
+/// 初始化
+- (void)rq_setup {
+    /// set up ...
+    self.collectionView.bounces = NO;
+    self.collectionView.backgroundColor = UIColorHex(0xF2F8FF);
+    
+    
+    [RQNotificationCenter removeObserver:self name:RQPlayVideoUrlNotification object:nil];
+    /// 播放
+    WeakSelf(weakSelf)
+    [RQ_Video_Module.playerController stop];
+    [[[[RQNotificationCenter rac_addObserverForName:RQPlayVideoUrlNotification object:nil] takeUntil:self.rac_willDeallocSignal] deliverOnMainThread] subscribeNext:^(NSNotification * note) {
+        [weakSelf myVideoUrlNotification:note];
+    }];
+}
+
+- (void)myVideoUrlNotification:(NSNotification *)note{
+    NSLog(@"RQNotificationCenter-----播放---AD-广告");
+    VideosItem *videosItem = note.object[RQPlayVideoItemKey];
+    NSArray *videoItemArr = note.object[RQPlayVideoItemArrKey];
+    if ([RQ_Video_Module isCanWatchWithVideosItem:videosItem]) {
+        [RQ_Video_Module playVideoWithVideosItem:videosItem videosItemArr:videoItemArr playView:self.headerView scrollView:self.collectionView];
+    }
+}
+
+#pragma mark - OverrideMethods
+/// 配置collectionView的区域
+- (UIEdgeInsets)contentInset {
+    return UIEdgeInsetsMake(RQ_APPLICATION_STATUS_BAR_HEIGHT + RQ_APPLICATION_NAV_BAR_HEIGHT, 0, 0, 0);
+}
+
+- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath {
+    RQCommonGroupViewModel *groupViewModel = self.viewModel.dataSource[indexPath.section];
+    RQCommonCollectionItemViewModel *itemViewModel = groupViewModel.itemViewModels[indexPath.row];
+    UICollectionViewCell *cell = [NSClassFromString(itemViewModel.itemClassName) cellWithCollectionView:collectionView forIndexPath:indexPath];
+    return cell;
+}
+
+- (void)configureCell:(RQCommonCell *)cell atIndexPath:(NSIndexPath *)indexPath withObject:(id)object {
+    NSLog(@"configureCell=====%@",indexPath);
+    [cell bindViewModel:object];
+}
+
+- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
+    return UIEdgeInsetsMake(0, 0, 0, 0);
+}
+
+- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
+//    @weakify(self)
+    RQCommonGroupViewModel *groupViewModel = self.viewModel.dataSource[indexPath.section];
+    // 如果是头视图
+    if (kind == UICollectionElementKindSectionHeader) {
+        if ([groupViewModel isKindOfClass:[NYFailSpecialVideoGroupViewModel class]]) {
+            NYFailSpecialVideoHeaderView *headerView = [NYFailSpecialVideoHeaderView reusableViewWithCollectionView:collectionView OfKind:kind forIndexPath:indexPath];
+            self.headerView = headerView.palyerView;
+            RQCommonGroupViewModel *groupViewModel = self.viewModel.dataSource[indexPath.section];
+            [headerView bindViewModel:groupViewModel];
+            headerView.headerContentLabel.hidden = YES;
+            headerView.footerContentLabel.hidden = YES;
+            return headerView;
+        }
+    }
+    RQCommonReusableView *headerView = [RQCommonReusableView reusableViewWithCollectionView:collectionView OfKind:kind forIndexPath:indexPath];
+    [headerView bindViewModel:groupViewModel];
+    headerView.headerContentLabel.hidden = YES;
+    headerView.footerContentLabel.hidden = YES;
+    return headerView;
+}
+
+@end

+ 22 - 0
jiaPei/Modules/HomePageModule/ViewController/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewController.xib

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="NYFailSpecialExerciseDetailsViewController">
+            <connections>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+            <viewLayoutGuide key="safeArea" id="Q5M-cg-NOt"/>
+        </view>
+    </objects>
+</document>

+ 24 - 20
jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageOneOrFourSmallItemViewModel.m

@@ -40,30 +40,34 @@
                 [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {  
                     if (isVip) {
 //                        username subject headimg gs 替换-> model
-//                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-//                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-//                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-//                        webViewModel.prefersNavigationBarHidden = YES;
-//                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-                        
-                        //显示真实考场
-                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
-                        
-                    } else {
-                        if (RQ_VIP_Module.freeLookSimExamNum == 1||
-                            RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
-//                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-//                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-//                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-//                            webViewModel.prefersNavigationBarHidden = YES;
-//                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-                            
+                        if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                            webViewModel.prefersNavigationBarHidden = YES;
+                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                        }else{
                             //显示真实考场
                             NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
                             examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
                             [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                        }
+                        
+                    } else {
+                        if (RQ_VIP_Module.freeLookSimExamNum == 1||
+                            RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                            if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                                NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                                NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                                RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                                webViewModel.prefersNavigationBarHidden = YES;
+                                [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                            }else{
+                                //显示真实考场
+                                NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                                examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                                [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                            }
                             RQ_VIP_Module.freeLookSimExamNum = 0;
                         } else {
                             if(!RQ_COMMON_MANAGER.APP_SWITCH){

+ 22 - 14
jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageSimulationExamItemViewModel.m

@@ -23,25 +23,33 @@
         self.operation = ^{
             [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
                 if (isVip) {
-                    NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                    RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                    webViewModel.prefersNavigationBarHidden = YES;
-                    [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-//                    NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                    examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                    [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
-                } else {
-                    if (RQ_VIP_Module.freeLookSimExamNum == 1||
-                        RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                    if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
                         NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
                         NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
                         RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
                         webViewModel.prefersNavigationBarHidden = YES;
                         [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-//                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                    }else{
+                        //显示真实考场
+                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                    }
+                } else {
+                    if (RQ_VIP_Module.freeLookSimExamNum == 1||
+                        RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                        if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                            webViewModel.prefersNavigationBarHidden = YES;
+                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                        }else{
+                            //显示真实考场
+                            NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                            examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                            [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                        }
                         RQ_VIP_Module.freeLookSimExamNum = 0;
                     } else {
                         if(!RQ_COMMON_MANAGER.APP_SWITCH){

+ 3 - 1
jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/分段练习/NYBlockExerciseViewModel.m

@@ -72,7 +72,9 @@
         group1.headerHeight = 80.f;
         NYBlockExerciseItemModel *itemModel1_0 = [[NYBlockExerciseItemModel alloc] initWithLeftStr:@"试题一" group:1];
         NYBlockExerciseItemModel *itemModel1_1 = [[NYBlockExerciseItemModel alloc] initWithLeftStr:@"试题二" group:1];
-        group1.itemViewModels = @[itemModel1_0,itemModel1_1];
+        NYBlockExerciseItemModel *itemModel1_2 = [[NYBlockExerciseItemModel alloc] initWithLeftStr:@"试题三" group:1];
+        NYBlockExerciseItemModel *itemModel1_3 = [[NYBlockExerciseItemModel alloc] initWithLeftStr:@"试题四" group:1];
+        group1.itemViewModels = @[itemModel1_0,itemModel1_1,itemModel1_2,itemModel1_3];
         
         NYBlockExerciseGroupViewModel *group2 = [NYBlockExerciseGroupViewModel groupViewModel];
         group2.header = @"3.巩固练习";

+ 32 - 3
jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/易错专项/NYFailSpecialExerciseDetailsViewModel.m

@@ -7,6 +7,7 @@
 //
 
 #import "NYFailSpecialExerciseDetailsViewModel.h"
+#import "RQVideoModule.h"
 
 @interface NYFailSpecialExerciseDetailsViewModel ()
 
@@ -34,9 +35,31 @@
     [super initialize];
     [self loadPointData];
     [self loadKeyDicts];
-    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self rq_configureData];
     });
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [self postVideoDate];
+    });
+   
+}
+
+- (void)postVideoDate {
+    NYFailSpecialVideoGroupViewModel *model = [self.dataSource firstObject];
+    if(model.videoDate.vipPublicityMediumUrl.length>0){
+        VideosItem *videosItem = [[VideosItem alloc ] init];
+        videosItem.video_url = model.videoDate.vipPublicityMediumUrl;
+        videosItem.coverFileUrl = model.videoDate.poster;
+        videosItem.title = model.videoDate.endButtonText;
+        videosItem.videoDescribe = model.videoDate.endButtonText;
+        videosItem.videoType = RQVideoType_Default;
+        videosItem.permission = 1;
+        videosItem.subject = 0;//科目一
+        [RQNotificationCenter postNotificationName:RQPlayVideoUrlNotification object:@{
+            RQPlayVideoItemKey : videosItem,
+            RQPlayVideoItemArrKey : @[videosItem],
+        }];
+    }
 }
 
 #pragma mark - ConfigureData
@@ -45,10 +68,16 @@
     RAC(self, dataSource) = [RACSignal
                             combineLatest:@[RACObserve(RQ_USER_MANAGER, isCykh)]
                             reduce:^(NSNumber *isCykh) {
-        NYFailSpecialExerciseGroupViewModel *group0 = [NYFailSpecialExerciseGroupViewModel groupViewModel];
-        group0.headerHeight = RQ_FIT_HORIZONTAL(130);
+        NYFailSpecialVideoGroupViewModel *group0 = [NYFailSpecialVideoGroupViewModel groupViewModel];
         NSString *keyStr = self.titleDict[self.title];
         NYFailGroupPointDataModel *model = self.datakeyDicts[keyStr];
+        group0.videoDate = model.videoDate;
+        if(model.videoDate.vipPublicityMediumUrl.length>0){
+            group0.headerHeight = RQ_FIT_HORIZONTAL(218);
+        }else{
+            group0.headerHeight = 0;
+        }
+        
         //[NYFailGroupPointDataModel modelWithDictionary:self.dataDicts[keyStr]];
         NSMutableArray *mt_array = @[].mutableCopy;//解析json 数据daocell
         if(model){

+ 18 - 0
jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/易错专项/NYFailSpecialVideoGroupViewModel.h

@@ -0,0 +1,18 @@
+//
+//  NYFailSpecialVideoGroupViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/14.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "NYFailGroupPointDataModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYFailSpecialVideoGroupViewModel : RQCommonGroupViewModel
+@property (nonatomic, strong) NYFailItemVideoDateModel *videoDate;
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
jiaPei/Modules/HomePageModule/ViewModel/HomeSubPage/易错专项/NYFailSpecialVideoGroupViewModel.m

@@ -0,0 +1,13 @@
+//
+//  NYFailSpecialVideoGroupViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/14.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYFailSpecialVideoGroupViewModel.h"
+
+@implementation NYFailSpecialVideoGroupViewModel
+
+@end

+ 3 - 2
jiaPei/Modules/OtherModules/ExaminationModule/Controller/NYExaminationRoomViewController.m

@@ -9,6 +9,7 @@
 #import "NYExaminationRoomViewController.h"
 #import "NYChartView.h"
 #import "NYQuestionContentView.h"
+#import <SDWebImage/UIImageView+WebCache.h>
 
 @interface NYExaminationRoomViewController ()
 
@@ -191,8 +192,8 @@
     }
     if (RQStringIsNotEmpty(imageString)) {
         self.image_btn.hidden = NO;
-        [self.image_btn yy_setImageWithURL:[NSURL URLWithString:imageString] forState:UIControlStateNormal placeholder:RQWebImagePlaceholder()];
-        [self.image_big_btn yy_setImageWithURL:[NSURL URLWithString:imageString] forState:UIControlStateNormal placeholder:RQWebImagePlaceholder()];
+        [self.image_btn sd_setImageWithURL:[NSURL URLWithString:imageString] forState:UIControlStateNormal placeholderImage:RQWebImagePlaceholder()];
+        [self.image_big_btn sd_setImageWithURL:[NSURL URLWithString:imageString] forState:UIControlStateNormal placeholderImage:RQWebImagePlaceholder()];
     }
 
 }

+ 5 - 1
jiaPei/Modules/OtherModules/ExaminationModule/View/NYQuestionView/NYQuestionContentView.m

@@ -114,7 +114,11 @@
     [answer_view mas_makeConstraints:^(MASConstraintMaker *make) {
         make.bottom.top.mas_equalTo(bottom_tools);
         make.right.mas_equalTo(bottom_tools).offset(0);
-        make.width.mas_equalTo(180);
+        if(iPhone6){
+            make.width.mas_equalTo(130);
+        }else{
+            make.width.mas_equalTo(180);
+        }
     }];
     
 }

+ 8 - 1
jiaPei/Modules/OtherModules/ExerciseModule/View/ExercisePage/RQExerciseQuestionCell.m

@@ -7,6 +7,7 @@
 
 #import "RQExerciseQuestionCell.h"
 #import <ZFPlayer/ZFAVPlayerManager.h>
+#import <SDWebImage/UIImageView+WebCache.h>
 
 @interface RQExerciseQuestionCell () <QMUIImagePreviewViewDelegate>
 @property  (nonatomic, readwrite, strong) RQExerciseQuestionItemViewModel *viewModel;
@@ -63,7 +64,13 @@
 //        }
 //    }] takeUntil:self.rac_prepareForReuseSignal];
 
-    [self.questionImageView yy_setImageWithURL:[NSURL URLWithString:viewModel.imageString] placeholder:RQWebImagePlaceholder()];
+    
+    if([viewModel.imageString containsString:@".gif"]){
+        NSLog(@"%@",viewModel.imageString);
+        [self.questionImageView sd_setImageWithURL:[NSURL URLWithString:viewModel.imageString] placeholderImage:RQWebImagePlaceholder()];
+    }else{
+        [self.questionImageView yy_setImageWithURL:[NSURL URLWithString:viewModel.imageString] placeholder:RQWebImagePlaceholder()];
+    }
     
     RAC(self, subImage) = [[RACObserve(self.questionImageView, image) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     

+ 22 - 14
jiaPei/Modules/OtherModules/ExerciseModule/View/ExerciseSubPage/考试相关/RQSimulateExamBeginCell.m

@@ -85,25 +85,33 @@
     [_realExamView setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
         [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
             if (isVip) {
-                NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                webViewModel.prefersNavigationBarHidden = YES;
-                [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-//                NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
-            } else {
-                if (RQ_VIP_Module.freeLookSimExamNum == 1||
-                    RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
                     NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
                     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
                     RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
                     webViewModel.prefersNavigationBarHidden = YES;
                     [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-//                    NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                    examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                    [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                }else{
+                    //显示真实考场
+                    NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                    examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                    [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                }
+            } else {
+                if (RQ_VIP_Module.freeLookSimExamNum == 1||
+                    RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                    if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                        webViewModel.prefersNavigationBarHidden = YES;
+                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                    }else{
+                        //显示真实考场
+                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                    }
                     RQ_VIP_Module.freeLookSimExamNum = 0;
                 } else {
                     if(!RQ_COMMON_MANAGER.APP_SWITCH){

+ 31 - 23
jiaPei/Modules/OtherModules/ExerciseModule/ViewModel/ExercisePage/RQExerciseSubViewModel.m

@@ -45,32 +45,40 @@
             NSArray *readList = [NYTools readExerciseListUserKey:RQ_USER_MANAGER.currentUser.outId carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQ_Exercise_Module.currentExerciseType];
             NSLog(@"readList=%@",readList);
             if(readList.count>0){ //遍历用户做的题目
-                for (NSDictionary *item in readList) {
-                    NSInteger ID = [item[@"ID"] unsignedIntValue];//题目id
-                    NSInteger type = [item[@"type"] unsignedIntValue];//题目类型
-                    NSInteger answerResultsType = [item[@"answerResultsType"] unsignedIntValue];//是否做对
-                    NSArray *userAnswer = item[@"userAnswer"];//用户选项
-                    //查找对应题目
-                    NSArray *filteredArray = [self.questionArr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ydtQuestionModel.ID == %d", ID]];
-                    if (filteredArray.count > 0) {
-                        RQExerciseModel *exerciseModel = filteredArray.firstObject;
-                        exerciseModel.answerResultsType = answerResultsType;
-                        exerciseModel.userAnswer = userAnswer;
-                        if (exerciseModel.answerResultsType == RQAnswerResultsType_Correct) {
-                            if (![RQ_Exercise_Module.correctArr containsObject:exerciseModel]) {
-                                NSMutableArray *corArr = RQ_Exercise_Module.correctArr.mutableCopy;
-                                [corArr addObject:exerciseModel];
-                                RQ_Exercise_Module.correctArr = corArr.copy;
-                            }
-                        } else if (exerciseModel.answerResultsType == RQAnswerResultsType_Error) {
-                            if (![RQ_Exercise_Module.errorArr containsObject:exerciseModel]) {
-                                NSMutableArray *errArr = RQ_Exercise_Module.errorArr.mutableCopy;
-                                [errArr addObject:exerciseModel];
-                                RQ_Exercise_Module.errorArr = errArr.copy;
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                    for (NSDictionary *item in readList) {
+                        NSInteger ID = [item[@"ID"] unsignedIntValue];//题目id
+                        NSInteger type = [item[@"type"] unsignedIntValue];//题目类型
+                        NSInteger answerResultsType = [item[@"answerResultsType"] unsignedIntValue];//是否做对
+                        NSArray *userAnswer = item[@"userAnswer"];//用户选项
+                        //查找对应题目
+                        NSArray *filteredArray = [self.questionArr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ydtQuestionModel.ID == %d", ID]];
+                        if (filteredArray.count > 0) {
+                            RQExerciseModel *exerciseModel = filteredArray.firstObject;
+                            exerciseModel.answerResultsType = answerResultsType;
+                            exerciseModel.userAnswer = userAnswer;
+                            if (exerciseModel.answerResultsType == RQAnswerResultsType_Correct) {
+                                if (![RQ_Exercise_Module.correctArr containsObject:exerciseModel]) {
+                                    NSMutableArray *corArr = RQ_Exercise_Module.correctArr.mutableCopy;
+                                    [corArr addObject:exerciseModel];
+                                    RQ_Exercise_Module.correctArr = corArr.copy;
+                                }
+                            } else if (exerciseModel.answerResultsType == RQAnswerResultsType_Error) {
+                                if (![RQ_Exercise_Module.errorArr containsObject:exerciseModel]) {
+                                    NSMutableArray *errArr = RQ_Exercise_Module.errorArr.mutableCopy;
+                                    [errArr addObject:exerciseModel];
+                                    RQ_Exercise_Module.errorArr = errArr.copy;
+                                }
                             }
                         }
                     }
-                }
+                    // 任务完成后,切换回主线程更新UI或执行其他操作
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        NSLog(@"Task completed, updating UI on main thread...");
+                        // 在这里可以更新UI,比如刷新界面等
+                    });
+                });
+                ///
             }
         }
         

+ 1 - 1
jiaPei/Modules/OtherModules/PTObjectMolule/RQPTObjectMolule.m

@@ -213,7 +213,7 @@ static id rq_ptObjectModule = nil;
     NSMutableArray *arr = [NSMutableArray array];
     [arr addPro:@"idcard"   Value:RQ_USER_MANAGER.currentUser.loginCode];
     [arr addPro:@"imei"   Value:muserId];
-    [arr addPro:@"status"   Value:@"0"];
+    [arr addPro:@"status"   Value:@"1"];
     [MBProgressHUD rq_showProgressHUD:@""];
     [jiaPeiManager requestAnythingWithURL:@"jsjpNotice" array:arr data:nil completion:^(NSDictionary * result) {
         NSLog(@"dict=%@",result);

+ 22 - 14
jiaPei/Modules/OtherModules/VIPModule/View/怎么学/RQVipContentCell.m

@@ -138,25 +138,33 @@
     [self.zhenshimoniView setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
         [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
             if (isVip) {
-                NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                webViewModel.prefersNavigationBarHidden = YES;
-                [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-//                NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
-            } else {
-                if (RQ_VIP_Module.freeLookSimExamNum == 1||
-                    RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
                     NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
                     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
                     RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
                     webViewModel.prefersNavigationBarHidden = YES;
                     [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
-//                    NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                    examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                    [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                }else{
+                    //显示真实考场
+                    NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                    examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                    [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                }
+            } else {
+                if (RQ_VIP_Module.freeLookSimExamNum == 1||
+                    RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+                    if(RQ_COMMON_MANAGER.APP_SWITCH){//审核状态走web 页
+                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+                        webViewModel.prefersNavigationBarHidden = YES;
+                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                    }else{
+                        //显示真实考场
+                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                    }
                     RQ_VIP_Module.freeLookSimExamNum = 0;
                 } else {
                     if(!RQ_COMMON_MANAGER.APP_SWITCH){

+ 2 - 0
jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.h

@@ -81,6 +81,7 @@ typedef NS_ENUM(NSUInteger, RQVideoDetailSubPageUpdateDataType) {
 #import "RQDspVideoDetailViewController.h"
 #import "RQDspVideoDetailCell.h"
 #import "RQExplainVideoViewController.h"
+#import "NYFailSpecialExerciseDetailsViewController.h"
 
 @interface RQVideoPermissionStateModel : RQBaseModel
 @property (nonatomic, readwrite, assign) BOOL tryLookShow;
@@ -96,6 +97,7 @@ typedef NS_ENUM(NSUInteger, RQVideoDetailSubPageUpdateDataType) {
 @property (nonatomic, readwrite, strong) MPPlayerController *playerController;
 @property (nonatomic, readwrite, strong) ZFPlayerController *zfPlayerController;
 @property (nonatomic, readwrite, weak) RQVideoDetailViewController *videoDetailViewController;
+@property (nonatomic, readwrite, weak) NYFailSpecialExerciseDetailsViewController *failSpecialDetailViewController;
 
 - (BOOL)isCanWatchWithVideosItem:(VideosItem *)videosItem;
 - (void)playVideoWithVideosItem:(VideosItem *)videosItem videosItemArr:(NSArray *)videosItemArr playView:(UIView *)playView scrollView:(UIScrollView *)scrollView;

+ 2 - 1
jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.m

@@ -219,7 +219,7 @@ static id rq_VideoModule = nil;
                         } 
                     }
                 } else {
-                    if ((videoItem.subject == 1 && RQ_VIP_Module.isSubject2Vip) || (videoItem.subject == 2 && RQ_VIP_Module.isSubject3Vip)) {
+                    if ((videoItem.subject == 0 && RQ_VIP_Module.isSubject1Vip) ||(videoItem.subject == 1 && RQ_VIP_Module.isSubject2Vip) || (videoItem.subject == 2 && RQ_VIP_Module.isSubject3Vip)) {
                         
                     } else {
                         if (weakSelf.playerController.player.currentTime >= 15) {
@@ -336,6 +336,7 @@ static id rq_VideoModule = nil;
         WeakSelf(weakSelf)
         [_controlView.portraitControlView.backBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
             [RQNotificationCenter removeObserver:weakSelf.videoDetailViewController name:RQPlayVideoUrlNotification object:nil];
+            [RQNotificationCenter removeObserver:weakSelf.failSpecialDetailViewController name:RQPlayVideoUrlNotification object:nil];
             [weakSelf.playerController stop];
             [RQ_APPDELEGATE.services popViewModelAnimated:YES];
         }];

+ 2 - 0
jiaPei/TrainDetailCell.h

@@ -15,6 +15,8 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *contentLabel;
 
+@property (weak, nonatomic) IBOutlet UILabel *mileage_label;
+
 @property (weak, nonatomic) IBOutlet UIButton *orbitBtn;
 
 @property (weak, nonatomic) IBOutlet UIButton *commentBtn;

+ 2 - 1
jiaPei/TrainDetailCell.m

@@ -18,7 +18,8 @@
 	_contentLabel.textColor = contentTextColor;
     _titleLabel.font = [UIFont scaleSize:18];
     _contentLabel.font = [UIFont scaleSize:15];
-    
+    _mileage_label.textColor = contentTextColor;
+    _mileage_label.font = [UIFont scaleSize:18];
     [_orbitBtn borderColor:RQ_MAIN_COLOR width:1 cornorRadius:5];
     [_commentBtn borderColor:RQ_MAIN_COLOR width:1 cornorRadius:5];
     

+ 20 - 10
jiaPei/TrainDetailCell.xib

@@ -1,12 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
-        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -16,7 +13,7 @@
             <rect key="frame" x="0.0" y="0.0" width="320" height="90"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="320" height="89"/>
+                <rect key="frame" x="0.0" y="0.0" width="320" height="90"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DPG-qI-G0h">
@@ -38,7 +35,7 @@
                         <nil key="highlightedColor"/>
                     </label>
                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Nzy-Vb-Ug4">
-                        <rect key="frame" x="142" y="58" width="70" height="25"/>
+                        <rect key="frame" x="134" y="58" width="70" height="25"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="70" id="mho-gu-KMn"/>
                             <constraint firstAttribute="height" constant="25" id="zmq-jr-nOE"/>
@@ -46,13 +43,23 @@
                         <state key="normal" title="Button"/>
                     </button>
                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lwS-y2-kVt">
-                        <rect key="frame" x="222" y="58" width="70" height="25"/>
+                        <rect key="frame" x="214" y="58" width="70" height="25"/>
                         <constraints>
                             <constraint firstAttribute="width" constant="70" id="Q8d-4Q-XjN"/>
                             <constraint firstAttribute="height" constant="25" id="g4g-5l-wQS"/>
                         </constraints>
                         <state key="normal" title="Button"/>
                     </button>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wLS-D1-SAN">
+                        <rect key="frame" x="10" y="58" width="169" height="25"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="169" id="hbr-BR-etM"/>
+                            <constraint firstAttribute="height" constant="25" id="kdW-5P-4ft"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
                 </subviews>
                 <constraints>
                     <constraint firstItem="Geu-Rg-PFi" firstAttribute="top" secondItem="DPG-qI-G0h" secondAttribute="bottom" id="0Rx-DZ-2P5"/>
@@ -61,6 +68,8 @@
                     <constraint firstItem="Nzy-Vb-Ug4" firstAttribute="top" secondItem="Geu-Rg-PFi" secondAttribute="bottom" constant="3" id="WhP-WA-w5A"/>
                     <constraint firstItem="lwS-y2-kVt" firstAttribute="leading" secondItem="Nzy-Vb-Ug4" secondAttribute="trailing" constant="10" id="a01-g3-u8b"/>
                     <constraint firstItem="lwS-y2-kVt" firstAttribute="top" secondItem="Geu-Rg-PFi" secondAttribute="bottom" constant="3" id="bJS-5N-96z"/>
+                    <constraint firstItem="wLS-D1-SAN" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="10" id="jZV-kD-NWx"/>
+                    <constraint firstItem="wLS-D1-SAN" firstAttribute="top" secondItem="Geu-Rg-PFi" secondAttribute="bottom" constant="3" id="kJ4-1H-ENN"/>
                     <constraint firstAttribute="trailing" secondItem="DPG-qI-G0h" secondAttribute="trailing" id="kiU-Yo-RPL"/>
                     <constraint firstItem="Geu-Rg-PFi" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="10" id="qwp-5Y-jur"/>
                     <constraint firstItem="DPG-qI-G0h" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="10" id="utQ-uN-UcL"/>
@@ -70,10 +79,11 @@
             <connections>
                 <outlet property="commentBtn" destination="lwS-y2-kVt" id="7wD-9a-jCN"/>
                 <outlet property="contentLabel" destination="Geu-Rg-PFi" id="ebl-LQ-tvl"/>
+                <outlet property="mileage_label" destination="wLS-D1-SAN" id="VuL-BM-IT2"/>
                 <outlet property="orbitBtn" destination="Nzy-Vb-Ug4" id="tTf-5B-RZB"/>
                 <outlet property="titleLabel" destination="DPG-qI-G0h" id="hBV-wm-xDi"/>
             </connections>
-            <point key="canvasLocation" x="-121" y="-8"/>
+            <point key="canvasLocation" x="-193.59999999999999" y="-7.1964017991004505"/>
         </tableViewCell>
     </objects>
 </document>

+ 2 - 1
jiaPei/TrainDetailVC.m

@@ -276,7 +276,8 @@
             } else if (hour != 0 && min == 0) {
                 timeString = [NSString stringWithFormat:@"%d%@",(int)hour,(RQStringIsNotEmpty(_RATIONKSMC)? _RATIONKSMC : @"小时")];
             }
-            
+            int mileage = [dic[@"CRI_MILEAGE"] intValue];
+            cell.mileage_label.text = [NSString stringWithFormat:@"%.2f公里",mileage/1000.0];
             cell.contentLabel.text = [NSString stringWithFormat:@"持续时间:%@",timeString];
             
             return cell;

+ 2 - 0
jiaPei/TrainInfoTableViewCell.h

@@ -13,6 +13,8 @@
     UILabel *titleLabel,*progressLabel,*contentLabel,*allLabel,*nowLabel;
 }
 
+@property (nonatomic,strong) UILabel *mileage_label;
+
 @property (nonatomic,strong) NSMutableArray *dataArray;
 
 //需要的总学时

+ 9 - 0
jiaPei/TrainInfoTableViewCell.m

@@ -78,6 +78,15 @@
         [label setText:@"" Font:FontTitle TextColor:kTitleColor];
         [self addSubview:label];
         contentLabel = label;
+        
+        x = 65;
+        y += h + 5;
+        w = kSize.width - x;
+        h = 25;
+        UILabel *mileage_label = [[UILabel alloc] setxywh];
+        [mileage_label setText:@"" Font:FontTitle TextColor:kTitleColor];
+        [self addSubview:mileage_label];
+        self.mileage_label = mileage_label;
     }
     return self;
 }

+ 10 - 0
jiaPei/TrainInfoVC.m

@@ -416,6 +416,7 @@
                 NSString *titleString = indexPath.row == 0? @"模拟" : @"实操";
                 NSString *timeKey = [NSString stringWithFormat:@"%@_%@",section,row];
                 dataDic[timeKey] = allTimeString;
+                trainInfoTableViewCell.mileage_label.text = @"";
                 if(indexPath.row == 2){
                     titleString = @"总学时";
                     NSMutableArray *array_0 = (NSMutableArray *)[[dataDic objectForKey:section] objectForKey:@"0"];
@@ -425,6 +426,13 @@
                     int value = [dataDic[[NSString stringWithFormat:@"%@_0",section]] intValue]+
                     [dataDic[[NSString stringWithFormat:@"%@_1",section]] intValue];
                     allTimeString = [NSString stringWithFormat:@"%d",value];
+                    int mileage = 0;
+                    if(rowArray.count >0){
+                        for (NSDictionary *item in rowArray) {
+                            mileage +=  [item[@"CRI_MILEAGE"] intValue];
+                        }
+                        trainInfoTableViewCell.mileage_label.text = [NSString stringWithFormat:@"总里程:%.2f公里",mileage/1000.0];
+                    }
                 }
                 trainInfoTableViewCell.titleString = titleString;
                 
@@ -603,6 +611,8 @@
 {
     if ((indexPath.section == 0 || indexPath.section == 3) && indexPath.row == 0) {
         return 45;
+    }else if (indexPath.section == 2) {
+        return 100;
     }else{
         return 80;
     }