Steven пре 2 година
родитељ
комит
706f5fff80
71 измењених фајлова са 1219 додато и 512 уклоњено
  1. 16 6
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 62 46
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 1 1
      KulexiuForStudent/KulexiuForStudent/AppDelegate.m
  5. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_courseTime.imageset/Contents.json
  6. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_courseTime.imageset/home_courseTime@2x.png
  7. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_courseTime.imageset/home_courseTime@3x.png
  8. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_left.imageset/Contents.json
  9. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_left.imageset/home_left@2x.png
  10. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_left.imageset/home_left@3x.png
  11. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/live_image.imageset/Contents.json
  12. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/live_image.imageset/live_image@2x.png
  13. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/live_image.imageset/live_image@3x.png
  14. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_feedback.imageset/Contents.json
  15. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_feedback.imageset/mine_feedback@2x.png
  16. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_feedback.imageset/mine_feedback@3x.png
  17. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_help.imageset/mine_help@2x.png
  18. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_help.imageset/mine_help@3x.png
  19. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainOrder.imageset/Contents.json
  20. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainOrder.imageset/mine_trainOrder@2x.png
  21. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainOrder.imageset/mine_trainOrder@3x.png
  22. 3 3
      KulexiuForStudent/KulexiuForStudent/Common/Base/BaseAlertView.h
  23. 4 4
      KulexiuForStudent/KulexiuForStudent/Common/Base/BaseAlertView.m
  24. 15 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m
  25. 2 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h
  26. 29 9
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m
  27. 21 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSTipsAlert.h
  28. 75 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSTipsAlert.m
  29. 147 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSTipsAlert.xib
  30. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/Controller/CourseViewController.m
  31. 5 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseForLiveCell.m
  32. 6 5
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseForLiveCell.xib
  33. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.h
  34. 44 27
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.m
  35. 59 23
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.xib
  36. 22 8
      KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m
  37. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/Model/TeacherStyleModel.h
  38. 7 7
      KulexiuForStudent/KulexiuForStudent/Module/Home/Model/TeacherStyleModel.m
  39. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCourseTipsView.m
  40. 12 2
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeHotAlbumView.xib
  41. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeInformationCell.m
  42. 12 2
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeIntroduceView.xib
  43. 12 2
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCourseView.xib
  44. 15 6
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCouseCell.m
  45. 30 47
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCouseCell.xib
  46. 12 6
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeVideoCourseCell.m
  47. 12 37
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeVideoCourseCell.xib
  48. 12 2
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeVideoCourseView.xib
  49. 12 2
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotInformationHeadView.xib
  50. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/PublicNoticeView.xib
  51. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/TeacherShowCell.h
  52. 22 3
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/TeacherShowCell.m
  53. 44 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/TeacherShowCell.xib
  54. 10 1
      KulexiuForStudent/KulexiuForStudent/Module/Live/Controller/LiveVideoRoomViewController.m
  55. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Live/Model/LiveroomTimeManager.m
  56. 24 43
      KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.m
  57. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Login/Guide/Controller/GuideViewController.m
  58. 36 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfoManager.m
  59. 7 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m
  60. 17 11
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/Model/HomeworkListModel.h
  61. 117 71
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/Model/HomeworkListModel.m
  62. 15 2
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkBodyView.m
  63. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.h
  64. 29 5
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.m
  65. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.xib
  66. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m
  67. 3 59
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.xib
  68. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h
  69. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m
  70. 120 58
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib
  71. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/SealClass/Services/Classroom/ClassroomService.m

+ 16 - 6
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -429,7 +429,6 @@
 		BC27A076280FF61300F91E27 /* AccompanyDetailBottomView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC27A075280FF61300F91E27 /* AccompanyDetailBottomView.xib */; };
 		BC27A079280FFA2200F91E27 /* EvaluateDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC27A078280FFA2200F91E27 /* EvaluateDetailModel.m */; };
 		BC28582B2809036D0024697C /* StudentInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC28582A2809036D0024697C /* StudentInfoModel.m */; };
-		BC32E106286AA7A7001434DD /* KSBaseAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC32E105286AA7A7001434DD /* KSBaseAlertView.m */; };
 		BC40B9F82811767A00DEC0D1 /* HotInformationHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC40B9F72811767A00DEC0D1 /* HotInformationHeadView.m */; };
 		BC40B9FA2811768400DEC0D1 /* HotInformationHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC40B9F92811768400DEC0D1 /* HotInformationHeadView.xib */; };
 		BC40B9FE281177BD00DEC0D1 /* HomeInformationCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC40B9FC281177BD00DEC0D1 /* HomeInformationCell.m */; };
@@ -697,6 +696,9 @@
 		BCB9FA2F286D7B02005D766B /* GuideViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB9FA2E286D7B02005D766B /* GuideViewController.m */; };
 		BCB9FA35286D7C2F005D766B /* GuideListView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB9FA34286D7C2F005D766B /* GuideListView.m */; };
 		BCB9FA37286D7C38005D766B /* GuideListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCB9FA36286D7C38005D766B /* GuideListView.xib */; };
+		BCB9FA46286EDCD7005D766B /* KSTipsAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB9FA43286EDCD7005D766B /* KSTipsAlert.m */; };
+		BCB9FA47286EDCD7005D766B /* KSTipsAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCB9FA45286EDCD7005D766B /* KSTipsAlert.xib */; };
+		BCB9FA4A286EDE1A005D766B /* BaseAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB9FA49286EDE19005D766B /* BaseAlertView.m */; };
 		BCBFDF3728110C660052AFE5 /* HomeNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBFDF3628110C660052AFE5 /* HomeNavView.m */; };
 		BCBFDF3928110C6F0052AFE5 /* HomeNavView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCBFDF3828110C6F0052AFE5 /* HomeNavView.xib */; };
 		BCBFDF3C281156430052AFE5 /* HomeBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBFDF3B281156430052AFE5 /* HomeBannerView.m */; };
@@ -1538,8 +1540,6 @@
 		BC27A078280FFA2200F91E27 /* EvaluateDetailModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EvaluateDetailModel.m; sourceTree = "<group>"; };
 		BC2858292809036C0024697C /* StudentInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StudentInfoModel.h; sourceTree = "<group>"; };
 		BC28582A2809036D0024697C /* StudentInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StudentInfoModel.m; sourceTree = "<group>"; };
-		BC32E104286AA7A7001434DD /* KSBaseAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSBaseAlertView.h; sourceTree = "<group>"; };
-		BC32E105286AA7A7001434DD /* KSBaseAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSBaseAlertView.m; sourceTree = "<group>"; };
 		BC40B9F62811767A00DEC0D1 /* HotInformationHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HotInformationHeadView.h; sourceTree = "<group>"; };
 		BC40B9F72811767A00DEC0D1 /* HotInformationHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HotInformationHeadView.m; sourceTree = "<group>"; };
 		BC40B9F92811768400DEC0D1 /* HotInformationHeadView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HotInformationHeadView.xib; sourceTree = "<group>"; };
@@ -2010,6 +2010,11 @@
 		BCB9FA33286D7C2F005D766B /* GuideListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GuideListView.h; sourceTree = "<group>"; };
 		BCB9FA34286D7C2F005D766B /* GuideListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GuideListView.m; sourceTree = "<group>"; };
 		BCB9FA36286D7C38005D766B /* GuideListView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GuideListView.xib; sourceTree = "<group>"; };
+		BCB9FA43286EDCD7005D766B /* KSTipsAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSTipsAlert.m; sourceTree = "<group>"; };
+		BCB9FA44286EDCD7005D766B /* KSTipsAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSTipsAlert.h; sourceTree = "<group>"; };
+		BCB9FA45286EDCD7005D766B /* KSTipsAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KSTipsAlert.xib; sourceTree = "<group>"; };
+		BCB9FA48286EDE19005D766B /* BaseAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseAlertView.h; sourceTree = "<group>"; };
+		BCB9FA49286EDE19005D766B /* BaseAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseAlertView.m; sourceTree = "<group>"; };
 		BCBFDF3528110C660052AFE5 /* HomeNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeNavView.h; sourceTree = "<group>"; };
 		BCBFDF3628110C660052AFE5 /* HomeNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeNavView.m; sourceTree = "<group>"; };
 		BCBFDF3828110C6F0052AFE5 /* HomeNavView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeNavView.xib; sourceTree = "<group>"; };
@@ -3471,6 +3476,9 @@
 		2779350B27E324A40010E277 /* Base */ = {
 			isa = PBXGroup;
 			children = (
+				BCB9FA44286EDCD7005D766B /* KSTipsAlert.h */,
+				BCB9FA43286EDCD7005D766B /* KSTipsAlert.m */,
+				BCB9FA45286EDCD7005D766B /* KSTipsAlert.xib */,
 				BC119246280EDA5800A716F7 /* kSJXCollectionView.h */,
 				BC119245280EDA5800A716F7 /* kSJXCollectionView.m */,
 				2723B64727F15BDB00E0B90B /* KSJXBodyView.h */,
@@ -3530,10 +3538,10 @@
 				BC8B6DC12856CAE500866917 /* KSICloudManager.m */,
 				BC8B6DC72856CFB800866917 /* KSDocument.h */,
 				BC8B6DC82856CFB800866917 /* KSDocument.m */,
+				BCB9FA48286EDE19005D766B /* BaseAlertView.h */,
+				BCB9FA49286EDE19005D766B /* BaseAlertView.m */,
 				BC8B6DC42856CAF500866917 /* KSDocumentViewController.h */,
 				BC8B6DC52856CAF600866917 /* KSDocumentViewController.m */,
-				BC32E104286AA7A7001434DD /* KSBaseAlertView.h */,
-				BC32E105286AA7A7001434DD /* KSBaseAlertView.m */,
 			);
 			path = Base;
 			sourceTree = "<group>";
@@ -5266,6 +5274,7 @@
 				BCBFDF48281159A40052AFE5 /* HomeHotAlbumView.xib in Resources */,
 				27F9033727E87C8B00C08A19 /* MineNavView.xib in Resources */,
 				BC8A45AB283DC33400094BBB /* TrackChooseView.xib in Resources */,
+				BCB9FA47286EDCD7005D766B /* KSTipsAlert.xib in Resources */,
 				BC8B6E022856E06700866917 /* iOS集成升级必读.pdf in Resources */,
 				BC542E40284079E300633781 /* UserAuthBodyView.xib in Resources */,
 				BC542E5528409EC900633781 /* InstrumentHeaderView.xib in Resources */,
@@ -5602,6 +5611,7 @@
 				2779354227E324A60010E277 /* UIImage+ResizeImage.m in Sources */,
 				277935B327E324A90010E277 /* FSCalendarCollectionView.m in Sources */,
 				2779352727E324A60010E277 /* NSArray+zh_SafeAccess.m in Sources */,
+				BCB9FA46286EDCD7005D766B /* KSTipsAlert.m in Sources */,
 				BCB6359727F6D2AB00ACFDCF /* ClassroomTimerManager.m in Sources */,
 				2779352227E324A60010E277 /* UITextView+ZWLimitCounter.m in Sources */,
 				27F9032927E87C2E00C08A19 /* NetworkingCheckController.m in Sources */,
@@ -5835,6 +5845,7 @@
 				BCB908F02850B08D00F5FF69 /* KSChatLiveShareCell.m in Sources */,
 				277935C027E324A90010E277 /* FSCalendarTransitionCoordinator.m in Sources */,
 				BC494A8028696BC300CCD343 /* MusicRoomListModel.m in Sources */,
+				BCB9FA4A286EDE1A005D766B /* BaseAlertView.m in Sources */,
 				2779355B27E324A70010E277 /* KSStatusView.m in Sources */,
 				2779355227E324A70010E277 /* VoMemoryCache.m in Sources */,
 				2779352A27E324A60010E277 /* UIView+Dealloc.m in Sources */,
@@ -6005,7 +6016,6 @@
 				BCB6359627F6D2AB00ACFDCF /* LocalRenderManager.m in Sources */,
 				2723B66927F15CFC00E0B90B /* PhoneChangeBodyView.m in Sources */,
 				27F9033227E87C2E00C08A19 /* SettingViewController.m in Sources */,
-				BC32E106286AA7A7001434DD /* KSBaseAlertView.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

BIN
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 62 - 46
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -30,8 +30,8 @@
             filePath = "KulexiuForStudent/Module/Live/Controller/LiveVideoRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "679"
-            endingLineNumber = "679"
+            startingLineNumber = "689"
+            endingLineNumber = "689"
             landmarkName = "-updateVideoViewContainer"
             landmarkType = "7">
          </BreakpointContent>
@@ -39,38 +39,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "9A0DD1A0-97FC-497F-A7C6-A39B590B4AF8"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "488"
-            endingLineNumber = "488"
-            landmarkName = "-handleScriptMessageSource:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "8673E762-E4A8-4C4C-BFF7-3D81DA53CE93"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Common/Base/KSNetworkingManager.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1023"
-            endingLineNumber = "1023"
-            landmarkName = "+homeworkListRequest:date:submit:page:rows:success:faliure:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "90870E90-A189-49CA-87A4-9BCE458CD721"
             shouldBeEnabled = "No"
             ignoreCount = "0"
@@ -135,15 +103,15 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "B8EA65CF-7AFD-4843-AA39-123568A3726C"
+            uuid = "1E8DF52E-2B68-4E1B-9E6B-1E58C2390AC3"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "KulexiuForStudent/Module/SealClass/Services/RTC/RTCService.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "440"
-            endingLineNumber = "440"
+            startingLineNumber = "432"
+            endingLineNumber = "432"
             landmarkName = "-exchangeRemoteUserAVStreamToNomalSteam:callback:"
             landmarkType = "7">
          </BreakpointContent>
@@ -151,32 +119,80 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "1E8DF52E-2B68-4E1B-9E6B-1E58C2390AC3"
+            uuid = "9EDC11F9-3564-49E4-AF77-27FA93A2656A"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForStudent/Module/Classroom/Controller/NewClassRoomViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1041"
+            endingLineNumber = "1041"
+            landmarkName = "-teacherDidDisplay"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "745075B2-9136-4E06-B081-5F6DF7A96093"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "191"
+            endingLineNumber = "191"
+            landmarkName = "-requestData"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "940D3F1F-4955-4A75-ACDD-A025FBC1FD22"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "206"
+            endingLineNumber = "206"
+            landmarkName = "-countMessageWithModel:indexPath:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "1CD9F766-8711-4450-B290-9343763647ED"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Module/SealClass/Services/RTC/RTCService.m"
+            filePath = "KulexiuForStudent/Module/Classroom/Controller/NewClassRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "432"
-            endingLineNumber = "432"
-            landmarkName = "-exchangeRemoteUserAVStreamToNomalSteam:callback:"
+            startingLineNumber = "974"
+            endingLineNumber = "974"
+            landmarkName = "-renderMainContainerView"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "9EDC11F9-3564-49E4-AF77-27FA93A2656A"
+            uuid = "9439F0CE-D0CC-4145-9CD6-1C6D2907C05A"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "KulexiuForStudent/Module/Classroom/Controller/NewClassRoomViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1041"
-            endingLineNumber = "1041"
-            landmarkName = "-teacherDidDisplay"
+            startingLineNumber = "994"
+            endingLineNumber = "994"
+            landmarkName = "-renderMainContainerView"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/AppDelegate.m

@@ -47,7 +47,7 @@
 
 @end
 
-@interface AppDelegate ()<UITabBarControllerDelegate,RCIMReceiveMessageDelegate,WXApiDelegate>
+@interface AppDelegate ()<UITabBarControllerDelegate,RCIMReceiveMessageDelegate,WXApiDelegate,JPUSHRegisterDelegate>
 
 @property (nonatomic, assign) BOOL isNeedUpdate;
 

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_courseTime.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_courseTime.imageset/home_courseTime@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_courseTime.imageset/home_courseTime@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_left.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_left.imageset/home_left@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/home_left.imageset/home_left@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/live_image.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/live_image.imageset/live_image@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/live_image.imageset/live_image@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_feedback.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_feedback.imageset/mine_feedback@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_feedback.imageset/mine_feedback@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_help.imageset/mine_help@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_help.imageset/mine_help@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainOrder.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainOrder.imageset/mine_trainOrder@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_trainOrder.imageset/mine_trainOrder@3x.png


+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseAlertView.h → KulexiuForStudent/KulexiuForStudent/Common/Base/BaseAlertView.h

@@ -1,6 +1,6 @@
 //
-//  KSBaseAlertView.h
-//  KulexiuForStudent
+//  BaseAlertView.h
+//  KulexiuForTeacher
 //
 //  Created by 王智 on 2022/6/28.
 //
@@ -9,7 +9,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface KSBaseAlertView : UIView
+@interface BaseAlertView : UIView
 
 @end
 

+ 4 - 4
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseAlertView.m → KulexiuForStudent/KulexiuForStudent/Common/Base/BaseAlertView.m

@@ -1,13 +1,13 @@
 //
-//  KSBaseAlertView.m
-//  KulexiuForStudent
+//  BaseAlertView.m
+//  KulexiuForTeacher
 //
 //  Created by 王智 on 2022/6/28.
 //
 
-#import "KSBaseAlertView.h"
+#import "BaseAlertView.h"
 
-@implementation KSBaseAlertView
+@implementation BaseAlertView
 
 /*
 // Only override drawRect: if you perform custom drawing.

+ 15 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m

@@ -61,6 +61,8 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
 
 @property (nonatomic, strong) NSString *bucketName;
 
+@property (nonatomic, assign) BOOL isFirstLoad;
+
 @end
 
 @implementation KSBaseWKWebViewController
@@ -71,6 +73,7 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     self.ks_prefersNavigationBarHidden = YES; // 隐藏导航栏,其他事件额外处理
     [self initWebView];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(operationDealCallbackMessage:) name:DEALCALLBACKNOTICIFATION object:nil];
+    self.isFirstLoad = YES;
 }
 
 - (void)operationDealCallbackMessage:(NSNotification *)notification {
@@ -113,11 +116,23 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
         [UIDevice switchNewOrientation:UIInterfaceOrientationPortrait];
     }
 }
+
 - (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     if (_hasChangeSource) {
         [self setParmDic:self.parmDic];
     }
+    if (self.isFirstLoad == NO) {
+        [self sendResumeMessage];
+    }
+    self.isFirstLoad = NO;
+}
+
+- (void)sendResumeMessage {
+    
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:@"webViewOnResume" forKey:@"api"];
+    [self postMessage:parm];
 }
 
 - (void)viewWillDisappear:(BOOL)animated {

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h

@@ -24,6 +24,8 @@ NS_ASSUME_NONNULL_BEGIN
 + (void)configRequestMethodJSON;
 // 退出登录操作
 + (void)logoutAction;
+// 返回到登录页面
++ (void)backLoginView;
 
 #pragma mark ----- version
 // api-admin/appVersionInfo/queryByPlatform

+ 29 - 9
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m

@@ -84,10 +84,12 @@
             
             if ([dic integerValueForKey:@"code"] == 403) { // token验证失败
                 [self logOutWithType:YES];
-                return ;
+                success(dic);
+                return;
             }
             else if ([dic integerValueForKey:@"code"] == 401) {
                 [self logOutWithType:NO];
+                success(dic);
                 return ;
             }
             success(dic);
@@ -117,10 +119,12 @@
             
             if ([dic integerValueForKey:@"code"] == 403) { // token验证失败
                 [self logOutWithType:YES];
+                success(dic);
                 return;
             }
             else if ([dic integerValueForKey:@"code"] == 401) {
                 [self logOutWithType:NO];
+                success(dic);
                 return;
             }
             success(dic);
@@ -172,17 +176,33 @@
         [[NSNotificationCenter defaultCenter] postNotificationName:@"classroomLogout" object:nil];
     }
     else if ([vc isKindOfClass:[UITabBarController class]]) {
-        UITabBarController *tab = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
-        CustomNavViewController *ctrl = (CustomNavViewController *)tab.selectedViewController;
-        [ctrl popToRootViewControllerAnimated:NO];
-
-        LoginViewController *logonVC = [[LoginViewController alloc] init];
-        CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:logonVC];
-        navCtrl.modalPresentationStyle = UIModalPresentationFullScreen;
-        [tab.selectedViewController presentViewController:navCtrl animated:YES completion:nil];
+        if ([vc.presentedViewController isKindOfClass:NSClassFromString(@"CustomNavViewController")]) {
+            CustomNavViewController *nav = (CustomNavViewController *)vc.presentedViewController;
+            if ([nav.visibleViewController isKindOfClass:NSClassFromString(@"LiveVideoRoomViewController")] || [nav.visibleViewController isKindOfClass:NSClassFromString(@"KSLiveWebViewController")]) {
+                [[NSNotificationCenter defaultCenter] postNotificationName:@"liveroomLogout" object:nil];
+                return;
+            }
+            else if ([nav.visibleViewController isKindOfClass:NSClassFromString(@"InstrumentChooseViewController")]) {
+                [[NSNotificationCenter defaultCenter] postNotificationName:@"LogoutAction" object:nil];
+                return;
+            }
+        }
+        [self backLoginView];
     }
 }
 
+// 返回到登录页面
++ (void)backLoginView {
+    UITabBarController *tab = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
+    CustomNavViewController *ctrl = (CustomNavViewController *)tab.selectedViewController;
+    [ctrl popToRootViewControllerAnimated:NO];
+
+    LoginViewController *logonVC = [[LoginViewController alloc] init];
+    CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:logonVC];
+    navCtrl.modalPresentationStyle = UIModalPresentationFullScreen;
+    [tab.selectedViewController presentViewController:navCtrl animated:YES completion:nil];
+}
+
 
 // 提示信息
 + (void)showMessage:(NSString *)message {

+ 21 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSTipsAlert.h

@@ -0,0 +1,21 @@
+//
+//  KSTipsAlert.h
+//  TeacherDaya
+//
+//  Created by Kyle on 2021/5/21.
+//  Copyright © 2021 DayaMusic. All rights reserved.
+//
+
+#import "BaseAlertView.h"
+
+typedef void(^TipsAlertCallback)(BOOL isSure);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KSTipsAlert : BaseAlertView
+
++ (instancetype)shareInstanceWithTitle:(NSString *)title descMessage:(NSString *)descMessage leftTitle:(NSString *)leftTitle rightTitle:(NSString *)rightTitle callback:(TipsAlertCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 75 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSTipsAlert.m

@@ -0,0 +1,75 @@
+//
+//  KSTipsAlert.m
+//  TeacherDaya
+//
+//  Created by Kyle on 2021/5/21.
+//  Copyright © 2021 DayaMusic. All rights reserved.
+//
+
+#import "KSTipsAlert.h"
+#import "UIView+Animation.h"
+
+@interface KSTipsAlert ()
+
+@property (weak, nonatomic) IBOutlet UILabel *topTitle;
+
+@property (weak, nonatomic) IBOutlet UILabel *descLabel;
+
+@property (weak, nonatomic) IBOutlet UIButton *cancleButton;
+
+@property (weak, nonatomic) IBOutlet UIButton *sureButton;
+
+
+@property (nonatomic, copy) TipsAlertCallback callback;
+@end
+
+@implementation KSTipsAlert
+
+
++ (instancetype)shareInstanceWithTitle:(NSString *)title descMessage:(NSString *)descMessage leftTitle:(NSString *)leftTitle rightTitle:(NSString *)rightTitle callback:(TipsAlertCallback)callback {
+    KSTipsAlert *alertView = [[[NSBundle mainBundle] loadNibNamed:@"KSTipsAlert" owner:nil options:nil] firstObject];
+    alertView.topTitle.text = title;
+    alertView.descLabel.text = descMessage;
+    [alertView.cancleButton setTitle:leftTitle forState:UIControlStateNormal];
+    [alertView.sureButton setTitle:rightTitle forState:UIControlStateNormal];
+    if (callback) {
+        alertView.callback = callback;
+    }
+    [alertView showAlert];
+    return alertView;
+}
+
+- (void)showAlert {
+    [[NSObject getKeyWindow] addSubview:self];
+    [self mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.top.bottom.right.mas_equalTo([NSObject getKeyWindow]);
+    }];
+    [self setPopAnimation];
+}
+
+- (void)hiddenAction {
+    [self removeFromSuperview];
+}
+
+- (IBAction)cancleAction:(id)sender {
+    if (self.callback) {
+        self.callback(NO);
+    }
+    [self hiddenAction];
+}
+
+- (IBAction)sureAction:(id)sender {
+    if (self.callback) {
+        self.callback(YES);
+    }
+    [self hiddenAction];
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 147 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSTipsAlert.xib

@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <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="KSTipsAlert">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="517"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ypl-H9-e3L">
+                    <rect key="frame" x="47" y="165.5" width="320" height="186.5"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="提示" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fjg-28-kfA">
+                            <rect key="frame" x="27" y="18" width="273" height="30"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="30" id="Oap-77-z3x"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="x2J-5B-1Wq">
+                            <rect key="frame" x="162.5" y="125.5" width="144.5" height="44"/>
+                            <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <state key="normal" title="确定">
+                                <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            </state>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="22"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="TIl-ub-i4Z"/>
+                            </connections>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7Kd-Un-rMd">
+                            <rect key="frame" x="13" y="125.5" width="144.5" height="44"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="44" id="K0Z-aa-pVg"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <state key="normal" title="取消">
+                                <color key="titleColor" red="0.0039215686274509803" green="0.75686274509803919" blue="0.70980392156862748" alpha="1" colorSpace="calibratedRGB"/>
+                            </state>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="22"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                    <real key="value" value="1"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
+                                    <color key="value" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="cancleAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="MQM-uv-Jkp"/>
+                            </connections>
+                        </button>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YM9-iV-JM6">
+                            <rect key="frame" x="19" y="68" width="287" height="33.5"/>
+                            <string key="text">聊天功能已断开,是否重新连接?
+</string>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="I5d-vy-DYW">
+                            <rect key="frame" x="18" y="24" width="4" height="18"/>
+                            <color key="backgroundColor" red="0.0039215686274509803" green="0.75686274509803919" blue="0.70980392156862748" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="4" id="9KX-ZB-vT4"/>
+                                <constraint firstAttribute="height" constant="18" id="aa3-26-Svy"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="2"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="320" id="2I4-8N-ncb"/>
+                        <constraint firstItem="7Kd-Un-rMd" firstAttribute="leading" secondItem="ypl-H9-e3L" secondAttribute="leading" constant="13" id="2fu-SB-zQH"/>
+                        <constraint firstItem="fjg-28-kfA" firstAttribute="top" secondItem="ypl-H9-e3L" secondAttribute="top" constant="18" id="E7H-Vl-JqW"/>
+                        <constraint firstAttribute="trailing" secondItem="x2J-5B-1Wq" secondAttribute="trailing" constant="13" id="GJx-ee-74l"/>
+                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="140" id="GSF-uC-Gz2"/>
+                        <constraint firstItem="x2J-5B-1Wq" firstAttribute="top" secondItem="YM9-iV-JM6" secondAttribute="bottom" constant="24" id="IDC-5m-0Tm"/>
+                        <constraint firstItem="YM9-iV-JM6" firstAttribute="top" secondItem="fjg-28-kfA" secondAttribute="bottom" constant="20" id="Ios-2z-QHw"/>
+                        <constraint firstItem="x2J-5B-1Wq" firstAttribute="width" secondItem="7Kd-Un-rMd" secondAttribute="width" id="PTM-XO-HCz"/>
+                        <constraint firstAttribute="trailing" secondItem="YM9-iV-JM6" secondAttribute="trailing" constant="14" id="Psf-V1-FR5"/>
+                        <constraint firstItem="fjg-28-kfA" firstAttribute="centerY" secondItem="I5d-vy-DYW" secondAttribute="centerY" id="R1Y-To-jlG"/>
+                        <constraint firstItem="fjg-28-kfA" firstAttribute="leading" secondItem="I5d-vy-DYW" secondAttribute="trailing" constant="5" id="SDs-L9-pP2"/>
+                        <constraint firstItem="I5d-vy-DYW" firstAttribute="leading" secondItem="ypl-H9-e3L" secondAttribute="leading" constant="18" id="fxs-c1-c0a"/>
+                        <constraint firstItem="x2J-5B-1Wq" firstAttribute="leading" secondItem="7Kd-Un-rMd" secondAttribute="trailing" constant="5" id="gxB-ts-aLK"/>
+                        <constraint firstAttribute="trailing" secondItem="fjg-28-kfA" secondAttribute="trailing" constant="20" id="lSX-79-Ova"/>
+                        <constraint firstItem="YM9-iV-JM6" firstAttribute="leading" secondItem="ypl-H9-e3L" secondAttribute="leading" constant="19" id="pcs-sK-TWX"/>
+                        <constraint firstItem="x2J-5B-1Wq" firstAttribute="height" secondItem="7Kd-Un-rMd" secondAttribute="height" id="q3C-Y0-Xtu"/>
+                        <constraint firstItem="x2J-5B-1Wq" firstAttribute="bottom" secondItem="7Kd-Un-rMd" secondAttribute="bottom" id="tyq-wv-hWX"/>
+                        <constraint firstAttribute="bottom" secondItem="7Kd-Un-rMd" secondAttribute="bottom" constant="17" id="vgB-5h-vtD"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
+                            <size key="value" width="0.0" height="24"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
+                            <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.22" colorSpace="calibratedRGB"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
+                            <real key="value" value="1"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
+                            <real key="value" value="24"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="6"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="maskToBounces" value="NO"/>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="calibratedRGB"/>
+            <constraints>
+                <constraint firstItem="ypl-H9-e3L" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="A47-fr-Cer"/>
+                <constraint firstItem="ypl-H9-e3L" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="pNJ-u4-3eL"/>
+            </constraints>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="cancleButton" destination="7Kd-Un-rMd" id="qld-xO-Wyt"/>
+                <outlet property="descLabel" destination="YM9-iV-JM6" id="cNG-pv-wEx"/>
+                <outlet property="sureButton" destination="x2J-5B-1Wq" id="W7p-JL-Ic5"/>
+                <outlet property="topTitle" destination="fjg-28-kfA" id="lCJ-jh-xeg"/>
+            </connections>
+            <point key="canvasLocation" x="69.565217391304358" y="94.754464285714278"/>
+        </view>
+    </objects>
+</document>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/Controller/CourseViewController.m

@@ -422,7 +422,7 @@
     else {
         MusicRoomCourseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicRoomCourseCell"];
         MJWeakSelf;
-        [cell configWithSource:model callback:^(NSString * _Nonnull targetId) {
+        [cell configWithSource:model beforeTime:self.practiceStartTime callback:^(NSString * _Nonnull targetId) {
             [weakSelf chatAction:targetId groupName:@"" isGroup:YES];
         }];
         return cell;

+ 5 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseForLiveCell.m

@@ -16,6 +16,7 @@
 @property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
 @property (weak, nonatomic) IBOutlet UIButton *operationButton;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *buttonWidth;
 
 @property (nonatomic, copy) LiveLessonCallback callback;
 
@@ -53,10 +54,12 @@
         if (beginTimeInterval < beforeTime * 60) {
             self.operationButton.userInteractionEnabled = YES;
             self.operationButton.hidden = NO;
+            self.buttonWidth.constant = 70.0f;
         }
         else {
             self.operationButton.userInteractionEnabled = NO;
             self.operationButton.hidden = YES;
+            self.buttonWidth.constant = 0.0f;
         }
     }
     else if ([model.status isEqualToString:@"ING"]) { // 进行中
@@ -64,6 +67,7 @@
         self.courseStatusLabel.textColor = THEMECOLOR;
         self.operationButton.userInteractionEnabled = YES;
         self.operationButton.hidden = NO;
+        self.buttonWidth.constant = 70.0f;
         
     }
     else if ([model.status isEqualToString:@"COMPLETE"]) { // 已结束
@@ -71,6 +75,7 @@
         self.courseStatusLabel.textColor = HexRGB(0x999999);
         self.operationButton.userInteractionEnabled = NO;
         self.operationButton.hidden = YES;
+        self.buttonWidth.constant = 0.0f;
     }
 }
 

+ 6 - 5
KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseForLiveCell.xib

@@ -12,14 +12,14 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="159" id="KGk-i7-Jjw" customClass="CourseForLiveCell">
-            <rect key="frame" x="0.0" y="0.0" width="394" height="159"/>
+            <rect key="frame" x="0.0" y="0.0" width="394" height="128"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="394" height="159"/>
+                <rect key="frame" x="0.0" y="0.0" width="394" height="128"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K4l-Dq-CXi">
-                        <rect key="frame" x="14" y="0.0" width="366" height="147"/>
+                        <rect key="frame" x="14" y="0.0" width="366" height="116"/>
                         <subviews>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5Lp-rU-nqx">
                                 <rect key="frame" x="10" y="38" width="346" height="1"/>
@@ -103,7 +103,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bRl-1p-cZu">
-                                <rect key="frame" x="284" y="99" width="70" height="28"/>
+                                <rect key="frame" x="284" y="68" width="70" height="28"/>
                                 <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="28" id="Uge-1g-sLY"/>
@@ -167,7 +167,7 @@
                             <constraint firstAttribute="trailing" secondItem="bRl-1p-cZu" secondAttribute="trailing" constant="12" id="OK3-7Z-Oyp"/>
                             <constraint firstItem="T9A-D2-1YE" firstAttribute="leading" secondItem="pTS-nC-xAK" secondAttribute="trailing" constant="7" id="OQD-n7-8U1"/>
                             <constraint firstItem="dEp-ou-JBA" firstAttribute="top" secondItem="wA2-zs-RYl" secondAttribute="top" id="OSg-qL-j0d"/>
-                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="2TM-qv-v7e" secondAttribute="trailing" constant="11" id="RdO-od-8Vv"/>
+                            <constraint firstItem="bRl-1p-cZu" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2TM-qv-v7e" secondAttribute="trailing" constant="5" id="T9Z-Hq-NcK"/>
                             <constraint firstAttribute="trailing" secondItem="7HA-oy-GhL" secondAttribute="trailing" constant="11" id="Whn-GB-iyS"/>
                             <constraint firstItem="5Lp-rU-nqx" firstAttribute="top" secondItem="pTS-nC-xAK" secondAttribute="bottom" constant="10" id="ZN2-we-wfB"/>
                             <constraint firstItem="5Lp-rU-nqx" firstAttribute="leading" secondItem="K4l-Dq-CXi" secondAttribute="leading" constant="10" id="jA3-t4-xid"/>
@@ -194,6 +194,7 @@
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
+                <outlet property="buttonWidth" destination="laQ-tC-9hL" id="vyS-iR-IFc"/>
                 <outlet property="courseName" destination="dEp-ou-JBA" id="LV9-4Y-wth"/>
                 <outlet property="courseStatusLabel" destination="7HA-oy-GhL" id="oYn-6I-C5g"/>
                 <outlet property="descLabel" destination="do8-lR-Cg5" id="Z6u-4z-HUa"/>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.h

@@ -14,7 +14,7 @@ typedef void(^MusicRoomChatAction)(NSString *targetId);
 
 @interface MusicRoomCourseCell : UITableViewCell
 
-- (void)configWithSource:(id)source callback:(MusicRoomChatAction)callback;
+- (void)configWithSource:(id)source beforeTime:(NSInteger)beforeTime callback:(MusicRoomChatAction)callback;
 
 @end
 

+ 44 - 27
KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.m

@@ -14,10 +14,13 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *courseTimeLabel;
 @property (weak, nonatomic) IBOutlet UILabel *courseName;
+@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
+@property (weak, nonatomic) IBOutlet UILabel *memberCount;
 
 @property (weak, nonatomic) IBOutlet UILabel *subjectName;
 @property (weak, nonatomic) IBOutlet UIButton *statusButton;
 
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *buttonWidth;
 
 @property (nonatomic, strong) NSString *targetId;
 
@@ -33,7 +36,7 @@
     self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
 
-- (void)configWithSource:(id)source callback:(MusicRoomChatAction)callback {
+- (void)configWithSource:(id)source beforeTime:(NSInteger)beforeTime callback:(MusicRoomChatAction)callback {
     if (callback) {
         self.callback = callback;
     }
@@ -46,24 +49,34 @@
         self.subjectName.text = [NSString returnNoNullStringWithString:model.subjectName];
         
         if ([model.status isEqualToString:@"NOT_START"]) {
-            [self.statusButton setTitle:@"未开始" forState:UIControlStateNormal];
-            self.statusButton.backgroundColor = [UIColor whiteColor];
-            [self.statusButton setTitleColor:HexRGB(0xFF802C) forState:UIControlStateNormal];
-            self.statusButton.layer.borderColor = HexRGB(0xFF802C).CGColor;
+            self.statusLabel.text = @"未开始";
+            self.statusLabel.textColor = HexRGB(0xFF802C);
+            // 判断按钮显示调课还是进入教室
+            NSDate *currentDate = [NSDate date];
+            NSDate *beginDate = [self getCourseBeginDate:model.startTime];
+            NSTimeInterval beginTimeInterval = [beginDate timeIntervalSinceDate:currentDate];
+            if (beginTimeInterval < beforeTime * 60) {
+                self.statusButton.hidden = NO;
+                self.buttonWidth.constant = 70.0f;
+            }
+            else {
+                self.statusButton.hidden = YES;
+                self.buttonWidth.constant = 0.0f;
+            }
         }
         else if ([model.status isEqualToString:@"ING"]) {
-            [self.statusButton setTitle:@"进行中" forState:UIControlStateNormal];
-            self.statusButton.backgroundColor = THEMECOLOR;
-            [self.statusButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
-            self.statusButton.layer.borderColor = THEMECOLOR.CGColor;
-            
+            self.statusLabel.text = @"进行中";
+            self.statusLabel.textColor = THEMECOLOR;
+            self.statusButton.hidden = NO;
+            self.buttonWidth.constant = 70.0f;
         }
         else if ([model.status isEqualToString:@"COMPLETE"]) {
-            [self.statusButton setTitle:@"已结束" forState:UIControlStateNormal];
-            self.statusButton.backgroundColor = [UIColor whiteColor];
-            [self.statusButton setTitleColor:HexRGB(0x999999) forState:UIControlStateNormal];
-            self.statusButton.layer.borderColor = HexRGB(0xe5e5e5).CGColor;
+            self.statusLabel.text = @"已结束";
+            self.statusLabel.textColor = HexRGB(0x999999);
+            self.statusButton.hidden = YES;
+            self.buttonWidth.constant = 0.0f;
         }
+//        self.memberCount.text = [NSString stringWithFormat:@"%@人",model.payCount];
     }
     else if ([source isKindOfClass:[MusicRoomListModel class]]) {
         MusicRoomListModel *model = (MusicRoomListModel *)source;
@@ -72,29 +85,31 @@
         [self evaluateTimeLabelWithBeginTime:model.startTime endTime:model.endTime];
         self.courseName.text = [NSString returnNoNullStringWithString:model.courseGroupName];
         self.subjectName.text = [NSString returnNoNullStringWithString:model.subjectName];
-        
+        self.statusButton.hidden = YES;
+        self.buttonWidth.constant = 0.0f;
         if ([model.status isEqualToString:@"NOT_START"]) {
-            [self.statusButton setTitle:@"未开始" forState:UIControlStateNormal];
-            self.statusButton.backgroundColor = [UIColor whiteColor];
-            [self.statusButton setTitleColor:HexRGB(0xFF802C) forState:UIControlStateNormal];
-            self.statusButton.layer.borderColor = HexRGB(0xFF802C).CGColor;
+            self.statusLabel.text = @"未开始";
+            self.statusLabel.textColor = HexRGB(0xFF802C);
         }
         else if ([model.status isEqualToString:@"ING"]) {
-            [self.statusButton setTitle:@"进行中" forState:UIControlStateNormal];
-            self.statusButton.backgroundColor = THEMECOLOR;
-            [self.statusButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
-            self.statusButton.layer.borderColor = THEMECOLOR.CGColor;
+            self.statusLabel.text = @"进行中";
+            self.statusLabel.textColor = THEMECOLOR;
             
         }
         else if ([model.status isEqualToString:@"COMPLETE"]) {
-            [self.statusButton setTitle:@"已结束" forState:UIControlStateNormal];
-            self.statusButton.backgroundColor = [UIColor whiteColor];
-            [self.statusButton setTitleColor:HexRGB(0x999999) forState:UIControlStateNormal];
-            self.statusButton.layer.borderColor = HexRGB(0xe5e5e5).CGColor;
+            self.statusLabel.text = @"已结束";
+            self.statusLabel.textColor = HexRGB(0x999999);
         }
     }
 }
 
+- (NSDate *)getCourseBeginDate:(NSString *)beginTime {
+    NSDateFormatter *dateFormatter = [NSObject getDateformatter];
+    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
+    NSDate *beginDate = [dateFormatter dateFromString:beginTime];
+    return beginDate;
+}
+
 - (void)evaluateTimeLabelWithBeginTime:(NSString *)beginTime endTime:(NSString *)endTime {
     // 时间
     NSDateFormatter *dateFormatter = [NSObject getDateformatter];
@@ -109,6 +124,8 @@
     
 }
 
+
+
 - (IBAction)chatAction:(id)sender {
     if (self.callback) {
         self.callback(self.targetId);

+ 59 - 23
KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.xib

@@ -11,7 +11,7 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="127" id="KGk-i7-Jjw" customClass="MusicRoomCourseCell">
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="136" id="KGk-i7-Jjw" customClass="MusicRoomCourseCell">
             <rect key="frame" x="0.0" y="0.0" width="435" height="127"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
@@ -29,7 +29,7 @@
                                 </constraints>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2021/09/17 14:00~14:25" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UxS-Xs-zTk">
-                                <rect key="frame" x="34" y="11" width="313" height="18"/>
+                                <rect key="frame" x="34" y="11" width="302" height="18"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="18" id="iT4-St-ibp"/>
                                 </constraints>
@@ -37,18 +37,6 @@
                                 <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t3h-kH-4md">
-                                <rect key="frame" x="357" y="0.0" width="40" height="40"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="40" id="x2r-Tb-euq"/>
-                                    <constraint firstAttribute="height" constant="40" id="zGA-bX-Ava"/>
-                                </constraints>
-                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                                <state key="normal" image="course_chat"/>
-                                <connections>
-                                    <action selector="chatAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="8ps-dv-tl2"/>
-                                </connections>
-                            </button>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="89l-Qb-VVR">
                                 <rect key="frame" x="10" y="40" width="387" height="1"/>
                                 <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/>
@@ -90,7 +78,7 @@
                                 </userDefinedRuntimeAttributes>
                             </view>
                             <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Vxw-2k-cqR">
-                                <rect key="frame" x="325" y="66.5" width="70" height="28"/>
+                                <rect key="frame" x="325" y="69" width="70" height="28"/>
                                 <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="70" id="e5h-nv-3mR"/>
@@ -98,7 +86,7 @@
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                 <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                                <state key="normal" title="进行中"/>
+                                <state key="normal" title="进入教室"/>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                         <real key="value" value="14"/>
@@ -113,29 +101,74 @@
                             </button>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_musicRoom" translatesAutoresizingMaskIntoConstraints="NO" id="KUE-40-5Jn">
                                 <rect key="frame" x="11" y="55" width="47" height="51"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="51" id="S6z-NU-xg3"/>
+                                    <constraint firstAttribute="width" constant="47" id="c6q-Yc-a17"/>
+                                </constraints>
                             </imageView>
+                            <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sVq-IR-gIH">
+                                <rect key="frame" x="120" y="85" width="1" height="12"/>
+                                <color key="backgroundColor" red="0.87058823529999996" green="0.87058823529999996" blue="0.87058823529999996" alpha="1" colorSpace="calibratedRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="12" id="Uhv-oB-NVg"/>
+                                    <constraint firstAttribute="width" constant="1" id="yT2-GS-NWs"/>
+                                </constraints>
+                            </view>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6人" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="W7K-ER-kaU">
+                                <rect key="frame" x="129" y="82.5" width="23.5" height="17"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="frc-dG-90z">
+                                <rect key="frame" x="166" y="47" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="uL1-Gj-W3y"/>
+                                    <constraint firstAttribute="width" constant="40" id="yA6-mm-wkc"/>
+                                </constraints>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" image="course_chat"/>
+                                <connections>
+                                    <action selector="chatAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="7L8-cN-1ko"/>
+                                </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="iGm-1d-ScL">
+                                <rect key="frame" x="346" y="11.5" width="50" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="50" id="fm8-WM-ePb"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstItem="VjP-WA-4SG" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="12" id="76s-eU-Ril"/>
                             <constraint firstItem="Dys-CR-rsC" firstAttribute="top" secondItem="l2B-EY-GWY" secondAttribute="bottom" id="9Pu-wW-GUr"/>
+                            <constraint firstItem="sVq-IR-gIH" firstAttribute="leading" secondItem="Dys-CR-rsC" secondAttribute="trailing" constant="8" id="Axw-an-ZIM"/>
                             <constraint firstItem="VjP-WA-4SG" firstAttribute="top" secondItem="Wl9-sn-VK0" secondAttribute="top" constant="12" id="B95-QO-f7C"/>
+                            <constraint firstItem="W7K-ER-kaU" firstAttribute="centerY" secondItem="Dys-CR-rsC" secondAttribute="centerY" id="CcI-U9-CQp"/>
                             <constraint firstItem="UxS-Xs-zTk" firstAttribute="leading" secondItem="VjP-WA-4SG" secondAttribute="trailing" constant="6" id="Ct9-78-SuQ"/>
+                            <constraint firstItem="iGm-1d-ScL" firstAttribute="centerY" secondItem="UxS-Xs-zTk" secondAttribute="centerY" id="D91-9H-2QH"/>
                             <constraint firstItem="KUE-40-5Jn" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="11" id="Gbj-GO-lRf"/>
                             <constraint firstAttribute="trailing" secondItem="89l-Qb-VVR" secondAttribute="trailing" constant="10" id="J29-HZ-el6"/>
-                            <constraint firstAttribute="trailing" secondItem="t3h-kH-4md" secondAttribute="trailing" constant="10" id="Mvo-kN-6G0"/>
-                            <constraint firstItem="Vxw-2k-cqR" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="l2B-EY-GWY" secondAttribute="trailing" constant="10" id="PSq-3m-yXX"/>
-                            <constraint firstItem="t3h-kH-4md" firstAttribute="top" secondItem="Wl9-sn-VK0" secondAttribute="top" id="UrD-2D-HXJ"/>
+                            <constraint firstItem="sVq-IR-gIH" firstAttribute="centerY" secondItem="Dys-CR-rsC" secondAttribute="centerY" id="Jtg-Ft-odQ"/>
+                            <constraint firstItem="89l-Qb-VVR" firstAttribute="top" secondItem="VjP-WA-4SG" secondAttribute="bottom" constant="12" id="Qui-l2-OSZ"/>
+                            <constraint firstAttribute="trailing" secondItem="iGm-1d-ScL" secondAttribute="trailing" constant="11" id="RCi-Qj-EP0"/>
+                            <constraint firstItem="frc-dG-90z" firstAttribute="centerY" secondItem="l2B-EY-GWY" secondAttribute="centerY" id="Tub-Um-bTn"/>
                             <constraint firstItem="KUE-40-5Jn" firstAttribute="top" secondItem="89l-Qb-VVR" secondAttribute="bottom" constant="14" id="Wtf-un-EEq"/>
-                            <constraint firstItem="Vxw-2k-cqR" firstAttribute="centerY" secondItem="KUE-40-5Jn" secondAttribute="centerY" id="YTT-R1-nsh"/>
+                            <constraint firstItem="iGm-1d-ScL" firstAttribute="leading" secondItem="UxS-Xs-zTk" secondAttribute="trailing" constant="10" id="YBZ-5b-TA4"/>
+                            <constraint firstAttribute="bottom" secondItem="Vxw-2k-cqR" secondAttribute="bottom" constant="20" id="YBw-Ge-ULu"/>
                             <constraint firstItem="l2B-EY-GWY" firstAttribute="leading" secondItem="KUE-40-5Jn" secondAttribute="trailing" constant="10" id="cfy-Be-GKk"/>
                             <constraint firstItem="Dys-CR-rsC" firstAttribute="leading" secondItem="l2B-EY-GWY" secondAttribute="leading" id="h8r-WE-IEp"/>
-                            <constraint firstItem="t3h-kH-4md" firstAttribute="leading" secondItem="UxS-Xs-zTk" secondAttribute="trailing" constant="10" id="jRb-6e-UMI"/>
+                            <constraint firstItem="Vxw-2k-cqR" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="frc-dG-90z" secondAttribute="trailing" constant="10" id="ipj-Bl-ghE"/>
+                            <constraint firstItem="W7K-ER-kaU" firstAttribute="leading" secondItem="sVq-IR-gIH" secondAttribute="trailing" constant="8" id="mUe-1U-PpA"/>
                             <constraint firstItem="89l-Qb-VVR" firstAttribute="leading" secondItem="Wl9-sn-VK0" secondAttribute="leading" constant="10" id="pgO-Fi-Mwz"/>
                             <constraint firstItem="l2B-EY-GWY" firstAttribute="top" secondItem="KUE-40-5Jn" secondAttribute="top" constant="-2" id="v6g-OI-y76"/>
                             <constraint firstItem="UxS-Xs-zTk" firstAttribute="centerY" secondItem="VjP-WA-4SG" secondAttribute="centerY" id="vcI-Cy-0Bk"/>
                             <constraint firstAttribute="trailing" secondItem="Vxw-2k-cqR" secondAttribute="trailing" constant="12" id="xYc-E1-jA1"/>
-                            <constraint firstItem="89l-Qb-VVR" firstAttribute="top" secondItem="t3h-kH-4md" secondAttribute="bottom" id="zDK-PZ-xfH"/>
+                            <constraint firstItem="frc-dG-90z" firstAttribute="leading" secondItem="l2B-EY-GWY" secondAttribute="trailing" id="zJy-iw-QMQ"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -154,12 +187,15 @@
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
+                <outlet property="buttonWidth" destination="e5h-nv-3mR" id="lkB-Jc-g20"/>
                 <outlet property="courseName" destination="l2B-EY-GWY" id="D00-Cj-zrr"/>
                 <outlet property="courseTimeLabel" destination="UxS-Xs-zTk" id="dkq-PI-dck"/>
+                <outlet property="memberCount" destination="W7K-ER-kaU" id="IsT-RS-XCe"/>
                 <outlet property="statusButton" destination="Vxw-2k-cqR" id="0Ra-cW-84Y"/>
+                <outlet property="statusLabel" destination="iGm-1d-ScL" id="Ox5-Ct-orD"/>
                 <outlet property="subjectName" destination="TPd-JA-v98" id="HaG-Uj-2h3"/>
             </connections>
-            <point key="canvasLocation" x="215.21739130434784" y="107.47767857142857"/>
+            <point key="canvasLocation" x="215.21739130434784" y="110.49107142857143"/>
         </tableViewCell>
     </objects>
     <resources>

+ 22 - 8
KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m

@@ -243,8 +243,17 @@
     }];
 
     [headBgView mas_makeConstraints:^(MASConstraintMaker *make) {
-        
+        make.left.right.mas_equalTo(self.view);
+        make.top.mas_equalTo(self.bannerView.mas_top);
+        make.bottom.mas_equalTo(self.buttonContainer.mas_bottom);
     }];
+
+    // headBgView
+    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, kScreenWidth, self.bannerViewHeight + self.buttonViewHeight) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(14, 14)];
+    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
+    maskLayer.frame = headBgView.bounds;
+    maskLayer.path = maskPath.CGPath;
+    headBgView.layer.mask = maskLayer;
     
     [self.scrollView addSubview:self.noticeView];
     [self.noticeView mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -344,7 +353,7 @@
 }
 
 - (void)refreshView {
-    [self.bannerScroll reloadData];
+    [self refreshBannaerView];
     [self showButtonMessage];
     [self refreshNoticeView];
     [self refreshAlbumView];
@@ -371,7 +380,7 @@
                 [self.noticeTitleArray addObject:bannerModel.title];
             }
             else {
-                self.bannerArray = [NSMutableArray array];
+                self.noticeArray = [NSMutableArray array];
                 self.noticeTitleArray = [NSMutableArray array];
             }
             
@@ -389,7 +398,7 @@
     if (self.noticeTitleArray.count) {
         self.noticeView.hidden = NO;
         [self.noticeView mas_updateConstraints:^(MASConstraintMaker *make) {
-            make.height.mas_equalTo(50.0f);
+            make.height.mas_equalTo(60.0f);
         }];
     }
     else {
@@ -855,8 +864,13 @@
         TeacherStyleModel *model = self.teacherArray[indexPath.item];
         TeacherShowCell *showCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"TeacherShowCell" forIndexPath:indexPath];
         MJWeakSelf;
-        [showCell configWithStyleModel:model callback:^(NSString *videoUrl) {
-            [weakSelf playVideo:videoUrl];
+        [showCell configWithStyleModel:model callback:^(BOOL isShowVideo, NSString * _Nullable videoUrl) {
+            if (isShowVideo) {
+                [weakSelf playVideo:videoUrl];
+            }
+            else {
+                [weakSelf displayTeacherDetail:model.userId];
+            }
         }];
         return showCell;
     }
@@ -1056,7 +1070,7 @@
     }
     else { // 直播课详情进教室
         KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
-        NSString *url = [NSString stringWithFormat:@"%@%@%@", WEBHOST, @"/#/liveDetail?joinRoom=1&groupId=",courseModel.courseGroupId];
+        NSString *url = [NSString stringWithFormat:@"%@/#/liveDetail?joinRoom=1&groupId=%@&classId=%@", WEBHOST,courseModel.courseGroupId,courseModel.courseId];
         ctrl.url = url;
         [self.navigationController pushViewController:ctrl animated:YES];
     }
@@ -1302,7 +1316,7 @@
     if (!_pageControl) {
         _pageControl = [[TYPageControl alloc] init];
         _pageControl.frame = CGRectMake(0, (kScreenWidth - 28) * 132 / 347 - 15, kScreenWidth-28, 10);
-        _pageControl.currentPageIndicatorTintColor = HexRGB(0xffffff);
+        _pageControl.currentPageIndicatorTintColor = HexRGB(0x2DC7AA);
         _pageControl.pageIndicatorTintColor = HexRGBAlpha(0xffffff, 0.5);
         _pageControl.pageIndicatorSize = CGSizeMake(10, 3);
         _pageControl.currentPageIndicatorSize = CGSizeMake(10, 3);

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/Model/TeacherStyleModel.h

@@ -20,7 +20,7 @@
 @property (nonatomic, strong) NSString *username;
 @property (nonatomic, strong) NSString *videoUrl;
 @property (nonatomic, strong) NSString *createTime;
-@property (nonatomic, strong) NSString *liveFlag;
+@property (nonatomic, assign) BOOL liveing;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 7 - 7
KulexiuForStudent/KulexiuForStudent/Module/Home/Model/TeacherStyleModel.m

@@ -17,7 +17,7 @@ NSString *const kTeacherStyleModelDescribe = @"describe";
 NSString *const kTeacherStyleModelUsername = @"username";
 NSString *const kTeacherStyleModelVideoUrl = @"videoUrl";
 NSString *const kTeacherStyleModelCreateTime = @"createTime";
-NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
+NSString *const kTeacherStyleModelLiveing = @"liveing";
 
 
 @interface TeacherStyleModel ()
@@ -37,7 +37,7 @@ NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
 @synthesize username = _username;
 @synthesize videoUrl = _videoUrl;
 @synthesize createTime = _createTime;
-@synthesize liveFlag = _liveFlag;
+@synthesize liveing = _liveing;
 
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
@@ -61,7 +61,7 @@ NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
             self.username = [self objectOrNilForKey:kTeacherStyleModelUsername fromDictionary:dict];
             self.videoUrl = [self objectOrNilForKey:kTeacherStyleModelVideoUrl fromDictionary:dict];
             self.createTime = [self objectOrNilForKey:kTeacherStyleModelCreateTime fromDictionary:dict];
-            self.liveFlag = [self objectOrNilForKey:kTeacherStyleModelLiveFlag fromDictionary:dict];
+            self.liveing = [[self objectOrNilForKey:kTeacherStyleModelLiveing fromDictionary:dict] boolValue];
 
     }
     
@@ -81,7 +81,7 @@ NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
     [mutableDict setValue:self.username forKey:kTeacherStyleModelUsername];
     [mutableDict setValue:self.videoUrl forKey:kTeacherStyleModelVideoUrl];
     [mutableDict setValue:self.createTime forKey:kTeacherStyleModelCreateTime];
-    [mutableDict setValue:self.liveFlag forKey:kTeacherStyleModelLiveFlag];
+    [mutableDict setValue:[NSNumber numberWithBool:self.liveing] forKey:kTeacherStyleModelLiveing];
 
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
@@ -118,7 +118,7 @@ NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
     self.username = [aDecoder decodeObjectForKey:kTeacherStyleModelUsername];
     self.videoUrl = [aDecoder decodeObjectForKey:kTeacherStyleModelVideoUrl];
     self.createTime = [aDecoder decodeObjectForKey:kTeacherStyleModelCreateTime];
-    self.liveFlag = [aDecoder decodeObjectForKey:kTeacherStyleModelLiveFlag];
+    self.liveing = [aDecoder decodeBoolForKey:kTeacherStyleModelLiveing];
     return self;
 }
 
@@ -134,7 +134,7 @@ NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
     [aCoder encodeObject:_username forKey:kTeacherStyleModelUsername];
     [aCoder encodeObject:_videoUrl forKey:kTeacherStyleModelVideoUrl];
     [aCoder encodeObject:_createTime forKey:kTeacherStyleModelCreateTime];
-    [aCoder encodeObject:_liveFlag forKey:kTeacherStyleModelLiveFlag];
+    [aCoder encodeBool:_liveing forKey:kTeacherStyleModelLiveing];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -152,7 +152,7 @@ NSString *const kTeacherStyleModelLiveFlag = @"liveFlag";
         copy.username = [self.username copyWithZone:zone];
         copy.videoUrl = [self.videoUrl copyWithZone:zone];
         copy.createTime = [self.createTime copyWithZone:zone];
-        copy.liveFlag = [self.liveFlag copyWithZone:zone];
+        copy.liveing = self.liveing;
     }
     
     return copy;

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCourseTipsView.m

@@ -46,6 +46,7 @@
         [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
         self.timeLabel.text = [NSString returnNoNullStringWithString:[formatter stringFromDate:beginDate]];
     }
+    [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[source.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
 }
 
 - (void)joinRoomCallback:(HomeCourseCallback)callback {

+ 12 - 2
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeHotAlbumView.xib

@@ -32,7 +32,7 @@
                     <nil key="highlightedColor"/>
                 </label>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门专辑" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u9G-3b-Wgt">
-                    <rect key="frame" x="14" y="10" width="65.5" height="22"/>
+                    <rect key="frame" x="29" y="10" width="65.5" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="mNH-cs-reJ"/>
                     </constraints>
@@ -67,20 +67,29 @@
                         <action selector="moreDetail:" destination="iN0-l3-epB" eventType="touchUpInside" id="Si8-kK-NiF"/>
                     </connections>
                 </button>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="yKI-ip-Z1l">
+                    <rect key="frame" x="19" y="15" width="4" height="12"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="4" id="0n6-S5-hNN"/>
+                        <constraint firstAttribute="height" constant="12" id="DZG-as-IKL"/>
+                    </constraints>
+                </imageView>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstItem="OkW-qe-3Kq" firstAttribute="centerY" secondItem="u9G-3b-Wgt" secondAttribute="centerY" id="0C2-jz-ybg"/>
                 <constraint firstItem="OkW-qe-3Kq" firstAttribute="trailing" secondItem="i48-Hd-WKl" secondAttribute="trailing" constant="-5" id="5eI-th-d1c"/>
                 <constraint firstAttribute="trailing" secondItem="i48-Hd-WKl" secondAttribute="trailing" constant="20" id="61L-Vw-Zhd"/>
-                <constraint firstItem="u9G-3b-Wgt" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="GyF-gJ-3Ba"/>
                 <constraint firstAttribute="trailing" secondItem="bvf-n0-Khb" secondAttribute="trailing" id="Hzs-4d-CyT"/>
                 <constraint firstItem="OkW-qe-3Kq" firstAttribute="trailing" secondItem="kIU-g4-ctC" secondAttribute="trailing" id="Jbh-O6-QXS"/>
                 <constraint firstItem="bvf-n0-Khb" firstAttribute="top" secondItem="u9G-3b-Wgt" secondAttribute="bottom" constant="14" id="M9Y-eb-zMS"/>
                 <constraint firstItem="bvf-n0-Khb" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="a0y-wq-MEu"/>
+                <constraint firstItem="u9G-3b-Wgt" firstAttribute="leading" secondItem="yKI-ip-Z1l" secondAttribute="trailing" constant="6" id="aPK-M2-gIU"/>
                 <constraint firstItem="OkW-qe-3Kq" firstAttribute="leading" secondItem="zgK-R6-zz8" secondAttribute="trailing" constant="3" id="aT3-GI-PH3"/>
+                <constraint firstItem="u9G-3b-Wgt" firstAttribute="centerY" secondItem="yKI-ip-Z1l" secondAttribute="centerY" id="dKq-YN-3yA"/>
                 <constraint firstItem="u9G-3b-Wgt" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="eRX-8J-T9f"/>
                 <constraint firstItem="zgK-R6-zz8" firstAttribute="leading" secondItem="kIU-g4-ctC" secondAttribute="leading" id="fOa-SI-oGA"/>
+                <constraint firstItem="yKI-ip-Z1l" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="19" id="lGn-jJ-ZR0"/>
                 <constraint firstItem="zgK-R6-zz8" firstAttribute="leading" secondItem="i48-Hd-WKl" secondAttribute="leading" constant="6" id="o53-pl-Ohx"/>
                 <constraint firstItem="zgK-R6-zz8" firstAttribute="centerY" secondItem="u9G-3b-Wgt" secondAttribute="centerY" id="p7u-UZ-CQL"/>
                 <constraint firstItem="kIU-g4-ctC" firstAttribute="centerY" secondItem="u9G-3b-Wgt" secondAttribute="centerY" id="sWH-G6-1lp"/>
@@ -96,6 +105,7 @@
         </view>
     </objects>
     <resources>
+        <image name="home_left" width="4" height="12"/>
         <image name="home_more" width="6" height="8"/>
     </resources>
 </document>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeInformationCell.m

@@ -46,7 +46,7 @@
         self.backView.layer.mask = maskLayer;
     }
     else if (rowIndex == ROWINDEX_TOP_BOTTOM) {
-        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, kScreenWidth - 28, 108) byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerBottomRight|UIRectCornerBottomLeft|UIRectCornerBottomRight cornerRadii:CGSizeMake(8, 8)];
+        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, kScreenWidth - 28, 108) byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight|UIRectCornerBottomLeft|UIRectCornerBottomRight cornerRadii:CGSizeMake(8, 8)];
         CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
         maskLayer.frame = self.backView.bounds;
         maskLayer.path = maskPath.CGPath;

+ 12 - 2
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeIntroduceView.xib

@@ -26,7 +26,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="老师风采" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R1l-Xp-3tk">
-                    <rect key="frame" x="14" y="10" width="65.5" height="22"/>
+                    <rect key="frame" x="29" y="10" width="65.5" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="4eO-n3-qj3"/>
                     </constraints>
@@ -66,24 +66,33 @@
                         <action selector="moreAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="edt-PG-XWg"/>
                     </connections>
                 </button>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="WRA-M3-XbQ">
+                    <rect key="frame" x="19" y="15" width="4" height="12"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="12" id="I90-pe-Bbi"/>
+                        <constraint firstAttribute="width" constant="4" id="yRX-LK-uP9"/>
+                    </constraints>
+                </imageView>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstItem="RwY-C1-Hxk" firstAttribute="centerY" secondItem="YXf-ag-UTD" secondAttribute="centerY" id="2jl-hY-8Xv"/>
                 <constraint firstItem="RwY-C1-Hxk" firstAttribute="leading" secondItem="YXf-ag-UTD" secondAttribute="leading" constant="6" id="9pv-GX-GhN"/>
                 <constraint firstItem="nWD-gC-NuU" firstAttribute="centerY" secondItem="R1l-Xp-3tk" secondAttribute="centerY" id="Amd-ny-xOF"/>
-                <constraint firstItem="R1l-Xp-3tk" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="P9c-Qj-z6W"/>
                 <constraint firstItem="1GA-dU-S4o" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="SGl-fa-PFK"/>
                 <constraint firstItem="1GA-dU-S4o" firstAttribute="top" secondItem="R1l-Xp-3tk" secondAttribute="bottom" constant="14" id="ZF8-Pc-kri"/>
                 <constraint firstItem="RwY-C1-Hxk" firstAttribute="leading" secondItem="spZ-ec-oEg" secondAttribute="leading" id="dzW-2G-lz5"/>
                 <constraint firstItem="nWD-gC-NuU" firstAttribute="trailing" secondItem="spZ-ec-oEg" secondAttribute="trailing" id="gMg-zf-v74"/>
+                <constraint firstItem="R1l-Xp-3tk" firstAttribute="leading" secondItem="WRA-M3-XbQ" secondAttribute="trailing" constant="6" id="gXj-hI-Cx4"/>
                 <constraint firstItem="RwY-C1-Hxk" firstAttribute="centerY" secondItem="R1l-Xp-3tk" secondAttribute="centerY" id="lNZ-xj-Kq8"/>
                 <constraint firstAttribute="trailing" secondItem="YXf-ag-UTD" secondAttribute="trailing" constant="20" id="mf7-hc-cUS"/>
                 <constraint firstAttribute="trailing" secondItem="1GA-dU-S4o" secondAttribute="trailing" id="nhw-1V-bTA"/>
                 <constraint firstAttribute="bottom" secondItem="1GA-dU-S4o" secondAttribute="bottom" constant="10" id="qRe-UX-fpA"/>
                 <constraint firstItem="nWD-gC-NuU" firstAttribute="leading" secondItem="RwY-C1-Hxk" secondAttribute="trailing" constant="3" id="reH-Ia-H94"/>
+                <constraint firstItem="R1l-Xp-3tk" firstAttribute="centerY" secondItem="WRA-M3-XbQ" secondAttribute="centerY" id="s9O-YH-kn3"/>
                 <constraint firstItem="spZ-ec-oEg" firstAttribute="centerY" secondItem="R1l-Xp-3tk" secondAttribute="centerY" id="ta1-r5-Kds"/>
                 <constraint firstItem="nWD-gC-NuU" firstAttribute="trailing" secondItem="YXf-ag-UTD" secondAttribute="trailing" constant="-5" id="uJv-E9-Jdj"/>
+                <constraint firstItem="WRA-M3-XbQ" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="19" id="v56-OR-bWu"/>
                 <constraint firstItem="R1l-Xp-3tk" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="z0l-BE-MdE"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
@@ -96,6 +105,7 @@
         </view>
     </objects>
     <resources>
+        <image name="home_left" width="4" height="12"/>
         <image name="home_more" width="6" height="8"/>
     </resources>
 </document>

+ 12 - 2
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCourseView.xib

@@ -26,7 +26,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ddn-uf-BAf">
-                    <rect key="frame" x="14" y="10" width="49" height="22"/>
+                    <rect key="frame" x="29" y="10" width="49" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="Ui4-lg-adA"/>
                     </constraints>
@@ -64,6 +64,13 @@
                         <action selector="moreLiveCourse:" destination="iN0-l3-epB" eventType="touchUpInside" id="8e7-k2-pfV"/>
                     </connections>
                 </button>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="bhP-8F-ysM">
+                    <rect key="frame" x="19" y="15" width="4" height="12"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="12" id="gv1-Vn-bFv"/>
+                        <constraint firstAttribute="width" constant="4" id="h5T-b4-Sw4"/>
+                    </constraints>
+                </imageView>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
@@ -72,15 +79,17 @@
                 <constraint firstItem="YjN-Fx-G8f" firstAttribute="centerY" secondItem="ddn-uf-BAf" secondAttribute="centerY" id="Cs6-dY-hSe"/>
                 <constraint firstItem="j67-iM-VaR" firstAttribute="trailing" secondItem="14b-8n-uKT" secondAttribute="trailing" id="IE0-qK-wUD"/>
                 <constraint firstItem="3ib-v1-Htp" firstAttribute="leading" secondItem="YjN-Fx-G8f" secondAttribute="leading" constant="6" id="M10-7l-Klg"/>
+                <constraint firstItem="ddn-uf-BAf" firstAttribute="centerY" secondItem="bhP-8F-ysM" secondAttribute="centerY" id="ZVg-Wl-VQe"/>
                 <constraint firstItem="ddn-uf-BAf" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="ccX-bh-1ZN"/>
                 <constraint firstAttribute="trailing" secondItem="Dqb-gc-Ywn" secondAttribute="trailing" id="dgp-1P-cws"/>
-                <constraint firstItem="ddn-uf-BAf" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="dr5-d3-qWQ"/>
                 <constraint firstItem="j67-iM-VaR" firstAttribute="trailing" secondItem="YjN-Fx-G8f" secondAttribute="trailing" constant="-5" id="dyt-9C-Cz1"/>
                 <constraint firstItem="j67-iM-VaR" firstAttribute="centerY" secondItem="ddn-uf-BAf" secondAttribute="centerY" id="euu-y2-3RN"/>
+                <constraint firstItem="ddn-uf-BAf" firstAttribute="leading" secondItem="bhP-8F-ysM" secondAttribute="trailing" constant="6" id="fB2-dt-odH"/>
                 <constraint firstItem="3ib-v1-Htp" firstAttribute="centerY" secondItem="ddn-uf-BAf" secondAttribute="centerY" id="fge-bo-nDW"/>
                 <constraint firstItem="Dqb-gc-Ywn" firstAttribute="top" secondItem="14b-8n-uKT" secondAttribute="bottom" constant="14" id="iVT-vU-Zbk"/>
                 <constraint firstAttribute="trailing" secondItem="YjN-Fx-G8f" secondAttribute="trailing" constant="20" id="lqa-ve-oGN"/>
                 <constraint firstItem="Dqb-gc-Ywn" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="mIk-bz-rW7"/>
+                <constraint firstItem="bhP-8F-ysM" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="19" id="pkC-90-UE2"/>
                 <constraint firstItem="3ib-v1-Htp" firstAttribute="leading" secondItem="14b-8n-uKT" secondAttribute="leading" id="r91-qz-luf"/>
                 <constraint firstItem="14b-8n-uKT" firstAttribute="centerY" secondItem="ddn-uf-BAf" secondAttribute="centerY" id="rnk-RY-orJ"/>
             </constraints>
@@ -94,6 +103,7 @@
         </view>
     </objects>
     <resources>
+        <image name="home_left" width="4" height="12"/>
         <image name="home_more" width="6" height="8"/>
     </resources>
 </document>

+ 15 - 6
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCouseCell.m

@@ -21,8 +21,6 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *priceLabel;
 
-@property (weak, nonatomic) IBOutlet UILabel *courseCountLabel;
-
 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
 
 @property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
@@ -48,9 +46,20 @@
         self.teacherName.text = [NSString stringWithFormat:@"%@",source.teacherName];
     }
     [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[source.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
-    self.priceLabel.text = [NSString stringWithFormat:@"¥%.2f",source.courseGroupPrice];
-    self.courseCountLabel.text = [NSString stringWithFormat:@"%zd课时",source.courseNum];
-    self.descLabel.text = [NSString stringWithFormat:@"%zd人已购买",source.buyCount];
+
+    if (source.courseGroupPrice > 0) {
+        NSString *mountMsg = [NSString formatDoubleNum:source.courseGroupPrice];
+        NSString *descMsg = [NSString stringWithFormat:@"¥%@",mountMsg];
+        
+        NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:descMsg attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12.0f],NSForegroundColorAttributeName:HexRGB(0xfa6400)}];
+        [attr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16.0f weight:UIFontWeightSemibold]} range:[descMsg rangeOfString:mountMsg]];
+        self.priceLabel.attributedText = attr;
+    }
+    else {
+        self.priceLabel.text = @"";
+    }
+    NSString *courseMsg = [NSString stringWithFormat:@"%zd课时",source.courseNum];
+    self.descLabel.text = courseMsg;
     // 时间
     if ([NSString isEmptyString:source.courseStartTime]) {
         self.courseBegin.text = @"";
@@ -59,7 +68,7 @@
         NSDateFormatter *dateFormatter = [NSObject getDateformatter];
         [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
         NSDate *beginDate = [dateFormatter dateFromString:source.courseStartTime];
-        [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm"];
+        [dateFormatter setDateFormat:@"MM月dd日 HH:mm"];
         self.courseBegin.text = [NSString returnNoNullStringWithString:[dateFormatter stringFromDate:beginDate]];
     }
     self.subjectLabel.text = [NSString returnNoNullStringWithString:source.subjectName];

+ 30 - 47
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeLiveCouseCell.xib

@@ -12,14 +12,14 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="225" id="KGk-i7-Jjw" customClass="HomeLiveCouseCell">
-            <rect key="frame" x="0.0" y="0.0" width="383" height="126"/>
+            <rect key="frame" x="0.0" y="0.0" width="375" height="126"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="383" height="126"/>
+                <rect key="frame" x="0.0" y="0.0" width="375" height="126"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="d3t-M0-UQn">
-                        <rect key="frame" x="14" y="0.0" width="355" height="116"/>
+                        <rect key="frame" x="14" y="0.0" width="347" height="116"/>
                         <subviews>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="mto-Fi-MuN">
                                 <rect key="frame" x="10" y="10" width="170" height="96"/>
@@ -60,7 +60,7 @@
                                 </userDefinedRuntimeAttributes>
                             </view>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管基础入门单曲练习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8ja-4v-aTz">
-                                <rect key="frame" x="188" y="14" width="157" height="20"/>
+                                <rect key="frame" x="188" y="14" width="149" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="US1-oc-Lb6"/>
                                 </constraints>
@@ -77,8 +77,8 @@
                                 <color key="textColor" red="0.41568627450980389" green="0.41568627450980389" blue="0.41568627450980389" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开课时间:2月28日 19:30" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="T3t-fA-cM4">
-                                <rect key="frame" x="188" y="59" width="157" height="16"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2月28日 19:30" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="T3t-fA-cM4">
+                                <rect key="frame" x="209" y="61.5" width="128" height="16"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="16" id="l9V-6s-gu9"/>
                                 </constraints>
@@ -86,43 +86,19 @@
                                 <color key="textColor" red="0.41568627450000001" green="0.41568627450000001" blue="0.41568627450000001" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥299" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rZn-jF-zsG">
-                                <rect key="frame" x="188" y="83" width="27" height="20"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥200" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rZn-jF-zsG">
+                                <rect key="frame" x="188" y="83" width="41" height="22"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="20" id="keb-BD-W5Z"/>
+                                    <constraint firstAttribute="height" constant="22" id="keb-BD-W5Z"/>
                                 </constraints>
-                                <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="10"/>
+                                <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
                                 <color key="textColor" red="0.98039215686274506" green="0.39215686274509803" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="C1l-Ki-Xiv">
-                                <rect key="frame" x="219" y="84.5" width="44.5" height="17"/>
-                                <subviews>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zJs-83-soC">
-                                        <rect key="frame" x="4" y="0.0" width="37.5" height="17"/>
-                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                        <color key="textColor" red="1" green="0.57647058823529407" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                        <nil key="highlightedColor"/>
-                                    </label>
-                                </subviews>
-                                <color key="backgroundColor" red="1" green="0.94509803921568625" blue="0.87058823529411766" alpha="1" colorSpace="calibratedRGB"/>
-                                <constraints>
-                                    <constraint firstAttribute="height" constant="17" id="D9G-Pn-9Jv"/>
-                                    <constraint firstAttribute="trailing" secondItem="zJs-83-soC" secondAttribute="trailing" constant="3" id="TVQ-Zk-nLQ"/>
-                                    <constraint firstAttribute="bottom" secondItem="zJs-83-soC" secondAttribute="bottom" id="aZw-b8-QBS"/>
-                                    <constraint firstItem="zJs-83-soC" firstAttribute="leading" secondItem="C1l-Ki-Xiv" secondAttribute="leading" constant="4" id="cC5-tq-agc"/>
-                                    <constraint firstItem="zJs-83-soC" firstAttribute="top" secondItem="C1l-Ki-Xiv" secondAttribute="top" id="kfg-dp-Eks"/>
-                                </constraints>
-                                <userDefinedRuntimeAttributes>
-                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="4"/>
-                                    </userDefinedRuntimeAttribute>
-                                </userDefinedRuntimeAttributes>
-                            </view>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6人已购买" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iFI-xj-FYd">
-                                <rect key="frame" x="288" y="85.5" width="57" height="15"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                <color key="textColor" red="1" green="0.50196078431372548" blue="0.17254901960784313" alpha="1" colorSpace="calibratedRGB"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iFI-xj-FYd">
+                                <rect key="frame" x="293.5" y="85.5" width="43.5" height="17"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="ZKK-49-oJ1">
@@ -137,27 +113,34 @@
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </imageView>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_courseTime" translatesAutoresizingMaskIntoConstraints="NO" id="5gG-UQ-9xJ">
+                                <rect key="frame" x="188" y="61" width="17" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="Ed4-Fo-Lle"/>
+                                    <constraint firstAttribute="width" constant="17" id="VDc-yD-2k7"/>
+                                </constraints>
+                            </imageView>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstItem="ZKK-49-oJ1" firstAttribute="top" secondItem="8ja-4v-aTz" secondAttribute="bottom" constant="3" id="0tu-kW-jzK"/>
+                            <constraint firstItem="5gG-UQ-9xJ" firstAttribute="top" secondItem="ZKK-49-oJ1" secondAttribute="bottom" constant="6" id="4ba-Kd-eiU"/>
                             <constraint firstItem="r6M-a2-FO8" firstAttribute="leading" secondItem="mto-Fi-MuN" secondAttribute="leading" constant="8" id="4ci-Yp-ZC4"/>
                             <constraint firstItem="mto-Fi-MuN" firstAttribute="leading" secondItem="d3t-M0-UQn" secondAttribute="leading" constant="10" id="6BN-tn-yyu"/>
                             <constraint firstItem="ZKK-49-oJ1" firstAttribute="leading" secondItem="8ja-4v-aTz" secondAttribute="leading" id="83q-Up-1c9"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="H4s-4H-yh0" secondAttribute="trailing" constant="10" id="8by-Kj-LSC"/>
-                            <constraint firstItem="T3t-fA-cM4" firstAttribute="top" secondItem="ZKK-49-oJ1" secondAttribute="bottom" constant="4" id="9uQ-iO-kd4"/>
-                            <constraint firstItem="rZn-jF-zsG" firstAttribute="leading" secondItem="T3t-fA-cM4" secondAttribute="leading" id="CBs-2D-gkT"/>
-                            <constraint firstItem="iFI-xj-FYd" firstAttribute="centerY" secondItem="C1l-Ki-Xiv" secondAttribute="centerY" id="Rxy-ge-uag"/>
+                            <constraint firstItem="T3t-fA-cM4" firstAttribute="centerY" secondItem="5gG-UQ-9xJ" secondAttribute="centerY" id="Jco-8h-aOU"/>
+                            <constraint firstItem="iFI-xj-FYd" firstAttribute="centerY" secondItem="rZn-jF-zsG" secondAttribute="centerY" id="NIU-bV-iSk"/>
+                            <constraint firstItem="iFI-xj-FYd" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="rZn-jF-zsG" secondAttribute="trailing" constant="10" id="SJc-9M-pf1"/>
                             <constraint firstItem="mto-Fi-MuN" firstAttribute="centerY" secondItem="d3t-M0-UQn" secondAttribute="centerY" id="SvE-NP-GIq"/>
-                            <constraint firstItem="C1l-Ki-Xiv" firstAttribute="centerY" secondItem="rZn-jF-zsG" secondAttribute="centerY" id="VXq-RT-vnQ"/>
                             <constraint firstItem="8ja-4v-aTz" firstAttribute="top" secondItem="mto-Fi-MuN" secondAttribute="top" constant="4" id="X9a-fQ-tvn"/>
-                            <constraint firstItem="C1l-Ki-Xiv" firstAttribute="leading" secondItem="rZn-jF-zsG" secondAttribute="trailing" constant="4" id="b0g-UQ-wBc"/>
                             <constraint firstItem="H4s-4H-yh0" firstAttribute="leading" secondItem="ZKK-49-oJ1" secondAttribute="trailing" constant="4" id="bW6-3M-YUh"/>
                             <constraint firstItem="H4s-4H-yh0" firstAttribute="centerY" secondItem="ZKK-49-oJ1" secondAttribute="centerY" id="bqu-dF-F2d"/>
-                            <constraint firstItem="T3t-fA-cM4" firstAttribute="leading" secondItem="ZKK-49-oJ1" secondAttribute="leading" id="eTy-CE-Xyg"/>
-                            <constraint firstItem="iFI-xj-FYd" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="C1l-Ki-Xiv" secondAttribute="trailing" constant="5" id="fN5-Nf-dBt"/>
-                            <constraint firstItem="rZn-jF-zsG" firstAttribute="top" secondItem="T3t-fA-cM4" secondAttribute="bottom" constant="8" id="fzb-a0-8ma"/>
+                            <constraint firstItem="rZn-jF-zsG" firstAttribute="top" secondItem="5gG-UQ-9xJ" secondAttribute="bottom" constant="5" id="bzD-Y5-OiL"/>
+                            <constraint firstItem="rZn-jF-zsG" firstAttribute="leading" secondItem="ZKK-49-oJ1" secondAttribute="leading" id="cg9-MN-Szc"/>
+                            <constraint firstItem="T3t-fA-cM4" firstAttribute="leading" secondItem="5gG-UQ-9xJ" secondAttribute="trailing" constant="4" id="daS-zB-j9L"/>
                             <constraint firstAttribute="trailing" secondItem="T3t-fA-cM4" secondAttribute="trailing" constant="10" id="mI8-H6-We8"/>
+                            <constraint firstItem="5gG-UQ-9xJ" firstAttribute="leading" secondItem="ZKK-49-oJ1" secondAttribute="leading" id="qqo-sf-k3X"/>
                             <constraint firstItem="r6M-a2-FO8" firstAttribute="top" secondItem="mto-Fi-MuN" secondAttribute="top" constant="6" id="uVC-r9-xKR"/>
                             <constraint firstItem="8ja-4v-aTz" firstAttribute="leading" secondItem="mto-Fi-MuN" secondAttribute="trailing" constant="8" id="vFc-T8-uGy"/>
                             <constraint firstAttribute="trailing" secondItem="iFI-xj-FYd" secondAttribute="trailing" constant="10" id="w1d-7L-E1j"/>
@@ -181,7 +164,6 @@
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
                 <outlet property="courseBegin" destination="T3t-fA-cM4" id="sgg-uA-dqO"/>
-                <outlet property="courseCountLabel" destination="zJs-83-soC" id="lSq-60-MaR"/>
                 <outlet property="courseName" destination="8ja-4v-aTz" id="ZJM-Q0-LiV"/>
                 <outlet property="coverImage" destination="mto-Fi-MuN" id="bnA-Le-57d"/>
                 <outlet property="descLabel" destination="iFI-xj-FYd" id="17h-Ba-iO1"/>
@@ -194,6 +176,7 @@
         </tableViewCell>
     </objects>
     <resources>
+        <image name="home_courseTime" width="17" height="17"/>
         <image name="user_default_avatal" width="52" height="52"/>
         <image name="video_placeholder" width="103" height="72"/>
         <systemColor name="systemBackgroundColor">

+ 12 - 6
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeVideoCourseCell.m

@@ -19,8 +19,6 @@
 
 @property (weak, nonatomic) IBOutlet UILabel *coursePrice;
 
-@property (weak, nonatomic) IBOutlet UILabel *courseCount;
-
 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
 @property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
 
@@ -44,10 +42,18 @@
         self.teacherName.text = [NSString stringWithFormat:@"%@",source.teacherName];
     }
     [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[source.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
-
-    self.coursePrice.text = [NSString stringWithFormat:@"¥%.2f",source.lessonPrice];
-    self.courseCount.text = [NSString stringWithFormat:@"%zd课时",source.lessonCount];
-    self.descLabel.text = [NSString stringWithFormat:@"%zd人已购买",source.buyCount];
+    if (source.lessonPrice > 0) {
+        NSString *mountMsg = [NSString formatDoubleNum:source.lessonPrice];
+        NSString *descMsg = [NSString stringWithFormat:@"¥%@",mountMsg];
+        NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:descMsg attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12.0f],NSForegroundColorAttributeName:HexRGB(0xfa6400)}];
+        [attr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16.0f weight:UIFontWeightSemibold]} range:[descMsg rangeOfString:mountMsg]];
+        self.coursePrice.attributedText = attr;
+    }
+    else {
+        self.coursePrice.text = @"";
+    }
+    
+    self.descLabel.text = [NSString stringWithFormat:@"%zd课时",source.lessonCount];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:source.subjectName];
 }
 

+ 12 - 37
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeVideoCourseCell.xib

@@ -22,9 +22,9 @@
                         <rect key="frame" x="14" y="0.0" width="363" height="141"/>
                         <subviews>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="knq-4v-R8V">
-                                <rect key="frame" x="10" y="22.5" width="130" height="96"/>
+                                <rect key="frame" x="10" y="22.5" width="170" height="96"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="130" id="HYT-fy-cHB"/>
+                                    <constraint firstAttribute="width" constant="170" id="HYT-fy-cHB"/>
                                     <constraint firstAttribute="height" constant="96" id="NoQ-gx-obg"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
@@ -60,7 +60,7 @@
                                 </userDefinedRuntimeAttributes>
                             </view>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管基础入门单曲练习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p1L-Tc-1eC">
-                                <rect key="frame" x="148" y="26.5" width="205" height="20"/>
+                                <rect key="frame" x="188" y="26.5" width="165" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="cVG-cS-SxM"/>
                                 </constraints>
@@ -69,46 +69,22 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥299" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JR5-GO-mSN">
-                                <rect key="frame" x="148" y="93.5" width="37" height="20"/>
+                                <rect key="frame" x="188" y="91.5" width="37" height="22"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="20" id="wdy-nF-fYp"/>
+                                    <constraint firstAttribute="height" constant="22" id="wdy-nF-fYp"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
                                 <color key="textColor" red="0.98039215690000003" green="0.3921568627" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vlX-ud-WSY">
-                                <rect key="frame" x="196" y="95" width="46" height="17"/>
-                                <subviews>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ta9-PS-Fd5">
-                                        <rect key="frame" x="4" y="0.0" width="38" height="17"/>
-                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                                        <color key="textColor" red="1" green="0.57647058819999997" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                        <nil key="highlightedColor"/>
-                                    </label>
-                                </subviews>
-                                <color key="backgroundColor" red="1" green="0.94509803920000002" blue="0.87058823529999996" alpha="1" colorSpace="calibratedRGB"/>
-                                <constraints>
-                                    <constraint firstAttribute="trailing" secondItem="ta9-PS-Fd5" secondAttribute="trailing" constant="4" id="Mpq-Gv-HzR"/>
-                                    <constraint firstAttribute="bottom" secondItem="ta9-PS-Fd5" secondAttribute="bottom" id="aqw-Lz-YJU"/>
-                                    <constraint firstItem="ta9-PS-Fd5" firstAttribute="leading" secondItem="vlX-ud-WSY" secondAttribute="leading" constant="4" id="gCa-8g-j6m"/>
-                                    <constraint firstItem="ta9-PS-Fd5" firstAttribute="top" secondItem="vlX-ud-WSY" secondAttribute="top" id="ogv-bW-YJd"/>
-                                    <constraint firstAttribute="height" constant="17" id="qyJ-ex-wqR"/>
-                                </constraints>
-                                <userDefinedRuntimeAttributes>
-                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="4"/>
-                                    </userDefinedRuntimeAttribute>
-                                </userDefinedRuntimeAttributes>
-                            </view>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6人已购买" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wLP-Ow-uiD">
-                                <rect key="frame" x="296" y="96" width="57" height="15"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="6人购买" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wLP-Ow-uiD">
+                                <rect key="frame" x="308.5" y="95" width="44.5" height="15"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                 <color key="textColor" red="1" green="0.50196078430000002" blue="0.17254901959999999" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="cqj-eK-gnE">
-                                <rect key="frame" x="148" y="51.5" width="18" height="18"/>
+                                <rect key="frame" x="188" y="51.5" width="18" height="18"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="18" id="0Vr-BO-kpU"/>
                                     <constraint firstAttribute="height" constant="18" id="tmu-do-ohi"/>
@@ -120,7 +96,7 @@
                                 </userDefinedRuntimeAttributes>
                             </imageView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="李云磊" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KYe-PG-V9i">
-                                <rect key="frame" x="170" y="53.5" width="37" height="14.5"/>
+                                <rect key="frame" x="210" y="53.5" width="143" height="14.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                 <color key="textColor" red="0.41568627450000001" green="0.41568627450000001" blue="0.41568627450000001" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
@@ -128,23 +104,23 @@
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
+                            <constraint firstItem="wLP-Ow-uiD" firstAttribute="centerY" secondItem="JR5-GO-mSN" secondAttribute="centerY" id="0Iv-hQ-Gem"/>
                             <constraint firstItem="knq-4v-R8V" firstAttribute="leading" secondItem="Hwe-zX-Dr8" secondAttribute="leading" constant="10" id="7Cd-Mj-Tb2"/>
-                            <constraint firstItem="wLP-Ow-uiD" firstAttribute="centerY" secondItem="vlX-ud-WSY" secondAttribute="centerY" id="9b0-Ps-dhd"/>
                             <constraint firstItem="cqj-eK-gnE" firstAttribute="top" secondItem="p1L-Tc-1eC" secondAttribute="bottom" constant="5" id="9jr-1u-dU3"/>
                             <constraint firstItem="p1L-Tc-1eC" firstAttribute="leading" secondItem="knq-4v-R8V" secondAttribute="trailing" constant="8" id="Am2-UT-dVy"/>
                             <constraint firstAttribute="trailing" secondItem="wLP-Ow-uiD" secondAttribute="trailing" constant="10" id="BJd-b3-GDy"/>
-                            <constraint firstItem="vlX-ud-WSY" firstAttribute="leading" secondItem="JR5-GO-mSN" secondAttribute="trailing" constant="11" id="Baq-P2-MLw"/>
                             <constraint firstItem="KYe-PG-V9i" firstAttribute="leading" secondItem="cqj-eK-gnE" secondAttribute="trailing" constant="4" id="FPy-IT-kug"/>
                             <constraint firstItem="cqj-eK-gnE" firstAttribute="leading" secondItem="p1L-Tc-1eC" secondAttribute="leading" id="Hsv-V3-uIk"/>
                             <constraint firstItem="XBM-bX-gza" firstAttribute="top" secondItem="knq-4v-R8V" secondAttribute="top" constant="6" id="Ksh-Br-hIn"/>
                             <constraint firstItem="knq-4v-R8V" firstAttribute="centerY" secondItem="Hwe-zX-Dr8" secondAttribute="centerY" id="LHd-wh-QXf"/>
                             <constraint firstItem="JR5-GO-mSN" firstAttribute="bottom" secondItem="knq-4v-R8V" secondAttribute="bottom" constant="-5" id="Of4-Nt-ICM"/>
                             <constraint firstItem="JR5-GO-mSN" firstAttribute="leading" secondItem="p1L-Tc-1eC" secondAttribute="leading" id="RP5-bU-zIH"/>
+                            <constraint firstItem="wLP-Ow-uiD" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="JR5-GO-mSN" secondAttribute="trailing" constant="10" id="cKG-pc-GB6"/>
                             <constraint firstItem="p1L-Tc-1eC" firstAttribute="top" secondItem="knq-4v-R8V" secondAttribute="top" constant="4" id="gMW-CX-juj"/>
                             <constraint firstAttribute="trailing" secondItem="p1L-Tc-1eC" secondAttribute="trailing" constant="10" id="i4s-hj-WAH"/>
                             <constraint firstItem="XBM-bX-gza" firstAttribute="leading" secondItem="knq-4v-R8V" secondAttribute="leading" constant="8" id="qYL-vE-gnZ"/>
-                            <constraint firstItem="vlX-ud-WSY" firstAttribute="centerY" secondItem="JR5-GO-mSN" secondAttribute="centerY" id="tDh-91-MoS"/>
                             <constraint firstItem="KYe-PG-V9i" firstAttribute="centerY" secondItem="cqj-eK-gnE" secondAttribute="centerY" id="tEL-aq-WXx"/>
+                            <constraint firstAttribute="trailing" secondItem="KYe-PG-V9i" secondAttribute="trailing" constant="10" id="zlf-H5-Agc"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -164,7 +140,6 @@
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
-                <outlet property="courseCount" destination="ta9-PS-Fd5" id="1Mh-LM-Dc3"/>
                 <outlet property="courseName" destination="p1L-Tc-1eC" id="Wc7-mx-kf0"/>
                 <outlet property="coursePrice" destination="JR5-GO-mSN" id="Qti-X4-3xG"/>
                 <outlet property="coverImage" destination="knq-4v-R8V" id="dpy-Wz-IEu"/>

+ 12 - 2
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeVideoCourseView.xib

@@ -26,7 +26,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="视频课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="udp-EO-1wE">
-                    <rect key="frame" x="14" y="10" width="49" height="22"/>
+                    <rect key="frame" x="29" y="10" width="49" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="Nb9-uZ-M7N"/>
                     </constraints>
@@ -64,21 +64,30 @@
                         <action selector="moreVideoCourse:" destination="iN0-l3-epB" eventType="touchUpInside" id="Gmz-1S-gKx"/>
                     </connections>
                 </button>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="9Mx-UC-6Oq">
+                    <rect key="frame" x="19" y="15" width="4" height="12"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="12" id="ITV-pF-Rco"/>
+                        <constraint firstAttribute="width" constant="4" id="cmf-YL-OQf"/>
+                    </constraints>
+                </imageView>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstItem="g4k-4s-Uxm" firstAttribute="leading" secondItem="QT1-CR-Adr" secondAttribute="leading" constant="6" id="16u-n9-haE"/>
+                <constraint firstItem="udp-EO-1wE" firstAttribute="leading" secondItem="9Mx-UC-6Oq" secondAttribute="trailing" constant="6" id="3vK-De-ZBg"/>
                 <constraint firstItem="udp-EO-1wE" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="6Qd-7e-pFv"/>
                 <constraint firstItem="B9C-qj-1hJ" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="FKs-9C-pzD"/>
                 <constraint firstItem="cKY-En-XuZ" firstAttribute="trailing" secondItem="QT1-CR-Adr" secondAttribute="trailing" constant="-5" id="G9U-Me-wFQ"/>
                 <constraint firstAttribute="bottom" secondItem="B9C-qj-1hJ" secondAttribute="bottom" constant="10" id="InW-5B-cLU"/>
                 <constraint firstItem="g4k-4s-Uxm" firstAttribute="centerY" secondItem="udp-EO-1wE" secondAttribute="centerY" id="PxZ-6G-isy"/>
+                <constraint firstItem="9Mx-UC-6Oq" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="19" id="RPj-h8-wt0"/>
+                <constraint firstItem="udp-EO-1wE" firstAttribute="centerY" secondItem="9Mx-UC-6Oq" secondAttribute="centerY" id="SpB-X5-HYH"/>
                 <constraint firstItem="cKY-En-XuZ" firstAttribute="trailing" secondItem="c3t-WL-rJD" secondAttribute="trailing" id="TM3-m9-vIy"/>
                 <constraint firstItem="g4k-4s-Uxm" firstAttribute="leading" secondItem="c3t-WL-rJD" secondAttribute="leading" id="XDD-qA-OpZ"/>
                 <constraint firstItem="cKY-En-XuZ" firstAttribute="leading" secondItem="g4k-4s-Uxm" secondAttribute="trailing" constant="3" id="Z15-qG-1NL"/>
                 <constraint firstAttribute="trailing" secondItem="B9C-qj-1hJ" secondAttribute="trailing" id="adP-VB-fht"/>
                 <constraint firstAttribute="trailing" secondItem="QT1-CR-Adr" secondAttribute="trailing" constant="20" id="enU-Lj-Ry5"/>
-                <constraint firstItem="udp-EO-1wE" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="fpl-x5-GBv"/>
                 <constraint firstItem="B9C-qj-1hJ" firstAttribute="top" secondItem="c3t-WL-rJD" secondAttribute="bottom" constant="14" id="gHi-Dv-69Q"/>
                 <constraint firstItem="cKY-En-XuZ" firstAttribute="centerY" secondItem="udp-EO-1wE" secondAttribute="centerY" id="oRV-aR-TYe"/>
                 <constraint firstItem="c3t-WL-rJD" firstAttribute="centerY" secondItem="udp-EO-1wE" secondAttribute="centerY" id="q48-Qq-5AX"/>
@@ -94,6 +103,7 @@
         </view>
     </objects>
     <resources>
+        <image name="home_left" width="4" height="12"/>
         <image name="home_more" width="6" height="8"/>
     </resources>
 </document>

+ 12 - 2
KulexiuForStudent/KulexiuForStudent/Module/Home/View/HotInformationHeadView.xib

@@ -26,7 +26,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="精彩资讯" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="76G-7c-nEc">
-                    <rect key="frame" x="16" y="10" width="65.5" height="22"/>
+                    <rect key="frame" x="29" y="10" width="65.5" height="22"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="22" id="325-gq-Ep0"/>
                     </constraints>
@@ -60,11 +60,19 @@
                         <constraint firstAttribute="width" constant="6" id="a4V-IE-hlc"/>
                     </constraints>
                 </imageView>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="home_left" translatesAutoresizingMaskIntoConstraints="NO" id="cJm-a0-KeG">
+                    <rect key="frame" x="19" y="15" width="4" height="12"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="4" id="GnD-1F-rkO"/>
+                        <constraint firstAttribute="height" constant="12" id="QTh-LV-sbb"/>
+                    </constraints>
+                </imageView>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstItem="xaQ-Rd-bel" firstAttribute="centerY" secondItem="76G-7c-nEc" secondAttribute="centerY" id="3Sc-FQ-jQZ"/>
                 <constraint firstItem="uoh-6D-nay" firstAttribute="leading" secondItem="BHe-NQ-zoN" secondAttribute="leading" constant="6" id="5Pb-eU-yKc"/>
+                <constraint firstItem="76G-7c-nEc" firstAttribute="centerY" secondItem="cJm-a0-KeG" secondAttribute="centerY" id="BLk-0c-Sr6"/>
                 <constraint firstItem="GKx-rJ-vq5" firstAttribute="centerY" secondItem="76G-7c-nEc" secondAttribute="centerY" id="O2s-vi-aJA"/>
                 <constraint firstItem="xaQ-Rd-bel" firstAttribute="trailing" secondItem="BHe-NQ-zoN" secondAttribute="trailing" constant="-5" id="iG7-9j-x0q"/>
                 <constraint firstAttribute="trailing" secondItem="BHe-NQ-zoN" secondAttribute="trailing" constant="20" id="ifu-qX-OU8"/>
@@ -72,9 +80,10 @@
                 <constraint firstItem="76G-7c-nEc" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="mWY-Mu-pgz"/>
                 <constraint firstItem="uoh-6D-nay" firstAttribute="centerY" secondItem="76G-7c-nEc" secondAttribute="centerY" id="oXh-yg-Fba"/>
                 <constraint firstItem="xaQ-Rd-bel" firstAttribute="trailing" secondItem="GKx-rJ-vq5" secondAttribute="trailing" id="va8-tl-1zF"/>
+                <constraint firstItem="cJm-a0-KeG" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="19" id="wS0-60-gVM"/>
                 <constraint firstItem="BHe-NQ-zoN" firstAttribute="centerY" secondItem="uoh-6D-nay" secondAttribute="centerY" id="xFP-sx-nvg"/>
-                <constraint firstItem="76G-7c-nEc" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="yZf-ND-wQj"/>
                 <constraint firstItem="uoh-6D-nay" firstAttribute="leading" secondItem="GKx-rJ-vq5" secondAttribute="leading" id="zYz-3c-1r5"/>
+                <constraint firstItem="76G-7c-nEc" firstAttribute="leading" secondItem="cJm-a0-KeG" secondAttribute="trailing" constant="6" id="zjU-tH-VnS"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
@@ -83,6 +92,7 @@
         </view>
     </objects>
     <resources>
+        <image name="home_left" width="4" height="12"/>
         <image name="home_more" width="6" height="8"/>
     </resources>
 </document>

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Home/View/PublicNoticeView.xib

@@ -11,11 +11,11 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="PublicNoticeView">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="94"/>
-            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="60"/>
+            <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="18s-Im-HaS">
-                    <rect key="frame" x="14" y="25" width="386" height="44"/>
+                    <rect key="frame" x="14" y="8" width="386" height="44"/>
                     <subviews>
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="notice_icon" translatesAutoresizingMaskIntoConstraints="NO" id="Emb-yN-fCJ">
                             <rect key="frame" x="10" y="11" width="23" height="22"/>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/View/TeacherShowCell.h

@@ -9,7 +9,7 @@
 #import "TeacherStyleModel.h"
 
 
-typedef void(^TeacherStylePlay)(NSString * _Nullable videoUrl);
+typedef void(^TeacherStylePlay)(BOOL isShowVideo, NSString * _Nullable videoUrl);
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 22 - 3
KulexiuForStudent/KulexiuForStudent/Module/Home/View/TeacherShowCell.m

@@ -29,6 +29,10 @@
 
 @property (nonatomic, strong) TeacherStyleModel *model;
 
+@property (weak, nonatomic) IBOutlet UIView *liveingView;
+
+
+
 @end
 
 @implementation TeacherShowCell
@@ -49,14 +53,29 @@
     [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[sourceModel.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
     self.teacherNameLabel.text = [NSString returnNoNullStringWithString:sourceModel.username];
     self.watchCount.text = [NSString stringWithFormat:@"%@人观看",sourceModel.browse];
-    
-
     [KSVideoHelper getVideoDuration:sourceModel.videoUrl displayInLabel:self.durationLabel];
+    
+    if (sourceModel.liveing) {
+        self.liveingView.hidden = NO;
+    }
+    else {
+        self.liveingView.hidden = YES;
+    }
+    
 }
 
+
+
 - (IBAction)playButtonAction:(id)sender {
     if (self.callback) {
-        self.callback(self.model.videoUrl);
+        self.callback(YES,self.model.videoUrl);
+    }
+}
+
+- (IBAction)toTeacherDetail:(id)sender {
+    if (self.callback) {
+        self.callback(NO, nil);
     }
 }
+
 @end

+ 44 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/View/TeacherShowCell.xib

@@ -95,6 +95,46 @@
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sep-lG-ycl">
+                                <rect key="frame" x="50" y="30" width="88" height="34"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播中" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sMW-Hg-eXm">
+                                        <rect key="frame" x="38" y="2" width="43" height="30"/>
+                                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="live_image" translatesAutoresizingMaskIntoConstraints="NO" id="kmc-WA-tr7">
+                                        <rect key="frame" x="7" y="12" width="23" height="10"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="10" id="ky3-YV-pTz"/>
+                                            <constraint firstAttribute="width" constant="23" id="o1j-1T-Av2"/>
+                                        </constraints>
+                                    </imageView>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="S1L-bO-a69">
+                                        <rect key="frame" x="0.0" y="0.0" width="88" height="34"/>
+                                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="0.5" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                                <constraints>
+                                    <constraint firstItem="S1L-bO-a69" firstAttribute="leading" secondItem="sep-lG-ycl" secondAttribute="leading" id="Ce1-Od-YmX"/>
+                                    <constraint firstAttribute="trailing" secondItem="sMW-Hg-eXm" secondAttribute="trailing" constant="7" id="FtB-IV-fQt"/>
+                                    <constraint firstItem="kmc-WA-tr7" firstAttribute="centerY" secondItem="sep-lG-ycl" secondAttribute="centerY" id="Jks-4F-zEX"/>
+                                    <constraint firstItem="sMW-Hg-eXm" firstAttribute="top" secondItem="sep-lG-ycl" secondAttribute="top" constant="2" id="R0f-Cc-7bL"/>
+                                    <constraint firstAttribute="trailing" secondItem="S1L-bO-a69" secondAttribute="trailing" id="bB2-r3-mWs"/>
+                                    <constraint firstItem="kmc-WA-tr7" firstAttribute="leading" secondItem="sep-lG-ycl" secondAttribute="leading" constant="7" id="ex3-z2-dzz"/>
+                                    <constraint firstItem="sMW-Hg-eXm" firstAttribute="leading" secondItem="kmc-WA-tr7" secondAttribute="trailing" constant="8" id="gJE-01-r3m"/>
+                                    <constraint firstItem="S1L-bO-a69" firstAttribute="top" secondItem="sep-lG-ycl" secondAttribute="top" id="jNq-o1-ap7"/>
+                                    <constraint firstAttribute="bottom" secondItem="sMW-Hg-eXm" secondAttribute="bottom" constant="2" id="kIa-gw-XMf"/>
+                                    <constraint firstAttribute="bottom" secondItem="S1L-bO-a69" secondAttribute="bottom" id="tRk-ql-lEt"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="5"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                         <constraints>
@@ -105,11 +145,13 @@
                             <constraint firstAttribute="trailing" secondItem="h60-Mb-b5v" secondAttribute="trailing" constant="8" id="Jci-3j-Y9v"/>
                             <constraint firstItem="9jq-kZ-bi9" firstAttribute="top" secondItem="EFx-Mc-ddD" secondAttribute="bottom" constant="10" id="LWc-Zn-GPa"/>
                             <constraint firstItem="EFx-Mc-ddD" firstAttribute="top" secondItem="01s-Q8-6El" secondAttribute="top" id="S2S-s2-vlQ"/>
+                            <constraint firstItem="sep-lG-ycl" firstAttribute="centerX" secondItem="EFx-Mc-ddD" secondAttribute="centerX" id="T05-4P-euk"/>
                             <constraint firstItem="hhc-kx-51J" firstAttribute="bottom" secondItem="EFx-Mc-ddD" secondAttribute="bottom" constant="-8" id="U1m-w4-ZLX"/>
                             <constraint firstItem="mwL-ai-act" firstAttribute="leading" secondItem="9jq-kZ-bi9" secondAttribute="trailing" constant="6" id="YXk-GC-bpl"/>
                             <constraint firstAttribute="trailing" secondItem="hhc-kx-51J" secondAttribute="trailing" constant="7" id="bOx-RM-i79"/>
                             <constraint firstItem="9jq-kZ-bi9" firstAttribute="leading" secondItem="01s-Q8-6El" secondAttribute="leading" constant="8" id="n8n-vj-zpF"/>
                             <constraint firstItem="h60-Mb-b5v" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="mwL-ai-act" secondAttribute="trailing" constant="10" id="o3Q-vJ-HWP"/>
+                            <constraint firstItem="sep-lG-ycl" firstAttribute="centerY" secondItem="EFx-Mc-ddD" secondAttribute="centerY" id="pre-Gu-XE9"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -129,6 +171,7 @@
             <size key="customSize" width="188" height="167"/>
             <connections>
                 <outlet property="durationLabel" destination="ueX-N8-LMM" id="Xuo-oM-2BR"/>
+                <outlet property="liveingView" destination="sep-lG-ycl" id="hhD-hF-abo"/>
                 <outlet property="playButton" destination="KQK-OM-u6P" id="243-5b-pYg"/>
                 <outlet property="teacherAvatar" destination="9jq-kZ-bi9" id="LVa-r3-Ogc"/>
                 <outlet property="teacherNameLabel" destination="mwL-ai-act" id="rAZ-Im-GKP"/>
@@ -140,6 +183,7 @@
     </objects>
     <resources>
         <image name="introduce_play" width="10" height="10"/>
+        <image name="live_image" width="23" height="10"/>
         <image name="user_default_avatal" width="52" height="52"/>
         <image name="video_placeholder" width="103" height="72"/>
     </resources>

+ 10 - 1
KulexiuForStudent/KulexiuForStudent/Module/Live/Controller/LiveVideoRoomViewController.m

@@ -139,6 +139,7 @@ typedef NS_ENUM(NSInteger, MICSTATUS) {
 
 @property (nonatomic, assign) NSTimeInterval lastSendMsgTime;
 
+@property (nonatomic, assign) BOOL isOtherLogin;  // 是否被顶掉
 
 @end
 
@@ -163,6 +164,7 @@ static int clickPraiseBtnTimes  = 0;
     self.isCreaterInRoom = NO; // 默认主讲人不在房间
     self.isImConnected = [USER_MANAGER checkIMConnected];
     self.isCloseRoom = NO;
+    self.isOtherLogin = NO;
 }
 
 - (void)viewDidLoad {
@@ -244,6 +246,10 @@ static int clickPraiseBtnTimes  = 0;
 }
 
 - (void)liveroomLogOut {
+    if (self.isOtherLogin) {
+        return;
+    }
+    self.isOtherLogin = YES;
     [self MBPShow:@"该账号在其他设备上登录"];
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self quitRoom];
@@ -251,6 +257,10 @@ static int clickPraiseBtnTimes  = 0;
 }
 
 - (void)liveroomQuit {
+    if (self.isOtherLogin) {
+        return;
+    }
+    self.isOtherLogin = YES;
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self quitRoom];
     });
@@ -1373,7 +1383,6 @@ static int clickPraiseBtnTimes  = 0;
                     [__blockSelf resetNetTips];
                     [__blockSelf resetConnectionStatus];
                     [__blockSelf closeAlertView];
-                    
                 }
                 else if ([rcMessage.content isMemberOfClass:[KSRCShopRushMessage class]]) { //
                     

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Live/Model/LiveroomTimeManager.m

@@ -40,6 +40,7 @@
         if (self.delegate && [self.delegate respondsToSelector:@selector(quitClassroomNotifer)]) {
             [self.delegate quitClassroomNotifer];
         }
+        [self stopDurationTimer];
     }
     self.duration--;
 }

+ 24 - 43
KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.m

@@ -23,7 +23,10 @@
 
 @property (nonatomic, copy) InstrumentChooseBottonView *bottomView;
 
-@property (nonatomic, strong) NSMutableArray *chooseArray;
+
+@property (nonatomic, strong) InstrumentMessageModel *chooseModel;
+
+@property (nonatomic, strong) NSIndexPath *chooseIndexPath;
 
 @end
 
@@ -34,12 +37,19 @@
         self.callback = callback;
     }
 }
+
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
     [self allocTitle:@"乐器选择"];
     [self configUI];
     [self requestInstrumentMessage];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAction) name:@"LogoutAction" object:nil];
+}
+
+- (void)logoutAction {
+    [self backAction];
+    [KSNetworkingManager backLoginView];
 }
 
 - (void)configUI {
@@ -177,40 +187,24 @@
 
 - (void)countMessageWithModel:(InstrumentMessageModel *)model indexPath:(NSIndexPath *)indexPath {
     if (model.isChoose) {
-        if (![self judgeContainModel:model]) {
-            if (self.chooseArray.count == 1) {
-                [self MBPShow:@"最多只能选择1个乐器"];
-                return;
-            }
-            [self.chooseArray addObject:model];
+        if (self.chooseModel) {
+            self.chooseModel.isChoose = NO;
         }
     }
     else {
-        if ([self judgeContainModel:model]) {
-            [self removeWithInstrumentId:model.internalBaseClassIdentifier];
-        }
+        model.isChoose = NO;
+        self.chooseModel = nil;
+        self.chooseIndexPath = nil;
     }
-    [self.collectionView reloadItemsAtIndexPaths:@[indexPath]];
-}
+    if (self.chooseIndexPath) {
+        [self.collectionView reloadItemsAtIndexPaths:@[indexPath,self.chooseIndexPath]];
 
-- (BOOL)judgeContainModel:(InstrumentMessageModel *)model {
-    BOOL contain = NO;
-    for (InstrumentMessageModel *chooseModel in self.chooseArray) {
-        if ([chooseModel.internalBaseClassIdentifier isEqualToString:model.internalBaseClassIdentifier]) {
-            contain = YES;
-            break;
-        }
     }
-    return contain;
-}
-
-- (void)removeWithInstrumentId:(NSString *)instrumentId {
-    for (InstrumentMessageModel *chooseModel in self.chooseArray) {
-        if ([chooseModel.internalBaseClassIdentifier isEqualToString:instrumentId]) {
-            [self.chooseArray removeObject:chooseModel];
-            break;
-        }
+    else {
+        [self.collectionView reloadItemsAtIndexPaths:@[indexPath]];
     }
+    self.chooseModel = model;
+    self.chooseIndexPath = indexPath;
 }
 
 - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
@@ -223,12 +217,6 @@
 
 #pragma mark ------ lazying
 
-- (NSMutableArray *)chooseArray {
-    if (!_chooseArray) {
-        _chooseArray = [NSMutableArray array];
-    }
-    return _chooseArray;
-}
 - (UICollectionView *)collectionView {
     if (!_collectionView) {
         UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
@@ -260,22 +248,15 @@
 }
 
 - (void)chooseInstrumentAction {
-    if (self.chooseArray.count == 0) {
+    if (self.chooseModel == nil) {
         [self MBPShow:@"请选择乐器"];
         return;
     }
-    NSMutableArray *instrumentArray = [NSMutableArray array];
-    for (InstrumentMessageModel *model in self.chooseArray) {
-        NSMutableDictionary *parm = [NSMutableDictionary dictionary];
-        [parm setValue:model.name forKey:@"subjectName"];
-        [parm setValue:model.internalBaseClassIdentifier forKey:@"subjectId"];
-        [instrumentArray addObject:parm];
-    }
     [self sureChooseSubject];
 }
 
 - (void)sureChooseSubject {
-    InstrumentMessageModel *model = [self.chooseArray firstObject];
+    InstrumentMessageModel *model = self.chooseModel;
     NSString *subjectId = model.internalBaseClassIdentifier;
     [self showhud];
     [KSNetworkingManager studentSetSubject:KS_GET subjectIds:subjectId success:^(NSDictionary * _Nonnull dic) {

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Login/Guide/Controller/GuideViewController.m

@@ -37,7 +37,7 @@
 
 - (void)defaultSource {
     self.imgArray = [NSMutableArray arrayWithArray:@[@"guidePage1",@"guidePage2",@"guidePage3"]];
-    self.titleArray = [NSMutableArray arrayWithArray:@[@"在家轻松学音乐",@"云教练实时反馈",@"多维沟通"]];
+    self.titleArray = [NSMutableArray arrayWithArray:@[@"在家轻松学音乐",@"小酷AI实时反馈",@"多维沟通"]];
     self.descArray = [NSMutableArray arrayWithArray:@[@"海量优质课程,名师讲解精学",@"24小时随时练,海量曲谱任您挑选",@"师生即时互动,经验交流分享"]];
     
 }

+ 36 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfoManager.m

@@ -12,6 +12,7 @@
 #import <RongIMKit/RongIMKit.h>
 #import "RCConnectionManager.h"
 #import "AppDelegate.h"
+#import "KSTipsAlert.h"
 
 @interface UserInfoManager ()
 
@@ -56,9 +57,44 @@
                 }
             }];
         }
+        else if ([vc isKindOfClass:[UITabBarController class]]) {
+            if ([vc.presentedViewController isKindOfClass:NSClassFromString(@"CustomNavViewController")]) {
+                CustomNavViewController *nav = (CustomNavViewController *)vc.presentedViewController;
+                if ([nav.visibleViewController isKindOfClass:NSClassFromString(@"LiveVideoRoomViewController")] || [nav.visibleViewController isKindOfClass:NSClassFromString(@"KSLiveWebViewController")]) {
+                    [self checkTokenEnableCallback:^(BOOL enable) {
+                        if (enable) {
+                            [[NSNotificationCenter defaultCenter] postNotificationName:@"liveroomQuit" object:nil];
+                            NSLog(@"-----liveroomQuit");
+                        }
+                        else {
+                            [[NSNotificationCenter defaultCenter] postNotificationName:@"liveroomLogout" object:nil];
+                            NSLog(@"-----liveroomLogout");
+                        }
+                    }];
+                    return;
+                }
+            }
+            [self checkTokenEnableCallback:^(BOOL enable) {
+                if (enable) {
+                    [self showTipsAlert];
+                }
+                else {
+                    [self showMessage:@"该账号在其他地方登录"];
+                    [KSNetworkingManager logoutAction];
+                    NSLog(@"----dddd");
+                }
+            }];
+        }
     });
 }
 
+- (void)showTipsAlert {
+    [KSTipsAlert shareInstanceWithTitle:@"提示" descMessage:@"聊天功能已断开,是否重新连接?" leftTitle:@"取消" rightTitle:@"连接" callback:^(BOOL isSure) {
+        if (isSure) {
+            [self connectRongCloud];
+        }
+    }];
+}
 // 提示信息
 - (void)showMessage:(NSString *)message {
     MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].windows lastObject] animated:YES];

+ 7 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m

@@ -21,6 +21,7 @@
 #import "KSScanViewController.h"
 #import "KSPremissionAlert.h"
 #import "RecordCheckManager.h"
+#import "FeedbackViewController.h"
 
 @interface MineViewController ()
 
@@ -215,6 +216,12 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
+        case MINEVIEWTYPE_FEEDBACK:
+        {
+            FeedbackViewController *ctrl = [[FeedbackViewController alloc] init];
+            [self.navigationController pushViewController:ctrl animated:YES];
+        }
+            break;
         default:
             break;
     }

+ 17 - 11
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/Model/HomeworkListModel.h

@@ -1,7 +1,7 @@
 //
 //  HomeworkListModel.h
 //
-//  Created by Steven  on 2022/4/18
+//  Created by Steven  on 2022/7/5
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
@@ -11,22 +11,28 @@
 
 @interface HomeworkListModel : NSObject <NSCoding, NSCopying>
 
-@property (nonatomic, strong) NSString *courseGroupId;
-@property (nonatomic, strong) NSString *classDate;
-@property (nonatomic, strong) NSString *teacherAvatar;
-@property (nonatomic, strong) NSString *decorateTime;
+@property (nonatomic, strong) NSString *backgroundPic;
 @property (nonatomic, assign) double absenteeism;
-@property (nonatomic, strong) NSString *courseId;
-@property (nonatomic, strong) NSString *teacherName;
-@property (nonatomic, strong) NSString *studentId;
 @property (nonatomic, strong) NSString *studentName;
+@property (nonatomic, strong) NSString *classNum;
+@property (nonatomic, strong) NSString *courseGroupName;
+@property (nonatomic, strong) NSString *homeworkId;
+@property (nonatomic, strong) NSString *teacherName;
+@property (nonatomic, strong) NSString *decorateTime;
+@property (nonatomic, strong) NSString *homeworkStatus;
 @property (nonatomic, strong) NSString *subjectName;
 @property (nonatomic, strong) NSString *endTime;
-@property (nonatomic, strong) NSString *studentAvatar;
+@property (nonatomic, strong) NSString *imGroupId;
+@property (nonatomic, strong) NSString *type;
+@property (nonatomic, strong) NSString *teacherId;
 @property (nonatomic, strong) NSString *submitTime;
+@property (nonatomic, strong) NSString *studentId;
+@property (nonatomic, strong) NSString *courseId;
+@property (nonatomic, strong) NSString *courseGroupId;
+@property (nonatomic, strong) NSString *studentAvatar;
 @property (nonatomic, strong) NSString *startTime;
-@property (nonatomic, strong) NSString *teacherId;
-@property (nonatomic, strong) NSString *homeworkStatus;
+@property (nonatomic, strong) NSString *classDate;
+@property (nonatomic, strong) NSString *teacherAvatar;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 117 - 71
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/Model/HomeworkListModel.m

@@ -1,29 +1,36 @@
 //
 //  HomeworkListModel.m
 //
-//  Created by Steven  on 2022/4/18
+//  Created by Steven  on 2022/7/5
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
 #import "HomeworkListModel.h"
 
 
-NSString *const kHomeworkListModelCourseGroupId = @"courseGroupId";
-NSString *const kHomeworkListModelClassDate = @"classDate";
-NSString *const kHomeworkListModelTeacherAvatar = @"teacherAvatar";
-NSString *const kHomeworkListModelDecorateTime = @"decorateTime";
+NSString *const kHomeworkListModelBackgroundPic = @"backgroundPic";
 NSString *const kHomeworkListModelAbsenteeism = @"absenteeism";
-NSString *const kHomeworkListModelCourseId = @"courseId";
-NSString *const kHomeworkListModelTeacherName = @"teacherName";
 NSString *const kHomeworkListModelStudentName = @"studentName";
+NSString *const kHomeworkListModelClassNum = @"classNum";
+NSString *const kHomeworkListModelCourseGroupName = @"courseGroupName";
+NSString *const kHomeworkListModelHomeworkId = @"homeworkId";
+NSString *const kHomeworkListModelTeacherName = @"teacherName";
+NSString *const kHomeworkListModelDecorateTime = @"decorateTime";
+NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
 NSString *const kHomeworkListModelSubjectName = @"subjectName";
 NSString *const kHomeworkListModelEndTime = @"endTime";
-NSString *const kHomeworkListModelStudentAvatar = @"studentAvatar";
+NSString *const kHomeworkListModelImGroupId = @"imGroupId";
+NSString *const kHomeworkListModelType = @"type";
+NSString *const kHomeworkListModelTeacherId = @"teacherId";
 NSString *const kHomeworkListModelSubmitTime = @"submitTime";
-NSString *const kHomeworkListModelStartTime = @"startTime";
 NSString *const kHomeworkListModelStudentId = @"studentId";
-NSString *const kHomeworkListModelTeacherId = @"teacherId";
-NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
+NSString *const kHomeworkListModelCourseId = @"courseId";
+NSString *const kHomeworkListModelCourseGroupId = @"courseGroupId";
+NSString *const kHomeworkListModelStudentAvatar = @"studentAvatar";
+NSString *const kHomeworkListModelStartTime = @"startTime";
+NSString *const kHomeworkListModelClassDate = @"classDate";
+NSString *const kHomeworkListModelTeacherAvatar = @"teacherAvatar";
+
 
 @interface HomeworkListModel ()
 
@@ -33,22 +40,29 @@ NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
 
 @implementation HomeworkListModel
 
-@synthesize courseGroupId = _courseGroupId;
-@synthesize classDate = _classDate;
-@synthesize teacherAvatar = _teacherAvatar;
-@synthesize decorateTime = _decorateTime;
+@synthesize backgroundPic = _backgroundPic;
 @synthesize absenteeism = _absenteeism;
-@synthesize courseId = _courseId;
-@synthesize teacherName = _teacherName;
 @synthesize studentName = _studentName;
+@synthesize classNum = _classNum;
+@synthesize courseGroupName = _courseGroupName;
+@synthesize homeworkId = _homeworkId;
+@synthesize teacherName = _teacherName;
+@synthesize decorateTime = _decorateTime;
+@synthesize homeworkStatus = _homeworkStatus;
 @synthesize subjectName = _subjectName;
 @synthesize endTime = _endTime;
-@synthesize studentAvatar = _studentAvatar;
+@synthesize imGroupId = _imGroupId;
+@synthesize type = _type;
+@synthesize teacherId = _teacherId;
 @synthesize submitTime = _submitTime;
-@synthesize startTime = _startTime;
 @synthesize studentId = _studentId;
-@synthesize teacherId = _teacherId;
-@synthesize homeworkStatus = _homeworkStatus;
+@synthesize courseId = _courseId;
+@synthesize courseGroupId = _courseGroupId;
+@synthesize studentAvatar = _studentAvatar;
+@synthesize startTime = _startTime;
+@synthesize classDate = _classDate;
+@synthesize teacherAvatar = _teacherAvatar;
+
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -62,22 +76,29 @@ NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
     // This check serves to make sure that a non-NSDictionary object
     // passed into the model class doesn't break the parsing.
     if(self && [dict isKindOfClass:[NSDictionary class]]) {
-            self.courseGroupId = [self objectOrNilForKey:kHomeworkListModelCourseGroupId fromDictionary:dict];
-            self.classDate = [self objectOrNilForKey:kHomeworkListModelClassDate fromDictionary:dict];
-            self.teacherAvatar = [self objectOrNilForKey:kHomeworkListModelTeacherAvatar fromDictionary:dict];
-            self.decorateTime = [self objectOrNilForKey:kHomeworkListModelDecorateTime fromDictionary:dict];
+            self.backgroundPic = [self objectOrNilForKey:kHomeworkListModelBackgroundPic fromDictionary:dict];
             self.absenteeism = [[self objectOrNilForKey:kHomeworkListModelAbsenteeism fromDictionary:dict] doubleValue];
-            self.courseId = [self objectOrNilForKey:kHomeworkListModelCourseId fromDictionary:dict];
-            self.teacherName = [self objectOrNilForKey:kHomeworkListModelTeacherName fromDictionary:dict];
             self.studentName = [self objectOrNilForKey:kHomeworkListModelStudentName fromDictionary:dict];
+            self.classNum = [self objectOrNilForKey:kHomeworkListModelClassNum fromDictionary:dict];
+            self.courseGroupName = [self objectOrNilForKey:kHomeworkListModelCourseGroupName fromDictionary:dict];
+            self.homeworkId = [self objectOrNilForKey:kHomeworkListModelHomeworkId fromDictionary:dict];
+            self.teacherName = [self objectOrNilForKey:kHomeworkListModelTeacherName fromDictionary:dict];
+            self.decorateTime = [self objectOrNilForKey:kHomeworkListModelDecorateTime fromDictionary:dict];
+            self.homeworkStatus = [self objectOrNilForKey:kHomeworkListModelHomeworkStatus fromDictionary:dict];
             self.subjectName = [self objectOrNilForKey:kHomeworkListModelSubjectName fromDictionary:dict];
             self.endTime = [self objectOrNilForKey:kHomeworkListModelEndTime fromDictionary:dict];
-            self.studentAvatar = [self objectOrNilForKey:kHomeworkListModelStudentAvatar fromDictionary:dict];
+            self.imGroupId = [self objectOrNilForKey:kHomeworkListModelImGroupId fromDictionary:dict];
+            self.type = [self objectOrNilForKey:kHomeworkListModelType fromDictionary:dict];
+            self.teacherId = [self objectOrNilForKey:kHomeworkListModelTeacherId fromDictionary:dict];
             self.submitTime = [self objectOrNilForKey:kHomeworkListModelSubmitTime fromDictionary:dict];
-            self.startTime = [self objectOrNilForKey:kHomeworkListModelStartTime fromDictionary:dict];
             self.studentId = [self objectOrNilForKey:kHomeworkListModelStudentId fromDictionary:dict];
-            self.teacherId = [self objectOrNilForKey:kHomeworkListModelTeacherId fromDictionary:dict];
-            self.homeworkStatus = [self objectOrNilForKey:kHomeworkListModelHomeworkStatus fromDictionary:dict];
+            self.courseId = [self objectOrNilForKey:kHomeworkListModelCourseId fromDictionary:dict];
+            self.courseGroupId = [self objectOrNilForKey:kHomeworkListModelCourseGroupId fromDictionary:dict];
+            self.studentAvatar = [self objectOrNilForKey:kHomeworkListModelStudentAvatar fromDictionary:dict];
+            self.startTime = [self objectOrNilForKey:kHomeworkListModelStartTime fromDictionary:dict];
+            self.classDate = [self objectOrNilForKey:kHomeworkListModelClassDate fromDictionary:dict];
+            self.teacherAvatar = [self objectOrNilForKey:kHomeworkListModelTeacherAvatar fromDictionary:dict];
+
     }
     
     return self;
@@ -87,22 +108,29 @@ NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
 - (NSDictionary *)dictionaryRepresentation
 {
     NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-    [mutableDict setValue:self.courseGroupId forKey:kHomeworkListModelCourseGroupId];
-    [mutableDict setValue:self.classDate forKey:kHomeworkListModelClassDate];
-    [mutableDict setValue:self.teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
-    [mutableDict setValue:self.decorateTime forKey:kHomeworkListModelDecorateTime];
+    [mutableDict setValue:self.backgroundPic forKey:kHomeworkListModelBackgroundPic];
     [mutableDict setValue:[NSNumber numberWithDouble:self.absenteeism] forKey:kHomeworkListModelAbsenteeism];
-    [mutableDict setValue:self.courseId forKey:kHomeworkListModelCourseId];
-    [mutableDict setValue:self.teacherName forKey:kHomeworkListModelTeacherName];
     [mutableDict setValue:self.studentName forKey:kHomeworkListModelStudentName];
+    [mutableDict setValue:self.classNum forKey:kHomeworkListModelClassNum];
+    [mutableDict setValue:self.courseGroupName forKey:kHomeworkListModelCourseGroupName];
+    [mutableDict setValue:self.homeworkId forKey:kHomeworkListModelHomeworkId];
+    [mutableDict setValue:self.teacherName forKey:kHomeworkListModelTeacherName];
+    [mutableDict setValue:self.decorateTime forKey:kHomeworkListModelDecorateTime];
+    [mutableDict setValue:self.homeworkStatus forKey:kHomeworkListModelHomeworkStatus];
     [mutableDict setValue:self.subjectName forKey:kHomeworkListModelSubjectName];
     [mutableDict setValue:self.endTime forKey:kHomeworkListModelEndTime];
-    [mutableDict setValue:self.studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [mutableDict setValue:self.imGroupId forKey:kHomeworkListModelImGroupId];
+    [mutableDict setValue:self.type forKey:kHomeworkListModelType];
+    [mutableDict setValue:self.teacherId forKey:kHomeworkListModelTeacherId];
     [mutableDict setValue:self.submitTime forKey:kHomeworkListModelSubmitTime];
-    [mutableDict setValue:self.startTime forKey:kHomeworkListModelStartTime];
     [mutableDict setValue:self.studentId forKey:kHomeworkListModelStudentId];
-    [mutableDict setValue:self.teacherId forKey:kHomeworkListModelTeacherId];
-    [mutableDict setValue:self.homeworkStatus forKey:kHomeworkListModelHomeworkStatus];
+    [mutableDict setValue:self.courseId forKey:kHomeworkListModelCourseId];
+    [mutableDict setValue:self.courseGroupId forKey:kHomeworkListModelCourseGroupId];
+    [mutableDict setValue:self.studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [mutableDict setValue:self.startTime forKey:kHomeworkListModelStartTime];
+    [mutableDict setValue:self.classDate forKey:kHomeworkListModelClassDate];
+    [mutableDict setValue:self.teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
+
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -129,44 +157,56 @@ NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
 {
     self = [super init];
 
-    self.courseGroupId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseGroupId];
-    self.classDate = [aDecoder decodeObjectForKey:kHomeworkListModelClassDate];
-    self.teacherAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherAvatar];
-    self.decorateTime = [aDecoder decodeObjectForKey:kHomeworkListModelDecorateTime];
+    self.backgroundPic = [aDecoder decodeObjectForKey:kHomeworkListModelBackgroundPic];
     self.absenteeism = [aDecoder decodeDoubleForKey:kHomeworkListModelAbsenteeism];
-    self.courseId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseId];
-    self.teacherName = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherName];
     self.studentName = [aDecoder decodeObjectForKey:kHomeworkListModelStudentName];
+    self.classNum = [aDecoder decodeObjectForKey:kHomeworkListModelClassNum];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kHomeworkListModelCourseGroupName];
+    self.homeworkId = [aDecoder decodeObjectForKey:kHomeworkListModelHomeworkId];
+    self.teacherName = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherName];
+    self.decorateTime = [aDecoder decodeObjectForKey:kHomeworkListModelDecorateTime];
+    self.homeworkStatus = [aDecoder decodeObjectForKey:kHomeworkListModelHomeworkStatus];
     self.subjectName = [aDecoder decodeObjectForKey:kHomeworkListModelSubjectName];
     self.endTime = [aDecoder decodeObjectForKey:kHomeworkListModelEndTime];
-    self.studentAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelStudentAvatar];
+    self.imGroupId = [aDecoder decodeObjectForKey:kHomeworkListModelImGroupId];
+    self.type = [aDecoder decodeObjectForKey:kHomeworkListModelType];
+    self.teacherId = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherId];
     self.submitTime = [aDecoder decodeObjectForKey:kHomeworkListModelSubmitTime];
-    self.startTime = [aDecoder decodeObjectForKey:kHomeworkListModelStartTime];
     self.studentId = [aDecoder decodeObjectForKey:kHomeworkListModelStudentId];
-    self.teacherId = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherId];
-    self.homeworkStatus = [aDecoder decodeObjectForKey:kHomeworkListModelHomeworkStatus];
+    self.courseId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseId];
+    self.courseGroupId = [aDecoder decodeObjectForKey:kHomeworkListModelCourseGroupId];
+    self.studentAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelStudentAvatar];
+    self.startTime = [aDecoder decodeObjectForKey:kHomeworkListModelStartTime];
+    self.classDate = [aDecoder decodeObjectForKey:kHomeworkListModelClassDate];
+    self.teacherAvatar = [aDecoder decodeObjectForKey:kHomeworkListModelTeacherAvatar];
     return self;
 }
 
 - (void)encodeWithCoder:(NSCoder *)aCoder
 {
 
-    [aCoder encodeObject:_courseGroupId forKey:kHomeworkListModelCourseGroupId];
-    [aCoder encodeObject:_classDate forKey:kHomeworkListModelClassDate];
-    [aCoder encodeObject:_teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
-    [aCoder encodeObject:_decorateTime forKey:kHomeworkListModelDecorateTime];
+    [aCoder encodeObject:_backgroundPic forKey:kHomeworkListModelBackgroundPic];
     [aCoder encodeDouble:_absenteeism forKey:kHomeworkListModelAbsenteeism];
-    [aCoder encodeObject:_courseId forKey:kHomeworkListModelCourseId];
-    [aCoder encodeObject:_teacherName forKey:kHomeworkListModelTeacherName];
     [aCoder encodeObject:_studentName forKey:kHomeworkListModelStudentName];
+    [aCoder encodeObject:_classNum forKey:kHomeworkListModelClassNum];
+    [aCoder encodeObject:_courseGroupName forKey:kHomeworkListModelCourseGroupName];
+    [aCoder encodeObject:_homeworkId forKey:kHomeworkListModelHomeworkId];
+    [aCoder encodeObject:_teacherName forKey:kHomeworkListModelTeacherName];
+    [aCoder encodeObject:_decorateTime forKey:kHomeworkListModelDecorateTime];
+    [aCoder encodeObject:_homeworkStatus forKey:kHomeworkListModelHomeworkStatus];
     [aCoder encodeObject:_subjectName forKey:kHomeworkListModelSubjectName];
     [aCoder encodeObject:_endTime forKey:kHomeworkListModelEndTime];
-    [aCoder encodeObject:_studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [aCoder encodeObject:_imGroupId forKey:kHomeworkListModelImGroupId];
+    [aCoder encodeObject:_type forKey:kHomeworkListModelType];
+    [aCoder encodeObject:_teacherId forKey:kHomeworkListModelTeacherId];
     [aCoder encodeObject:_submitTime forKey:kHomeworkListModelSubmitTime];
-    [aCoder encodeObject:_startTime forKey:kHomeworkListModelStartTime];
     [aCoder encodeObject:_studentId forKey:kHomeworkListModelStudentId];
-    [aCoder encodeObject:_teacherId forKey:kHomeworkListModelTeacherId];
-    [aCoder encodeObject:_homeworkStatus forKey:kHomeworkListModelHomeworkStatus];
+    [aCoder encodeObject:_courseId forKey:kHomeworkListModelCourseId];
+    [aCoder encodeObject:_courseGroupId forKey:kHomeworkListModelCourseGroupId];
+    [aCoder encodeObject:_studentAvatar forKey:kHomeworkListModelStudentAvatar];
+    [aCoder encodeObject:_startTime forKey:kHomeworkListModelStartTime];
+    [aCoder encodeObject:_classDate forKey:kHomeworkListModelClassDate];
+    [aCoder encodeObject:_teacherAvatar forKey:kHomeworkListModelTeacherAvatar];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -175,22 +215,28 @@ NSString *const kHomeworkListModelHomeworkStatus = @"homeworkStatus";
     
     if (copy) {
 
-        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
-        copy.classDate = [self.classDate copyWithZone:zone];
-        copy.teacherAvatar = [self.teacherAvatar copyWithZone:zone];
-        copy.decorateTime = [self.decorateTime copyWithZone:zone];
+        copy.backgroundPic = [self.backgroundPic copyWithZone:zone];
         copy.absenteeism = self.absenteeism;
-        copy.courseId = [self.courseId copyWithZone:zone];
-        copy.teacherName = [self.teacherName copyWithZone:zone];
         copy.studentName = [self.studentName copyWithZone:zone];
+        copy.classNum = [self.classNum copyWithZone:zone];
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
+        copy.homeworkId = [self.homeworkId copyWithZone:zone];
+        copy.teacherName = [self.teacherName copyWithZone:zone];
+        copy.decorateTime = [self.decorateTime copyWithZone:zone];
+        copy.homeworkStatus = [self.homeworkStatus copyWithZone:zone];
         copy.subjectName = [self.subjectName copyWithZone:zone];
         copy.endTime = [self.endTime copyWithZone:zone];
-        copy.studentAvatar = [self.studentAvatar copyWithZone:zone];
+        copy.imGroupId = [self.imGroupId copyWithZone:zone];
+        copy.type = [self.type copyWithZone:zone];
+        copy.teacherId = [self.teacherId copyWithZone:zone];
         copy.submitTime = [self.submitTime copyWithZone:zone];
-        copy.startTime = [self.startTime copyWithZone:zone];
         copy.studentId = [self.studentId copyWithZone:zone];
-        copy.teacherId = [self.teacherId copyWithZone:zone];
-        copy.homeworkStatus = [self.homeworkStatus copyWithZone:zone];
+        copy.courseId = [self.courseId copyWithZone:zone];
+        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
+        copy.studentAvatar = [self.studentAvatar copyWithZone:zone];
+        copy.startTime = [self.startTime copyWithZone:zone];
+        copy.classDate = [self.classDate copyWithZone:zone];
+        copy.teacherAvatar = [self.teacherAvatar copyWithZone:zone];
     }
     
     return copy;

+ 15 - 2
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkBodyView.m

@@ -185,12 +185,25 @@
     HomeworkListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HomeworkListCell"];
     [cell configWithSource:model];
     MJWeakSelf;
-    [cell chatWithStudent:^(NSString * _Nonnull userId, NSString * _Nonnull userName) {
-        [weakSelf chatStudent:userId name:userName];
+    [cell chatWithStudent:^(BOOL isGroup, NSString * _Nonnull userId, NSString * _Nonnull userName) {
+        if (isGroup) {
+            [weakSelf chatGroup:userId];
+        }
+        else {
+            [weakSelf chatStudent:userId name:userName];
+        }
     }];
+    
     return cell;
 }
 
+- (void)chatGroup:(NSString *)targetId {
+    KSChatConversationViewController *conversationVC = [[KSChatConversationViewController alloc] init];
+    conversationVC.targetId = targetId;
+    conversationVC.conversationType = ConversationType_GROUP;
+    [self.naviController pushViewController:conversationVC animated:YES];
+}
+
 - (void)chatStudent:(NSString *)studentId name:(NSString *)name {
     KSChatConversationViewController *conversationVC = [[KSChatConversationViewController alloc] init];
     conversationVC.targetId = studentId;

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.h

@@ -8,7 +8,7 @@
 #import <UIKit/UIKit.h>
 #import "HomeworkListModel.h"
 
-typedef void(^HomeworkChatCallback)(NSString * _Nonnull userId, NSString * _Nonnull userName);
+typedef void(^HomeworkChatCallback)(BOOL isGroup, NSString * _Nonnull userId, NSString * _Nonnull userName);
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 29 - 5
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.m

@@ -21,10 +21,17 @@
 
 @property (nonatomic, copy) HomeworkChatCallback callback;
 
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *avatalHeight;
+
 @property (nonatomic, strong) NSString *userId;
 
 @property (nonatomic, strong) NSString *userName;
 
+@property (nonatomic, strong) NSString *groupId;
+
+@property (nonatomic, assign) BOOL isMusicRoom;
+
+
 @end
 
 @implementation HomeworkListCell
@@ -46,13 +53,29 @@
     [formatter setDateFormat:@"HH:mm"];
     NSString *lessonEnd = [formatter stringFromDate:endDate];
     self.courseTime.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
+    if ([sourceModel.type isEqualToString:@"PIANO_ROOM_CLASS"]) { // 琴房课
+        [self.studentAvatal setImage:[UIImage imageNamed:@"course_musicRoom"]];
+        self.studentNameLabel.text = [NSString stringWithFormat:@"%@第%@课",[NSString returnNoNullStringWithString:sourceModel.courseGroupName],sourceModel.classNum];
+        self.avatalHeight.constant = 51.0f;
+        self.isMusicRoom = YES;
+    }
+    else {
+        self.studentNameLabel.text = [NSString returnNoNullStringWithString:sourceModel.teacherName];
+        [self.studentAvatal sd_setImageWithURL:[NSURL URLWithString:[sourceModel.teacherAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
+        self.avatalHeight.constant = 47.0f;
+        self.isMusicRoom = NO;
+    }
     
-    self.studentNameLabel.text = [NSString returnNoNullStringWithString:sourceModel.teacherName];
-    [self.studentAvatal sd_setImageWithURL:[NSURL URLWithString:[sourceModel.teacherAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
+    if (self.isMusicRoom) {
+        self.groupId = sourceModel.imGroupId;
+    }
+    else {
+        self.userId = sourceModel.teacherId;
+        self.userName = sourceModel.teacherName;
+    }
     self.subjectLabel.text = [NSString returnNoNullStringWithString:sourceModel.subjectName];
 
-    self.userId = sourceModel.studentId;
-    self.userName = sourceModel.studentName;
+    
     
     if ([sourceModel.homeworkStatus isEqualToString:@"NOTCOMMIT"]) { // 未提交
         self.statusLabel.text = @"未提交";
@@ -79,7 +102,8 @@
 
 - (IBAction)chatAction:(id)sender {
     if (self.callback) {
-        self.callback(self.userId, self.userName);
+        NSString *targetId = self.isMusicRoom ? self.groupId : self.userId;
+        self.callback(self.isMusicRoom, targetId, self.userName);
     }
 }
 

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.xib

@@ -146,6 +146,7 @@
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
+                <outlet property="avatalHeight" destination="b7T-Sz-cr8" id="N3q-8p-G2M"/>
                 <outlet property="courseTime" destination="pXr-41-D0m" id="P4z-qr-Sz2"/>
                 <outlet property="statusLabel" destination="1qw-WH-Jvr" id="Ft9-cT-Ndb"/>
                 <outlet property="studentAvatal" destination="RUc-4R-w37" id="ZyZ-wJ-Xmv"/>

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m

@@ -407,7 +407,7 @@
 }
 
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
-    if (self.selectIndex == 0 || self.selectIndex == 2) {
+    if (self.selectIndex == 0 || self.selectIndex == 3) {
         return 127.0f;
     }
     else {
@@ -439,7 +439,7 @@
         MusicRoomListModel *model = self.dataArray[indexPath.row];
         MusicRoomCourseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicRoomCourseCell"];
         MJWeakSelf;
-        [cell configWithSource:model callback:^(NSString * _Nonnull targetId) {
+        [cell configWithSource:model beforeTime:0 callback:^(NSString * _Nonnull targetId) {
             [weakSelf chatAction:targetId];
         }];
         return cell;

+ 3 - 59
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.xib

@@ -14,7 +14,7 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bvI-vo-wNV">
-                    <rect key="frame" x="14" y="15" width="386" height="258"/>
+                    <rect key="frame" x="14" y="15" width="386" height="208"/>
                     <subviews>
                         <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="66O-io-Yxa">
                             <rect key="frame" x="0.0" y="0.0" width="386" height="50"/>
@@ -153,61 +153,8 @@
                                 <outletCollection property="gestureRecognizers" destination="WVN-s2-eTZ" appends="YES" id="cfU-f6-1Uf"/>
                             </connections>
                         </view>
-                        <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="anE-I3-Co0">
-                            <rect key="frame" x="0.0" y="150" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="意见反馈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gdi-Lt-ODx">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="HaX-ES-Gkh"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="c8g-WQ-uUX">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="11" id="IHy-yQ-oEC"/>
-                                        <constraint firstAttribute="width" constant="6" id="x1o-dJ-m06"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tJS-EA-XLf">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="web-FY-XzO"/>
-                                    </constraints>
-                                </view>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ey3-eE-jhE">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="Ey3-eE-jhE" firstAttribute="top" secondItem="anE-I3-Co0" secondAttribute="top" id="F7e-V6-10C"/>
-                                <constraint firstAttribute="trailing" secondItem="c8g-WQ-uUX" secondAttribute="trailing" constant="15" id="Ka3-jW-ThB"/>
-                                <constraint firstItem="Gdi-Lt-ODx" firstAttribute="centerY" secondItem="anE-I3-Co0" secondAttribute="centerY" id="M6E-7F-P1c"/>
-                                <constraint firstItem="tJS-EA-XLf" firstAttribute="top" secondItem="Ey3-eE-jhE" secondAttribute="bottom" id="Nng-PD-Jr8"/>
-                                <constraint firstItem="tJS-EA-XLf" firstAttribute="leading" secondItem="anE-I3-Co0" secondAttribute="leading" constant="11" id="Rdb-lC-JTm"/>
-                                <constraint firstItem="c8g-WQ-uUX" firstAttribute="centerY" secondItem="anE-I3-Co0" secondAttribute="centerY" id="bjN-gV-V2S"/>
-                                <constraint firstAttribute="bottom" secondItem="tJS-EA-XLf" secondAttribute="bottom" id="i3c-nv-M6o"/>
-                                <constraint firstItem="Ey3-eE-jhE" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Gdi-Lt-ODx" secondAttribute="trailing" constant="15" id="nO8-gs-cTi"/>
-                                <constraint firstAttribute="height" constant="50" id="srD-tv-hTJ"/>
-                                <constraint firstItem="c8g-WQ-uUX" firstAttribute="leading" secondItem="Ey3-eE-jhE" secondAttribute="trailing" constant="10" id="u1f-U1-COB"/>
-                                <constraint firstItem="Gdi-Lt-ODx" firstAttribute="leading" secondItem="anE-I3-Co0" secondAttribute="leading" constant="12" id="wz1-IN-C5E"/>
-                                <constraint firstAttribute="trailing" secondItem="tJS-EA-XLf" secondAttribute="trailing" constant="9" id="xlZ-iu-jF2"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="hfQ-Uy-nSc" appends="YES" id="cKc-XC-g09"/>
-                            </connections>
-                        </view>
                         <view tag="1005" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fae-Ws-ND6">
-                            <rect key="frame" x="0.0" y="200" width="386" height="50"/>
+                            <rect key="frame" x="0.0" y="150" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="关于我们" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7NY-Jl-Fvk">
                                     <rect key="frame" x="12" y="15" width="75" height="20"/>
@@ -252,17 +199,14 @@
                     </subviews>
                     <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstItem="anE-I3-Co0" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="1Zm-xX-pZi"/>
                         <constraint firstAttribute="trailing" secondItem="66O-io-Yxa" secondAttribute="trailing" id="Bu8-cb-AIo"/>
                         <constraint firstItem="IrL-hq-2eU" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="CLc-rU-xPU"/>
-                        <constraint firstItem="anE-I3-Co0" firstAttribute="top" secondItem="l7Z-Gj-hWL" secondAttribute="bottom" id="DHj-Dc-7Bd"/>
-                        <constraint firstItem="fae-Ws-ND6" firstAttribute="top" secondItem="anE-I3-Co0" secondAttribute="bottom" id="EHt-XQ-mid"/>
                         <constraint firstItem="66O-io-Yxa" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="Hkj-Fz-5iB"/>
-                        <constraint firstAttribute="trailing" secondItem="anE-I3-Co0" secondAttribute="trailing" id="OI8-po-q8D"/>
                         <constraint firstAttribute="trailing" secondItem="fae-Ws-ND6" secondAttribute="trailing" id="PHZ-JF-g1b"/>
                         <constraint firstAttribute="bottom" secondItem="fae-Ws-ND6" secondAttribute="bottom" constant="8" id="QlX-Q3-vpm"/>
                         <constraint firstItem="IrL-hq-2eU" firstAttribute="top" secondItem="66O-io-Yxa" secondAttribute="bottom" id="SAO-fg-84E"/>
                         <constraint firstAttribute="trailing" secondItem="IrL-hq-2eU" secondAttribute="trailing" id="WW8-th-rjC"/>
+                        <constraint firstItem="fae-Ws-ND6" firstAttribute="top" secondItem="l7Z-Gj-hWL" secondAttribute="bottom" id="Y4d-cQ-Sjc"/>
                         <constraint firstItem="66O-io-Yxa" firstAttribute="top" secondItem="bvI-vo-wNV" secondAttribute="top" id="fRO-8p-cvN"/>
                         <constraint firstItem="fae-Ws-ND6" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="qg0-l6-MyF"/>
                         <constraint firstItem="l7Z-Gj-hWL" firstAttribute="top" secondItem="IrL-hq-2eU" secondAttribute="bottom" id="sBu-UY-YCZ"/>

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h

@@ -23,6 +23,7 @@ typedef NS_ENUM(NSInteger, MINEVIEWTYPE) {
     MINEVIEWTYPE_UNFINISHCOURSE, // 未完成课程
     MINEVIEWTYPE_FOLLOW, // 我的关注
     MINEVIEWTYPE_USER,
+    MINEVIEWTYPE_FEEDBACK // 反馈
 
 };
 typedef void(^MineViewCallback)(MINEVIEWTYPE type);

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m

@@ -112,7 +112,7 @@
 }
 
 - (CGFloat)getViewHeight {
-    return 80 + 15 + (self.memberViewHeight.constant) / 2 + 10 + 100 + 12 + 93 + 15 + 220;
+    return 80 + 15 + (self.memberViewHeight.constant) / 2 + 10 + 100 + 12 + 93 + 15 + 320;
 }
 
 - (IBAction)modifyUser:(id)sender {

+ 120 - 58
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib

@@ -18,17 +18,17 @@
                     <rect key="frame" x="12" y="258" width="390" height="93"/>
                     <subviews>
                         <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Nn2-CW-v6f">
-                            <rect key="frame" x="0.0" y="0.0" width="78" height="93"/>
+                            <rect key="frame" x="0.0" y="0.0" width="97.5" height="93"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_course" translatesAutoresizingMaskIntoConstraints="NO" id="1EL-0K-Rng">
-                                    <rect key="frame" x="22" y="18" width="34" height="35"/>
+                                    <rect key="frame" x="32" y="18" width="34" height="35"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="35" id="86y-I4-eXZ"/>
                                         <constraint firstAttribute="width" constant="34" id="rwQ-Xn-d6h"/>
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7uF-DV-to0">
-                                    <rect key="frame" x="16.5" y="62" width="45" height="16"/>
+                                    <rect key="frame" x="26.5" y="62" width="45" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="X1P-Nw-Edk"/>
                                     </constraints>
@@ -50,17 +50,17 @@
                             </connections>
                         </view>
                         <view tag="1003" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TS8-MA-9b4">
-                            <rect key="frame" x="78" y="0.0" width="78" height="93"/>
+                            <rect key="frame" x="97.5" y="0.0" width="97.5" height="93"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_homework" translatesAutoresizingMaskIntoConstraints="NO" id="e7m-EF-8bz">
-                                    <rect key="frame" x="22.5" y="19" width="33" height="33"/>
+                                    <rect key="frame" x="32.5" y="19" width="33" height="33"/>
                                     <constraints>
                                         <constraint firstAttribute="width" constant="33" id="2Eb-OJ-uzD"/>
                                         <constraint firstAttribute="height" constant="33" id="KfS-4W-tsg"/>
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的作业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KmZ-cr-w2t">
-                                    <rect key="frame" x="16.5" y="62" width="45" height="16"/>
+                                    <rect key="frame" x="26.5" y="62" width="45" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="YX3-0u-sCQ"/>
                                     </constraints>
@@ -82,17 +82,17 @@
                             </connections>
                         </view>
                         <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NJE-bY-0Ag">
-                            <rect key="frame" x="156" y="0.0" width="78" height="93"/>
+                            <rect key="frame" x="195" y="0.0" width="97.5" height="93"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_music" translatesAutoresizingMaskIntoConstraints="NO" id="GgF-RR-Dcy">
-                                    <rect key="frame" x="22" y="19" width="34" height="33"/>
+                                    <rect key="frame" x="32" y="19" width="34" height="33"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="33" id="HTW-I6-Uga"/>
                                         <constraint firstAttribute="width" constant="34" id="N2n-R3-DVc"/>
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的乐谱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yk3-Vg-gpA">
-                                    <rect key="frame" x="16.5" y="62" width="45" height="16"/>
+                                    <rect key="frame" x="26.5" y="62" width="45" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="Tcg-31-kgD"/>
                                     </constraints>
@@ -114,17 +114,17 @@
                             </connections>
                         </view>
                         <view tag="1005" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AAF-DA-u5o">
-                            <rect key="frame" x="234" y="0.0" width="78" height="93"/>
+                            <rect key="frame" x="292.5" y="0.0" width="97.5" height="93"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_judgeRecord" translatesAutoresizingMaskIntoConstraints="NO" id="Sp1-1W-gaX">
-                                    <rect key="frame" x="22.5" y="19" width="33" height="34"/>
+                                    <rect key="frame" x="32.5" y="19" width="33" height="34"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="34" id="aN3-ib-BOr"/>
                                         <constraint firstAttribute="width" constant="33" id="c5O-Gw-j6Q"/>
                                     </constraints>
                                 </imageView>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="评测记录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="REa-UV-dzx">
-                                    <rect key="frame" x="16.5" y="62" width="45" height="16"/>
+                                    <rect key="frame" x="26.5" y="62" width="45" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="16" id="4uC-By-dPi"/>
                                     </constraints>
@@ -145,61 +145,25 @@
                                 <outletCollection property="gestureRecognizers" destination="Th3-Vc-OoT" appends="YES" id="gBF-Gn-ee6"/>
                             </connections>
                         </view>
-                        <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="epl-a8-l3r">
-                            <rect key="frame" x="312" y="0.0" width="78" height="93"/>
-                            <subviews>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_order" translatesAutoresizingMaskIntoConstraints="NO" id="JrG-3i-ZZT">
-                                    <rect key="frame" x="22.5" y="19" width="33" height="33"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="33" id="hwz-8D-KwK"/>
-                                        <constraint firstAttribute="height" constant="33" id="otZ-6b-hWH"/>
-                                    </constraints>
-                                </imageView>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="商品订单" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O0z-tN-UNz">
-                                    <rect key="frame" x="16.5" y="62" width="45" height="16"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="16" id="75d-XL-3u8"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="11"/>
-                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="JrG-3i-ZZT" firstAttribute="centerX" secondItem="epl-a8-l3r" secondAttribute="centerX" id="ENy-jF-JXJ"/>
-                                <constraint firstItem="O0z-tN-UNz" firstAttribute="centerX" secondItem="JrG-3i-ZZT" secondAttribute="centerX" id="o6o-3Z-7Xh"/>
-                                <constraint firstAttribute="bottom" secondItem="O0z-tN-UNz" secondAttribute="bottom" constant="15" id="uze-fd-ovh"/>
-                                <constraint firstItem="O0z-tN-UNz" firstAttribute="top" secondItem="JrG-3i-ZZT" secondAttribute="bottom" constant="10" id="wjn-Sq-ZWZ"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="w2d-Do-k6x" appends="YES" id="h8t-2r-dQ3"/>
-                            </connections>
-                        </view>
                     </subviews>
                     <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     <constraints>
                         <constraint firstItem="AAF-DA-u5o" firstAttribute="bottom" secondItem="Nn2-CW-v6f" secondAttribute="bottom" id="0UI-Fd-rJU"/>
                         <constraint firstItem="AAF-DA-u5o" firstAttribute="leading" secondItem="NJE-bY-0Ag" secondAttribute="trailing" id="4J2-nP-SVR"/>
                         <constraint firstItem="NJE-bY-0Ag" firstAttribute="top" secondItem="Nn2-CW-v6f" secondAttribute="top" id="7eo-z5-UEo"/>
-                        <constraint firstItem="epl-a8-l3r" firstAttribute="width" secondItem="Nn2-CW-v6f" secondAttribute="width" id="9Qt-8z-gN1"/>
-                        <constraint firstItem="epl-a8-l3r" firstAttribute="leading" secondItem="AAF-DA-u5o" secondAttribute="trailing" id="AtB-I4-BpT"/>
                         <constraint firstAttribute="bottom" secondItem="Nn2-CW-v6f" secondAttribute="bottom" id="CZn-v0-18f"/>
                         <constraint firstItem="NJE-bY-0Ag" firstAttribute="bottom" secondItem="Nn2-CW-v6f" secondAttribute="bottom" id="IzF-aF-Hdy"/>
                         <constraint firstItem="Nn2-CW-v6f" firstAttribute="top" secondItem="yLa-RZ-nEh" secondAttribute="top" id="KlB-ff-xIe"/>
                         <constraint firstItem="TS8-MA-9b4" firstAttribute="leading" secondItem="Nn2-CW-v6f" secondAttribute="trailing" id="KyF-fD-0Xd"/>
                         <constraint firstAttribute="height" constant="93" id="PxU-jv-w2h"/>
-                        <constraint firstItem="epl-a8-l3r" firstAttribute="top" secondItem="Nn2-CW-v6f" secondAttribute="top" id="STD-3p-TpD"/>
-                        <constraint firstItem="epl-a8-l3r" firstAttribute="bottom" secondItem="Nn2-CW-v6f" secondAttribute="bottom" id="VS1-V0-Vsy"/>
                         <constraint firstItem="TS8-MA-9b4" firstAttribute="width" secondItem="Nn2-CW-v6f" secondAttribute="width" id="VZ2-F7-2DH"/>
                         <constraint firstItem="NJE-bY-0Ag" firstAttribute="leading" secondItem="TS8-MA-9b4" secondAttribute="trailing" id="X2y-yL-ryB"/>
                         <constraint firstItem="Nn2-CW-v6f" firstAttribute="leading" secondItem="yLa-RZ-nEh" secondAttribute="leading" id="Xn2-1c-FJI"/>
+                        <constraint firstAttribute="trailing" secondItem="AAF-DA-u5o" secondAttribute="trailing" id="YAE-Ek-JM2"/>
                         <constraint firstItem="AAF-DA-u5o" firstAttribute="top" secondItem="Nn2-CW-v6f" secondAttribute="top" id="cz0-DV-62q"/>
                         <constraint firstItem="AAF-DA-u5o" firstAttribute="width" secondItem="Nn2-CW-v6f" secondAttribute="width" id="jHj-Jj-aNE"/>
                         <constraint firstItem="TS8-MA-9b4" firstAttribute="bottom" secondItem="Nn2-CW-v6f" secondAttribute="bottom" id="kxa-42-jtE"/>
                         <constraint firstItem="NJE-bY-0Ag" firstAttribute="width" secondItem="Nn2-CW-v6f" secondAttribute="width" id="rOb-lG-YYF"/>
-                        <constraint firstAttribute="trailing" secondItem="epl-a8-l3r" secondAttribute="trailing" id="wsy-5X-9mY"/>
                         <constraint firstItem="TS8-MA-9b4" firstAttribute="top" secondItem="Nn2-CW-v6f" secondAttribute="top" id="yQJ-Ui-1ZV"/>
                     </constraints>
                     <userDefinedRuntimeAttributes>
@@ -492,10 +456,10 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qk7-Dc-xiJ">
-                    <rect key="frame" x="12" y="361" width="390" height="220"/>
+                    <rect key="frame" x="12" y="361" width="390" height="320"/>
                     <subviews>
                         <view tag="1007" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="N6t-2r-8BH">
-                            <rect key="frame" x="0.0" y="10" width="390" height="50"/>
+                            <rect key="frame" x="0.0" y="60" width="390" height="50"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_deal_record" translatesAutoresizingMaskIntoConstraints="NO" id="vza-83-5Eh">
                                     <rect key="frame" x="24" y="14" width="23" height="22"/>
@@ -534,7 +498,7 @@
                             </connections>
                         </view>
                         <view tag="1008" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qla-Gh-0cD">
-                            <rect key="frame" x="0.0" y="60" width="390" height="50"/>
+                            <rect key="frame" x="0.0" y="110" width="390" height="50"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_networking" translatesAutoresizingMaskIntoConstraints="NO" id="Zqz-iw-OnM">
                                     <rect key="frame" x="24" y="14" width="22" height="22"/>
@@ -573,7 +537,7 @@
                             </connections>
                         </view>
                         <view tag="1009" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BAr-c4-DUi">
-                            <rect key="frame" x="0.0" y="110" width="390" height="50"/>
+                            <rect key="frame" x="0.0" y="160" width="390" height="50"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_device" translatesAutoresizingMaskIntoConstraints="NO" id="W9U-SP-UZq">
                                     <rect key="frame" x="24" y="14" width="22" height="22"/>
@@ -620,7 +584,7 @@
                             </connections>
                         </view>
                         <view tag="1010" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iVf-Ui-TnH">
-                            <rect key="frame" x="0.0" y="160" width="390" height="50"/>
+                            <rect key="frame" x="0.0" y="210" width="390" height="50"/>
                             <subviews>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_help" translatesAutoresizingMaskIntoConstraints="NO" id="JMQ-Fb-Cjh">
                                     <rect key="frame" x="24" y="14" width="23" height="22"/>
@@ -666,20 +630,112 @@
                                 <outletCollection property="gestureRecognizers" destination="Y9B-WG-cyX" appends="YES" id="rBX-Um-ipL"/>
                             </connections>
                         </view>
+                        <view tag="1015" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F6u-E2-eQL">
+                            <rect key="frame" x="0.0" y="260" width="390" height="50"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_feedback" translatesAutoresizingMaskIntoConstraints="NO" id="TJE-jW-wfL">
+                                    <rect key="frame" x="24" y="14" width="23" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="23" id="k3n-ai-wOH"/>
+                                        <constraint firstAttribute="height" constant="22" id="mLF-IX-Mrg"/>
+                                    </constraints>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="意见反馈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p2d-st-GZe">
+                                    <rect key="frame" x="59" y="16.5" width="57.5" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_next" translatesAutoresizingMaskIntoConstraints="NO" id="zrg-EV-uZz">
+                                    <rect key="frame" x="354" y="18" width="14" height="14"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="14" id="AEE-VH-Ov4"/>
+                                        <constraint firstAttribute="width" constant="14" id="CSW-67-j3i"/>
+                                    </constraints>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="har-uE-97R">
+                                    <rect key="frame" x="344" y="25" width="0.0" height="0.0"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="TJE-jW-wfL" firstAttribute="leading" secondItem="F6u-E2-eQL" secondAttribute="leading" constant="24" id="1tx-YL-OL4"/>
+                                <constraint firstItem="zrg-EV-uZz" firstAttribute="centerY" secondItem="F6u-E2-eQL" secondAttribute="centerY" id="BLO-eX-Ddy"/>
+                                <constraint firstAttribute="trailing" secondItem="zrg-EV-uZz" secondAttribute="trailing" constant="22" id="CXX-aK-FJ9"/>
+                                <constraint firstItem="zrg-EV-uZz" firstAttribute="centerY" secondItem="har-uE-97R" secondAttribute="centerY" id="KaR-ri-W82"/>
+                                <constraint firstAttribute="height" constant="50" id="Vjd-3y-dQF"/>
+                                <constraint firstItem="zrg-EV-uZz" firstAttribute="leading" secondItem="har-uE-97R" secondAttribute="trailing" constant="10" id="Wq3-TD-4E9"/>
+                                <constraint firstItem="p2d-st-GZe" firstAttribute="leading" secondItem="TJE-jW-wfL" secondAttribute="trailing" constant="12" id="Zby-05-WZ5"/>
+                                <constraint firstItem="TJE-jW-wfL" firstAttribute="centerY" secondItem="F6u-E2-eQL" secondAttribute="centerY" id="efo-je-f6q"/>
+                                <constraint firstItem="p2d-st-GZe" firstAttribute="centerY" secondItem="TJE-jW-wfL" secondAttribute="centerY" id="z9X-eW-XWV"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="JoI-s0-EzE" appends="YES" id="dPZ-5S-RMW"/>
+                            </connections>
+                        </view>
+                        <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZGf-c0-T0e">
+                            <rect key="frame" x="0.0" y="10" width="390" height="50"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_trainOrder" translatesAutoresizingMaskIntoConstraints="NO" id="ccC-rJ-i7l">
+                                    <rect key="frame" x="24" y="14" width="23" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="23" id="7ca-n4-qep"/>
+                                        <constraint firstAttribute="height" constant="22" id="VkC-N8-nBe"/>
+                                    </constraints>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="商品订单" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uLT-d9-6Ho">
+                                    <rect key="frame" x="59" y="16.5" width="57.5" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_next" translatesAutoresizingMaskIntoConstraints="NO" id="Q1D-3u-lg1">
+                                    <rect key="frame" x="354" y="18" width="14" height="14"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="14" id="E1O-OS-WxN"/>
+                                        <constraint firstAttribute="width" constant="14" id="iuI-su-G19"/>
+                                    </constraints>
+                                </imageView>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="50" id="6CI-iZ-QhU"/>
+                                <constraint firstItem="ccC-rJ-i7l" firstAttribute="leading" secondItem="ZGf-c0-T0e" secondAttribute="leading" constant="24" id="7cS-Rh-xCy"/>
+                                <constraint firstItem="ccC-rJ-i7l" firstAttribute="centerY" secondItem="ZGf-c0-T0e" secondAttribute="centerY" id="Glx-bK-IS9"/>
+                                <constraint firstItem="uLT-d9-6Ho" firstAttribute="leading" secondItem="ccC-rJ-i7l" secondAttribute="trailing" constant="12" id="Ikk-zA-CFq"/>
+                                <constraint firstItem="uLT-d9-6Ho" firstAttribute="centerY" secondItem="ccC-rJ-i7l" secondAttribute="centerY" id="ZF5-MG-WEN"/>
+                                <constraint firstAttribute="trailing" secondItem="Q1D-3u-lg1" secondAttribute="trailing" constant="22" id="vrB-O7-Q73"/>
+                                <constraint firstItem="Q1D-3u-lg1" firstAttribute="centerY" secondItem="ZGf-c0-T0e" secondAttribute="centerY" id="z4x-vD-GU1"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="w2d-Do-k6x" appends="YES" id="yyz-ns-fCa"/>
+                            </connections>
+                        </view>
                     </subviews>
                     <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                     <constraints>
+                        <constraint firstItem="ZGf-c0-T0e" firstAttribute="top" secondItem="Qk7-Dc-xiJ" secondAttribute="top" constant="10" id="0zQ-vV-fbg"/>
                         <constraint firstAttribute="trailing" secondItem="qla-Gh-0cD" secondAttribute="trailing" id="Apl-Ne-hC6"/>
+                        <constraint firstItem="N6t-2r-8BH" firstAttribute="top" secondItem="ZGf-c0-T0e" secondAttribute="bottom" id="D7W-HT-NoF"/>
+                        <constraint firstItem="ZGf-c0-T0e" firstAttribute="leading" secondItem="Qk7-Dc-xiJ" secondAttribute="leading" id="Iuz-aG-El6"/>
+                        <constraint firstItem="F6u-E2-eQL" firstAttribute="leading" secondItem="Qk7-Dc-xiJ" secondAttribute="leading" id="Kuj-AA-tGk"/>
                         <constraint firstItem="qla-Gh-0cD" firstAttribute="leading" secondItem="Qk7-Dc-xiJ" secondAttribute="leading" id="LBj-Qi-eoh"/>
                         <constraint firstItem="BAr-c4-DUi" firstAttribute="top" secondItem="qla-Gh-0cD" secondAttribute="bottom" id="LF2-Ty-Z7f"/>
+                        <constraint firstAttribute="trailing" secondItem="ZGf-c0-T0e" secondAttribute="trailing" id="Lb1-y3-5LC"/>
+                        <constraint firstItem="F6u-E2-eQL" firstAttribute="top" secondItem="iVf-Ui-TnH" secondAttribute="bottom" id="O8A-GX-BG0"/>
                         <constraint firstItem="iVf-Ui-TnH" firstAttribute="top" secondItem="BAr-c4-DUi" secondAttribute="bottom" id="RZG-fK-w6Z"/>
-                        <constraint firstAttribute="bottom" secondItem="iVf-Ui-TnH" secondAttribute="bottom" constant="10" id="RuH-4u-Oam"/>
                         <constraint firstItem="N6t-2r-8BH" firstAttribute="leading" secondItem="Qk7-Dc-xiJ" secondAttribute="leading" id="UQt-Vj-tpA"/>
+                        <constraint firstAttribute="bottom" secondItem="F6u-E2-eQL" secondAttribute="bottom" constant="10" id="W7u-bn-ahj"/>
                         <constraint firstAttribute="trailing" secondItem="iVf-Ui-TnH" secondAttribute="trailing" id="bFr-DO-1dR"/>
                         <constraint firstItem="qla-Gh-0cD" firstAttribute="top" secondItem="N6t-2r-8BH" secondAttribute="bottom" id="fd9-dH-43n"/>
                         <constraint firstAttribute="trailing" secondItem="BAr-c4-DUi" secondAttribute="trailing" id="gRy-zB-LR4"/>
                         <constraint firstItem="iVf-Ui-TnH" firstAttribute="leading" secondItem="Qk7-Dc-xiJ" secondAttribute="leading" id="kqn-em-zC0"/>
-                        <constraint firstItem="N6t-2r-8BH" firstAttribute="top" secondItem="Qk7-Dc-xiJ" secondAttribute="top" constant="10" id="pZF-Hf-U1e"/>
+                        <constraint firstAttribute="trailing" secondItem="F6u-E2-eQL" secondAttribute="trailing" id="p9K-S0-7yp"/>
                         <constraint firstAttribute="trailing" secondItem="N6t-2r-8BH" secondAttribute="trailing" id="pqx-je-jLi"/>
                         <constraint firstItem="BAr-c4-DUi" firstAttribute="leading" secondItem="Qk7-Dc-xiJ" secondAttribute="leading" id="t5N-OV-rf3"/>
                     </constraints>
@@ -788,6 +844,11 @@
                 <action selector="followTeacher:" destination="iN0-l3-epB" id="gJn-Da-SEw"/>
             </connections>
         </tapGestureRecognizer>
+        <tapGestureRecognizer id="JoI-s0-EzE">
+            <connections>
+                <action selector="clickAction:" destination="iN0-l3-epB" id="WKZ-Ni-gDh"/>
+            </connections>
+        </tapGestureRecognizer>
     </objects>
     <resources>
         <image name="member_bg" width="175" height="82"/>
@@ -796,13 +857,14 @@
         <image name="mine_course" width="33" height="35"/>
         <image name="mine_deal_record" width="23" height="22"/>
         <image name="mine_device" width="22" height="22"/>
-        <image name="mine_help" width="23" height="22"/>
+        <image name="mine_feedback" width="23" height="22"/>
+        <image name="mine_help" width="22" height="22"/>
         <image name="mine_homework" width="33" height="33"/>
         <image name="mine_judgeRecord" width="33" height="34"/>
         <image name="mine_music" width="34" height="33"/>
         <image name="mine_networking" width="22" height="22"/>
         <image name="mine_next" width="14" height="14"/>
-        <image name="mine_order" width="33" height="33"/>
+        <image name="mine_trainOrder" width="22" height="22"/>
         <image name="mine_uid" width="13" height="12"/>
         <image name="user_default_avatal" width="52" height="52"/>
         <systemColor name="systemBackgroundColor">

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/SealClass/Services/Classroom/ClassroomService.m

@@ -462,7 +462,7 @@
         [self.currentRoom updateDisplayUri:msg.display];
         DisplayType type = self.currentRoom.currentDisplayType;
         if (type == DisplayTeacher) {
-//            NSLog(@"------- DisplayTeacher");
+            NSLog(@"------- DisplayTeacher");
             if ([self.classroomDelegate respondsToSelector:@selector(teacherDidDisplay)]) {
                 [self.classroomDelegate teacherDidDisplay];
             }