Kaynağa Gözat

小李vip 页面完成

openlockPPP 4 ay önce
ebeveyn
işleme
a410f72a93
56 değiştirilmiş dosya ile 2755 ekleme ve 11 silme
  1. 156 0
      jiaPei.xcodeproj/project.pbxproj
  2. BIN
      jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate
  3. 22 0
      jiaPei/Images.xcassets/Modules/小李视频/li_back_white.imageset/Contents.json
  4. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_back_white.imageset/li_back_white@2x.png
  5. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_back_white.imageset/li_back_white@3x.png
  6. 22 0
      jiaPei/Images.xcassets/Modules/小李视频/li_tis_deng.imageset/Contents.json
  7. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_tis_deng.imageset/li_tis_deng@2x.png
  8. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_tis_deng.imageset/li_tis_deng@3x.png
  9. 22 0
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg01.imageset/Contents.json
  10. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg01.imageset/li_zu_kbg@2x.png
  11. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg01.imageset/li_zu_kbg@3x.png
  12. 22 0
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg02.imageset/Contents.json
  13. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg02.imageset/li_zu_kbg02@2x.png
  14. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg02.imageset/li_zu_kbg02@3x.png
  15. 22 0
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg03.imageset/Contents.json
  16. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg03.imageset/li_zu_kbg03@2x.png
  17. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg03.imageset/li_zu_kbg03@3x.png
  18. 22 0
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_point.imageset/Contents.json
  19. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_point.imageset/li_zu_point@2x.png
  20. BIN
      jiaPei/Images.xcassets/Modules/小李视频/li_zu_point.imageset/li_zu_point@3x.png
  21. 17 0
      jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m
  22. 1 1
      jiaPei/Modules/OtherModules/OtherModules.h
  23. 5 6
      jiaPei/Modules/OtherModules/SimulateModular/ScanPage/Controller/ScanResultVC.xib
  24. 17 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipAuthorityNewCell.h
  25. 56 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipAuthorityNewCell.m
  26. 105 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipAuthorityNewCell.xib
  27. 17 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipPriceCell.h
  28. 163 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipPriceCell.m
  29. 109 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipPriceCell.xib
  30. 18 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLiVipContentNewCell01.h
  31. 118 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLiVipContentNewCell01.m
  32. 398 0
      jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLiVipContentNewCell01.xib
  33. 23 0
      jiaPei/Modules/OtherModules/VIPModule/View/购买/NYLiVipBuyNewView.h
  34. 77 0
      jiaPei/Modules/OtherModules/VIPModule/View/购买/NYLiVipBuyNewView.m
  35. 136 0
      jiaPei/Modules/OtherModules/VIPModule/View/购买/NYLiVipBuyNewView.xib
  36. 24 0
      jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipAuthorityNewItemViewModel.h
  37. 52 0
      jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipAuthorityNewItemViewModel.m
  38. 20 0
      jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipSinglePriceItemViewModel.h
  39. 38 0
      jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipSinglePriceItemViewModel.m
  40. 17 0
      jiaPei/Modules/OtherModules/XLIModule/Controller/NYLIVipCoachViewController.h
  41. 543 0
      jiaPei/Modules/OtherModules/XLIModule/Controller/NYLIVipCoachViewController.m
  42. 38 0
      jiaPei/Modules/OtherModules/XLIModule/NYXLIModule.h
  43. 13 0
      jiaPei/Modules/OtherModules/XLIModule/NYXLIModule.m
  44. 19 0
      jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipCoachContentView.h
  45. 28 0
      jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipCoachContentView.m
  46. 42 0
      jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipCoachContentView.xib
  47. 17 0
      jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipHeaderImageViewNewReusableView.h
  48. 42 0
      jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipHeaderImageViewNewReusableView.m
  49. 89 0
      jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipHeaderImageViewNewReusableView.xib
  50. 19 0
      jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipCoachViewModel.h
  51. 151 0
      jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipCoachViewModel.m
  52. 21 0
      jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipHeaderImageViewGroupModel.h
  53. 29 0
      jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipHeaderImageViewGroupModel.m
  54. 1 1
      jiaPei/UserInfo.h
  55. 1 0
      jiaPei/Utils/Router/RQRouter.m
  56. 3 3
      jiaPei/Utils/Service/HTTP/HTTPRequest/RQURLParameters.m

+ 156 - 0
jiaPei.xcodeproj/project.pbxproj

@@ -83,6 +83,9 @@
 		90038E2C2D116A2D006A1637 /* NYFailSpecialExerciseDetailsCell01.m in Sources */ = {isa = PBXBuildFile; fileRef = 90038E2A2D116A2D006A1637 /* NYFailSpecialExerciseDetailsCell01.m */; };
 		90038E2D2D116A2D006A1637 /* NYFailSpecialExerciseDetailsCell01.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90038E2B2D116A2D006A1637 /* NYFailSpecialExerciseDetailsCell01.xib */; };
 		90038E302D117CE5006A1637 /* NYFailItemPointCellView01.m in Sources */ = {isa = PBXBuildFile; fileRef = 90038E2F2D117CE5006A1637 /* NYFailItemPointCellView01.m */; };
+		9003DDD62D421C5600DBF457 /* NYXLIModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 9003DDD52D421C5600DBF457 /* NYXLIModule.m */; };
+		9003DDDB2D421CE400DBF457 /* NYLIVipCoachViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9003DDD82D421CE400DBF457 /* NYLIVipCoachViewController.m */; };
+		9003DDDF2D42231100DBF457 /* NYLIVipCoachViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9003DDDE2D42231100DBF457 /* NYLIVipCoachViewModel.m */; };
 		90044C362A4E7BF7003FBBF8 /* NYFloatingSuggestView.m in Sources */ = {isa = PBXBuildFile; fileRef = 90044C352A4E7BF6003FBBF8 /* NYFloatingSuggestView.m */; };
 		90044C382A4E7CA0003FBBF8 /* NYFloatingSuggestView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90044C372A4E7CA0003FBBF8 /* NYFloatingSuggestView.xib */; };
 		90044C3B2A4E821E003FBBF8 /* NYFloatingSuggestViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90044C3A2A4E821E003FBBF8 /* NYFloatingSuggestViewModel.m */; };
@@ -120,6 +123,17 @@
 		905CF7A72CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 905CF7A52CDA1FEC00DE1B7F /* NYExaminationTipsViewController.xib */; };
 		90626F3D2A204BC400C8FA05 /* kt_jq.db in Resources */ = {isa = PBXBuildFile; fileRef = 90626F3C2A204BC300C8FA05 /* kt_jq.db */; };
 		90626F402A20540600C8FA05 /* YNYDTJQQuestionModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 90626F3F2A20540600C8FA05 /* YNYDTJQQuestionModule.m */; };
+		906814FF2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 906814FE2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.m */; };
+		906815022D53587A00FE123F /* NYLIVipHeaderImageViewNewReusableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 906815012D53587A00FE123F /* NYLIVipHeaderImageViewNewReusableView.xib */; };
+		906815092D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 906815082D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.m */; };
+		9068150C2D53649700FE123F /* NYLiVipBuyNewView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9068150B2D53649700FE123F /* NYLiVipBuyNewView.m */; };
+		9068150E2D5364CD00FE123F /* NYLiVipBuyNewView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9068150D2D5364CD00FE123F /* NYLiVipBuyNewView.xib */; };
+		906815132D544F7600FE123F /* NYLiVipContentNewCell01.m in Sources */ = {isa = PBXBuildFile; fileRef = 906815112D544F7600FE123F /* NYLiVipContentNewCell01.m */; };
+		906815142D544F7600FE123F /* NYLiVipContentNewCell01.xib in Resources */ = {isa = PBXBuildFile; fileRef = 906815122D544F7600FE123F /* NYLiVipContentNewCell01.xib */; };
+		906815182D54525300FE123F /* NYLIVipContentNewItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 906815172D54525300FE123F /* NYLIVipContentNewItemViewModel.m */; };
+		9068151C2D54ACB600FE123F /* NYLIVipAuthorityNewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9068151A2D54ACB600FE123F /* NYLIVipAuthorityNewCell.m */; };
+		9068151D2D54ACB600FE123F /* NYLIVipAuthorityNewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9068151B2D54ACB600FE123F /* NYLIVipAuthorityNewCell.xib */; };
+		906815202D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9068151F2D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.m */; };
 		906D06A62CCF8F6F004F51B4 /* NYChartMatrixViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 906D06A32CCF8F6E004F51B4 /* NYChartMatrixViewCell.m */; };
 		906D06A72CCF8F6F004F51B4 /* NYChartMatrixView.m in Sources */ = {isa = PBXBuildFile; fileRef = 906D06A42CCF8F6E004F51B4 /* NYChartMatrixView.m */; };
 		906D06AB2CCFC4FB004F51B4 /* NYBaseChartView.m in Sources */ = {isa = PBXBuildFile; fileRef = 906D06A92CCFC4FB004F51B4 /* NYBaseChartView.m */; };
@@ -136,6 +150,8 @@
 		90798B0B2A52722300E68461 /* NYComplaintListViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90798B092A52722300E68461 /* NYComplaintListViewCell.xib */; };
 		90798B0F2A52AE2600E68461 /* ComplaintDataModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90798B0E2A52AE2600E68461 /* ComplaintDataModel.m */; };
 		90798B122A53E87800E68461 /* NYComplaintListViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90798B112A53E87800E68461 /* NYComplaintListViewModel.m */; };
+		90851D352D43854F00AA0034 /* NYLIVipCoachContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 90851D342D43854F00AA0034 /* NYLIVipCoachContentView.m */; };
+		90851D372D43856300AA0034 /* NYLIVipCoachContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90851D362D43856300AA0034 /* NYLIVipCoachContentView.xib */; };
 		908592122BB7B4CC005D2507 /* AESCipher.m in Sources */ = {isa = PBXBuildFile; fileRef = 908592102BB7B4CC005D2507 /* AESCipher.m */; };
 		908E6E642A89CCFC0090F00A /* DrCityInfoThree.json in Resources */ = {isa = PBXBuildFile; fileRef = 908E6E632A89CCFC0090F00A /* DrCityInfoThree.json */; };
 		908E6E662A8A08E40090F00A /* cities.json in Resources */ = {isa = PBXBuildFile; fileRef = 908E6E652A8A08E40090F00A /* cities.json */; };
@@ -161,6 +177,9 @@
 		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 */; };
+		90B32CFA2D55A6EE00DD19C3 /* NYLIVipPriceCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B32CF82D55A6EE00DD19C3 /* NYLIVipPriceCell.m */; };
+		90B32CFB2D55A6EE00DD19C3 /* NYLIVipPriceCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90B32CF92D55A6EE00DD19C3 /* NYLIVipPriceCell.xib */; };
+		90B32CFE2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B32CFD2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.m */; };
 		90BA2E822A3177B50029A54A /* NYTheoryTimeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2E802A3177B50029A54A /* NYTheoryTimeVC.m */; };
 		90BA2E872A3177DE0029A54A /* NYGetjobTimeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2E852A3177DE0029A54A /* NYGetjobTimeVC.m */; };
 		90BA2E8B2A317BEB0029A54A /* NYBasetjTimeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2E8A2A317BEB0029A54A /* NYBasetjTimeVC.m */; };
@@ -1865,6 +1884,12 @@
 		90038E2B2D116A2D006A1637 /* NYFailSpecialExerciseDetailsCell01.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYFailSpecialExerciseDetailsCell01.xib; sourceTree = "<group>"; };
 		90038E2E2D117CE5006A1637 /* NYFailItemPointCellView01.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYFailItemPointCellView01.h; sourceTree = "<group>"; };
 		90038E2F2D117CE5006A1637 /* NYFailItemPointCellView01.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYFailItemPointCellView01.m; sourceTree = "<group>"; };
+		9003DDD42D421C5600DBF457 /* NYXLIModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYXLIModule.h; sourceTree = "<group>"; };
+		9003DDD52D421C5600DBF457 /* NYXLIModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYXLIModule.m; sourceTree = "<group>"; };
+		9003DDD72D421CE400DBF457 /* NYLIVipCoachViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipCoachViewController.h; sourceTree = "<group>"; };
+		9003DDD82D421CE400DBF457 /* NYLIVipCoachViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipCoachViewController.m; sourceTree = "<group>"; };
+		9003DDDD2D42231100DBF457 /* NYLIVipCoachViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipCoachViewModel.h; sourceTree = "<group>"; };
+		9003DDDE2D42231100DBF457 /* NYLIVipCoachViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipCoachViewModel.m; sourceTree = "<group>"; };
 		90044C342A4E7BF6003FBBF8 /* NYFloatingSuggestView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYFloatingSuggestView.h; sourceTree = "<group>"; };
 		90044C352A4E7BF6003FBBF8 /* NYFloatingSuggestView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYFloatingSuggestView.m; sourceTree = "<group>"; };
 		90044C372A4E7CA0003FBBF8 /* NYFloatingSuggestView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYFloatingSuggestView.xib; sourceTree = "<group>"; };
@@ -1932,6 +1957,24 @@
 		90626F3C2A204BC300C8FA05 /* kt_jq.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = kt_jq.db; sourceTree = "<group>"; };
 		90626F3E2A20540600C8FA05 /* YNYDTJQQuestionModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YNYDTJQQuestionModule.h; sourceTree = "<group>"; };
 		90626F3F2A20540600C8FA05 /* YNYDTJQQuestionModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YNYDTJQQuestionModule.m; sourceTree = "<group>"; };
+		906814FD2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipHeaderImageViewNewReusableView.h; sourceTree = "<group>"; };
+		906814FE2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipHeaderImageViewNewReusableView.m; sourceTree = "<group>"; };
+		906815012D53587A00FE123F /* NYLIVipHeaderImageViewNewReusableView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYLIVipHeaderImageViewNewReusableView.xib; sourceTree = "<group>"; };
+		906815072D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipHeaderImageViewGroupModel.h; sourceTree = "<group>"; };
+		906815082D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipHeaderImageViewGroupModel.m; sourceTree = "<group>"; };
+		9068150A2D53649700FE123F /* NYLiVipBuyNewView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLiVipBuyNewView.h; sourceTree = "<group>"; };
+		9068150B2D53649700FE123F /* NYLiVipBuyNewView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLiVipBuyNewView.m; sourceTree = "<group>"; };
+		9068150D2D5364CD00FE123F /* NYLiVipBuyNewView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYLiVipBuyNewView.xib; sourceTree = "<group>"; };
+		906815102D544F7600FE123F /* NYLiVipContentNewCell01.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLiVipContentNewCell01.h; sourceTree = "<group>"; };
+		906815112D544F7600FE123F /* NYLiVipContentNewCell01.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLiVipContentNewCell01.m; sourceTree = "<group>"; };
+		906815122D544F7600FE123F /* NYLiVipContentNewCell01.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYLiVipContentNewCell01.xib; sourceTree = "<group>"; };
+		906815162D54525300FE123F /* NYLIVipContentNewItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipContentNewItemViewModel.h; sourceTree = "<group>"; };
+		906815172D54525300FE123F /* NYLIVipContentNewItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipContentNewItemViewModel.m; sourceTree = "<group>"; };
+		906815192D54ACB600FE123F /* NYLIVipAuthorityNewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipAuthorityNewCell.h; sourceTree = "<group>"; };
+		9068151A2D54ACB600FE123F /* NYLIVipAuthorityNewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipAuthorityNewCell.m; sourceTree = "<group>"; };
+		9068151B2D54ACB600FE123F /* NYLIVipAuthorityNewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYLIVipAuthorityNewCell.xib; sourceTree = "<group>"; };
+		9068151E2D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipAuthorityNewItemViewModel.h; sourceTree = "<group>"; };
+		9068151F2D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipAuthorityNewItemViewModel.m; sourceTree = "<group>"; };
 		906D06A22CCF8F6E004F51B4 /* NYChartMatrixViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYChartMatrixViewCell.h; sourceTree = "<group>"; };
 		906D06A32CCF8F6E004F51B4 /* NYChartMatrixViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYChartMatrixViewCell.m; sourceTree = "<group>"; };
 		906D06A42CCF8F6E004F51B4 /* NYChartMatrixView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYChartMatrixView.m; sourceTree = "<group>"; };
@@ -1962,6 +2005,9 @@
 		90798B0E2A52AE2600E68461 /* ComplaintDataModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ComplaintDataModel.m; sourceTree = "<group>"; };
 		90798B102A53E87800E68461 /* NYComplaintListViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYComplaintListViewModel.h; sourceTree = "<group>"; };
 		90798B112A53E87800E68461 /* NYComplaintListViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYComplaintListViewModel.m; sourceTree = "<group>"; };
+		90851D332D43854F00AA0034 /* NYLIVipCoachContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipCoachContentView.h; sourceTree = "<group>"; };
+		90851D342D43854F00AA0034 /* NYLIVipCoachContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipCoachContentView.m; sourceTree = "<group>"; };
+		90851D362D43856300AA0034 /* NYLIVipCoachContentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYLIVipCoachContentView.xib; sourceTree = "<group>"; };
 		908592102BB7B4CC005D2507 /* AESCipher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AESCipher.m; sourceTree = "<group>"; };
 		908592112BB7B4CC005D2507 /* AESCipher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AESCipher.h; sourceTree = "<group>"; };
 		908E6E632A89CCFC0090F00A /* DrCityInfoThree.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = DrCityInfoThree.json; sourceTree = "<group>"; };
@@ -2003,6 +2049,11 @@
 		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>"; };
+		90B32CF72D55A6EE00DD19C3 /* NYLIVipPriceCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipPriceCell.h; sourceTree = "<group>"; };
+		90B32CF82D55A6EE00DD19C3 /* NYLIVipPriceCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipPriceCell.m; sourceTree = "<group>"; };
+		90B32CF92D55A6EE00DD19C3 /* NYLIVipPriceCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYLIVipPriceCell.xib; sourceTree = "<group>"; };
+		90B32CFC2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYLIVipSinglePriceItemViewModel.h; sourceTree = "<group>"; };
+		90B32CFD2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYLIVipSinglePriceItemViewModel.m; sourceTree = "<group>"; };
 		90BA2E7F2A3177B50029A54A /* NYTheoryTimeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYTheoryTimeVC.h; sourceTree = "<group>"; };
 		90BA2E802A3177B50029A54A /* NYTheoryTimeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYTheoryTimeVC.m; sourceTree = "<group>"; };
 		90BA2E842A3177DE0029A54A /* NYGetjobTimeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYGetjobTimeVC.h; sourceTree = "<group>"; };
@@ -4715,6 +4766,51 @@
 			path = ..;
 			sourceTree = "<group>";
 		};
+		9003DDCE2D421B3600DBF457 /* XLIModule */ = {
+			isa = PBXGroup;
+			children = (
+				9003DDD42D421C5600DBF457 /* NYXLIModule.h */,
+				9003DDD52D421C5600DBF457 /* NYXLIModule.m */,
+				9003DDDC2D4222D200DBF457 /* ViewModel */,
+				9003DDD02D421B4C00DBF457 /* View */,
+				9003DDCF2D421B3B00DBF457 /* Controller */,
+			);
+			path = XLIModule;
+			sourceTree = "<group>";
+		};
+		9003DDCF2D421B3B00DBF457 /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				9003DDD72D421CE400DBF457 /* NYLIVipCoachViewController.h */,
+				9003DDD82D421CE400DBF457 /* NYLIVipCoachViewController.m */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		9003DDD02D421B4C00DBF457 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				90851D332D43854F00AA0034 /* NYLIVipCoachContentView.h */,
+				90851D342D43854F00AA0034 /* NYLIVipCoachContentView.m */,
+				90851D362D43856300AA0034 /* NYLIVipCoachContentView.xib */,
+				906814FD2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.h */,
+				906814FE2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.m */,
+				906815012D53587A00FE123F /* NYLIVipHeaderImageViewNewReusableView.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		9003DDDC2D4222D200DBF457 /* ViewModel */ = {
+			isa = PBXGroup;
+			children = (
+				9003DDDD2D42231100DBF457 /* NYLIVipCoachViewModel.h */,
+				9003DDDE2D42231100DBF457 /* NYLIVipCoachViewModel.m */,
+				906815072D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.h */,
+				906815082D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.m */,
+			);
+			path = ViewModel;
+			sourceTree = "<group>";
+		};
 		90044C3C2A4EAEA9003FBBF8 /* ComplaintModule */ = {
 			isa = PBXGroup;
 			children = (
@@ -4811,6 +4907,35 @@
 			path = ExerciseQuestion;
 			sourceTree = "<group>";
 		};
+		9068150F2D544EEA00FE123F /* 小李 */ = {
+			isa = PBXGroup;
+			children = (
+				906815102D544F7600FE123F /* NYLiVipContentNewCell01.h */,
+				906815112D544F7600FE123F /* NYLiVipContentNewCell01.m */,
+				906815122D544F7600FE123F /* NYLiVipContentNewCell01.xib */,
+				906815192D54ACB600FE123F /* NYLIVipAuthorityNewCell.h */,
+				9068151A2D54ACB600FE123F /* NYLIVipAuthorityNewCell.m */,
+				9068151B2D54ACB600FE123F /* NYLIVipAuthorityNewCell.xib */,
+				90B32CF72D55A6EE00DD19C3 /* NYLIVipPriceCell.h */,
+				90B32CF82D55A6EE00DD19C3 /* NYLIVipPriceCell.m */,
+				90B32CF92D55A6EE00DD19C3 /* NYLIVipPriceCell.xib */,
+			);
+			path = "小李";
+			sourceTree = "<group>";
+		};
+		906815152D54519800FE123F /* 小李 */ = {
+			isa = PBXGroup;
+			children = (
+				906815162D54525300FE123F /* NYLIVipContentNewItemViewModel.h */,
+				906815172D54525300FE123F /* NYLIVipContentNewItemViewModel.m */,
+				9068151E2D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.h */,
+				9068151F2D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.m */,
+				90B32CFC2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.h */,
+				90B32CFD2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.m */,
+			);
+			path = "小李";
+			sourceTree = "<group>";
+		};
 		906D06A02CCF8F6E004F51B4 /* NYChartMatrixView */ = {
 			isa = PBXGroup;
 			children = (
@@ -7146,6 +7271,7 @@
 			isa = PBXGroup;
 			children = (
 				D00A16B027557D0800793046 /* OtherModules.h */,
+				9003DDCE2D421B3600DBF457 /* XLIModule */,
 				D00DFB072934A2BD0049B050 /* ADModule */,
 				D01CF39F28921BFE009EEA12 /* BDQuestionModule */,
 				9074E7E52CBCF27E00283D4D /* ExaminationModule */,
@@ -8010,6 +8136,7 @@
 		D05FC77627CDB45300DA3209 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				9068150F2D544EEA00FE123F /* 小李 */,
 				D0D42C78291A3AC6009AF720 /* 会员中心 */,
 				D0D42C77291A3AA6009AF720 /* 其他 */,
 				D0D42C76291A3A7B009AF720 /* 会员权益 */,
@@ -8055,6 +8182,7 @@
 		D05FC77D27CDBB6100DA3209 /* itemViewModel */ = {
 			isa = PBXGroup;
 			children = (
+				906815152D54519800FE123F /* 小李 */,
 				D05A320A29220BB5002EB3E2 /* 会员中心 */,
 				D05A320929220BA2002EB3E2 /* OOP */,
 				D05A320829220B8A002EB3E2 /* 会员权益 */,
@@ -9595,6 +9723,9 @@
 				D0C44C422902811A0061B812 /* RQVipBuyNewView.h */,
 				D0C44C432902811A0061B812 /* RQVipBuyNewView.m */,
 				D0C44C45290281490061B812 /* RQVipBuyNewView.xib */,
+				9068150A2D53649700FE123F /* NYLiVipBuyNewView.h */,
+				9068150B2D53649700FE123F /* NYLiVipBuyNewView.m */,
+				9068150D2D5364CD00FE123F /* NYLiVipBuyNewView.xib */,
 			);
 			path = "购买";
 			sourceTree = "<group>";
@@ -10241,6 +10372,7 @@
 				TargetAttributes = {
 					185F22991BE6F38500720049 = {
 						CreatedOnToolsVersion = 6.4;
+						LastSwiftMigration = 1620;
 						ProvisioningStyle = Automatic;
 						SystemCapabilities = {
 							com.apple.BackgroundModes = {
@@ -10286,6 +10418,7 @@
 				D0295CFA243F0B8C00B46AB1 /* 1-2-1.jpg in Resources */,
 				D0295C77243F0B8B00B46AB1 /* 1-4-105.jpg in Resources */,
 				D0295BE4243F0B8B00B46AB1 /* 1-8-20.jpg in Resources */,
+				906815022D53587A00FE123F /* NYLIVipHeaderImageViewNewReusableView.xib in Resources */,
 				D0295B93243F0B8A00B46AB1 /* 1-4-50.jpg in Resources */,
 				D0295C50243F0B8B00B46AB1 /* 1-8-14.jpg in Resources */,
 				D0295CD8243F0B8C00B46AB1 /* 1-5-22.jpg in Resources */,
@@ -10541,6 +10674,7 @@
 				D0295C6A243F0B8B00B46AB1 /* 1-5-3.jpg in Resources */,
 				D057C1C129F50FC5002F4AB2 /* RQPlaceDetailNoteIntroduceCell.xib in Resources */,
 				D0295BC7243F0B8B00B46AB1 /* 1-10-26.jpg in Resources */,
+				90851D372D43856300AA0034 /* NYLIVipCoachContentView.xib in Resources */,
 				D0295C2B243F0B8B00B46AB1 /* 1-3-11.jpg in Resources */,
 				D0295B8F243F0B8A00B46AB1 /* 1-9-10.jpg in Resources */,
 				D057C1C529F50FC5002F4AB2 /* RQPlaceListCell.xib in Resources */,
@@ -10595,6 +10729,7 @@
 				D0295D2E243F0B8C00B46AB1 /* 1-4-73.jpg in Resources */,
 				D06F5450291BA18000C65F02 /* RQVipPriceCell.xib in Resources */,
 				D0D1F69D283F84E00086C6AE /* RQExerciseCatalogueCell.xib in Resources */,
+				906815142D544F7600FE123F /* NYLiVipContentNewCell01.xib in Resources */,
 				D0295C1C243F0B8B00B46AB1 /* 1-1-8.jpg in Resources */,
 				90C6401A2CF7078A00F53201 /* MultilevelTableViewCell.xib in Resources */,
 				D0295D80243F0B8C00B46AB1 /* light2.mp3 in Resources */,
@@ -10690,6 +10825,7 @@
 				D0D1F69A283F84E00086C6AE /* RQCountdownView.xib in Resources */,
 				D0295B7F243F0B8A00B46AB1 /* 1-10-20.jpg in Resources */,
 				D0295D6E243F0B8C00B46AB1 /* voice5.mp3 in Resources */,
+				9068150E2D5364CD00FE123F /* NYLiVipBuyNewView.xib in Resources */,
 				D0295BAD243F0B8A00B46AB1 /* 1-4-79.jpg in Resources */,
 				D0295C5E243F0B8B00B46AB1 /* 1-1-7.jpg in Resources */,
 				D0295C29243F0B8B00B46AB1 /* 1-4-24.jpg in Resources */,
@@ -10867,6 +11003,7 @@
 				D0295C2E243F0B8B00B46AB1 /* 1-9-3.jpg in Resources */,
 				D0295B9F243F0B8A00B46AB1 /* 3-13-1.jpg in Resources */,
 				D0295D71243F0B8C00B46AB1 /* voice15.mp3 in Resources */,
+				9068151D2D54ACB600FE123F /* NYLIVipAuthorityNewCell.xib in Resources */,
 				D0295B73243F0B8A00B46AB1 /* 1-10-9.jpg in Resources */,
 				D0295BDA243F0B8B00B46AB1 /* 1-8-21.jpg in Resources */,
 				D0295CC2243F0B8B00B46AB1 /* 1-6-15.jpg in Resources */,
@@ -10965,6 +11102,7 @@
 				D0295D60243F0B8C00B46AB1 /* img06.png in Resources */,
 				D0295BF4243F0B8B00B46AB1 /* 1-4-36.jpg in Resources */,
 				D0295D54243F0B8C00B46AB1 /* img02.png in Resources */,
+				90B32CFB2D55A6EE00DD19C3 /* NYLIVipPriceCell.xib in Resources */,
 				D0B2D50B289BC6DB00D6C5F4 /* RQErrorAndCollectCell.xib in Resources */,
 				D0295CB5243F0B8B00B46AB1 /* 1-11-5.jpg in Resources */,
 				D0295BD0243F0B8B00B46AB1 /* 1-11-15.jpg in Resources */,
@@ -11177,6 +11315,7 @@
 				D0870D8A2701A6B9004EC94E /* UIGestureRecognizer+YYAdd.m in Sources */,
 				D09E5D4C25E3AA260099E87C /* BDFaceSelectRadio.m in Sources */,
 				D0870D8E2701A6BA004EC94E /* NSArray+YYAdd.m in Sources */,
+				906815132D544F7600FE123F /* NYLiVipContentNewCell01.m in Sources */,
 				D00A150D2754A41C00793046 /* MoreSectionHeadView.m in Sources */,
 				D0870E362701B5A0004EC94E /* RQVerificationSmsCodeViewModel.m in Sources */,
 				D04DF6CC27006C57006E3633 /* CommonProfileHeaderItemViewModel.m in Sources */,
@@ -11268,6 +11407,7 @@
 				D04DF6D327006C57006E3633 /* RQCommonHeaderView.m in Sources */,
 				18ABA2EE1C3A872F0089E0A0 /* PicSymbol.m in Sources */,
 				D057C1FA29F5107A002F4AB2 /* RQPlaceDetaiIDescribeItemViewModel.m in Sources */,
+				906815092D535CA000FE123F /* NYLIVipHeaderImageViewGroupModel.m in Sources */,
 				D0DF83E727D09BAE00547504 /* RQPrepareOrderModel.m in Sources */,
 				D0D2D0CE2861CC4B004E31E6 /* RQHoursBeforeExamHomeViewController.m in Sources */,
 				D022FAFD28D1D5C30081E243 /* QMUIImagePreviewViewController+RQExtension.m in Sources */,
@@ -11293,6 +11433,7 @@
 				D0295ECD243F1EC800B46AB1 /* payRequsestHandler.mm in Sources */,
 				90C3D1B22D01492E00126535 /* NYBlockExerciseViewModel.m in Sources */,
 				9040D2882B6F7E07002F4686 /* NYClassRoomViewModel.m in Sources */,
+				90B32CFA2D55A6EE00DD19C3 /* NYLIVipPriceCell.m in Sources */,
 				D04DF7A327006F72006E3633 /* UISearchBar+RQExtension.m in Sources */,
 				D0481FEB2863284A00BD0E4E /* RQSpecialAddCell.m in Sources */,
 				D084D86D27CDFC5D00E521F0 /* RQVipAllFunctionCell.m in Sources */,
@@ -11407,6 +11548,7 @@
 				D0870D932701A6BA004EC94E /* NSThread+YYAdd.m in Sources */,
 				D0E8D7C428D874F900107E40 /* RQVipReminderItemViewModel.m in Sources */,
 				D0BD14EA256B52E400BA71CA /* APPdelegateModularForTest.m in Sources */,
+				90851D352D43854F00AA0034 /* NYLIVipCoachContentView.m in Sources */,
 				D057C1C929F50FC5002F4AB2 /* RQPlaceBuyCell.m in Sources */,
 				D0481FF9286328E800BD0E4E /* RQSpecialQuestionItemViewModel.m in Sources */,
 				D09E5D5125E3AA260099E87C /* BDFaceAgreementViewController.m in Sources */,
@@ -11434,6 +11576,7 @@
 				D0870D7E2701A6B9004EC94E /* YYThreadSafeDictionary.m in Sources */,
 				D06F544B291B8E3100C65F02 /* RQVipHeaderImageViewNewGroupViewModel.m in Sources */,
 				D0F283B7292DB68300D89E2B /* JXCategoryListContainerView+RQExtension.m in Sources */,
+				906815202D54AD5E00FE123F /* NYLIVipAuthorityNewItemViewModel.m in Sources */,
 				D029D530224A26280094B99A /* APPdelegateModularForSystemSetting.m in Sources */,
 				D02010E429373AE8001B9F4D /* UIView+SLImage.m in Sources */,
 				D004D7EF27FE60BA00A96946 /* RQYDTZGZKYQuestionModule.m in Sources */,
@@ -11542,6 +11685,7 @@
 				D0870D9F2701A6BA004EC94E /* YYFileHash.m in Sources */,
 				D0D0459C27477C2100257D01 /* RQTimeViewController.m in Sources */,
 				D04DF6CA27006C57006E3633 /* RQCommonArrowItemViewModel.m in Sources */,
+				9003DDDB2D421CE400DBF457 /* NYLIVipCoachViewController.m in Sources */,
 				D04DF79627006F72006E3633 /* XHLaunchAdButton+RQExtension.m in Sources */,
 				D05CB3DD2763216A006895F3 /* RQHomeSubPageVideoScrollViewController.m in Sources */,
 				D0D1F6A2283F84E00086C6AE /* RQExerciseCatalogueCell.m in Sources */,
@@ -11689,6 +11833,7 @@
 				D00A14B82754A3D600793046 /* ZFPlayerControlView+RQExtension.m in Sources */,
 				D02010D829373AE8001B9F4D /* SLEditMenuView.m in Sources */,
 				D0324DA92823BF79004A7DF5 /* RQChooseCarTypeViewController.m in Sources */,
+				90B32CFE2D55A8B000DD19C3 /* NYLIVipSinglePriceItemViewModel.m in Sources */,
 				D0D1F6A8283F84E00086C6AE /* JXCategoryTitleBackgroundView.m in Sources */,
 				D074575C29272C680050BE10 /* QMFileManager.m in Sources */,
 				D0870D9B2701A6BA004EC94E /* NSObject+YYAddForKVO.m in Sources */,
@@ -11751,6 +11896,7 @@
 				D0870D912701A6BA004EC94E /* NSObject+YYAdd.m in Sources */,
 				D02947A0243EF3DB00B46AB1 /* NSDataEx.m in Sources */,
 				D0D1F68A283F84DF0086C6AE /* RQHTTPService+RQAddCollectionRecord.m in Sources */,
+				9003DDD62D421C5600DBF457 /* NYXLIModule.m in Sources */,
 				D04DF79727006F72006E3633 /* UIView+RQExtension_Layer.m in Sources */,
 				D0294814243F07E300B46AB1 /* CDPStarEvaluation.m in Sources */,
 				90FCD6A72BB517AF00E0CB61 /* NYTcarStudentLiveModel.m in Sources */,
@@ -11788,6 +11934,7 @@
 				D029479E243EF3DB00B46AB1 /* MD5DataSigner.m in Sources */,
 				D074573D29272C680050BE10 /* QMChatRoomNoteCell.m in Sources */,
 				D0870E322701B5A0004EC94E /* RQLoginViewModel.m in Sources */,
+				906815182D54525300FE123F /* NYLIVipContentNewItemViewModel.m in Sources */,
 				D0870E3B2701B5A0004EC94E /* RQUpdatePasswordViewController.m in Sources */,
 				D0870E4F2701B5A0004EC94E /* RQHTTPService+RQVerificationSmsCode.m in Sources */,
 				D04DF7A127006F72006E3633 /* UIViewController+RQExtension.m in Sources */,
@@ -11828,6 +11975,7 @@
 				D0870D632701A6B9004EC94E /* NSMutableOrderedSet+BlocksKit.m in Sources */,
 				D0295E97243F1A8400B46AB1 /* DES3Util.m in Sources */,
 				D0870D652701A6B9004EC94E /* NSObject+BKAssociatedObjects.m in Sources */,
+				9068151C2D54ACB600FE123F /* NYLIVipAuthorityNewCell.m in Sources */,
 				D0870D832701A6B9004EC94E /* UIDevice+YYAdd.m in Sources */,
 				D00A15072754A41C00793046 /* RQVideoDetailSubPageSectionHeaderView.m in Sources */,
 				D04DF7BB27006F72006E3633 /* RQHTTPService.m in Sources */,
@@ -11919,6 +12067,7 @@
 				90C6401E2CF7078A00F53201 /* ProductCateFilteHeaderView.m in Sources */,
 				90044C362A4E7BF7003FBBF8 /* NYFloatingSuggestView.m in Sources */,
 				D074573129272C670050BE10 /* SJVoiceTransform.m in Sources */,
+				906814FF2D53582C00FE123F /* NYLIVipHeaderImageViewNewReusableView.m in Sources */,
 				D04DF7A827006F72006E3633 /* NSObject+RQExtension.m in Sources */,
 				D029479F243EF3DB00B46AB1 /* RSADataVerifier.m in Sources */,
 				D02010D729373AE8001B9F4D /* SLDrawView.m in Sources */,
@@ -12004,6 +12153,7 @@
 				D0294804243F07E300B46AB1 /* RGCardViewLayout.m in Sources */,
 				9074E7F12CBD047300283D4D /* NYExaminationModule.m in Sources */,
 				D02010C029373AE8001B9F4D /* SLAvEditExport.m in Sources */,
+				9068150C2D53649700FE123F /* NYLiVipBuyNewView.m in Sources */,
 				D05CB3B12763216A006895F3 /* RQHomeSubPageViewModel.m in Sources */,
 				90BA2EA32A330D180029A54A /* NYGetjobTimeViewModel.m in Sources */,
 				900A2DE32A1FA89700395C1F /* RQAppDelegate.m in Sources */,
@@ -12014,6 +12164,7 @@
 				D05A6FB227F2E5F100C096DB /* RQYDTUserQuestionModule.m in Sources */,
 				D0870E442701B5A0004EC94E /* RQHTTPService+RQUpdatePassword.m in Sources */,
 				D074573E29272C680050BE10 /* QMChatRoomRobotCell.m in Sources */,
+				9003DDDF2D42231100DBF457 /* NYLIVipCoachViewModel.m in Sources */,
 				90A332C42D099637009DA36D /* NYFailSpecialExerciseGroupViewModel.m in Sources */,
 				D0870D7C2701A6B9004EC94E /* NSObject+A2DynamicDelegate.m in Sources */,
 				D057C1D029F50FC5002F4AB2 /* RQPlaceListTableViewHeaderView.m in Sources */,
@@ -12290,6 +12441,9 @@
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
 				SUPPORTS_MACCATALYST = NO;
 				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+				SWIFT_OBJC_BRIDGING_HEADER = "jiaPei/Modules/OtherModules/XLIModule/Controller/jiaPei-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 6.0;
 				TARGETED_DEVICE_FAMILY = 1;
 				VALIDATE_WORKSPACE = NO;
 				WARNING_CFLAGS = "-Wno-shorten-64-to-32";
@@ -12372,6 +12526,8 @@
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
 				SUPPORTS_MACCATALYST = NO;
 				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+				SWIFT_OBJC_BRIDGING_HEADER = "jiaPei/Modules/OtherModules/XLIModule/Controller/jiaPei-Bridging-Header.h";
+				SWIFT_VERSION = 6.0;
 				TARGETED_DEVICE_FAMILY = 1;
 				VALIDATE_WORKSPACE = NO;
 				WARNING_CFLAGS = "-Wno-shorten-64-to-32";

BIN
jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate


+ 22 - 0
jiaPei/Images.xcassets/Modules/小李视频/li_back_white.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "li_back_white@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "li_back_white@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/小李视频/li_back_white.imageset/li_back_white@2x.png


BIN
jiaPei/Images.xcassets/Modules/小李视频/li_back_white.imageset/li_back_white@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/小李视频/li_tis_deng.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "li_tis_deng@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "li_tis_deng@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/小李视频/li_tis_deng.imageset/li_tis_deng@2x.png


BIN
jiaPei/Images.xcassets/Modules/小李视频/li_tis_deng.imageset/li_tis_deng@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg01.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "li_zu_kbg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "li_zu_kbg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg01.imageset/li_zu_kbg@2x.png


BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg01.imageset/li_zu_kbg@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg02.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "li_zu_kbg02@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "li_zu_kbg02@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg02.imageset/li_zu_kbg02@2x.png


BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg02.imageset/li_zu_kbg02@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg03.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "li_zu_kbg03@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "li_zu_kbg03@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg03.imageset/li_zu_kbg03@2x.png


BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_kbg03.imageset/li_zu_kbg03@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/小李视频/li_zu_point.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "li_zu_point@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "li_zu_point@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_point.imageset/li_zu_point@2x.png


BIN
jiaPei/Images.xcassets/Modules/小李视频/li_zu_point.imageset/li_zu_point@3x.png


+ 17 - 0
jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m

@@ -126,6 +126,23 @@
 
 //VIP课程
 - (IBAction)btnVipAction:(UIButton *)sender {
+    NSString *dictType = @"vip_coach_package";
+    [MBProgressHUD rq_showProgressHUD:@"获取VIP套餐..."];
+    [[RQ_HTTP_Service getTypeWithDictType:dictType] subscribeNext:^(NSArray *typeModels) {
+        [MBProgressHUD rq_hideHUD];
+        NYLIVipCoachViewModel *livipCoachViewModel = [[NYLIVipCoachViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
+            RQViewModelIDKey : @(RQVIPPageType_Full),
+            RQViewModelUtilKey : typeModels,
+            RQViewCommonValueKey : @(RQHomePageSubjectType_SubjectOne),
+        }];
+        [RQ_APPDELEGATE.services pushViewModel:livipCoachViewModel animated:YES];
+    } error:^(NSError * _Nullable error) {
+        [MBProgressHUD rq_hideHUD];
+        [MBProgressHUD rq_showErrorTips:error];
+    }];
+    
+
+    return;
     [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
         if (isVip) {
             [RQ_VIP_Module gotoVipCenter];

+ 1 - 1
jiaPei/Modules/OtherModules/OtherModules.h

@@ -18,5 +18,5 @@
 #import "RQVideoModule.h"
 #import "RQVIPModule.h"
 #import "RQStudentChangeSchoolModule.h"
-
+#import "NYXLIModule.h"
 #endif /* OtherModules_h */

+ 5 - 6
jiaPei/Modules/OtherModules/SimulateModular/ScanPage/Controller/ScanResultVC.xib

@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" 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="14088"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -27,7 +25,7 @@
                             <string key="content">张三,欢迎您!
 已成功登录模拟设备【辽66666学】,祝您体验愉快</string>
                             <attributes>
-                                <font key="NSFont" size="15" name=".PingFangSC-Regular"/>
+                                <font key="NSFont" metaFont="system" size="15"/>
                                 <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineHeightMultiple="1.2" tighteningFactorForTruncation="0.0"/>
                             </attributes>
                         </fragment>
@@ -42,6 +40,7 @@
                 <constraint firstItem="6YP-RP-8Kl" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="20" id="T3F-fj-PsC"/>
                 <constraint firstAttribute="trailing" secondItem="6YP-RP-8Kl" secondAttribute="trailing" constant="15" id="WpT-9V-zFv"/>
             </constraints>
+            <point key="canvasLocation" x="-74" y="-48"/>
         </view>
     </objects>
 </document>

+ 17 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipAuthorityNewCell.h

@@ -0,0 +1,17 @@
+//
+//  NYLIVipAuthorityNewCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/6.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipAuthorityNewCell : RQCommonCollectionViewCell
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 56 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipAuthorityNewCell.m

@@ -0,0 +1,56 @@
+//
+//  NYLIVipAuthorityNewCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/6.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipAuthorityNewCell.h"
+
+@interface NYLIVipAuthorityNewCell ()
+@property (nonatomic, readwrite, strong) NYLIVipAuthorityNewItemViewModel *viewModel;
+@property (weak, nonatomic) IBOutlet UIImageView *bgImageView;
+
+@property (weak, nonatomic) IBOutlet UILabel *title_label01;
+
+@property (weak, nonatomic) IBOutlet UILabel *title_label02;
+
+@property (weak, nonatomic) IBOutlet UILabel *title_label03;
+
+@end
+
+
+@implementation NYLIVipAuthorityNewCell
+#pragma mark - PublicMethods
++ (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
+    static NSString *ID = @"NYLIVipAuthorityNewCell";
+    [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
+    NYLIVipAuthorityNewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
+    if (!cell) cell = [self rq_viewFromXib];
+    return cell;
+}
+
+- (void)bindViewModel:(NYLIVipAuthorityNewItemViewModel *)viewModel {
+    @weakify(self)
+    _viewModel = viewModel;
+    [[[RACObserve(viewModel, bgImageName) deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal] subscribeNext:^(id  _Nullable x) {
+        @strongify(self)
+        self.bgImageView.image = RQImageNamed(viewModel.bgImageName);
+    }];
+    
+    RAC(self.title_label01, text) = [[RACObserve(viewModel, authorityTitle) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    
+    RAC(self.title_label02, text) = [[RACObserve(viewModel, authorityTitle01) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    
+    RAC(self.title_label03, text) = [[RACObserve(viewModel, authorityTitle02) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    
+}
+
+#pragma mark - SystemMethods
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+@end

+ 105 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipAuthorityNewCell.xib

@@ -0,0 +1,105 @@
+<?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" useSafeAreas="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="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"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="dtd-7m-58e" customClass="NYLIVipAuthorityNewCell">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="160"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="160"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_zu_kbg01" translatesAutoresizingMaskIntoConstraints="NO" id="dhf-ri-UwI">
+                        <rect key="frame" x="5" y="5" width="365" height="150"/>
+                    </imageView>
+                    <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pYw-3J-7fq">
+                        <rect key="frame" x="30" y="20" width="305" height="125"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_精简500题" translatesAutoresizingMaskIntoConstraints="NO" id="TxN-RL-Fan">
+                                <rect key="frame" x="0.0" y="0.0" width="48" height="125"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="48" id="oBd-XP-2qp"/>
+                                </constraints>
+                            </imageView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l7X-Mu-8W7">
+                                <rect key="frame" x="48" y="0.0" width="257" height="125"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="尊享科一特训包权益" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cy9-dx-o47">
+                                        <rect key="frame" x="10" y="15" width="237" height="25"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="25" id="rKo-Uw-F2t"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
+                                        <color key="textColor" red="0.12549019607843137" green="0.23529411764705882" blue="0.396078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Zl-ZT-MIy">
+                                        <rect key="frame" x="10" y="65" width="237" height="35"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="35" id="i5m-dU-IxE"/>
+                                        </constraints>
+                                        <string key="text">分类讲解,深入解析易错题
+同款题库模拟,助你轻松过关</string>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" red="0.36078431372549019" green="0.37647058823529411" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="精选 500题,覆盖高频考点" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kac-ve-QKj">
+                                        <rect key="frame" x="10" y="40" width="237" height="25"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="25" id="wU9-eX-XkW"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                                        <color key="textColor" red="0.16862745098039217" green="0.43529411764705883" blue="0.83137254901960778" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstAttribute="trailing" secondItem="Cy9-dx-o47" secondAttribute="trailing" constant="10" id="0AS-uH-mb7"/>
+                                    <constraint firstAttribute="trailing" secondItem="4Zl-ZT-MIy" secondAttribute="trailing" constant="10" id="7BG-AY-Y00"/>
+                                    <constraint firstAttribute="trailing" secondItem="kac-ve-QKj" secondAttribute="trailing" constant="10" id="PKq-dZ-ITj"/>
+                                    <constraint firstItem="4Zl-ZT-MIy" firstAttribute="leading" secondItem="l7X-Mu-8W7" secondAttribute="leading" constant="10" id="PNU-P4-y7V"/>
+                                    <constraint firstItem="4Zl-ZT-MIy" firstAttribute="top" secondItem="kac-ve-QKj" secondAttribute="bottom" id="UZE-aE-Va9"/>
+                                    <constraint firstItem="Cy9-dx-o47" firstAttribute="leading" secondItem="l7X-Mu-8W7" secondAttribute="leading" constant="10" id="YCv-3J-Uk3"/>
+                                    <constraint firstItem="kac-ve-QKj" firstAttribute="leading" secondItem="l7X-Mu-8W7" secondAttribute="leading" constant="10" id="pUi-uj-2he"/>
+                                    <constraint firstItem="Cy9-dx-o47" firstAttribute="top" secondItem="l7X-Mu-8W7" secondAttribute="top" constant="15" id="wFM-cU-7Pv"/>
+                                    <constraint firstItem="kac-ve-QKj" firstAttribute="top" secondItem="Cy9-dx-o47" secondAttribute="bottom" id="yxW-iV-G3H"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                    </stackView>
+                </subviews>
+            </view>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="dhf-ri-UwI" firstAttribute="top" secondItem="dtd-7m-58e" secondAttribute="top" constant="5" id="58l-3u-Vs3"/>
+                <constraint firstAttribute="trailing" secondItem="dhf-ri-UwI" secondAttribute="trailing" constant="5" id="83T-Hx-FS5"/>
+                <constraint firstAttribute="bottom" secondItem="dhf-ri-UwI" secondAttribute="bottom" constant="5" id="84h-hx-73c"/>
+                <constraint firstItem="pYw-3J-7fq" firstAttribute="leading" secondItem="dtd-7m-58e" secondAttribute="leading" constant="30" id="93S-Dn-Wbz"/>
+                <constraint firstAttribute="trailing" secondItem="pYw-3J-7fq" secondAttribute="trailing" constant="40" id="AJl-gf-P6Q"/>
+                <constraint firstItem="pYw-3J-7fq" firstAttribute="top" secondItem="dtd-7m-58e" secondAttribute="top" constant="20" id="DGt-2J-SZf"/>
+                <constraint firstAttribute="bottom" secondItem="pYw-3J-7fq" secondAttribute="bottom" constant="15" id="fW3-je-LyM"/>
+                <constraint firstItem="dhf-ri-UwI" firstAttribute="leading" secondItem="dtd-7m-58e" secondAttribute="leading" constant="5" id="vFJ-oz-iik"/>
+            </constraints>
+            <connections>
+                <outlet property="bgImageView" destination="dhf-ri-UwI" id="0ZI-Ez-zHM"/>
+                <outlet property="title_label01" destination="Cy9-dx-o47" id="Ox3-XN-zNO"/>
+                <outlet property="title_label02" destination="kac-ve-QKj" id="gSJ-Ca-IcT"/>
+                <outlet property="title_label03" destination="4Zl-ZT-MIy" id="O1A-JB-J4O"/>
+            </connections>
+            <point key="canvasLocation" x="138.1679389312977" y="152.81690140845072"/>
+        </collectionViewCell>
+    </objects>
+    <resources>
+        <image name="li_zu_kbg01" width="363" height="163"/>
+        <image name="li_精简500题" width="48" height="48"/>
+    </resources>
+</document>

+ 17 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipPriceCell.h

@@ -0,0 +1,17 @@
+//
+//  NYLIVipPriceCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/7.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipPriceCell : RQCommonCollectionViewCell
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 163 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipPriceCell.m

@@ -0,0 +1,163 @@
+//
+//  NYLIVipPriceCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/7.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipPriceCell.h"
+
+@interface NYLIVipPriceCell ()
+@property (nonatomic, readwrite, strong) NYLIVipSinglePriceItemViewModel *viewModel;
+@property (weak, nonatomic) IBOutlet UIImageView *myBgView;
+@property (weak, nonatomic) IBOutlet UIStackView *priceView;
+@property (weak, nonatomic) IBOutlet UILabel *nowPriceLabel;
+@property (weak, nonatomic) IBOutlet UILabel *oldPriceLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *myTitleLabel;
+@property (weak, nonatomic) IBOutlet UILabel *saveMoneyLabel;
+@property (weak, nonatomic) IBOutlet UIImageView *saveMoneyLabelBgImageView;
+
+@property (weak, nonatomic) IBOutlet UIButton *recommendBtn;
+
+
+@end
+
+
+@implementation NYLIVipPriceCell
+#pragma mark - PublicMethods
++ (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
+    static NSString *ID = @"NYLIVipPriceCell";
+    [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
+    NYLIVipPriceCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
+    if (!cell) cell = [self rq_viewFromXib];
+    return cell;
+}
+
+- (void)bindViewModel:(NYLIVipSinglePriceItemViewModel *)viewModel {
+    _viewModel = viewModel;
+    @weakify(self)
+    [[[RACObserve(viewModel, isSelect) takeUntil:self.rac_prepareForReuseSignal] distinctUntilChanged] subscribeNext:^(id  _Nullable x) {
+        @strongify(self)
+        if (viewModel.isSelect) {
+            self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
+                corner.radius = QQRadiusMake(10, 25, 10, 10);
+                corner.borderColor = [UIColor qmui_colorWithHexString:@"#498EF5"];
+                corner.borderWidth = 4;
+                corner.fillColor = [UIColor qmui_colorWithHexString:@"#E6F0FF"];
+            } size:self.myBgView.bounds.size];
+        
+            self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
+                graColor.fromColor = [UIColor qmui_colorWithHexString:@"#4C99E0"];
+                graColor.toColor = [UIColor qmui_colorWithHexString:@"#70B7F3"];
+                graColor.type = QQGradualChangeTypeLeftToRight;
+            } QQCorner:^(QQCorner *corner) {
+                corner.radius = QQRadiusMake(0, 0, 10, 10);
+                corner.borderColor = [UIColor qmui_colorWithHexString:@"#4C99E0"];
+                corner.borderWidth = 4;
+                corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
+            }  size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
+
+            self.saveMoneyLabel.textColor = RQColorFromHexString(@"#FFFFFF");
+            _nowPriceLabel.textColor = RQColorFromHexString(@"#EE2A2C");
+        } else {
+
+            self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
+                corner.radius = QQRadiusMake(10, 25, 10, 10);
+                corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
+                corner.borderWidth = 2;
+                corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFFFFF"];
+            } size:self.myBgView.bounds.size];
+            self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
+                graColor.fromColor = [UIColor qmui_colorWithHexString:@"#E6F0FF"];
+                graColor.toColor = [UIColor qmui_colorWithHexString:@"#E6F0FF"];
+                graColor.type = QQGradualChangeTypeLeftToRight;
+            } QQCorner:^(QQCorner *corner) {
+                corner.radius = QQRadiusMake(0, 0, 10, 10);
+                corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
+                corner.borderWidth = 2;
+                corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
+            } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
+            self.saveMoneyLabel.textColor = RQColorFromHexString(@"#203C65");
+            _nowPriceLabel.textColor = RQColorFromHexString(@"#203C65");
+        }
+    }];
+    
+    _myTitleLabel.text = viewModel.typeModel.dictLabel;
+   
+   
+    
+    NSString *nowPriceStr;
+    NSString *oldPriceStr;
+    if (RQStringIsNotEmpty(viewModel.typeModel.dictValue) && [viewModel.typeModel.dictValue containsString:@","]) {
+        nowPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","].firstObject;
+        if ([viewModel.typeModel.dictValue componentsSeparatedByString:@","].count >= 2) {
+            oldPriceStr = [viewModel.typeModel.dictValue componentsSeparatedByString:@","][1];
+        } else {
+            oldPriceStr = @"";
+        }
+    } else {
+        nowPriceStr = viewModel.typeModel.dictValue;
+        oldPriceStr = viewModel.typeModel.dictValue;
+    }
+    
+    
+    NSString *str = [NSString stringWithFormat:@"各科单独买¥%@元",oldPriceStr];
+    NSDictionary *attrDic = @{
+                            NSStrikethroughStyleAttributeName: @(1),
+                            NSFontAttributeName : [UIFont systemFontOfSize:10],
+                            NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
+                            
+                            };
+    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str attributes:attrDic];
+    _oldPriceLabel.attributedText = attrStr;
+//    _oldPriceLabel.hidden = [nowPriceStr isEqualToString:oldPriceStr];
+    
+    NSString *nowPrice = [NSString stringWithFormat:@"¥%@",nowPriceStr];
+    NSString *year = [NSString stringWithFormat:@"/1年"];
+    NSString *price = [NSString stringWithFormat:@"%@%@",nowPrice,year];
+    NSMutableAttributedString *nowPriceAttrStr = [[NSMutableAttributedString alloc] initWithString:price];
+    [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQSemiboldFont(32) range:[price rangeOfString:nowPrice]];
+    [nowPriceAttrStr addAttribute:NSFontAttributeName value:RQRegularFont_15 range:[price rangeOfString:year]];
+//    [nowPriceAttrStr addAttribute:NSForegroundColorAttributeName value:[UIColor qmui_colorWithHexString:@"#D9D9D9"] range:[price rangeOfString:year]];
+    
+    _nowPriceLabel.attributedText = nowPriceAttrStr;
+    
+    self.recommendBtn.hidden = ![viewModel.typeModel.dictLabel containsString:@"科一科四特训包"];
+    self.oldPriceLabel.hidden = ![viewModel.typeModel.dictLabel containsString:@"科一科四特训包"];
+}
+
+
+#pragma mark - SystemMethods
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.myBgView.image = [UIImage imageWithQQCorner:^(QQCorner *corner) {
+        corner.radius = QQRadiusMake(10, 25, 10, 10);
+        corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
+        corner.borderWidth = 2;
+        corner.fillColor = [UIColor qmui_colorWithHexString:@"#FFFFFF"];
+    } size:self.myBgView.bounds.size];
+    
+
+    self.saveMoneyLabelBgImageView.image = [UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
+        graColor.fromColor = [UIColor qmui_colorWithHexString:@"#E6F0FF"];
+        graColor.toColor = [UIColor qmui_colorWithHexString:@"#E6F0FF"];
+        graColor.type = QQGradualChangeTypeLeftToRight;
+    } QQCorner:^(QQCorner *corner) {
+        corner.radius = QQRadiusMake(0, 0, 10, 10);
+        corner.borderColor = [UIColor qmui_colorWithHexString:@"#D9D9D9"];
+        corner.borderWidth = 2;
+        corner.borderPosition = QMUIImageBorderPositionLeft|QMUIImageBorderPositionBottom|QMUIImageBorderPositionRight;
+    } size:self.saveMoneyLabelBgImageView.bounds.size cornerRadius:QQRadiusMake(0, 0, 10, 10)];
+    
+    [_recommendBtn setBackgroundImage:[UIImage imageWithGradualChangingColor:^(QQGradualChangingColor *graColor) {
+        graColor.fromColor = [UIColor qmui_colorWithHexString:@"#498EF5"];
+        graColor.toColor = [UIColor qmui_colorWithHexString:@"#4DA8E6"];
+        graColor.type = QQGradualChangeTypeLeftToRight;
+    } size:_recommendBtn.bounds.size cornerRadius:QQRadiusMake(10, 2, 2, 10)] forState:UIControlStateNormal];
+}
+
+
+
+@end

+ 109 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLIVipPriceCell.xib

@@ -0,0 +1,109 @@
+<?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" useSafeAreas="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="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"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="5Em-vx-dTP" customClass="NYLIVipPriceCell">
+            <rect key="frame" x="0.0" y="0.0" width="108" height="139"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="108" height="139"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eBR-HU-QX5" customClass="UIImageView">
+                        <rect key="frame" x="0.0" y="8" width="108" height="131"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="科一1年专项VIP" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FUb-Fd-2fC">
+                                <rect key="frame" x="16" y="15.999999999999996" width="76" height="33.666666666666657"/>
+                                <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="14"/>
+                                <color key="textColor" red="0.12549019607843137" green="0.23529411764705882" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Fqx-Yy-OCy">
+                                <rect key="frame" x="0.0" y="102.33333333333333" width="108" height="28.666666666666671"/>
+                            </imageView>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="轻松拿证" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="ecd-qu-oha">
+                                <rect key="frame" x="0.0" y="102.33333333333333" width="108" height="28.666666666666671"/>
+                                <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="13"/>
+                                <color key="textColor" red="0.12549019607843137" green="0.23529411764705882" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" translatesAutoresizingMaskIntoConstraints="NO" id="Xgi-yV-R6i">
+                                <rect key="frame" x="4" y="39.333333333333329" width="100" height="52.333333333333329"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥19/半年" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.80000001192092896" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MMa-u5-XH1">
+                                        <rect key="frame" x="0.0" y="0.0" width="100" height="35.666666666666664"/>
+                                        <fontDescription key="fontDescription" type="boldSystem" pointSize="24"/>
+                                        <color key="textColor" red="0.12549019607843137" green="0.23529411764705882" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="各科单独买¥120" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="583-WX-7wg">
+                                        <rect key="frame" x="0.0" y="35.666666666666664" width="100" height="16.666666666666664"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
+                                        <color key="textColor" red="0.54117647059999996" green="0.56470588239999997" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                            </stackView>
+                        </subviews>
+                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstItem="FUb-Fd-2fC" firstAttribute="top" secondItem="eBR-HU-QX5" secondAttribute="top" constant="16" id="61h-jk-dTR"/>
+                            <constraint firstItem="Xgi-yV-R6i" firstAttribute="height" secondItem="eBR-HU-QX5" secondAttribute="height" multiplier="0.4" id="7P5-w6-8zh"/>
+                            <constraint firstItem="Fqx-Yy-OCy" firstAttribute="bottom" secondItem="ecd-qu-oha" secondAttribute="bottom" id="Jef-yq-JWV"/>
+                            <constraint firstAttribute="trailing" secondItem="ecd-qu-oha" secondAttribute="trailing" id="WeP-hf-X4s"/>
+                            <constraint firstItem="Fqx-Yy-OCy" firstAttribute="top" secondItem="ecd-qu-oha" secondAttribute="top" id="XAD-Fv-cgT"/>
+                            <constraint firstAttribute="trailing" secondItem="FUb-Fd-2fC" secondAttribute="trailing" constant="16" id="Zj0-rK-Ol4"/>
+                            <constraint firstItem="Xgi-yV-R6i" firstAttribute="centerY" secondItem="eBR-HU-QX5" secondAttribute="centerY" id="ZoJ-O4-jo1"/>
+                            <constraint firstItem="ecd-qu-oha" firstAttribute="height" secondItem="eBR-HU-QX5" secondAttribute="height" multiplier="27:124" id="ebb-7A-H1Z"/>
+                            <constraint firstItem="Xgi-yV-R6i" firstAttribute="leading" secondItem="eBR-HU-QX5" secondAttribute="leading" constant="4" id="gLu-qQ-Cfv"/>
+                            <constraint firstItem="FUb-Fd-2fC" firstAttribute="leading" secondItem="eBR-HU-QX5" secondAttribute="leading" constant="16" id="lyV-k5-CkF"/>
+                            <constraint firstAttribute="bottom" secondItem="ecd-qu-oha" secondAttribute="bottom" id="m8X-LJ-EfL"/>
+                            <constraint firstItem="ecd-qu-oha" firstAttribute="leading" secondItem="eBR-HU-QX5" secondAttribute="leading" id="mcz-ii-GzL"/>
+                            <constraint firstItem="Fqx-Yy-OCy" firstAttribute="leading" secondItem="ecd-qu-oha" secondAttribute="leading" id="nvf-f8-6GU"/>
+                            <constraint firstAttribute="trailing" secondItem="Xgi-yV-R6i" secondAttribute="trailing" constant="4" id="uAm-1d-i3o"/>
+                            <constraint firstItem="Fqx-Yy-OCy" firstAttribute="trailing" secondItem="ecd-qu-oha" secondAttribute="trailing" id="wyb-m3-pfo"/>
+                        </constraints>
+                    </view>
+                    <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CXN-6U-jJg">
+                        <rect key="frame" x="8" y="0.0" width="68.333333333333329" height="22"/>
+                        <constraints>
+                            <constraint firstAttribute="width" secondItem="CXN-6U-jJg" secondAttribute="height" multiplier="62:20" id="kom-tv-usY"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="8"/>
+                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                        <state key="normal" title="更多人选择">
+                            <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        </state>
+                    </button>
+                </subviews>
+            </view>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="eBR-HU-QX5" firstAttribute="leading" secondItem="5Em-vx-dTP" secondAttribute="leading" id="H5K-Og-UrS"/>
+                <constraint firstItem="CXN-6U-jJg" firstAttribute="leading" secondItem="eBR-HU-QX5" secondAttribute="leading" constant="8" id="NIr-Kr-Dv3"/>
+                <constraint firstItem="CXN-6U-jJg" firstAttribute="top" secondItem="eBR-HU-QX5" secondAttribute="top" constant="-8" id="Oiq-Sg-WLF"/>
+                <constraint firstAttribute="bottom" secondItem="eBR-HU-QX5" secondAttribute="bottom" id="YRe-Kq-5je"/>
+                <constraint firstItem="eBR-HU-QX5" firstAttribute="top" secondItem="5Em-vx-dTP" secondAttribute="top" constant="8" id="oA1-Tt-Axo"/>
+                <constraint firstAttribute="trailing" secondItem="eBR-HU-QX5" secondAttribute="trailing" id="qjc-yL-F4w"/>
+            </constraints>
+            <connections>
+                <outlet property="myBgView" destination="eBR-HU-QX5" id="Mye-OT-rUA"/>
+                <outlet property="myTitleLabel" destination="FUb-Fd-2fC" id="9eT-Sr-e10"/>
+                <outlet property="nowPriceLabel" destination="MMa-u5-XH1" id="Mrk-x5-fhp"/>
+                <outlet property="oldPriceLabel" destination="583-WX-7wg" id="85Q-Lr-pLF"/>
+                <outlet property="priceView" destination="Xgi-yV-R6i" id="qhG-KG-Lqb"/>
+                <outlet property="recommendBtn" destination="CXN-6U-jJg" id="d3t-h6-j8i"/>
+                <outlet property="saveMoneyLabel" destination="ecd-qu-oha" id="Kjx-Od-5W8"/>
+                <outlet property="saveMoneyLabelBgImageView" destination="Fqx-Yy-OCy" id="gqJ-DI-QXM"/>
+            </connections>
+            <point key="canvasLocation" x="137.40458015267174" y="152.11267605633805"/>
+        </collectionViewCell>
+    </objects>
+</document>

+ 18 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLiVipContentNewCell01.h

@@ -0,0 +1,18 @@
+//
+//  NYLiVipContentNewCell01.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/6.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "RQCommonCell.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLiVipContentNewCell01 : RQCommonCollectionViewCell
+@property (weak, nonatomic) IBOutlet UILabel *myTitleLabel;
+@property (weak, nonatomic) IBOutlet UILabel *mySubTitleLabel;
+@end
+
+NS_ASSUME_NONNULL_END

+ 118 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLiVipContentNewCell01.m

@@ -0,0 +1,118 @@
+//
+//  NYLiVipContentNewCell01.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/6.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLiVipContentNewCell01.h"
+
+@interface NYLiVipContentNewCell01 ()
+@property (nonatomic, readwrite, strong) NYLIVipContentNewItemViewModel *viewModel;
+@property (weak, nonatomic) IBOutlet UIImageView *bgImageView;
+
+@property (weak, nonatomic) IBOutlet UIImageView *bgImageView01;
+
+@property (weak, nonatomic) IBOutlet UIImageView *headerBgImageView;
+
+@property (weak, nonatomic) IBOutlet UIStackView *skview01;
+
+@property (weak, nonatomic) IBOutlet UIStackView *skview02;
+
+@property (weak, nonatomic) IBOutlet UIStackView *skview03;
+
+//@property (weak, nonatomic) IBOutlet NSLayoutConstraint *lay_aspect;
+
+
+@end
+
+@implementation NYLiVipContentNewCell01
+#pragma mark - PublicMethods
++ (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
+    static NSString *ID = @"NYLiVipContentNewCell01";
+    [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
+    RQVipContentNewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
+    if (!cell) cell = [self rq_viewFromXib];
+//    [cell borderColor:RQColorFromHexString(@"#E0B279") width:1 cornorRadius:5];
+//    cell.bgImageView.layer.shadowColor = [UIColor qmui_colorWithHexString:@"#D8928B"].CGColor;
+    return cell;
+}
+
+- (void)bindViewModel:(NYLIVipContentNewItemViewModel *)viewModel {
+//    @weakify(self)
+    _viewModel = viewModel;
+    if(viewModel.type==0){
+        self.skview01.hidden = NO;
+        self.skview02.hidden = YES;
+        self.skview03.hidden = YES;
+        self.myTitleLabel.text = @"专业实力";
+        self.mySubTitleLabel.text = @"精准解读驾考要点";
+        self.headerBgImageView.image = RQImageNamed(@"li_bar_img01");
+        self.bgImageView.image = RQImageNamed(@"li_jx_bg");
+        self.bgImageView.hidden = NO;
+        self.bgImageView01.hidden = YES;
+//        self.lay_aspect.multiplier = 393.0/529.0;
+    }else if(viewModel.type==1){
+        self.skview01.hidden = YES;
+        self.skview02.hidden = NO;
+        self.skview03.hidden = YES;
+        self.myTitleLabel.text = @"教学特点";
+        self.mySubTitleLabel.text = @"生动有趣,轻松掌握";
+        self.headerBgImageView.image = RQImageNamed(@"li_bar_img02");
+        self.bgImageView01.image = RQImageNamed(@"li_jx_bg02");
+        self.bgImageView.hidden = YES;
+        self.bgImageView01.hidden = NO;
+    }else if(viewModel.type==2){
+        self.skview01.hidden = YES;
+        self.skview02.hidden = YES;
+        self.skview03.hidden = NO;
+        self.myTitleLabel.text = @"教学成果";
+        self.mySubTitleLabel.text = @"高通过率,成果斐然";
+        self.headerBgImageView.image = RQImageNamed(@"li_bar_img03");
+        self.bgImageView01.image = RQImageNamed(@"li_jx_bg03");
+        self.bgImageView.hidden = YES;
+        self.bgImageView01.hidden = NO;
+    }else if(viewModel.type==3){
+        self.skview01.hidden = YES;
+        self.skview02.hidden = YES;
+        self.skview03.hidden = YES;
+        self.myTitleLabel.text = @"学员评价";
+        self.mySubTitleLabel.text = @"口碑爆棚,信赖之选";
+        self.headerBgImageView.image = RQImageNamed(@"li_bar_img04");
+        self.bgImageView01.image = RQImageNamed(@"li_say_up");
+        self.bgImageView.hidden = YES;
+        self.bgImageView01.hidden = NO;
+    }
+    
+}
+
+- (void)setIndexPath:(NSIndexPath *)indexPath rowsInSection:(NSInteger)rows {
+//    self.backgroundColor = RQColorFromHexString(@"#252531");
+}
+
+#pragma mark - SystemMethods
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    
+//    self.oneStepLabel.backgroundColor = [UIColor rq_colorGradientChangeWithFrame:CGRectMake(0, 0, RQ_FIT_HORIZONTAL(69.f), RQ_FIT_HORIZONTAL(25.f)) startPoint:CGPointMake(0.98, 0.5) endPoint:CGPointMake(0, 0.5) startColor:RQColorFromHexString(@"#F97467") endColor:RQColorFromHexString(@"#F9A192")];
+//    [self.oneStepLabel updateCornerRadius:^(QQCorner *corner) {
+//        corner.radius = QQRadiusMake(0.f, 25 / 2.f, 0.f, 25 / 2.f);
+//    }];
+//    
+//    self.twoStepLabel.backgroundColor = [UIColor rq_colorGradientChangeWithFrame:CGRectMake(0, 0, RQ_FIT_HORIZONTAL(69.f), RQ_FIT_HORIZONTAL(25.f)) startPoint:CGPointMake(0.98, 0.5) endPoint:CGPointMake(0, 0.5) startColor:RQColorFromHexString(@"#F97467") endColor:RQColorFromHexString(@"#F9A192")];
+//    [self.twoStepLabel updateCornerRadius:^(QQCorner *corner) {
+//        corner.radius = QQRadiusMake(0.f, 25 / 2.f, 0.f, 25 / 2.f);
+//    }];
+//    
+//    self.threeStepLabel.backgroundColor = [UIColor rq_colorGradientChangeWithFrame:CGRectMake(0, 0, RQ_FIT_HORIZONTAL(69.f), RQ_FIT_HORIZONTAL(25.f)) startPoint:CGPointMake(0.98, 0.5) endPoint:CGPointMake(0, 0.5) startColor:RQColorFromHexString(@"#F97467") endColor:RQColorFromHexString(@"#F9A192")];
+//    [self.threeStepLabel updateCornerRadius:^(QQCorner *corner) {
+//        corner.radius = QQRadiusMake(0.f, 25 / 2.f, 0.f, 25 / 2.f);
+//    }];
+    
+    
+}
+
+#pragma mark - PrivateMethods
+
+@end

+ 398 - 0
jiaPei/Modules/OtherModules/VIPModule/View/小李/NYLiVipContentNewCell01.xib

@@ -0,0 +1,398 @@
+<?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" useSafeAreas="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"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFill" id="4J9-xR-uFA" customClass="NYLiVipContentNewCell01">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="580"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="580"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_bar_img01" translatesAutoresizingMaskIntoConstraints="NO" id="Emq-Cs-5xw">
+                        <rect key="frame" x="24" y="0.0" width="327" height="88"/>
+                        <constraints>
+                            <constraint firstAttribute="width" secondItem="Emq-Cs-5xw" secondAttribute="height" multiplier="331/89" id="Ucz-6T-IIM"/>
+                        </constraints>
+                    </imageView>
+                    <stackView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" spacing="18" translatesAutoresizingMaskIntoConstraints="NO" id="q78-MX-aUN">
+                        <rect key="frame" x="113.00000000000001" y="16" width="149.33333333333337" height="54"/>
+                        <subviews>
+                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="hbs-d8-z2Z">
+                                <rect key="frame" x="0.0" y="0.0" width="149.33333333333334" height="54"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="科一怎么学" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sbX-w3-FiW">
+                                        <rect key="frame" x="0.0" y="0.0" width="149.33333333333334" height="27"/>
+                                        <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="只需三步,轻松学科一" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KW5-6v-r1w">
+                                        <rect key="frame" x="0.0" y="27" width="149.33333333333334" height="27"/>
+                                        <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                            </stackView>
+                        </subviews>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="54" id="rXS-Qe-WSO"/>
+                        </constraints>
+                    </stackView>
+                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_jx_bg" translatesAutoresizingMaskIntoConstraints="NO" id="NP5-2m-gyb">
+                        <rect key="frame" x="-10" y="54" width="395" height="531.66666666666663"/>
+                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstAttribute="width" secondItem="NP5-2m-gyb" secondAttribute="height" multiplier="393:529" id="ULO-hg-04Q"/>
+                        </constraints>
+                    </imageView>
+                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_jx_bg" translatesAutoresizingMaskIntoConstraints="NO" id="AeL-RL-aoo">
+                        <rect key="frame" x="-10" y="54" width="395" height="542"/>
+                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    </imageView>
+                    <stackView opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" alignment="top" translatesAutoresizingMaskIntoConstraints="NO" id="1Lr-Qu-qDC" userLabel="Stack View01">
+                        <rect key="frame" x="30" y="94.000000000000028" width="315" height="451.66666666666674"/>
+                        <subviews>
+                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="top" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="Oae-zF-wtD">
+                                <rect key="frame" x="0.0" y="0.0" width="315" height="451.66666666666669"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mrA-gg-lrZ">
+                                        <rect key="frame" x="0.0" y="0.0" width="315" height="451.66666666666669"/>
+                                        <subviews>
+                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_zhengshu" translatesAutoresizingMaskIntoConstraints="NO" id="V7n-LE-KQA">
+                                                <rect key="frame" x="0.0" y="0.0" width="315" height="451.66666666666669"/>
+                                            </imageView>
+                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cAf-TP-AoY">
+                                                <rect key="frame" x="0.0" y="218" width="157.33333333333334" height="233.66666666666663"/>
+                                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                            </view>
+                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X74-3p-bdm">
+                                                <rect key="frame" x="157.33333333333337" y="218" width="157.66666666666663" height="233.66666666666663"/>
+                                                <subviews>
+                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="熟悉驾考题库,洞悉考试规律,精准把握高频考点。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TNa-OW-aTR">
+                                                        <rect key="frame" x="0.0" y="28" width="150" height="66"/>
+                                                        <constraints>
+                                                            <constraint firstAttribute="height" constant="66" id="Ecz-9g-aQA"/>
+                                                        </constraints>
+                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                        <color key="textColor" red="0.039215686274509803" green="0.10196078431372549" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                        <nil key="highlightedColor"/>
+                                                    </label>
+                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_zu_point" translatesAutoresizingMaskIntoConstraints="NO" id="n3K-rm-NJr">
+                                                        <rect key="frame" x="-25" y="35" width="16" height="16"/>
+                                                        <constraints>
+                                                            <constraint firstAttribute="width" constant="16" id="5Rn-qy-D9j"/>
+                                                            <constraint firstAttribute="height" constant="16" id="clf-AC-5CC"/>
+                                                        </constraints>
+                                                    </imageView>
+                                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_zu_point" translatesAutoresizingMaskIntoConstraints="NO" id="e0x-PG-G0J">
+                                                        <rect key="frame" x="-25" y="120" width="16" height="16"/>
+                                                        <constraints>
+                                                            <constraint firstAttribute="width" constant="16" id="57O-3o-otl"/>
+                                                            <constraint firstAttribute="height" constant="16" id="kIY-pm-u8A"/>
+                                                        </constraints>
+                                                    </imageView>
+                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="独创“题目记忆法”,将枯燥的题目趣化、简单化,帮助学员快速记忆,提高学习效率。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V27-eZ-t32">
+                                                        <rect key="frame" x="0.0" y="114" width="150" height="82"/>
+                                                        <constraints>
+                                                            <constraint firstAttribute="height" constant="82" id="Su6-C9-8e2"/>
+                                                        </constraints>
+                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                        <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                        <nil key="highlightedColor"/>
+                                                    </label>
+                                                </subviews>
+                                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                                <constraints>
+                                                    <constraint firstItem="e0x-PG-G0J" firstAttribute="top" secondItem="n3K-rm-NJr" secondAttribute="bottom" constant="69" id="95g-ES-ILe"/>
+                                                    <constraint firstItem="n3K-rm-NJr" firstAttribute="leading" secondItem="X74-3p-bdm" secondAttribute="leading" constant="-25" id="H11-KQ-feM"/>
+                                                    <constraint firstAttribute="trailing" secondItem="TNa-OW-aTR" secondAttribute="trailing" constant="7.6699999999999999" id="Qpg-eM-Y44"/>
+                                                    <constraint firstItem="V27-eZ-t32" firstAttribute="leading" secondItem="e0x-PG-G0J" secondAttribute="trailing" constant="9" id="TlI-ga-AE9"/>
+                                                    <constraint firstItem="V27-eZ-t32" firstAttribute="top" secondItem="TNa-OW-aTR" secondAttribute="bottom" constant="20" id="UwG-lx-jIR"/>
+                                                    <constraint firstItem="n3K-rm-NJr" firstAttribute="top" secondItem="X74-3p-bdm" secondAttribute="top" constant="35" id="Z7J-hz-lwX"/>
+                                                    <constraint firstItem="TNa-OW-aTR" firstAttribute="top" secondItem="X74-3p-bdm" secondAttribute="top" constant="28" id="dyL-r0-rRi"/>
+                                                    <constraint firstAttribute="trailing" secondItem="V27-eZ-t32" secondAttribute="trailing" constant="7.6699999999999999" id="ksl-bb-4Is"/>
+                                                    <constraint firstItem="e0x-PG-G0J" firstAttribute="leading" secondItem="X74-3p-bdm" secondAttribute="leading" constant="-25" id="sYo-oK-a0w"/>
+                                                    <constraint firstItem="TNa-OW-aTR" firstAttribute="leading" secondItem="n3K-rm-NJr" secondAttribute="trailing" constant="9" id="zpn-or-Eq4"/>
+                                                </constraints>
+                                            </view>
+                                        </subviews>
+                                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                        <constraints>
+                                            <constraint firstAttribute="bottom" secondItem="V7n-LE-KQA" secondAttribute="bottom" id="5E8-x7-i7S"/>
+                                            <constraint firstItem="X74-3p-bdm" firstAttribute="leading" secondItem="cAf-TP-AoY" secondAttribute="trailing" id="8pA-QZ-BpS"/>
+                                            <constraint firstItem="cAf-TP-AoY" firstAttribute="width" secondItem="X74-3p-bdm" secondAttribute="width" multiplier="0.997881" id="FZp-Rx-Xet"/>
+                                            <constraint firstItem="cAf-TP-AoY" firstAttribute="leading" secondItem="mrA-gg-lrZ" secondAttribute="leading" id="IMv-3s-ZJu"/>
+                                            <constraint firstAttribute="bottom" secondItem="cAf-TP-AoY" secondAttribute="bottom" id="KUt-Gt-5Gr"/>
+                                            <constraint firstAttribute="trailing" secondItem="X74-3p-bdm" secondAttribute="trailing" id="UtE-PC-2PD"/>
+                                            <constraint firstItem="V7n-LE-KQA" firstAttribute="top" secondItem="mrA-gg-lrZ" secondAttribute="top" id="YN2-vY-MfZ"/>
+                                            <constraint firstItem="cAf-TP-AoY" firstAttribute="top" secondItem="mrA-gg-lrZ" secondAttribute="top" constant="218" id="j28-3M-773"/>
+                                            <constraint firstItem="X74-3p-bdm" firstAttribute="top" secondItem="mrA-gg-lrZ" secondAttribute="top" constant="218" id="m6n-wI-Xtg"/>
+                                            <constraint firstAttribute="bottom" secondItem="X74-3p-bdm" secondAttribute="bottom" id="qJC-G8-6E1"/>
+                                            <constraint firstItem="X74-3p-bdm" firstAttribute="leading" secondItem="cAf-TP-AoY" secondAttribute="trailing" id="rJh-JE-FrE"/>
+                                            <constraint firstItem="V7n-LE-KQA" firstAttribute="leading" secondItem="mrA-gg-lrZ" secondAttribute="leading" id="vp1-AX-m2d"/>
+                                            <constraint firstAttribute="trailing" secondItem="V7n-LE-KQA" secondAttribute="trailing" id="yqg-eh-nyq"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="mrA-gg-lrZ" firstAttribute="leading" secondItem="Oae-zF-wtD" secondAttribute="leading" id="5Ts-Qf-dXh"/>
+                                    <constraint firstAttribute="bottom" secondItem="mrA-gg-lrZ" secondAttribute="bottom" id="5bZ-5h-P4J"/>
+                                    <constraint firstAttribute="trailing" secondItem="mrA-gg-lrZ" secondAttribute="trailing" id="FD0-Hp-Tlb"/>
+                                    <constraint firstItem="mrA-gg-lrZ" firstAttribute="top" secondItem="Oae-zF-wtD" secondAttribute="top" id="oiC-uy-sBl"/>
+                                </constraints>
+                            </stackView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="Oae-zF-wtD" secondAttribute="trailing" id="DqW-4y-9E4"/>
+                            <constraint firstItem="Oae-zF-wtD" firstAttribute="leading" secondItem="1Lr-Qu-qDC" secondAttribute="leading" id="cMB-lg-BKx"/>
+                            <constraint firstAttribute="bottom" secondItem="Oae-zF-wtD" secondAttribute="bottom" id="iRm-Ol-HN9"/>
+                            <constraint firstItem="Oae-zF-wtD" firstAttribute="top" secondItem="1Lr-Qu-qDC" secondAttribute="top" id="zaW-HR-TwI"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="5"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </stackView>
+                    <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="DgV-d8-O7v" userLabel="Stack View02">
+                        <rect key="frame" x="30" y="94" width="315" height="250"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="m3B-ul-TV4">
+                                <rect key="frame" x="0.0" y="0.0" width="315" height="250"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="m16-qn-cSP">
+                                        <rect key="frame" x="0.0" y="0.0" width="315" height="83.333333333333329"/>
+                                        <subviews>
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="复杂内容简单化,零基础学员也能轻松掌握。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3xy-1P-eQJ">
+                                                <rect key="frame" x="109" y="10.000000000000004" width="191" height="63.333333333333343"/>
+                                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                <color key="textColor" red="0.039215686274509803" green="0.10196078431372549" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_tongshuyidong" translatesAutoresizingMaskIntoConstraints="NO" id="42v-Vs-vwN">
+                                                <rect key="frame" x="0.0" y="22" width="94" height="39"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="39" id="Nc8-Fm-aPy"/>
+                                                    <constraint firstAttribute="width" constant="94" id="w8c-5O-Yag"/>
+                                                </constraints>
+                                            </imageView>
+                                        </subviews>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstItem="42v-Vs-vwN" firstAttribute="centerY" secondItem="m16-qn-cSP" secondAttribute="centerY" id="BsU-PO-yQK"/>
+                                            <constraint firstItem="3xy-1P-eQJ" firstAttribute="top" secondItem="m16-qn-cSP" secondAttribute="top" constant="10" id="Q4g-3E-7iL"/>
+                                            <constraint firstItem="3xy-1P-eQJ" firstAttribute="leading" secondItem="42v-Vs-vwN" secondAttribute="trailing" constant="15" id="aLO-NB-HGq"/>
+                                            <constraint firstAttribute="trailing" secondItem="3xy-1P-eQJ" secondAttribute="trailing" constant="15" id="kga-GG-cU3"/>
+                                            <constraint firstItem="42v-Vs-vwN" firstAttribute="leading" secondItem="m16-qn-cSP" secondAttribute="leading" id="mIU-dX-kIh"/>
+                                            <constraint firstAttribute="bottom" secondItem="3xy-1P-eQJ" secondAttribute="bottom" constant="10" id="nbZ-Mi-PPn"/>
+                                        </constraints>
+                                    </view>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rny-E5-5Fe">
+                                        <rect key="frame" x="0.0" y="83.333333333333343" width="315" height="83.333333333333343"/>
+                                        <subviews>
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="针对性教学,直击考试重点,快速提分不浪费时间。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Txu-a7-sft">
+                                                <rect key="frame" x="109" y="10.000000000000004" width="191" height="63.333333333333343"/>
+                                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_shiyonggaox" translatesAutoresizingMaskIntoConstraints="NO" id="faf-Iy-N12">
+                                                <rect key="frame" x="0.0" y="22" width="94" height="39"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="94" id="WCc-Yo-z9e"/>
+                                                    <constraint firstAttribute="height" constant="39" id="eCE-2A-HXc"/>
+                                                </constraints>
+                                            </imageView>
+                                        </subviews>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstItem="faf-Iy-N12" firstAttribute="leading" secondItem="rny-E5-5Fe" secondAttribute="leading" id="AUv-Id-gdy"/>
+                                            <constraint firstItem="faf-Iy-N12" firstAttribute="centerY" secondItem="rny-E5-5Fe" secondAttribute="centerY" id="EQW-af-xOq"/>
+                                            <constraint firstAttribute="trailing" secondItem="Txu-a7-sft" secondAttribute="trailing" constant="15" id="Fbm-9H-yfw"/>
+                                            <constraint firstItem="Txu-a7-sft" firstAttribute="leading" secondItem="faf-Iy-N12" secondAttribute="trailing" constant="15" id="P1C-UO-GAD"/>
+                                            <constraint firstItem="Txu-a7-sft" firstAttribute="top" secondItem="rny-E5-5Fe" secondAttribute="top" constant="10" id="Rm9-1X-dYc"/>
+                                            <constraint firstAttribute="bottom" secondItem="Txu-a7-sft" secondAttribute="bottom" constant="10" id="bnk-fw-YFV"/>
+                                        </constraints>
+                                    </view>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Xyn-u3-z1r">
+                                        <rect key="frame" x="0.0" y="166.66666666666669" width="315" height="83.333333333333314"/>
+                                        <subviews>
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="讲课生动有趣,课堂氛围轻松,学员学习更主动。" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DP7-YA-hkP">
+                                                <rect key="frame" x="109" y="10.000000000000004" width="191" height="63.333333333333343"/>
+                                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_hudongxq" translatesAutoresizingMaskIntoConstraints="NO" id="rvM-Wj-AnO">
+                                                <rect key="frame" x="0.0" y="22" width="94" height="39"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="39" id="FFL-YM-wRL"/>
+                                                    <constraint firstAttribute="width" constant="94" id="uHS-Be-xl2"/>
+                                                </constraints>
+                                            </imageView>
+                                        </subviews>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstAttribute="bottom" secondItem="DP7-YA-hkP" secondAttribute="bottom" constant="10" id="Phw-4g-YXP"/>
+                                            <constraint firstItem="rvM-Wj-AnO" firstAttribute="centerY" secondItem="Xyn-u3-z1r" secondAttribute="centerY" id="QX9-5N-r4l"/>
+                                            <constraint firstItem="rvM-Wj-AnO" firstAttribute="leading" secondItem="Xyn-u3-z1r" secondAttribute="leading" id="dE6-9s-EEz"/>
+                                            <constraint firstItem="DP7-YA-hkP" firstAttribute="top" secondItem="Xyn-u3-z1r" secondAttribute="top" constant="10" id="eV4-6G-Mv4"/>
+                                            <constraint firstItem="DP7-YA-hkP" firstAttribute="leading" secondItem="rvM-Wj-AnO" secondAttribute="trailing" constant="15" id="i6t-KI-JbF"/>
+                                            <constraint firstAttribute="trailing" secondItem="DP7-YA-hkP" secondAttribute="trailing" constant="15" id="mT0-my-PK3"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstItem="Xyn-u3-z1r" firstAttribute="top" secondItem="rny-E5-5Fe" secondAttribute="bottom" id="2CG-3W-SOu"/>
+                                    <constraint firstItem="m16-qn-cSP" firstAttribute="leading" secondItem="m3B-ul-TV4" secondAttribute="leading" id="3uf-ye-Mmm"/>
+                                    <constraint firstAttribute="trailing" secondItem="m16-qn-cSP" secondAttribute="trailing" id="5cu-PT-TEy"/>
+                                    <constraint firstItem="rny-E5-5Fe" firstAttribute="leading" secondItem="m3B-ul-TV4" secondAttribute="leading" id="FAu-9F-lTD"/>
+                                    <constraint firstItem="m16-qn-cSP" firstAttribute="top" secondItem="m3B-ul-TV4" secondAttribute="top" id="IP7-yU-ALx"/>
+                                    <constraint firstAttribute="trailing" secondItem="Xyn-u3-z1r" secondAttribute="trailing" id="LIl-z7-QBm"/>
+                                    <constraint firstItem="rny-E5-5Fe" firstAttribute="top" secondItem="m16-qn-cSP" secondAttribute="bottom" id="UT9-kM-5PW"/>
+                                    <constraint firstItem="Xyn-u3-z1r" firstAttribute="top" secondItem="rny-E5-5Fe" secondAttribute="bottom" id="Wbs-bi-WJS"/>
+                                    <constraint firstAttribute="bottom" secondItem="Xyn-u3-z1r" secondAttribute="bottom" id="Xel-bI-U4b"/>
+                                    <constraint firstItem="Xyn-u3-z1r" firstAttribute="leading" secondItem="m3B-ul-TV4" secondAttribute="leading" id="akm-8Y-uPd"/>
+                                    <constraint firstAttribute="trailing" secondItem="rny-E5-5Fe" secondAttribute="trailing" id="jnx-NU-hgq"/>
+                                    <constraint firstItem="rny-E5-5Fe" firstAttribute="height" secondItem="Xyn-u3-z1r" secondAttribute="height" id="pRP-dc-AMa"/>
+                                    <constraint firstItem="m16-qn-cSP" firstAttribute="height" secondItem="rny-E5-5Fe" secondAttribute="height" id="ucO-5C-odU"/>
+                                    <constraint firstItem="rny-E5-5Fe" firstAttribute="top" secondItem="m16-qn-cSP" secondAttribute="bottom" id="vWK-vm-cZK"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="250" id="k2y-W3-Y44"/>
+                        </constraints>
+                    </stackView>
+                    <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="est-Ya-zsx" userLabel="Stack View03">
+                        <rect key="frame" x="30" y="94" width="315" height="140"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3La-0e-PCp">
+                                <rect key="frame" x="0.0" y="0.0" width="315" height="65"/>
+                                <subviews>
+                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_sel_yes" translatesAutoresizingMaskIntoConstraints="NO" id="LOD-iv-1UQ">
+                                        <rect key="frame" x="25" y="15" width="24" height="24"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="24" id="bap-pS-tF0"/>
+                                            <constraint firstAttribute="height" constant="24" id="m0P-tW-hqT"/>
+                                        </constraints>
+                                    </imageView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学员通过率高达 95%以上,广受学员信赖" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AUv-bD-Uhm">
+                                        <rect key="frame" x="57" y="8" width="243" height="49"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <color key="textColor" red="0.039215686274509803" green="0.10196078431372549" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstItem="AUv-bD-Uhm" firstAttribute="leading" secondItem="LOD-iv-1UQ" secondAttribute="trailing" constant="8" symbolic="YES" id="7bX-Gw-gDG"/>
+                                    <constraint firstAttribute="bottom" secondItem="AUv-bD-Uhm" secondAttribute="bottom" constant="8" id="JvR-OH-mxg"/>
+                                    <constraint firstItem="AUv-bD-Uhm" firstAttribute="top" secondItem="3La-0e-PCp" secondAttribute="top" constant="8" id="LhE-bH-Jgn"/>
+                                    <constraint firstItem="LOD-iv-1UQ" firstAttribute="top" secondItem="3La-0e-PCp" secondAttribute="top" constant="15" id="PEt-qN-taG"/>
+                                    <constraint firstAttribute="height" constant="65" id="co2-wv-EBm"/>
+                                    <constraint firstItem="LOD-iv-1UQ" firstAttribute="leading" secondItem="3La-0e-PCp" secondAttribute="leading" constant="25" id="f0z-GX-3c3"/>
+                                    <constraint firstAttribute="trailing" secondItem="AUv-bD-Uhm" secondAttribute="trailing" constant="15" id="sId-Pc-JvC"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="J6J-W1-fig">
+                                <rect key="frame" x="0.0" y="65" width="315" height="75"/>
+                                <subviews>
+                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_sel_yes" translatesAutoresizingMaskIntoConstraints="NO" id="yMm-zf-ibF">
+                                        <rect key="frame" x="25" y="15" width="24" height="24"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="24" id="bYf-hf-x9c"/>
+                                            <constraint firstAttribute="width" constant="24" id="zVP-u8-cSl"/>
+                                        </constraints>
+                                    </imageView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培养出超过 10万+ 驾考成功者,帮助无数人实现驾考梦想" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jab-W6-yGA">
+                                        <rect key="frame" x="57" y="8" width="243" height="50"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="50" id="48b-aK-1cE"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <color key="textColor" red="0.039215686274509803" green="0.10196078431372549" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstItem="Jab-W6-yGA" firstAttribute="leading" secondItem="yMm-zf-ibF" secondAttribute="trailing" constant="8" symbolic="YES" id="5T1-0K-FKv"/>
+                                    <constraint firstItem="yMm-zf-ibF" firstAttribute="top" secondItem="J6J-W1-fig" secondAttribute="top" constant="15" id="VBs-Bv-w9a"/>
+                                    <constraint firstItem="yMm-zf-ibF" firstAttribute="leading" secondItem="J6J-W1-fig" secondAttribute="leading" constant="25" id="khw-iH-hZG"/>
+                                    <constraint firstItem="Jab-W6-yGA" firstAttribute="top" secondItem="J6J-W1-fig" secondAttribute="top" constant="8" id="oFO-5U-QxQ"/>
+                                    <constraint firstAttribute="trailing" secondItem="Jab-W6-yGA" secondAttribute="trailing" constant="15" id="wkg-Rk-vav"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <constraints>
+                            <constraint firstItem="J6J-W1-fig" firstAttribute="top" secondItem="3La-0e-PCp" secondAttribute="bottom" id="91h-O5-tnn"/>
+                            <constraint firstAttribute="height" constant="140" id="KY7-hx-gyH"/>
+                        </constraints>
+                    </stackView>
+                </subviews>
+            </view>
+            <constraints>
+                <constraint firstItem="NP5-2m-gyb" firstAttribute="top" secondItem="1Lr-Qu-qDC" secondAttribute="top" constant="-40" id="1YH-dJ-YoI"/>
+                <constraint firstAttribute="trailing" secondItem="AeL-RL-aoo" secondAttribute="trailing" constant="-10" id="7qZ-vO-LsK"/>
+                <constraint firstItem="DgV-d8-O7v" firstAttribute="leading" secondItem="4J9-xR-uFA" secondAttribute="leading" constant="30" id="BaE-QZ-C3x"/>
+                <constraint firstItem="est-Ya-zsx" firstAttribute="leading" secondItem="4J9-xR-uFA" secondAttribute="leading" constant="30" id="CnE-PM-Jeb"/>
+                <constraint firstItem="1Lr-Qu-qDC" firstAttribute="leading" secondItem="4J9-xR-uFA" secondAttribute="leading" constant="30" id="Go7-v8-3oL"/>
+                <constraint firstItem="Emq-Cs-5xw" firstAttribute="leading" secondItem="4J9-xR-uFA" secondAttribute="leading" constant="24" id="Gtv-Sn-QPa"/>
+                <constraint firstAttribute="bottom" secondItem="AeL-RL-aoo" secondAttribute="bottom" constant="-16" id="KqB-fP-SCG"/>
+                <constraint firstItem="AeL-RL-aoo" firstAttribute="leading" secondItem="4J9-xR-uFA" secondAttribute="leading" constant="-10" id="MGC-De-f7U"/>
+                <constraint firstItem="1Lr-Qu-qDC" firstAttribute="bottom" secondItem="NP5-2m-gyb" secondAttribute="bottom" constant="-40" id="Mab-wG-7Qp"/>
+                <constraint firstItem="NP5-2m-gyb" firstAttribute="top" secondItem="KW5-6v-r1w" secondAttribute="bottom" constant="-16" id="OHI-3o-jJ5"/>
+                <constraint firstItem="AeL-RL-aoo" firstAttribute="top" secondItem="4J9-xR-uFA" secondAttribute="top" constant="54" id="Qdl-8u-2JL"/>
+                <constraint firstAttribute="trailing" secondItem="NP5-2m-gyb" secondAttribute="trailing" constant="-10" id="Rrq-2j-8gl"/>
+                <constraint firstItem="q78-MX-aUN" firstAttribute="top" secondItem="4J9-xR-uFA" secondAttribute="top" constant="16" id="Wfo-Jc-2hN"/>
+                <constraint firstAttribute="trailing" secondItem="1Lr-Qu-qDC" secondAttribute="trailing" constant="30" id="Yah-qH-1qK"/>
+                <constraint firstItem="Emq-Cs-5xw" firstAttribute="top" secondItem="4J9-xR-uFA" secondAttribute="top" id="Yg4-zh-qNb"/>
+                <constraint firstAttribute="trailing" secondItem="DgV-d8-O7v" secondAttribute="trailing" constant="30" id="cXg-0E-pHj"/>
+                <constraint firstItem="q78-MX-aUN" firstAttribute="centerX" secondItem="4J9-xR-uFA" secondAttribute="centerX" id="e79-pN-KWN"/>
+                <constraint firstItem="NP5-2m-gyb" firstAttribute="leading" secondItem="4J9-xR-uFA" secondAttribute="leading" constant="-10" id="jOI-T9-nHK"/>
+                <constraint firstAttribute="trailing" secondItem="est-Ya-zsx" secondAttribute="trailing" constant="30" id="ldn-sT-0dx"/>
+                <constraint firstItem="est-Ya-zsx" firstAttribute="top" secondItem="Emq-Cs-5xw" secondAttribute="bottom" constant="6" id="ll8-9i-50J"/>
+                <constraint firstItem="DgV-d8-O7v" firstAttribute="top" secondItem="Emq-Cs-5xw" secondAttribute="bottom" constant="6" id="pyP-f7-VSm"/>
+                <constraint firstAttribute="trailing" secondItem="Emq-Cs-5xw" secondAttribute="trailing" constant="24" id="wWE-pd-fxv"/>
+            </constraints>
+            <size key="customSize" width="345" height="546"/>
+            <connections>
+                <outlet property="bgImageView" destination="NP5-2m-gyb" id="aFV-sP-VZx"/>
+                <outlet property="bgImageView01" destination="AeL-RL-aoo" id="hTq-jB-i5e"/>
+                <outlet property="headerBgImageView" destination="Emq-Cs-5xw" id="WdC-28-z3m"/>
+                <outlet property="mySubTitleLabel" destination="KW5-6v-r1w" id="suW-gC-08Q"/>
+                <outlet property="myTitleLabel" destination="sbX-w3-FiW" id="jqG-v0-6ID"/>
+                <outlet property="skview01" destination="1Lr-Qu-qDC" id="b07-8R-Lja"/>
+                <outlet property="skview02" destination="DgV-d8-O7v" id="Zio-Ys-fsY"/>
+                <outlet property="skview03" destination="est-Ya-zsx" id="XNa-oZ-uQo"/>
+            </connections>
+            <point key="canvasLocation" x="135.1145038167939" y="143.66197183098592"/>
+        </collectionViewCell>
+    </objects>
+    <resources>
+        <image name="li_bar_img01" width="331" height="105"/>
+        <image name="li_hudongxq" width="95" height="39"/>
+        <image name="li_jx_bg" width="393" height="488"/>
+        <image name="li_sel_yes" width="36" height="36"/>
+        <image name="li_shiyonggaox" width="95" height="39"/>
+        <image name="li_tongshuyidong" width="95" height="39"/>
+        <image name="li_zhengshu" width="285" height="381.66665649414062"/>
+        <image name="li_zu_point" width="16" height="16"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 23 - 0
jiaPei/Modules/OtherModules/VIPModule/View/购买/NYLiVipBuyNewView.h

@@ -0,0 +1,23 @@
+//
+//  NYLiVipBuyNewView.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/5.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLiVipBuyNewView : UIView
+@property (nonatomic, readwrite, strong) RQTypeModel *typeModel;
+@property (weak, nonatomic) IBOutlet QMUIButton *buyBtn;
+@property (weak, nonatomic) IBOutlet QMUIButton *priceBtn;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *userAgreeBtn;
+@property (weak, nonatomic) IBOutlet QMUIButton *userAgreementBtn;
++ (instancetype)vipBuyNewView;
+@end
+
+NS_ASSUME_NONNULL_END

+ 77 - 0
jiaPei/Modules/OtherModules/VIPModule/View/购买/NYLiVipBuyNewView.m

@@ -0,0 +1,77 @@
+//
+//  NYLiVipBuyNewView.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/5.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLiVipBuyNewView.h"
+
+@implementation NYLiVipBuyNewView
+
++ (instancetype)vipBuyNewView {
+    return [super rq_viewFromXib];
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.layer.shadowColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.16].CGColor;
+    self.priceBtn.titleLabel.textAlignment = NSTextAlignmentLeft;
+}
+
+- (void)setTypeModel:(RQTypeModel *)typeModel {
+    if (RQObjectIsNil(typeModel)) {
+        [self.priceBtn setTitleNormal:@"    暂无可用VIP套餐"];
+    } else {
+        NSString *nowPriceStr;
+        NSString *oldPriceStr;
+        if (RQStringIsNotEmpty(typeModel.dictValue) && [typeModel.dictValue containsString:@","]) {
+            nowPriceStr = [typeModel.dictValue componentsSeparatedByString:@","].firstObject;
+            if ([typeModel.dictValue componentsSeparatedByString:@","].count >= 2) {
+                oldPriceStr = [typeModel.dictValue componentsSeparatedByString:@","][1];
+            } else {
+                oldPriceStr = @"";
+            }
+        } else {
+            nowPriceStr = typeModel.dictValue;
+            oldPriceStr = typeModel.dictValue;
+        }
+        if ([oldPriceStr isEqualToString:nowPriceStr]) {
+            NSString *price = [NSString stringWithFormat:@"    ¥%@/1年",nowPriceStr];
+            [self.priceBtn setTitleNormal:price];
+        } else {
+            NSString *year = [NSString stringWithFormat:[typeModel.dictLabel isEqualToString:@"理论实操计时"]? @"/长期" : @"/1年"];
+            NSString *price = [NSString stringWithFormat:@"    ¥%@%@  ¥%@",nowPriceStr,year,oldPriceStr];
+            NSString *oldPrice = [NSString stringWithFormat:@"¥%@",oldPriceStr];
+            NSMutableAttributedString *nowPriceAttrStr = [[NSMutableAttributedString alloc] initWithString:price];
+            [nowPriceAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:22] range:[price rangeOfString:year]];
+            [nowPriceAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:13] range:[price rangeOfString:oldPrice]];
+            [nowPriceAttrStr addAttribute:NSStrikethroughStyleAttributeName value:@(1) range:[price rangeOfString:oldPrice]];
+            [nowPriceAttrStr addAttribute:NSBaselineOffsetAttributeName value:@(NSUnderlineStyleSingle) range:[price rangeOfString:oldPrice]];
+            [nowPriceAttrStr addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:[price rangeOfString:oldPrice]];
+            [self.priceBtn setAttributedTitle:nowPriceAttrStr forState:UIControlStateNormal];
+        }
+    }
+    [self layoutIfNeeded];
+}
+
+
+
+- (IBAction)userAgreeBtnAction:(id)sender {
+    _userAgreeBtn.selected = !_userAgreeBtn.selected;
+}
+
+- (IBAction)userAgreementBtnAction:(id)sender {
+    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://ys.zzxcx.net/jsjp-sf.html"]];
+    RQWebViewModel *viewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey : request,RQViewModelWebViewTypeKey:@(RQWebViewType_VIP)}];
+    RQWebViewViewController *viewController = [[RQWebViewViewController alloc] initWithViewModel:viewModel];
+    RQBaseNavigationController *nav = [[RQBaseNavigationController alloc] initWithRootViewController:viewController];
+    [RQControllerHelper.currentViewController presentViewController:nav animated:YES completion:^{
+        
+    }];
+//    [RQ_APPDELEGATE.services presentViewModel:viewModel animated:YES completion:^{
+//
+//    }];
+}
+@end

+ 136 - 0
jiaPei/Modules/OtherModules/VIPModule/View/购买/NYLiVipBuyNewView.xib

@@ -0,0 +1,136 @@
+<?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"/>
+        <view contentMode="scaleToFill" id="Ab0-Zi-m2i" customClass="NYLiVipBuyNewView">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="110"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <stackView opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="jgv-4n-jjS">
+                    <rect key="frame" x="16.000000000000014" y="8" width="241.33333333333337" height="18"/>
+                    <subviews>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZSQ-ee-hRg" customClass="QMUIButton">
+                            <rect key="frame" x="0.0" y="0.0" width="18" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="width" secondItem="ZSQ-ee-hRg" secondAttribute="height" id="wjQ-Fd-eWm"/>
+                            </constraints>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" backgroundImage="服务协议-未选中"/>
+                            <state key="selected" backgroundImage="服务协议-选中"/>
+                            <connections>
+                                <action selector="userAgreeBtnAction:" destination="Ab0-Zi-m2i" eventType="touchUpInside" id="lx8-ew-Qcv"/>
+                            </connections>
+                        </button>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开通前请阅读" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DOq-lB-m8E">
+                            <rect key="frame" x="25.999999999999993" y="0.0" width="95.333333333333314" height="18"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" red="0.36078431370000003" green="0.37647058820000001" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="trailing" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vsx-XK-V73" customClass="QMUIButton">
+                            <rect key="frame" x="129.33333333333334" y="0.0" width="112" height="18"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="《用户服务协议》">
+                                <color key="titleColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                            </state>
+                            <connections>
+                                <action selector="userAgreementBtnAction:" destination="Ab0-Zi-m2i" eventType="touchUpInside" id="2wU-1k-qk8"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                </stackView>
+                <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="leading" contentVerticalAlignment="center" lineBreakMode="middleTruncation" hasAttributedTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lnp-69-G9A" customClass="QMUIButton">
+                    <rect key="frame" x="0.0" y="25.999999999999993" width="375" height="94.333333333333314"/>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="Lnp-69-G9A" secondAttribute="height" multiplier="378:95" id="qDg-2B-4Qz"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" backgroundImage="li_按钮背景">
+                        <attributedString key="attributedTitle">
+                            <fragment content="     ¥0.0/1">
+                                <attributes>
+                                    <color key="NSBackgroundColor" red="1" green="1" blue="1" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <color key="NSColor" red="1" green="1" blue="0.99999994039999995" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
+                                    <font key="NSFont" size="27" name="PingFangSC-Semibold"/>
+                                    <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="charWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
+                                </attributes>
+                            </fragment>
+                            <fragment content="年">
+                                <attributes>
+                                    <color key="NSBackgroundColor" red="1" green="1" blue="1" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <color key="NSColor" red="1" green="1" blue="0.99999994039999995" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
+                                    <font key="NSFont" size="27" name="PingFangSC-Semibold"/>
+                                    <font key="NSOriginalFont" metaFont="system" size="27"/>
+                                    <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="charWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
+                                </attributes>
+                            </fragment>
+                        </attributedString>
+                    </state>
+                </button>
+                <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FbE-qj-6Yx" customClass="QMUIButton">
+                    <rect key="frame" x="230" y="49" width="115" height="40"/>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="FbE-qj-6Yx" secondAttribute="height" multiplier="115:40" id="Mnj-aB-Ena"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="立即开通" backgroundImage="li_btn_bg">
+                        <color key="titleColor" red="0.10196078431372549" green="0.37647058823529411" blue="0.7803921568627451" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </state>
+                </button>
+            </subviews>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstItem="FbE-qj-6Yx" firstAttribute="width" secondItem="Ab0-Zi-m2i" secondAttribute="width" multiplier="115/375" id="0Z5-AV-sXf"/>
+                <constraint firstItem="jgv-4n-jjS" firstAttribute="leading" secondItem="Ab0-Zi-m2i" secondAttribute="leading" constant="16" id="1eP-O6-veB"/>
+                <constraint firstItem="Lnp-69-G9A" firstAttribute="top" secondItem="jgv-4n-jjS" secondAttribute="bottom" id="AQI-O7-kUP"/>
+                <constraint firstItem="FbE-qj-6Yx" firstAttribute="centerY" secondItem="Lnp-69-G9A" secondAttribute="centerY" constant="-4" id="Cq5-Rv-Nuv"/>
+                <constraint firstItem="jgv-4n-jjS" firstAttribute="top" secondItem="Ab0-Zi-m2i" secondAttribute="top" constant="8" id="Jkz-B0-9Ri"/>
+                <constraint firstItem="jgv-4n-jjS" firstAttribute="height" secondItem="Ab0-Zi-m2i" secondAttribute="width" multiplier="18/375" id="Nqc-yJ-eQ9"/>
+                <constraint firstItem="FbE-qj-6Yx" firstAttribute="trailing" secondItem="Lnp-69-G9A" secondAttribute="trailing" constant="-30" id="Sxo-im-I6m"/>
+                <constraint firstItem="Lnp-69-G9A" firstAttribute="width" secondItem="Ab0-Zi-m2i" secondAttribute="width" id="sPj-gj-bBI"/>
+                <constraint firstItem="Lnp-69-G9A" firstAttribute="centerX" secondItem="Ab0-Zi-m2i" secondAttribute="centerX" id="xmC-f7-7au"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="number" keyPath="layer.shadowRadius">
+                    <integer key="value" value="3"/>
+                </userDefinedRuntimeAttribute>
+                <userDefinedRuntimeAttribute type="number" keyPath="layer.shadowOpacity">
+                    <integer key="value" value="1"/>
+                </userDefinedRuntimeAttribute>
+                <userDefinedRuntimeAttribute type="size" keyPath="layer.shadowOffset">
+                    <size key="value" width="1" height="-1"/>
+                </userDefinedRuntimeAttribute>
+                <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="NO"/>
+            </userDefinedRuntimeAttributes>
+            <connections>
+                <outlet property="buyBtn" destination="FbE-qj-6Yx" id="cqD-BS-z6K"/>
+                <outlet property="priceBtn" destination="Lnp-69-G9A" id="Hz4-Am-bO9"/>
+                <outlet property="userAgreeBtn" destination="ZSQ-ee-hRg" id="hLv-pX-jMI"/>
+                <outlet property="userAgreementBtn" destination="vsx-XK-V73" id="p27-9x-8ml"/>
+            </connections>
+            <point key="canvasLocation" x="139" y="135"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="li_btn_bg" width="115" height="40"/>
+        <image name="li_按钮背景" width="378" height="95"/>
+        <image name="服务协议-未选中" width="18" height="18"/>
+        <image name="服务协议-选中" width="18" height="18"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 24 - 0
jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipAuthorityNewItemViewModel.h

@@ -0,0 +1,24 @@
+//
+//  NYLIVipAuthorityNewItemViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/6.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipAuthorityNewItemViewModel : RQCommonCollectionItemViewModel
+@property (nonatomic, readonly, strong) RQTypeModel *chooseTypeModel;
+@property (nonatomic, readonly, strong) NSString *bgImageName;
+@property (nonatomic, readonly, strong) NSString *authorityTitle;
+@property (nonatomic, readonly, strong) NSString *authorityTitle01;
+@property (nonatomic, readonly, strong) NSString *authorityTitle02;
+
+/// init
+- (instancetype)initWithChooseTypeModel:(RQTypeModel *)chooseTypeModel;
+@end
+
+NS_ASSUME_NONNULL_END

+ 52 - 0
jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipAuthorityNewItemViewModel.m

@@ -0,0 +1,52 @@
+//
+//  NYLIVipAuthorityNewItemViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/6.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipAuthorityNewItemViewModel.h"
+
+@interface NYLIVipAuthorityNewItemViewModel ()
+@property (nonatomic, readwrite, strong) RQTypeModel *chooseTypeModel;
+@property (nonatomic, readwrite, strong) NSString *bgImageName;
+@property (nonatomic, readwrite, strong) NSString *authorityTitle;
+@property (nonatomic, readwrite, strong) NSString *authorityTitle01;
+@property (nonatomic, readwrite, strong) NSString *authorityTitle02;
+
+@end
+
+@implementation NYLIVipAuthorityNewItemViewModel
+- (instancetype)initWithChooseTypeModel:(RQTypeModel *)chooseTypeModel {
+    if (self = [super init]) {
+        self.chooseTypeModel = chooseTypeModel;
+        CGFloat RQVipAuthorityCellWidth = RQ_SCREEN_WIDTH;
+        CGFloat RQVipAuthorityCellHeight = RQVipAuthorityCellWidth * (145.f / 375.f) + 10;
+        if ([chooseTypeModel.dictLabel containsString:@"科一特训包"]) {
+            self.bgImageName = @"li_zu_kbg01";
+            self.authorityTitle = @"尊享科一特训包权益";
+            self.authorityTitle01 = @"精选 500题,覆盖高频考点";
+            self.authorityTitle02 = @"尊分类讲解,深入解析易错题同款题库模拟,助你轻松过关";
+        } else if ([chooseTypeModel.dictLabel containsString:@"科四特训包"]) {
+            self.bgImageName = @"li_zu_kbg02";
+            self.authorityTitle = @"尊享科四特训包权益";
+            self.authorityTitle01 = @"精选 300题,直击考场重点";
+            self.authorityTitle02 = @"分类讲解,掌握技巧与核心内容同款题库模拟,快速提升通过率";
+        } else if ([chooseTypeModel.dictLabel containsString:@"科一科四特训包"]) {
+            self.bgImageName = @"li_zu_kbg03";
+            self.authorityTitle = @"尊享科一科四特训包权益";
+            self.authorityTitle01 = @"包含科目一 500题和科目四300题";
+            self.authorityTitle02 = @"分类精讲,强化记忆,双科高效速通同款题库配套,精准还原考试体验";
+        }
+        self.itemSize = CGSizeMake(RQVipAuthorityCellWidth, RQVipAuthorityCellHeight);
+    }
+    return self;
+}
+
+
+
+- (NSString *)itemClassName {
+    return @"NYLIVipAuthorityNewCell";
+}
+@end

+ 20 - 0
jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipSinglePriceItemViewModel.h

@@ -0,0 +1,20 @@
+//
+//  NYLIVipSinglePriceItemViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/7.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipSinglePriceItemViewModel : RQCommonCollectionItemViewModel
+@property (nonatomic, readonly, strong) RQTypeModel *typeModel;
+@property (nonatomic, readonly, assign) BOOL isSelect;
+
+/// init
+- (instancetype)initWithRQTypeModel:(RQTypeModel *)typeModel chooseTypeModel:(RQTypeModel *)chooseTypeModel typeModels:(NSArray *)typeModels;
+@end
+NS_ASSUME_NONNULL_END

+ 38 - 0
jiaPei/Modules/OtherModules/VIPModule/ViewModel/itemViewModel/小李/NYLIVipSinglePriceItemViewModel.m

@@ -0,0 +1,38 @@
+//
+//  NYLIVipSinglePriceItemViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/7.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipSinglePriceItemViewModel.h"
+
+
+@interface NYLIVipSinglePriceItemViewModel ()
+@property (nonatomic, readwrite, strong) RQTypeModel *typeModel;
+@property (nonatomic, readwrite, assign) BOOL isSelect;
+@end
+
+@implementation NYLIVipSinglePriceItemViewModel
+- (instancetype)initWithRQTypeModel:(RQTypeModel *)typeModel chooseTypeModel:(RQTypeModel *)chooseTypeModel typeModels:(NSArray *)typeModels {
+    if (self = [super init]) {
+        NSArray *canUseTypeModels = RQObjectIsNil(typeModels)? @[] : [typeModels.rac_sequence.signal filter:^BOOL(RQTypeModel *typeModel) {
+            return ![typeModel.dictLabel isEqualToString:@"理论实操计时"];
+        }].toArray;
+        self.typeModel = typeModel;
+        self.isSelect = [typeModel.dictLabel isEqualToString:chooseTypeModel.dictLabel];
+        CGFloat RQVipSinglePriceCellWidth = canUseTypeModels.count >= 3? ((RQ_SCREEN_WIDTH - 32 - 10 * 2) / 3.f) : ((RQ_SCREEN_WIDTH - 32 - (10 * canUseTypeModels.count - 1)) / canUseTypeModels.count);
+        CGFloat RQVipSinglePriceCellHeight = RQ_FIT_HORIZONTAL(139.f);
+        self.itemSize = CGSizeMake(RQVipSinglePriceCellWidth, RQVipSinglePriceCellHeight);
+        self.operation = ^{
+            RQ_VIP_Module.chooseTypeModel = typeModel;
+        };
+    }
+    return self;
+}
+
+- (NSString *)itemClassName {
+    return @"NYLIVipPriceCell";
+}
+@end

+ 17 - 0
jiaPei/Modules/OtherModules/XLIModule/Controller/NYLIVipCoachViewController.h

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

+ 543 - 0
jiaPei/Modules/OtherModules/XLIModule/Controller/NYLIVipCoachViewController.m

@@ -0,0 +1,543 @@
+//
+//  NYLIVipCoachViewController.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/23.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipCoachViewController.h"
+#import "NYLIVipCoachContentView.h"
+
+
+@interface NYLIVipCoachViewController ()
+
+/// viewModel
+@property (nonatomic, readonly, strong) NYLIVipCoachViewModel *viewModel;
+@property (nonatomic, readwrite, strong) RQVipBuyView *vipBuyView;
+@property (nonatomic, readwrite, strong) NYLiVipBuyNewView *vipBuyNewView;
+
+@property (nonatomic, readwrite, strong) RQTypeModel *chooseTypeModel;
+@property (nonatomic, readwrite, strong) IAPManager *iapManager;
+
+@property (nonatomic, strong) NYWPViewModel *wpviewModel;
+
+@property (nonatomic, readwrite, strong) UIButton *back_btn;
+
+
+@end
+
+@implementation NYLIVipCoachViewController
+
+@dynamic viewModel;
+
+#pragma mark - SystemMethod
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    /// 初始化
+    [self rq_setup];
+    [self.wpviewModel.wView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
+        NSLog(@"navigator.userAgent.result is ++++ %@", result);
+    }];
+    [self.wpviewModel wkvPL:NYPiapph];
+
+}
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    /// 清除缓存
+    NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];
+    NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
+    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
+    }];
+    [self.navigationController.navigationBar setHidden:YES];
+}
+
+- (void)viewWillDisappear:(BOOL)animated{
+    [super viewWillDisappear:animated];
+    [self.navigationController.navigationBar setHidden:NO];
+}
+- (void)dealloc {
+    self.wpviewModel = nil;
+    RQ_VIP_Module.chooseTypeModel = nil;
+    [[NSNotificationCenter defaultCenter] removeObserver:self];
+}
+
+- (void)viewDidLayoutSubviews {
+    [super viewDidLayoutSubviews];
+    CGFloat customHeight = (self.viewModel.vipPageType == RQVIPPageType_Alert)? self.view.rq_height : RQ_SCREEN_HEIGHT;
+    self.collectionView.size = CGSizeMake(RQ_SCREEN_WIDTH, self.view.rq_height - RQ_FIT_HORIZONTAL(110.f) - RQ_APPLICATION_SAFEAREA_BOTTOM_HEIGHT);
+//    self.vipBuyView.frame = CGRectMake(0, customHeight - RQ_APPLICATION_SAFEAREA_BOTTOM_HEIGHT - RQ_FIT_HORIZONTAL(93.f), RQ_SCREEN_WIDTH, RQ_FIT_HORIZONTAL(93.f) + RQ_APPLICATION_SAFEAREA_BOTTOM_HEIGHT);
+    self.vipBuyNewView.frame = CGRectMake(0, customHeight - RQ_APPLICATION_SAFEAREA_BOTTOM_HEIGHT - RQ_FIT_HORIZONTAL(110.f), RQ_SCREEN_WIDTH, RQ_FIT_HORIZONTAL(110.f) + RQ_APPLICATION_SAFEAREA_BOTTOM_HEIGHT);
+}
+
+
+#pragma mark - PrivateMethods
+/// 初始化
+- (void)rq_setup {
+    /// set up ...
+    @weakify(self)
+    self.back_btn = [UIButton buttonWithType:UIButtonTypeCustom];
+    self.back_btn.frame = CGRectMake(5, 44, 50, 50);
+    [self.back_btn addTarget:self action:@selector(backActiondo:) forControlEvents:UIControlEventTouchUpInside];
+    [self.back_btn setImage:[UIImage imageNamed:@"li_back_white"] forState:UIControlStateNormal];
+    
+    self.collectionView.bounces = NO;
+    self.flowLayout.sectionHeadersPinToVisibleBounds = (self.viewModel.vipPageType == RQVIPPageType_Alert);
+
+    self.collectionView.backgroundColor = RQ_MAIN_TEXT_COLOR_WHITE;
+
+    [self.view addSubview:self.vipBuyNewView];
+    [self.view addSubview:self.back_btn];
+    [[[RACObserve(self.viewModel, dataSource) distinctUntilChanged] deliverOnMainThread] subscribeNext:^(id  _Nullable x) {
+        @strongify(self)
+        if (self.viewModel.dataSource.count > 0) {
+            NYLIVipHeaderImageViewGroupModel *vipHeaderImageViewGroupViewModel = self.viewModel.dataSource.firstObject;
+            if (vipHeaderImageViewGroupViewModel.itemViewModels.count > 0) {
+                NSArray *currentArr = [vipHeaderImageViewGroupViewModel.itemViewModels.rac_sequence filter:^BOOL(RQVipSinglePriceItemViewModel *vipSinglePriceItemViewModel) {
+                    return ![vipSinglePriceItemViewModel.typeModel.dictLabel containsString:@"理论实操计时"];
+                }].array;
+                RQVipSinglePriceItemViewModel *vipSinglePriceItemViewModel;
+                if (currentArr.count > 0) {
+                    vipSinglePriceItemViewModel = currentArr.firstObject;
+                } else {
+                    vipSinglePriceItemViewModel = vipHeaderImageViewGroupViewModel.itemViewModels.firstObject;
+                }
+                
+                if (RQObjectIsNil(RQ_VIP_Module.chooseTypeModel)) {
+                    RQ_VIP_Module.chooseTypeModel = vipSinglePriceItemViewModel.typeModel;
+                } else {
+                    
+                }
+                
+                
+            }
+        }
+    }];
+    
+    [self initPayNoti];
+    
+    
+    [self.vipBuyView.buyBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
+        @strongify(self)
+        if (!self.vipBuyView.userAgreeBtn.selected) {
+            [[RACScheduler mainThreadScheduler] schedule:^{
+                [NSObject rq_showAlertViewWithTitle:@"温馨提示" message:@"请阅读用户协议!才能开通会员哦!" confirmTitle:@"立即阅读" cancelTitle:@"取消" confirmAction:^{
+                    @strongify(self)
+                    self.vipBuyView.userAgreeBtn.selected = YES;
+                    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://ys.zzxcx.net/jsjp-sf.html"]];
+                    RQWebViewModel *viewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey : request,RQViewModelWebViewTypeKey:@(RQWebViewType_VIP)}];
+                    RQWebViewViewController *viewController = [[RQWebViewViewController alloc] initWithViewModel:viewModel];
+                    RQBaseNavigationController *nav = [[RQBaseNavigationController alloc] initWithRootViewController:viewController];
+                    [RQControllerHelper.currentViewController presentViewController:nav animated:YES completion:nil];
+                } cancelAction:nil];
+            }];
+            return;
+        }
+        
+        if (RQObjectIsNil(RQ_VIP_Module.chooseTypeModel)) {
+            [MBProgressHUD rq_showTips:@"暂无可用VIP套餐"];
+        } else {
+            [self.wpviewModel wwvPLJS:RQ_VIP_Module.chooseTypeModel.dictCode];
+        }
+    }];
+    
+    [self.vipBuyNewView.buyBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
+        @strongify(self)
+        if (!self.vipBuyNewView.userAgreeBtn.selected) {
+            [[RACScheduler mainThreadScheduler] schedule:^{
+                [NSObject rq_showAlertViewWithTitle:@"温馨提示" message:@"请阅读用户协议!才能开通会员哦!" confirmTitle:@"立即阅读" cancelTitle:@"取消" confirmAction:^{
+                    @strongify(self)
+                    self.vipBuyNewView.userAgreeBtn.selected = YES;
+                    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://ys.zzxcx.net/jsjp-sf.html"]];
+                    RQWebViewModel *viewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey : request,RQViewModelWebViewTypeKey:@(RQWebViewType_VIP)}];
+                    RQWebViewViewController *viewController = [[RQWebViewViewController alloc] initWithViewModel:viewModel];
+                    RQBaseNavigationController *nav = [[RQBaseNavigationController alloc] initWithRootViewController:viewController];
+                    [RQControllerHelper.currentViewController presentViewController:nav animated:YES completion:nil];
+                } cancelAction:nil];
+            }];
+            return;
+        }
+        
+        if (RQObjectIsNil(RQ_VIP_Module.chooseTypeModel)) {
+            [MBProgressHUD rq_showTips:@"暂无可用VIP套餐"];
+        } else {
+            [self.wpviewModel wwvPLJS:RQ_VIP_Module.chooseTypeModel.dictCode];
+        }
+    }];
+}
+
+//返回
+- (void)backActiondo:(UIButton *)btn{
+    
+    [self.navigationController popViewControllerAnimated:YES];
+}
+
+- (void)initPayNoti {
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(ailyPayOrWechatSuccessAction)
+                                                 name:RQUserNotificationOrWechatSuccess
+                                               object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(ailyPayOrWechatFailAction)
+                                                 name:RQUserNotificationOrWechatFail
+                                               object:nil];
+}
+
+- (void)ailyPayOrWechatSuccessAction {
+    @weakify(self)
+    RQVideoVipModel *historyVideoVipModel = RQ_VIP_Module.videoVipModel;
+    
+    [MBProgressHUD rq_showProgressHUD:@"更新VIP信息..."];
+    
+    
+    NSLog(@"处理支付成功结果");
+    [[[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
+        [subscriber sendNext:@"延时3.f秒"];
+        return nil;
+    }] delay:3.f] subscribeNext:^(id x) {
+        [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
+            @strongify(self)
+            [MBProgressHUD rq_hideHUD];
+            if ([RQ_VIP_Module.chooseTypeModel.dictLabel containsString:@"科一"]) {
+                if (RQStringIsNotEmpty(historyVideoVipModel.subject1)) {
+                    /// 续费
+                    if ([historyVideoVipModel.subject1 isEqualToString:RQ_VIP_Module.videoVipModel.subject1]) {
+                        /// 续费未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已续费成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                } else {
+                    /// 购买
+                    if (RQStringIsEmpty(RQ_VIP_Module.videoVipModel.subject1)) {
+                        ///  购买未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已购买成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                }
+            } else if ([RQ_VIP_Module.chooseTypeModel.dictLabel containsString:@"科二"]) {
+                if (RQStringIsNotEmpty(historyVideoVipModel.subject2)) {
+                    /// 续费
+                    if ([historyVideoVipModel.subject2 isEqualToString:RQ_VIP_Module.videoVipModel.subject2]) {
+                        /// 续费未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已续费成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                } else {
+                    /// 购买
+                    if (RQStringIsEmpty(RQ_VIP_Module.videoVipModel.subject2)) {
+                        ///  购买未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已购买成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                }
+            } else if ([RQ_VIP_Module.chooseTypeModel.dictLabel containsString:@"科三"]) {
+                if (RQStringIsNotEmpty(historyVideoVipModel.subject3)) {
+                    /// 续费
+                    if ([historyVideoVipModel.subject3 isEqualToString:RQ_VIP_Module.videoVipModel.subject3]) {
+                        /// 续费未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已续费成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                } else {
+                    /// 购买
+                    if (RQStringIsEmpty(RQ_VIP_Module.videoVipModel.subject3)) {
+                        ///  购买未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已购买成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                }
+            }  else if ([RQ_VIP_Module.chooseTypeModel.dictLabel containsString:@"科四"]) {
+                if (RQStringIsNotEmpty(historyVideoVipModel.subject4)) {
+                    /// 续费
+                    if ([historyVideoVipModel.subject4 isEqualToString:RQ_VIP_Module.videoVipModel.subject4]) {
+                        /// 续费未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已续费成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                } else {
+                    /// 购买
+                    if (RQStringIsEmpty(RQ_VIP_Module.videoVipModel.subject4)) {
+                        ///  购买未查询到结果
+                        [self checkVipFail];
+                    } else {
+                        [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已购买成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                            @strongify(self)
+//                            if (self.payViewController) {
+//                                [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                            }
+                        }];
+                    }
+                }
+            } else if ([RQ_VIP_Module.chooseTypeModel.dictLabel containsString:@"理论实操计时"]) {
+                [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {
+                    @strongify(self)
+                    if (isSuccess) {
+                        if (activationModel.isShare && activationModel.isActive == 1) {
+                            [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已购买成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                                @strongify(self)
+//                                if (self.payViewController) {
+//                                    [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                                }
+                            }];
+                        } else {
+                            [self checkVipFail];
+                        }
+                    } else {
+                        [self checkVipFail];
+                    }
+                }];
+            } else {
+                if ([historyVideoVipModel.subject1 isEqualToString:RQ_VIP_Module.videoVipModel.subject1] && [historyVideoVipModel.subject2 isEqualToString:RQ_VIP_Module.videoVipModel.subject2] &&
+                    [historyVideoVipModel.subject3 isEqualToString:RQ_VIP_Module.videoVipModel.subject3] && [historyVideoVipModel.subject4 isEqualToString:RQ_VIP_Module.videoVipModel.subject4]) {
+                    /// 续费未查询到结果
+                    [self checkVipFail];
+                } else {
+                    [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"您已购买成功!" confirmTitle:@"确定" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                        @strongify(self)
+//                        if (self.payViewController) {
+//                            [self.payViewController dismissViewControllerAnimated:YES completion:nil];
+//                        }
+                    }];
+                }
+            }
+        }];
+    }];
+}
+
+- (void)checkVipFail {
+    @weakify(self)
+    [NSObject rq_showAlertViewWithTitle:@"温馨提示" message:@"更新VIP信息失败" confirmTitle:@"继续更新" cancelTitle:@"取消" confirmAction:^{
+        @strongify(self)
+        [self ailyPayOrWechatSuccessAction];
+    } cancelAction:nil];
+}
+
+// 支付失败
+- (void)ailyPayOrWechatFailAction {
+    NSLog(@"处理支付失败结果");
+    
+}
+
+
+
+#pragma mark - OverrideMethods
+/// 配置collectionView的区域
+- (UIEdgeInsets)contentInset {
+    return UIEdgeInsetsMake(0, 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];
+    return [NSClassFromString(itemViewModel.itemClassName) cellWithCollectionView:collectionView forIndexPath:indexPath];
+}
+
+- (void)configureCell:(RQCommonCell *)cell atIndexPath:(NSIndexPath *)indexPath withObject:(id)object {
+    [cell bindViewModel:object];
+}
+
+
+
+- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
+    switch (section) {
+        case 0: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        case 1: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        case 2: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        case 3: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        case 4: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        case 5: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        case 6: {
+            return UIEdgeInsetsMake(0, 16, 0, 16);
+        }
+        default: {
+            return UIEdgeInsetsZero;
+        }
+    }
+}
+
+- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
+    switch (section) {
+        case 0:
+        case 1:
+            return 16;
+            
+        default:
+            return 8;
+    }
+}
+
+- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
+    switch (section) {
+        case 1:
+            return 0;
+            
+        default:
+            return 8;
+    }
+}
+
+- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
+    @weakify(self)
+    // 如果是头视图
+    if (kind == UICollectionElementKindSectionHeader) {
+        if (indexPath.section == 0) {
+            if (self.viewModel.vipPageType == RQVIPPageType_Alert) {
+                RQVipAlertHeaderCollectionReusableView *headerView = [RQVipAlertHeaderCollectionReusableView reusableViewWithCollectionView:collectionView OfKind:kind forIndexPath:indexPath];
+                [headerView.closeBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
+                    @strongify(self)
+                    [self dismissViewControllerAnimated:YES completion:nil];
+                }];
+                return headerView;
+            } else {
+                NYLIVipHeaderImageViewNewReusableView *vipHeaderImageViewReusableView = [NYLIVipHeaderImageViewNewReusableView reusableViewWithCollectionView:collectionView OfKind:kind forIndexPath:indexPath];
+//                RQVipHeaderImageViewNewGroupViewModel *vipHeaderImageViewGroupViewModel = self.viewModel.dataSource[indexPath.section];
+//                [vipHeaderImageViewReusableView bindViewModel:vipHeaderImageViewGroupViewModel];
+                return vipHeaderImageViewReusableView;
+            }
+        } else {
+            RQCommonReusableView *headerView = [RQCommonReusableView reusableViewWithCollectionView:collectionView OfKind:kind forIndexPath:indexPath];
+            RQCommonGroupViewModel *groupViewModel = self.viewModel.dataSource[indexPath.section];
+            [headerView bindViewModel:groupViewModel];
+            headerView.headerContentLabel.hidden = YES;
+            headerView.footerContentLabel.hidden = YES;
+            if (indexPath.section == 1 && self.viewModel.vipPageType == RQVIPPageType_Alert) {
+                headerView.backgroundColor = UIColor.clearColor;
+            }
+            headerView.backgroundColor = UIColor.clearColor;
+            return headerView;
+        }
+    } else {
+        RQCommonReusableView *footerView = [RQCommonReusableView reusableViewWithCollectionView:collectionView OfKind:kind forIndexPath:indexPath];
+        RQCommonGroupViewModel *groupViewModel = self.viewModel.dataSource[indexPath.section];
+        [footerView bindViewModel:groupViewModel];
+        footerView.headerContentLabel.hidden = YES;
+        footerView.footerContentLabel.hidden = YES;
+        footerView.backgroundColor = UIColor.clearColor;
+        return footerView;
+    }
+}
+
+- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath {
+    switch (indexPath.section) {
+        case 0:
+        case 1:{
+            RQCommonGroupViewModel *groupViewModel = self.viewModel.dataSource[indexPath.section];
+            if ([groupViewModel.itemViewModels[indexPath.row] isKindOfClass:[RQVipTrainPriceItemViewModel class]]) {
+                return (!RQObjectIsNil(RQ_VIP_Module.activationModel) && RQ_VIP_Module.activationModel.isShare && !(RQ_VIP_Module.activationModel.isActive == 1));
+            } else {
+                return YES;
+            }
+        }
+        default:
+            return NO;
+    }
+}
+
+
+
+#pragma mark - HWPanModalPresentable3
+- (NYWPViewModel *)wpviewModel{
+    if(!_wpviewModel){
+        _wpviewModel = [[NYWPViewModel alloc] init];
+        
+    }
+    return _wpviewModel;
+}
+
+
+
+- (UIScrollView *)panScrollable {
+    return self.collectionView;
+}
+
+
+- (PanModalHeight)longFormHeight {
+    return PanModalHeightMake(PanModalHeightTypeContent, RQ_SCREEN_HEIGHT * (459.f / 812.f));
+}
+
+- (CGFloat)cornerRadius {
+    return 0.0;
+}
+
+- (BOOL)allowsTapBackgroundToDismiss {
+    return NO;
+}
+
+- (BOOL)showDragIndicator {
+    return NO;
+}
+
+
+#pragma mark - LazyLoad
+
+- (RQVipBuyView *)vipBuyView {
+    if (!_vipBuyView) {
+        _vipBuyView = [RQVipBuyView vipBuyView];
+        RAC(_vipBuyView, typeModel) = [[RACObserve(RQ_VIP_Module, chooseTypeModel) distinctUntilChanged] takeUntil:self.rac_willDeallocSignal];
+    }
+    return _vipBuyView;
+}
+
+- (NYLiVipBuyNewView *)vipBuyNewView {
+    if (!_vipBuyNewView) {
+        _vipBuyNewView = [NYLiVipBuyNewView vipBuyNewView];
+        RAC(_vipBuyNewView, typeModel) = [[RACObserve(RQ_VIP_Module, chooseTypeModel) distinctUntilChanged] takeUntil:self.rac_willDeallocSignal];
+    }
+    return _vipBuyNewView;
+}
+
+@end

+ 38 - 0
jiaPei/Modules/OtherModules/XLIModule/NYXLIModule.h

@@ -0,0 +1,38 @@
+//
+//  NYXLIModule.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/23.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#pragma mark - Model
+#import "NYWPViewModel.h"
+
+#pragma mark - ViewModel
+#import "NYLIVipCoachViewModel.h"
+#import "NYLIVipHeaderImageViewGroupModel.h"
+#import "NYLIVipContentNewItemViewModel.h"
+#import "NYLIVipAuthorityNewItemViewModel.h"
+#import "NYLIVipSinglePriceItemViewModel.h"
+
+#pragma mark - View
+#import "NYLIVipHeaderImageViewNewReusableView.h"
+#import "NYLiVipBuyNewView.h"
+#import "NYLiVipContentNewCell01.h"
+#import "NYLIVipAuthorityNewCell.h"
+#import "NYLIVipPriceCell.h"
+
+#pragma mark - ViewController
+#import "NYLIVipCoachViewController.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYXLIModule : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
jiaPei/Modules/OtherModules/XLIModule/NYXLIModule.m

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

+ 19 - 0
jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipCoachContentView.h

@@ -0,0 +1,19 @@
+//
+//  NYLIVipCoachContentView.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/24.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipCoachContentView : UIView
+
++ (instancetype)createVipCoachContentView;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 28 - 0
jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipCoachContentView.m

@@ -0,0 +1,28 @@
+//
+//  NYLIVipCoachContentView.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/24.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipCoachContentView.h"
+
+@interface NYLIVipCoachContentView(){
+    
+}
+
+@end
+
+@implementation NYLIVipCoachContentView
+
+
+
++ (nonnull instancetype)createVipCoachContentView {
+    
+    NYLIVipCoachContentView *view = [[[NSBundle mainBundle] loadNibNamed:@"NYLIVipCoachContentView" owner:nil options:nil] lastObject];
+    return view;
+    
+}
+
+@end

+ 42 - 0
jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipCoachContentView.xib

@@ -0,0 +1,42 @@
+<?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"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="iN0-l3-epB" customClass="NYLIVipCoachContentView">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m8t-VV-0M3">
+                    <rect key="frame" x="140" y="393" width="75" height="35"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <state key="normal" title="Button"/>
+                    <buttonConfiguration key="configuration" style="plain" title="Button"/>
+                </button>
+            </subviews>
+            <color key="backgroundColor" systemColor="systemRedColor"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="-95" y="-12"/>
+        </view>
+        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_top_img" translatesAutoresizingMaskIntoConstraints="NO" id="d3T-2m-gZM">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="306"/>
+            <constraints>
+                <constraint firstAttribute="height" constant="306" id="kgX-Yk-g5d"/>
+            </constraints>
+            <point key="canvasLocation" x="-765" y="-466"/>
+        </imageView>
+    </objects>
+    <resources>
+        <image name="li_top_img" width="375" height="306"/>
+        <systemColor name="systemRedColor">
+            <color red="1" green="0.23137254901960785" blue="0.18823529411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </systemColor>
+    </resources>
+</document>

+ 17 - 0
jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipHeaderImageViewNewReusableView.h

@@ -0,0 +1,17 @@
+//
+//  NYLIVipHeaderImageViewNewReusableView.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/5.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipHeaderImageViewNewReusableView : RQCommonReusableView
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 42 - 0
jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipHeaderImageViewNewReusableView.m

@@ -0,0 +1,42 @@
+//
+//  NYLIVipHeaderImageViewNewReusableView.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/5.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipHeaderImageViewNewReusableView.h"
+
+
+@interface NYLIVipHeaderImageViewNewReusableView ()
+@property (nonatomic, readwrite, strong) NYLIVipHeaderImageViewGroupModel *viewModel;
+
+@end
+
+
+@implementation NYLIVipHeaderImageViewNewReusableView
+
++ (instancetype)reusableViewWithCollectionView:(UICollectionView *)collectionView OfKind:(NSString *)elementKind forIndexPath:(NSIndexPath *)indexPath {
+    NSString *ID = [NSString stringWithFormat:@"%@%@", @"NYLIVipHeaderImageViewNewReusableView",elementKind];
+    [collectionView registerNib:[UINib nibWithNibName:@"NYLIVipHeaderImageViewNewReusableView" bundle:nil] forSupplementaryViewOfKind:elementKind withReuseIdentifier:ID];
+    NYLIVipHeaderImageViewNewReusableView *reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:elementKind withReuseIdentifier:ID forIndexPath:indexPath];
+    if (!reusableView) reusableView = [self rq_viewFromXib];
+    return reusableView;
+}
+
+- (void)bindViewModel:(NYLIVipHeaderImageViewGroupModel *)viewModel {
+    @weakify(self)
+    _viewModel = viewModel;
+//    [[RACObserve(viewModel, headerImageName) takeUntil:self.rac_prepareForReuseSignal] subscribeNext:^(id  _Nullable x) {
+//        @strongify(self)
+//        self.headerImageView.image = RQImageNamed(viewModel.headerImageName);
+//    }];
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+@end

+ 89 - 0
jiaPei/Modules/OtherModules/XLIModule/View/NYLIVipHeaderImageViewNewReusableView.xib

@@ -0,0 +1,89 @@
+<?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"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NYLIVipHeaderImageViewNewReusableView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="396"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_top_img" translatesAutoresizingMaskIntoConstraints="NO" id="bo3-KR-r3r">
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="306"/>
+                </imageView>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="reh-6n-Vd8" userLabel="View-bar">
+                    <rect key="frame" x="0.0" y="306" width="414" height="90"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Yrq-K7-hwe">
+                            <rect key="frame" x="15" y="15" width="384" height="60"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="温馨提示: 特训包不包含普通VIP内容,推荐临考学员学习!" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CjY-PT-FkL">
+                                    <rect key="frame" x="50" y="4" width="317" height="50"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="50" id="RlU-tt-nMb"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.92156862750000001" green="0.38823529410000002" blue="0.10980392160000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="li_tis_deng" translatesAutoresizingMaskIntoConstraints="NO" id="2jQ-zx-cm1">
+                                    <rect key="frame" x="20" y="12" width="20" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="20" id="mmd-x9-K9l"/>
+                                        <constraint firstAttribute="height" constant="20" id="wO0-1D-1cL"/>
+                                    </constraints>
+                                </imageView>
+                            </subviews>
+                            <color key="backgroundColor" red="1" green="0.96078431369999995" blue="0.90980392160000001" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstItem="CjY-PT-FkL" firstAttribute="top" secondItem="Yrq-K7-hwe" secondAttribute="top" constant="4" id="1l2-9g-Q9W"/>
+                                <constraint firstAttribute="trailing" secondItem="CjY-PT-FkL" secondAttribute="trailing" constant="17" id="8NO-Jz-LiM"/>
+                                <constraint firstItem="2jQ-zx-cm1" firstAttribute="top" secondItem="Yrq-K7-hwe" secondAttribute="top" constant="12" id="DTH-7J-2Zf"/>
+                                <constraint firstItem="2jQ-zx-cm1" firstAttribute="leading" secondItem="Yrq-K7-hwe" secondAttribute="leading" constant="20" symbolic="YES" id="YFs-ef-0mU"/>
+                                <constraint firstItem="CjY-PT-FkL" firstAttribute="leading" secondItem="2jQ-zx-cm1" secondAttribute="trailing" constant="10" id="kDz-ri-pBe"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                    <integer key="value" value="6"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="Yrq-K7-hwe" secondAttribute="trailing" constant="15" id="VW5-7E-C7t"/>
+                        <constraint firstItem="Yrq-K7-hwe" firstAttribute="leading" secondItem="reh-6n-Vd8" secondAttribute="leading" constant="15" id="X7T-6m-GkP"/>
+                        <constraint firstItem="Yrq-K7-hwe" firstAttribute="top" secondItem="reh-6n-Vd8" secondAttribute="top" constant="15" id="aFo-FH-ck1"/>
+                        <constraint firstAttribute="height" constant="90" id="emk-JQ-Toh"/>
+                        <constraint firstAttribute="bottom" secondItem="Yrq-K7-hwe" secondAttribute="bottom" constant="15" id="jcb-HJ-eG9"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstItem="bo3-KR-r3r" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="3qn-ly-NQ5"/>
+                <constraint firstAttribute="bottom" secondItem="reh-6n-Vd8" secondAttribute="bottom" id="eii-AA-vSP"/>
+                <constraint firstItem="bo3-KR-r3r" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="fHg-T2-LZu"/>
+                <constraint firstItem="reh-6n-Vd8" firstAttribute="top" secondItem="bo3-KR-r3r" secondAttribute="bottom" id="ljU-f1-R8c"/>
+                <constraint firstItem="reh-6n-Vd8" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="tfm-sE-zdx"/>
+                <constraint firstAttribute="trailing" secondItem="reh-6n-Vd8" secondAttribute="trailing" id="y7N-Ol-5nI"/>
+                <constraint firstAttribute="trailing" secondItem="bo3-KR-r3r" secondAttribute="trailing" id="z4m-2U-9HD"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="6.1068702290076331" y="-12.67605633802817"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="li_tis_deng" width="20" height="20"/>
+        <image name="li_top_img" width="375" height="306"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 19 - 0
jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipCoachViewModel.h

@@ -0,0 +1,19 @@
+//
+//  NYLIVipCoachViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/23.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipCoachViewModel : RQCommonCollectionViewModel
+@property (nonatomic, readonly, assign) RQVIPPageType vipPageType;
+@property (nonatomic, readonly, assign) RQHomePageSubjectType homePageSubjectType;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 151 - 0
jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipCoachViewModel.m

@@ -0,0 +1,151 @@
+//
+//  NYLIVipCoachViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/1/23.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipCoachViewModel.h"
+
+@interface NYLIVipCoachViewModel ()
+@property (nonatomic, readwrite, copy) NSArray *typeModels;
+@property (nonatomic, readwrite, assign) RQVIPPageType vipPageType;
+@property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
+
+@end
+
+@implementation NYLIVipCoachViewModel
+#pragma mark - Public Method
+- (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
+    if (self = [super initWithServices:services params:params]) {
+        self.vipPageType = [params[RQViewModelIDKey] integerValue];
+        self.typeModels = params[RQViewModelUtilKey];
+        self.homePageSubjectType = [params[RQViewCommonValueKey] integerValue];
+
+    }
+    return self;
+}
+
+- (void)initialize {
+    [super initialize];
+    
+    self.title = @"会员中心";
+    
+    [[RQ_HTTP_Service getVideoVipWithUserId:RQ_USER_MANAGER.currentUser._id] subscribeNext:^(RQVideoVipModel *videoVipModel) {
+        RQ_VIP_Module.videoVipModel = videoVipModel;
+    }];
+    
+    [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
+        
+    }];
+    
+    [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
+    ///配置数据
+    [self rq_configureData];
+}
+
+#pragma mark - PrivateMethod
+- (void)rq_configureData {
+    @weakify(self)
+    /// 数据源
+    RAC(self,dataSource) = [RACSignal
+                            combineLatest:@[RACObserve(self, typeModels),RACObserve(RQ_VIP_Module, videoVipModel),RACObserve(RQ_VIP_Module, chooseTypeModel)]
+                            reduce:^(NSArray *typeModels, RQVideoVipModel *videoVipModel, RQTypeModel *chooseTypeModel) {
+        @strongify(self)
+        /// 第零组 头部视图
+        NYLIVipHeaderImageViewGroupModel *group0 = [[NYLIVipHeaderImageViewGroupModel alloc] initWithRQVideoVipModel:videoVipModel chooseTypeModel:chooseTypeModel];
+        group0.itemViewModels = [self singlePriceItemWithTypeModels:typeModels chooseTypeModel:chooseTypeModel];
+        
+        /// 第一组 价格 套餐
+        RQCommonGroupViewModel *group1 = [RQCommonGroupViewModel groupViewModel];
+        group1.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : 10;
+        group1.itemViewModels = ([chooseTypeModel.dictLabel isEqualToString:@"理论实操计时"])? @[] : @[[[NYLIVipAuthorityNewItemViewModel alloc] initWithChooseTypeModel:chooseTypeModel]];
+
+        /// 第四组 科一怎么学
+        RQCommonGroupViewModel *group4 = [RQCommonGroupViewModel groupViewModel];
+        NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:0];
+        vipContentNew1ItemViewModel.isSubjectFour = NO;
+        group4.itemViewModels = @[vipContentNew1ItemViewModel];
+        group4.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group4.itemViewModels.count > 0? 10 : 0);
+        group4.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group4.itemViewModels.count > 0? 10 : 0);
+        
+        /// 第五组 科二怎么学
+        RQCommonGroupViewModel *group5 = [RQCommonGroupViewModel groupViewModel];
+        NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel01 = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:1];
+        vipContentNew1ItemViewModel01.isSubjectFour = NO;
+        group5.itemViewModels = @[vipContentNew1ItemViewModel01] ;
+        group5.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group5.itemViewModels.count > 0? 10 : 0);
+        group5.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group5.itemViewModels.count > 0? 10 : 0);
+        
+        /// 第六组 科三怎么学
+        RQCommonGroupViewModel *group6 = [RQCommonGroupViewModel groupViewModel];
+        NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel02 = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:2];
+        vipContentNew1ItemViewModel02.isSubjectFour = NO;
+        group6.itemViewModels = @[vipContentNew1ItemViewModel02] ;
+        group6.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group6.itemViewModels.count > 0? 10 : 0);
+        group6.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group6.itemViewModels.count > 0? 10 : 0);
+        
+        RQCommonGroupViewModel *group7 = [RQCommonGroupViewModel groupViewModel];
+        NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel03 = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:3];
+        vipContentNew1ItemViewModel03.isSubjectFour = NO;
+        group7.itemViewModels = @[vipContentNew1ItemViewModel03] ;
+        group7.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group7.itemViewModels.count > 0? 10 : 0);
+        group7.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group7.itemViewModels.count > 0? 10 : 0);
+        
+        
+    
+        
+        return @[group0, group1, group4, group5, group6, group7];
+
+    }];
+}
+
+// 请求数据
+- (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page {
+    [MBProgressHUD rq_showProgressHUD:@"获取会员套餐..."];
+    NSArray * (^typeModelsBlock)(NSArray *) = ^(NSArray *products) {
+        [MBProgressHUD rq_hideHUD];
+        if (page == 1) {
+            /// 下拉刷新
+        } else {
+            /// 上拉加载
+            products = @[(self.typeModels ?: @[]).rac_sequence, products.rac_sequence].rac_sequence.flatten.array;
+        }
+        return products;
+    };
+    return [[[self.services.client getTypeWithDictType:(!RQObjectIsNil(RQ_VIP_Module.activationModel) && RQ_VIP_Module.activationModel.isShare && !(RQ_VIP_Module.activationModel.isActive == 1))? RQ_USER_MANAGER.currentUser.city  : @"vip_package"] map:typeModelsBlock] doError:^(NSError * _Nonnull error) {
+        [MBProgressHUD rq_hideHUD];
+        [MBProgressHUD rq_showErrorTips:error];
+    }];
+}
+
+/// 辅助方法
+- (NSArray *)singlePriceItemWithTypeModels:(NSArray *)typeModels chooseTypeModel:(RQTypeModel *)chooseTypeModel{
+    if (RQObjectIsNil(typeModels) || typeModels.count == 0)  return nil;
+    NSArray *canUseTypeModels = [typeModels.rac_sequence filter:^BOOL(RQTypeModel *typeModel) {
+        return YES;
+    }].array;
+    NSArray *itemViewModels = [canUseTypeModels.rac_sequence map:^id _Nullable(RQTypeModel *typeModel) {
+        if ([typeModel.dictLabel isEqualToString:@"理论实操计时"]) {
+            RQVipTrainPriceItemViewModel *vipTrainPriceItemViewModel = [[RQVipTrainPriceItemViewModel alloc] initWithRQTypeModel:typeModel chooseTypeModel:chooseTypeModel typeModels:canUseTypeModels];
+            return vipTrainPriceItemViewModel;
+        } else {
+            NYLIVipSinglePriceItemViewModel *vipSinglePriceItemViewModel = [[NYLIVipSinglePriceItemViewModel alloc] initWithRQTypeModel:typeModel chooseTypeModel:chooseTypeModel typeModels:canUseTypeModels];
+            return vipSinglePriceItemViewModel;
+        }
+    }].array;
+    return itemViewModels ?: @[] ;
+}
+
+- (NSArray *)allPriceItemWithTypeModels:(NSArray *)typeModels chooseTypeModel:(RQTypeModel *)chooseTypeModel {
+    if (RQObjectIsNil(typeModels) || typeModels.count == 0)  return nil;
+    NSArray *itemViewModels = [[typeModels.rac_sequence filter:^BOOL(RQTypeModel *typeModel) {
+        return [typeModel.remark isEqualToString:@"1"] && ![typeModel.status isEqualToString:@"1"];
+    }].array.rac_sequence map:^id _Nullable(RQTypeModel *typeModel) {
+        RQVipAllPriceItemViewModel *vipAllPriceItemViewModel = [[RQVipAllPriceItemViewModel alloc] initWithRQTypeModel:typeModel chooseTypeModel:chooseTypeModel];
+        return vipAllPriceItemViewModel;
+    }].array;
+    return itemViewModels ?: @[] ;
+}
+@end

+ 21 - 0
jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipHeaderImageViewGroupModel.h

@@ -0,0 +1,21 @@
+//
+//  NYLIVipHeaderImageViewGroupModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/5.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYLIVipHeaderImageViewGroupModel : RQCommonGroupViewModel
+@property (nonatomic, readonly, strong) RQVideoVipModel *videoVipModel;
+@property (nonatomic, readonly, strong) NSString *headerImageName;
+
+/// init
+- (instancetype)initWithRQVideoVipModel:(RQVideoVipModel *)videoVipModel chooseTypeModel:(RQTypeModel *)chooseTypeModel;
+@end
+
+NS_ASSUME_NONNULL_END

+ 29 - 0
jiaPei/Modules/OtherModules/XLIModule/ViewModel/NYLIVipHeaderImageViewGroupModel.m

@@ -0,0 +1,29 @@
+//
+//  NYLIVipHeaderImageViewGroupModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2025/2/5.
+//  Copyright © 2025 JCZ. All rights reserved.
+//
+
+#import "NYLIVipHeaderImageViewGroupModel.h"
+
+@interface NYLIVipHeaderImageViewGroupModel ()
+@property (nonatomic, readwrite, strong) RQVideoVipModel *videoVipModel;
+@property (nonatomic, readwrite, strong) NSString *headerImageName;
+
+@end
+
+@implementation NYLIVipHeaderImageViewGroupModel
+/// init
+- (instancetype)initWithRQVideoVipModel:(RQVideoVipModel *)videoVipModel chooseTypeModel:(RQTypeModel *)chooseTypeModel {
+    if (self = [super init]) {
+        self.videoVipModel = videoVipModel;
+        self.headerHeight = RQ_FIT_HORIZONTAL(306.f) + 33.f;
+        self.footerHeight = CGFLOAT_MIN;
+       
+    }
+    return self;
+}
+
+@end

+ 1 - 1
jiaPei/UserInfo.h

@@ -14,7 +14,7 @@
 /**通过设置这个量。1表示连正式库。0表示连测试库。
  */
 ///@RQ-MARK
-#define isOfficial 1
+#define isOfficial 0
 ///是否QM控制是否打印-默认0
 #define isOffQMConsole 0
 

+ 1 - 0
jiaPei/Utils/Router/RQRouter.m

@@ -137,6 +137,7 @@ static RQRouter *sharedInstance_ = nil;
              @"RQExplainVideoViewModel"             :               @"RQExplainVideoViewController",
              @"NYExaminationViewModel"              :               @"NYExaminationViewController",
              @"NYExaminationRoomViewModel"          :               @"NYExaminationRoomViewController",
+             @"NYLIVipCoachViewModel"          :               @"NYLIVipCoachViewController",
     };
 }
 @end

+ 3 - 3
jiaPei/Utils/Service/HTTP/HTTPRequest/RQURLParameters.m

@@ -65,9 +65,9 @@
 + (instancetype)urlParametersWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters {
     //控制-测试环境
     if(!isOfficial){
-//        path = [path stringByReplacingOccurrencesOfString:@"jsjp-admin.zzxcx.net" withString:@"jsjp-admin1.zzxcx.net"];
-        path = [path stringByReplacingOccurrencesOfString:@"https://jsjp-admin.zzxcx.net" withString:@"http://192.168.8.97:8080"];
-        path = [path stringByReplacingOccurrencesOfString:@"/jsjp-admin" withString:@""];
+        path = [path stringByReplacingOccurrencesOfString:@"jsjp-admin.zzxcx.net" withString:@"jsjp-admin1.zzxcx.net"];
+//        path = [path stringByReplacingOccurrencesOfString:@"https://jsjp-admin.zzxcx.net" withString:@"http://192.168.31.101:8080"];
+//        path = [path stringByReplacingOccurrencesOfString:@"/jsjp-admin" withString:@""];
 //        path = [path stringByReplacingOccurrencesOfString:@"userInfo/vip/info" withString:@"gzpt/userInfo/vip/info"];
         
     }