Steven 3 years ago
parent
commit
fc59bedf8e
59 changed files with 1576 additions and 142 deletions
  1. 24 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 10 58
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Course/lesson_Live.imageset/Contents.json
  5. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Course/lesson_Live.imageset/lesson_Live@2x.png
  6. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Course/lesson_Live.imageset/lesson_Live@3x.png
  7. 55 3
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  8. 97 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  9. 2 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m
  10. 4 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.h
  11. 44 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m
  12. 3 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.xib
  13. 226 26
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/Controller/CourseViewController.m
  14. 32 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.h
  15. 183 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.m
  16. 5 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.h
  17. 55 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.m
  18. 3 7
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.xib
  19. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseNavView.h
  20. 7 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseNavView.m
  21. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.h
  22. 146 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.m
  23. 29 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.h
  24. 162 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.m
  25. 32 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.h
  26. 183 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.m
  27. 40 5
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCourseBodyView.m
  28. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.h
  29. 16 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.m
  30. 6 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.m
  31. 8 8
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/Controller/MyCourseViewController.m
  32. 7 7
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MyLessonBodyView.m
  33. 6 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.h
  34. 108 5
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.m
  35. 7 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.xib
  36. BIN
      KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/AccompanyCourseCell.nib
  37. BIN
      KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/Assets.car
  38. BIN
      KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/CourseForLiveCell.nib
  39. BIN
      KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/KulexiuForTeacher
  40. 8 8
      KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/_CodeSignature/CodeResources
  41. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphoneos/KulexiuForTeacher.build/KulexiuForTeacher-project-headers.hmap
  42. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/KulexiuForTeacher-project-headers.hmap
  43. 2 1
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/AccompanyCourseCell.d
  44. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/AccompanyCourseCell.o
  45. 2 1
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseForLiveCell.d
  46. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseForLiveCell.o
  47. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseNavView.o
  48. 10 2
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseViewController.d
  49. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseViewController.dia
  50. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseViewController.o
  51. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KSChatListViewController.o
  52. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KSNetworkingManager.o
  53. 4 0
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KulexiuForTeacher.LinkFileList
  54. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KulexiuForTeacher_dependency_info.dat
  55. 1 0
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MinePageCourseView.d
  56. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MinePageCourseView.o
  57. BIN
      KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/UIView+XIBView.dia
  58. BIN
      KulexiuForTeacher/build/XCBuildData/BuildDescriptionCacheIndex-2297acb106a30e2935a01f5221f6a714
  59. BIN
      KulexiuForTeacher/build/XCBuildData/build.db

+ 24 - 0
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -436,6 +436,8 @@
 		27FC2F6627F1BBFE00FCC239 /* MyMusicViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FC2F6527F1BBFE00FCC239 /* MyMusicViewController.m */; };
 		27FC2F6D27F1BE4800FCC239 /* VideoCourseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FC2F6C27F1BE4800FCC239 /* VideoCourseViewController.m */; };
 		BC0167A627FC06D600AE66A1 /* MyCourseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0167A527FC06D600AE66A1 /* MyCourseViewController.m */; };
+		BC1191ED280E55CB00A716F7 /* EvaluateDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1191EB280E55CA00A716F7 /* EvaluateDetailModel.m */; };
+		BC1191F0280E8A2800A716F7 /* TableCourseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1191EF280E8A2800A716F7 /* TableCourseModel.m */; };
 		BC1365B8280D130C00EB03E2 /* MyVideoCourseBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1365B7280D130C00EB03E2 /* MyVideoCourseBodyView.m */; };
 		BC1365BB280D162400EB03E2 /* MyVideoSearchView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1365BA280D162400EB03E2 /* MyVideoSearchView.m */; };
 		BC1365BD280D163200EB03E2 /* MyVideoSearchView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC1365BC280D163200EB03E2 /* MyVideoSearchView.xib */; };
@@ -447,6 +449,8 @@
 		BC28582F2809451B0024697C /* EvaluateCouseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC28582D2809451B0024697C /* EvaluateCouseCell.m */; };
 		BC2858302809451B0024697C /* EvaluateCouseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC28582E2809451B0024697C /* EvaluateCouseCell.xib */; };
 		BC285833280947BA0024697C /* EvaluateSortView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC285832280947BA0024697C /* EvaluateSortView.m */; };
+		BC3DE082280D88670027DC0E /* EvaluateListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC3DE081280D88670027DC0E /* EvaluateListModel.m */; };
+		BC3DE088280D89E90027DC0E /* EvaluateDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC3DE087280D89E90027DC0E /* EvaluateDetailViewController.m */; };
 		BC41103828066C2F00800BD9 /* HomeworkListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC41103728066C2F00800BD9 /* HomeworkListViewController.m */; };
 		BC41103B28066D2E00800BD9 /* HomeworkBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC41103A28066D2E00800BD9 /* HomeworkBodyView.m */; };
 		BC41104228066E5500800BD9 /* EvaluateCourseListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC41104128066E5500800BD9 /* EvaluateCourseListViewController.m */; };
@@ -1441,6 +1445,10 @@
 		AC7237F12804B8A0533DF9FE /* Pods-KulexiuForTeacher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KulexiuForTeacher.debug.xcconfig"; path = "Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher.debug.xcconfig"; sourceTree = "<group>"; };
 		BC0167A427FC06D600AE66A1 /* MyCourseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyCourseViewController.h; sourceTree = "<group>"; };
 		BC0167A527FC06D600AE66A1 /* MyCourseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyCourseViewController.m; sourceTree = "<group>"; };
+		BC1191EB280E55CA00A716F7 /* EvaluateDetailModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EvaluateDetailModel.m; sourceTree = "<group>"; };
+		BC1191EC280E55CB00A716F7 /* EvaluateDetailModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvaluateDetailModel.h; sourceTree = "<group>"; };
+		BC1191EE280E8A2700A716F7 /* TableCourseModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableCourseModel.h; sourceTree = "<group>"; };
+		BC1191EF280E8A2800A716F7 /* TableCourseModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableCourseModel.m; sourceTree = "<group>"; };
 		BC1365B6280D130C00EB03E2 /* MyVideoCourseBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyVideoCourseBodyView.h; sourceTree = "<group>"; };
 		BC1365B7280D130C00EB03E2 /* MyVideoCourseBodyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyVideoCourseBodyView.m; sourceTree = "<group>"; };
 		BC1365B9280D162400EB03E2 /* MyVideoSearchView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyVideoSearchView.h; sourceTree = "<group>"; };
@@ -1460,6 +1468,10 @@
 		BC28582E2809451B0024697C /* EvaluateCouseCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EvaluateCouseCell.xib; sourceTree = "<group>"; };
 		BC285831280947BA0024697C /* EvaluateSortView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EvaluateSortView.h; sourceTree = "<group>"; };
 		BC285832280947BA0024697C /* EvaluateSortView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EvaluateSortView.m; sourceTree = "<group>"; };
+		BC3DE080280D88660027DC0E /* EvaluateListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvaluateListModel.h; sourceTree = "<group>"; };
+		BC3DE081280D88670027DC0E /* EvaluateListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EvaluateListModel.m; sourceTree = "<group>"; };
+		BC3DE086280D89E90027DC0E /* EvaluateDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EvaluateDetailViewController.h; sourceTree = "<group>"; };
+		BC3DE087280D89E90027DC0E /* EvaluateDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EvaluateDetailViewController.m; sourceTree = "<group>"; };
 		BC41103628066C2F00800BD9 /* HomeworkListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeworkListViewController.h; sourceTree = "<group>"; };
 		BC41103728066C2F00800BD9 /* HomeworkListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeworkListViewController.m; sourceTree = "<group>"; };
 		BC41103928066D2E00800BD9 /* HomeworkBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeworkBodyView.h; sourceTree = "<group>"; };
@@ -3148,6 +3160,8 @@
 		2779360827E32BBF0010E277 /* Model */ = {
 			isa = PBXGroup;
 			children = (
+				BC1191EE280E8A2700A716F7 /* TableCourseModel.h */,
+				BC1191EF280E8A2800A716F7 /* TableCourseModel.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -3719,6 +3733,8 @@
 			children = (
 				BC41104028066E5500800BD9 /* EvaluateCourseListViewController.h */,
 				BC41104128066E5500800BD9 /* EvaluateCourseListViewController.m */,
+				BC3DE086280D89E90027DC0E /* EvaluateDetailViewController.h */,
+				BC3DE087280D89E90027DC0E /* EvaluateDetailViewController.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -3726,6 +3742,10 @@
 		BC41103E28066E4100800BD9 /* Model */ = {
 			isa = PBXGroup;
 			children = (
+				BC3DE080280D88660027DC0E /* EvaluateListModel.h */,
+				BC3DE081280D88670027DC0E /* EvaluateListModel.m */,
+				BC1191EC280E55CB00A716F7 /* EvaluateDetailModel.h */,
+				BC1191EB280E55CA00A716F7 /* EvaluateDetailModel.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -4955,6 +4975,7 @@
 				BC4110492806706800800BD9 /* HomeworkListCell.m in Sources */,
 				BCA9CE2427FD792600D558C6 /* LiveCourseModel.m in Sources */,
 				2779322E27E30FC30010E277 /* ALCalendarCollectionView.m in Sources */,
+				BC1191F0280E8A2800A716F7 /* TableCourseModel.m in Sources */,
 				27BC3B1827F2B0D200D81E30 /* kSJXCollectionView.m in Sources */,
 				BCB6340927F6A35700ACFDCF /* LiveroomTimeManager.m in Sources */,
 				27F9030627E86CBD00C08A19 /* DeviceCheckView.m in Sources */,
@@ -5120,6 +5141,7 @@
 				27A54CEC27E9B96F007309A3 /* ModifyNameBodyView.m in Sources */,
 				27F9030B27E875C500C08A19 /* AudioRecordManager.m in Sources */,
 				27A2F62D27E70D0A009E2380 /* UserInfoManager.m in Sources */,
+				BC3DE088280D89E90027DC0E /* EvaluateDetailViewController.m in Sources */,
 				BCF1BA5427F5CB5800FA36C4 /* LiveSeatApplyView.m in Sources */,
 				BCC9F41327F69BD200647449 /* MessageDataSource.m in Sources */,
 				BCE6A0A427F8517900C97704 /* MineVideoCell.m in Sources */,
@@ -5154,6 +5176,7 @@
 				BCC9F42327F69BD200647449 /* MainContainerView.m in Sources */,
 				2779335927E316DD0010E277 /* WMPlayer.m in Sources */,
 				2779331127E310960010E277 /* NSObject+ReadDocument.m in Sources */,
+				BC3DE082280D88670027DC0E /* EvaluateListModel.m in Sources */,
 				277931EC27E30FC20010E277 /* UIColor+Extend.m in Sources */,
 				277935E827E32A450010E277 /* KSBaseViewController.m in Sources */,
 				2755C08127ED54EF007D9070 /* GroupApplyViewController.m in Sources */,
@@ -5169,6 +5192,7 @@
 				2779329427E30FEB0010E277 /* UIImage+MSSScale.m in Sources */,
 				277931EF27E30FC20010E277 /* NSObject+Parse.m in Sources */,
 				2779362927E33BE40010E277 /* WeakWebViewScriptMessageDelegate.m in Sources */,
+				BC1191ED280E55CB00A716F7 /* EvaluateDetailModel.m in Sources */,
 				275E3DA927F45A8A0010EC30 /* KSLiveStreamVideo.m in Sources */,
 				BCC9F43E27F69BD200647449 /* AccompanyDownloadMessage.m in Sources */,
 				277D431A27E9991200107DB7 /* ModifyViewController.m in Sources */,

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


+ 10 - 58
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -67,80 +67,32 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "8C45891D-B89C-4147-B334-676BEF24B6C4"
+            uuid = "570036BC-1F44-4D53-85E4-84993C8F7165"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCourseBodyView.m"
+            filePath = "KulexiuForTeacher/Module/Home/Homework/View/HomeworkBodyView.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "306"
-            endingLineNumber = "306"
-            landmarkName = "-getTimeDisplay:"
+            startingLineNumber = "206"
+            endingLineNumber = "206"
+            landmarkName = "-tableView:didSelectRowAtIndexPath:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "BF647C4D-2B77-4675-9102-F850D4E03608"
+            uuid = "F6AE391F-E02C-4603-ACA6-42F574A4F88C"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/MyCourse/Controller/MyCourseViewController.m"
+            filePath = "KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "47"
-            endingLineNumber = "47"
-            landmarkName = "-requestTeachMessage"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "53925822-D39B-439E-9F12-F073FD55D8A8"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/MyCourse/Controller/MyCourseViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "58"
-            endingLineNumber = "58"
-            landmarkName = "-refreshAuthStatus"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "8B45AA36-7C5E-453E-8489-FFAAEC046ECA"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/MyCourse/Controller/MyCourseViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "65"
-            endingLineNumber = "65"
-            landmarkName = "-refreshAuthStatus"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "C8408E14-F8A4-4A24-9C5D-0FA2D3819F62"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/Module/Home/MyCourse/Controller/MyCourseViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "151"
-            endingLineNumber = "151"
-            landmarkName = "-pagerView:initListAtIndex:"
+            startingLineNumber = "104"
+            endingLineNumber = "104"
+            landmarkName = "-evaluateAction:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Course/lesson_Live.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Course/lesson_Live.imageset/lesson_Live@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Course/lesson_Live.imageset/lesson_Live@3x.png


+ 55 - 3
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -506,9 +506,43 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)queryTeacherLiveCourse:(NSString *)post classDate:(NSString *)classDate status:(NSString *)status subjectId:(NSString *)subjectId page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
-// 我的评价
-// /teacher-server/courseReplied/myReplied
-//+ (void)
+#pragma mark ------- 陪练课评价
+
+// /api-teacher/courseSchedule/queryTeacherPracticeCourse
+
+/// 课后评价
+/// @param post post
+/// @param classMonth yyyy-MM
+/// @param replied 0:未评价 1:已评价
+/// @param studentName 学生名称
+/// @param page 页数
+/// @param rows 条数
+/// @param success 成功
+/// @param faliure 失败
++ (void)courseRepliedListRequest:(NSString *)post classMonth:(NSString *)classMonth replied:(NSInteger)replied studentName:(NSString *)studentName page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /teacher-server/courseReplied/selectReplied
+
+/// 查询评价详情
+/// @param post post
+/// @param courseGroupId 课程组编号
+/// @param courseScheduleId 课程编号
+/// @param studentId 学员编号
+/// @param success 成功
+/// @param faliure 失败
++ (void)selectRepliedRequest:(NSString *)post courseGroupId:(NSString *)courseGroupId courseScheduleId:(NSString *)courseScheduleId studentId:(NSString *)studentId success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /teacher-server/courseReplied/replied
+
+/// 评价陪练课
+/// @param post post
+/// @param courseScheduleId 课程编号
+/// @param courseGroupId 课程组编号
+/// @param studentId 学员编号
+/// @param teacherReplied 评价内容
+/// @param success 成功
+/// @param faliure 失败
++ (void)teacherCourseRepliedRequest:(NSString *)post courseScheduleId:(NSString *)courseScheduleId courseGroupId:(NSString *)courseGroupId studentId:(NSString *)studentId teacherReplied:(NSString *)teacherReplied success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 #pragma mark ----- 课后作业
 // /api-teacher/homework/list
@@ -551,5 +585,23 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)homeworkReviewRequest:(NSString *)post courseScheduleId:(NSString *)courseScheduleId review:(NSString *)review success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+
+#pragma mark ----- 课表相关
+// /teacher-server/courseSchedule/queryCourseSchedule
+
+/// 课表日历
+/// @param post post
+/// @param classMonth 月份
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryCourseSchedule:(NSString *)post classMonth:(NSString *)classMonth success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /teacher-server/courseSchedule/queryCourseUser
+/// 查询日期课程
+/// @param post post
+/// @param classDate 日期
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryCourseForDay:(NSString *)post classDate:(NSString *)classDate success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 @end
 NS_ASSUME_NONNULL_END

+ 97 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m

@@ -1032,7 +1032,7 @@
 }
 
 #pragma mark ----- 课程查询
-// /api-teacher/courseSchedule/myCourse
+// /api-teacher/courseSchedule/queryTeacherPracticeCourse
 /// 我的课程-陪练课
 /// @param post post
 /// @param classMonth 月份 yyyy-MM
@@ -1079,6 +1079,72 @@
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+#pragma mark ------- 陪练课评价
+
+// /api-teacher/courseSchedule/queryTeacherPracticeCourse
+
+/// 课后评价
+/// @param post post
+/// @param classMonth yyyy-MM
+/// @param replied 0:未评价 1:已评价
+/// @param studentName 学生名称
+/// @param page 页数
+/// @param rows 条数
+/// @param success 成功
+/// @param faliure 失败
++ (void)courseRepliedListRequest:(NSString *)post classMonth:(NSString *)classMonth replied:(NSInteger)replied studentName:(NSString *)studentName page:(NSInteger)page rows:(NSInteger)rows success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/courseSchedule/queryTeacherPracticeCourse"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:classMonth forKey:@"classMonth"];
+    [parm setValue:@(replied) forKey:@"replied"];
+    [parm setValue:studentName forKey:@"studentName"];
+    [parm setValue:@(page) forKey:@"page"];
+    [parm setValue:@(rows) forKey:@"rows"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
+// /api-teacher/courseReplied/selectReplied
+
+/// 查询评价详情
+/// @param post post
+/// @param courseGroupId 课程组编号
+/// @param courseScheduleId 课程编号
+/// @param studentId 学员编号
+/// @param success 成功
+/// @param faliure 失败
++ (void)selectRepliedRequest:(NSString *)post courseGroupId:(NSString *)courseGroupId courseScheduleId:(NSString *)courseScheduleId studentId:(NSString *)studentId success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+{
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-teacher/courseReplied/selectReplied"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:courseGroupId forKey:@"courseGroupId"];
+    [parm setValue:courseScheduleId forKey:@"courseScheduleId"];
+    [parm setValue:studentId forKey:@"studentId"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
+// /teacher-server/courseReplied/replied
+
+/// 评价陪练课
+/// @param post post
+/// @param courseScheduleId 课程编号
+/// @param courseGroupId 课程组编号
+/// @param studentId 学员编号
+/// @param teacherReplied 评价内容
+/// @param success 成功
+/// @param faliure 失败
++ (void)teacherCourseRepliedRequest:(NSString *)post courseScheduleId:(NSString *)courseScheduleId courseGroupId:(NSString *)courseGroupId studentId:(NSString *)studentId teacherReplied:(NSString *)teacherReplied success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-teacher/courseReplied/replied"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:courseScheduleId forKey:@"courseScheduleId"];
+    [parm setValue:courseGroupId forKey:@"courseGroupId"];
+    [parm setValue:studentId forKey:@"studentId"];
+    [parm setValue:teacherReplied forKey:@"teacherReplied"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 
 #pragma mark ----- 课后作业
 // /api-teacher/homework/list
@@ -1148,4 +1214,34 @@
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+#pragma mark ----- 课表相关
+// /api-teacher/courseSchedule/queryCourseSchedule
+
+/// 课表日历
+/// @param post post
+/// @param classMonth 月份
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryCourseSchedule:(NSString *)post classMonth:(NSString *)classMonth success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/courseSchedule/queryCourseSchedule"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:classMonth forKey:@"classMonth"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
+// /api-teacher/courseSchedule/queryCourseUser
+/// 查询日期课程
+/// @param post post
+/// @param classDate 日期
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryCourseForDay:(NSString *)post classDate:(NSString *)classDate success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/courseSchedule/queryCourseUser"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:classDate forKey:@"classDate"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 @end

+ 2 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatListViewController.m

@@ -36,6 +36,7 @@
     [super viewDidLoad];
     // Do any additional setup after loading the view.
     [self allocTitle:self.topTitle];
+    self.stateView.center = CGPointMake(self.view.centerX, self.view.centerY - 30);
     [self configUI];
 }
 
@@ -49,7 +50,7 @@
         [self allocLeftButton];
         self.conversationListTableView.tableHeaderView = [UIView new];
     }
-    self.stateView.center = CGPointMake(self.view.centerX, self.view.centerY - 30);
+    
 }
 
 - (void)allocLeftButton {

+ 4 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.h

@@ -14,6 +14,10 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, strong) NSString *courseId;
 
+@property (nonatomic, strong) NSString *courseGroupId;
+
+@property (nonatomic, strong) NSString *studentId;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 44 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m

@@ -8,6 +8,12 @@
 #import "AccompanyDetailViewController.h"
 #import "AccompanyNavView.h"
 #import "AccompanyAlertView.h"
+#import "AccompanyCourseInfoCell.h"
+#import "AccompanyEvaluateCell.h"
+#import "AccompanyStudentEvaCell.h"
+#import "AccompanyArrangeCell.h"
+#import "AccompanyHomeworkCell.h"
+#import "AccompanyRemarkCell.h"
 
 @interface AccompanyDetailViewController ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -24,8 +30,19 @@
     // Do any additional setup after loading the view.
     self.ks_prefersNavigationBarHidden = YES;
     [self configUI];
+    [self requestMessage];
 }
 
+- (void)requestMessage {
+    
+}
+
+- (void)requestHomeworkMessage {
+    
+}
+
+//- (void)request
+
 - (void)configUI {
     [self.scrollView removeFromSuperview];
     [self.view addSubview:self.navView];
@@ -48,9 +65,33 @@
     return 6;
 }
 
-//- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
-//    
-//}
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (indexPath.row == 0) {
+        AccompanyCourseInfoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyCourseInfoCell"];
+        return cell;
+    }
+    else if (indexPath.row == 1) {
+        AccompanyEvaluateCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyEvaluateCell"];
+        return cell;
+    }
+    else if (indexPath.row == 2) {
+        AccompanyStudentEvaCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyStudentEvaCell"];
+        return cell;
+    }
+    else if (indexPath.row == 3) {
+        AccompanyArrangeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyArrangeCell"];
+        
+        return cell;
+    }
+    else if (indexPath.row == 4) {
+        AccompanyHomeworkCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyHomeworkCell"];
+        return cell;
+    }
+    else {
+        AccompanyRemarkCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyRemarkCell"];
+        return cell;
+    }
+}
 
 #pragma mark --- lazying
 

+ 3 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.xib

@@ -74,8 +74,8 @@
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                                 </textView>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请输入您对本次课程学员表现的评价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Yk-u1-WFH">
-                                    <rect key="frame" x="11" y="11" width="229" height="17"/>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请输入您对本次课程学员表现的评价" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Yk-u1-WFH">
+                                    <rect key="frame" x="11" y="11" width="292" 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"/>
@@ -83,6 +83,7 @@
                             </subviews>
                             <color key="backgroundColor" red="0.96862745098039216" green="0.97254901960784312" blue="0.97647058823529409" alpha="1" colorSpace="calibratedRGB"/>
                             <constraints>
+                                <constraint firstAttribute="trailing" secondItem="4Yk-u1-WFH" secondAttribute="trailing" constant="11" id="0MB-PA-Aa5"/>
                                 <constraint firstAttribute="bottom" secondItem="7gT-5S-Mnm" secondAttribute="bottom" id="43J-6J-HH9"/>
                                 <constraint firstItem="4Yk-u1-WFH" firstAttribute="leading" secondItem="MLc-UI-hJt" secondAttribute="leading" constant="11" id="Coy-Mj-2Xf"/>
                                 <constraint firstItem="4Yk-u1-WFH" firstAttribute="top" secondItem="MLc-UI-hJt" secondAttribute="top" constant="11" id="d9n-1a-LAI"/>

+ 226 - 26
KulexiuForTeacher/KulexiuForTeacher/Module/Course/Controller/CourseViewController.m

@@ -11,7 +11,12 @@
 #import "LTSCalendarBottomView.h"
 #import "KSFullDatePicker.h"
 #import "AccompanyCourseCell.h"
-#import "LiveCourseCell.h"
+#import "CourseForLiveCell.h"
+#import "TableCourseModel.h"
+#import "KSChatConversationViewController.h"
+#import "KSEnterLiveroomManager.h"
+#import "KSBaseWKWebViewController.h"
+#import "AccompanyDetailViewController.h"
 
 @interface CourseViewController ()<UITableViewDataSource,UITableViewDelegate,FSCalendarDataSource,FSCalendarDelegate,UIGestureRecognizerDelegate>
 {
@@ -37,6 +42,18 @@
 
 @property (nonatomic, assign) BOOL cancleRequest;
 
+@property (nonatomic, strong) KSFullDatePicker *datePicker;
+
+@property (nonatomic, assign) BOOL isPickerChoose; // 是否选择的月份
+
+@property (nonatomic, assign) NSInteger practiceStartTime;  // 陪练课开课前可进入时间配置(分钟)
+
+@property (nonatomic, assign) NSInteger practiceEndTime;    // 陪练课结束后退出时间配置(分钟)
+
+@property (nonatomic, assign) NSInteger liveStartTime;      // 直播课开课前可进入时间配置(分钟)
+
+@property (nonatomic, assign) NSInteger liveEndTime;        // 直播课结束后退出时间配置(分钟)
+
 @end
 
 @implementation CourseViewController
@@ -54,8 +71,14 @@
     [formatter setDateFormat:@"yyyy-MM"];
     NSDate *date = [NSDate date];
     self.chooseMonth = [formatter stringFromDate:date];
+    [formatter setDateFormat:@"yyyy-MM-dd"];
     self.chooseDay = [NSString stringWithFormat:@"%@ 00:00:00", [formatter stringFromDate:date]];
     [self.calendar selectDate:date];
+    
+    // title  显示
+    [formatter setDateFormat:@"yyyy年MM月"];
+    [self.navHeadView.navTitle setText:[formatter stringFromDate:date]];
+    
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     [self loadMonthCourse:self.chooseMonth];
     if (![NSString isEmptyString:self.chooseDay]) {
@@ -146,16 +169,12 @@
 
 #pragma mark ---- calender action
 
-
-
 // 收起或展开日历
 - (void)changeDisplay {
     FSCalendarScope selectedScope = self.calendar.scope ==  FSCalendarScopeMonth ?  FSCalendarScopeWeek : FSCalendarScopeMonth;
     [self.calendar setScope:selectedScope animated:YES];
     NSString *imgName = selectedScope == FSCalendarScopeWeek ? @"arrow_down" : @"arrow_up";
     [self.calendarBottom.arrowImage setImage:[UIImage imageNamed:imgName]];
-#warning ---- 测试有课日期
-    self.calendar.highlightDates = [NSMutableArray arrayWithArray:@[@"2022-04-12 00:00:00",@"2022-04-15 00:00:00"]];
     [self.calendar reloadData];
 }
 
@@ -183,7 +202,7 @@
     self.calendar.appearance.subtitleSelectionColor = [UIColor whiteColor];
     self.calendar.dataSource = self;
     self.calendar.delegate = self;
-//    self.calendar.firstWeekday = 2;
+    //    self.calendar.firstWeekday = 2;
     self.calendar.appearance.caseOptions = FSCalendarCaseOptionsWeekdayUsesSingleUpperCase|FSCalendarCaseOptionsHeaderUsesUpperCase;
     self.calendar.calendarHeaderView.hidden = YES;
     self.calendar.locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"];
@@ -238,8 +257,11 @@
 
 
 
-- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar
-{
+- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar {
+    if (_isPickerChoose) {
+        _isPickerChoose = NO;
+        return;
+    }
     self.navHeadView.navTitle.text = [self.dateFormatter stringFromDate:calendar.currentPage];
     NSLog(@"%s %@", __FUNCTION__, [self.dateFormatter stringFromDate:calendar.currentPage]);
     // 获取当前月份信息
@@ -261,12 +283,54 @@
 
 #pragma mark --- 获取当前月份有课日期
 - (void)loadMonthCourse:(NSString *)month {
-    
+    [KSNetworkingManager queryCourseSchedule:KS_POST classMonth:month success:^(NSDictionary * _Nonnull dic) {
+        [self endRefresh];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSArray *courseArray = [dic arrayValueForKey:@"data"];
+            NSMutableArray *courseDateArray = [NSMutableArray array];
+            for (NSString *dateString in courseArray) {
+                NSString *dateStr = [NSString stringWithFormat:@"%@ %@", dateString, @"00:00:00"];
+                [courseDateArray addObject:dateStr];
+            }
+            self.calendar.highlightDates = courseDateArray;
+            [self.calendar reloadData];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self endRefresh];
+    }];
 }
 
 #pragma mark --- 获取当日课程
 - (void)getCourseByDate:(NSString *)date {
-    
+    [self showhud];
+    [KSNetworkingManager queryCourseForDay:KS_POST classDate:date success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            // 配置信息
+            NSDictionary *config = [[dic dictionaryValueForKey:@"data"] dictionaryValueForKey:@"sysConfig"];
+            self.practiceStartTime = [config integerValueForKey:@"practiceStartTime"];
+            self.practiceEndTime = [config integerValueForKey:@"practiceEndTime"];
+            self.liveStartTime = [config integerValueForKey:@"liveStartTime"];
+            self.liveEndTime = [config integerValueForKey:@"liveEndTime"];
+            
+            NSArray *courseArray = [[dic dictionaryValueForKey:@"data"] arrayValueForKey:@"studentList"];
+            NSMutableArray *lessonArray = [NSMutableArray array];
+            for (NSDictionary *parm in courseArray) {
+                TableCourseModel *model = [[TableCourseModel alloc] initWithDictionary:parm];
+                [lessonArray addObject:model];
+            }
+            self.dataArray = [lessonArray mutableCopy];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+        [self.tableView reloadData];
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
 }
 
 #pragma mark - <UIGestureRecognizerDelegate>
@@ -309,12 +373,105 @@
 }
 
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
-    AccompanyCourseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyCourseCell"];
-    return cell;
+    TableCourseModel *model = self.dataArray[indexPath.row];
+    if ([model.courseType isEqualToString:@"PRACTICE"]) { // 陪练课
+        AccompanyCourseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyCourseCell"];
+        MJWeakSelf;
+        [cell configWithCourseMessage:model beforeTime:self.practiceStartTime actionCallback:^(ACCOMPANY_TYPE type, TableCourseModel * _Nonnull courseModel) {
+            [weakSelf accompanyLessonAction:type source:courseModel];
+        }];
+        return cell;
+    }
+    else { // 直播课
+        CourseForLiveCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CourseForLiveCell"];
+        MJWeakSelf;
+        [cell configWithSource:model beforeTime:self.liveStartTime callback:^(LIVECOURSEACTION action, TableCourseModel *sourceModel) {
+            [weakSelf liveCourseAction:action source:sourceModel];
+        }];
+        return cell;
+    }
 }
 
-#pragma mark --- lazying
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    TableCourseModel *model = self.dataArray[indexPath.row];
+    if ([model.courseType isEqualToString:@"PRACTICE"]) { // 陪练课
+        [self showAccompanyDetailAction:model];
+    }
+    else { // 直播课详情
+        [self liveCourseDetail:model.courseId courseGroupId:model.courseGoupId];
+    }
+}
 
+- (void)accompanyLessonAction:(ACCOMPANY_TYPE)action source:(TableCourseModel *)source {
+    switch (action) {
+        case ACCOMPANY_TYPE_CHAT:
+        {
+            [self chatAction:source.userId groupName:source.name isGroup:NO];
+        }
+            break;
+        case ACCOMPANY_TYPE_ADJUST:
+        {
+            [self adjustCourseAction:source];
+        }
+            break;
+        case ACCOMPANY_DETAIL:
+        {
+            [self showAccompanyDetailAction:source];
+        }
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)adjustCourseAction:(TableCourseModel *)source {
+    KSFullDatePicker *adjustPicker = [[KSFullDatePicker alloc] initWithTitle:@"课程调整" date:[NSDate date] pickMode:KSDATEPICKER_MODE_DAY_TIME selectDateBlock:^(NSString *date) {
+        
+    } cancleBlock:^{
+        
+    }];
+    [adjustPicker show];
+}
+
+- (void)showAccompanyDetailAction:(TableCourseModel *)source {
+    AccompanyDetailViewController *detailVC = [[AccompanyDetailViewController alloc] init];
+    detailVC.courseId = source.courseId;
+//    detailVC.cour
+    [self.navigationController pushViewController:detailVC animated:YES];
+}
+
+- (void)liveCourseAction:(LIVECOURSEACTION)action source:(TableCourseModel *)source {
+    switch (action) {
+        case LIVECOURSEACTION_CHAT:  // 聊天
+        {
+            [self chatAction:source.courseGoupId groupName:source.name isGroup:YES];
+        }
+            break;
+        case LIVECOURSEACTION_LIVEROOM: // 直播课上课
+        {
+            [self liveCourseDetail:source.courseId courseGroupId:source.courseGoupId];
+        }
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)chatAction:(NSString *)targetId groupName:(NSString *)targetName isGroup:(BOOL)isGroup {
+    KSChatConversationViewController *conversationVC = [[KSChatConversationViewController alloc] init];
+    conversationVC.targetId = targetId;
+    conversationVC.title = targetName;
+    conversationVC.conversationType = isGroup ? ConversationType_GROUP : ConversationType_PRIVATE;
+    [self.navigationController pushViewController:conversationVC animated:YES];
+}
+
+- (void)liveCourseDetail:(NSString *)courseId courseGroupId:(NSString *)courseGroupId {
+    KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
+    ctrl.url = [NSString stringWithFormat:@"%@%@",WEBHOST,@"/#/openLive"];
+    [self.navigationController pushViewController:ctrl animated:YES];
+}
+
+#pragma mark --- lazying
 - (CourseNavView *)navHeadView {
     if (!_navHeadView) {
         _navHeadView = [CourseNavView shareInstance];
@@ -327,12 +484,55 @@
     return _navHeadView;
 }
 
+- (KSFullDatePicker *)datePicker {
+    if (!_datePicker) {
+        _datePicker = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_YEAR_MONTH selectDateBlock:^(NSString *date) {
+            self.navHeadView.navTitle.text = [self getTimeDisplay:date];
+            self.chooseMonth = date;
+            [self resetPickerStatus];
+            [self scrollCalendarToChooseMonth];
+            
+        } cancleBlock:^{
+            [self resetPickerStatus];
+        }];
+    }
+    return _datePicker;
+}
+
+- (void)scrollCalendarToChooseMonth {
+    self.isPickerChoose = YES;
+    NSDateFormatter *formatter = [NSObject getDateformatter];
+    [formatter setDateFormat:@"yyyy-MM"];
+    NSDate *chooseDate = [formatter dateFromString:self.chooseMonth];
+    [formatter setDateFormat:@"yyyy-MM-dd"];
+    self.chooseDay = [NSString stringWithFormat:@"%@ 00:00:00", [formatter stringFromDate:chooseDate]];
+    [self.calendar setCurrentPage:chooseDate animated:YES];
+    [self loadMonthCourse:self.chooseMonth];
+    if (![NSString isEmptyString:self.chooseDay]) {
+        [self.calendar selectDate:chooseDate];
+        [self getCourseByDate:self.chooseDay];
+    }
+}
+
+- (NSString *)getTimeDisplay:(NSString *)chooseMonth {
+    [self.dateFormatter setDateFormat:@"yyyy-MM"];
+    NSDate *chooseDate = [self.dateFormatter dateFromString:chooseMonth];
+    [self.dateFormatter setDateFormat:@"yyyy年MM月"];
+    NSString *displayTime = [self.dateFormatter stringFromDate:chooseDate];
+    return displayTime;
+}
+
+- (void)resetPickerStatus {
+    self.navHeadView.arrowUp = NO;
+}
+
 - (void)displayMounthPicker {
-    
+    [self.datePicker show];
 }
+
 - (NSDateFormatter *)dateFormatter {
     if (!_dateFormatter) {
-       _dateFormatter = [NSObject getDateformatter];
+        _dateFormatter = [NSObject getDateformatter];
         _dateFormatter.dateFormat = @"yyyy年MM月";
     }
     return _dateFormatter;
@@ -346,10 +546,10 @@
         _tableView.backgroundColor = [UIColor clearColor];
         _tableView.showsVerticalScrollIndicator = NO;
         _tableView.showsHorizontalScrollIndicator = NO;
-        _tableView.rowHeight = UITableViewAutomaticDimension;
-        _tableView.estimatedRowHeight = 130;
+//        _tableView.rowHeight = UITableViewAutomaticDimension;
+        _tableView.rowHeight = 127.0f;
         [_tableView registerNib:[UINib nibWithNibName:@"AccompanyCourseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyCourseCell"];
-        [_tableView registerNib:[UINib nibWithNibName:@"LiveCourseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"LiveCourseCell"];
+        [_tableView registerNib:[UINib nibWithNibName:@"CourseForLiveCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"CourseForLiveCell"];
         UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 15)];
         bottomView.backgroundColor = [UIColor clearColor];
         _tableView.tableFooterView = bottomView;
@@ -359,13 +559,13 @@
 }
 
 /*
-#pragma mark - Navigation
-
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
-}
-*/
+ #pragma mark - Navigation
+ 
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+ // Get the new view controller using [segue destinationViewController].
+ // Pass the selected object to the new view controller.
+ }
+ */
 
 @end

+ 32 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.h

@@ -0,0 +1,32 @@
+//
+//  TableCourseModel.h
+//
+//  Created by Steven  on 2022/4/19
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface TableCourseModel : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, strong) NSString *classDate;
+@property (nonatomic, strong) NSString *status;
+@property (nonatomic, strong) NSString *subjectId;
+@property (nonatomic, strong) NSString *courseId;
+@property (nonatomic, strong) NSString *userId;
+@property (nonatomic, strong) NSString *courseGoupId;
+@property (nonatomic, strong) NSString *endTime;
+@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *cover;
+@property (nonatomic, strong) NSString *payCount;
+@property (nonatomic, strong) NSString *courseType;
+@property (nonatomic, strong) NSString *name;
+@property (nonatomic, strong) NSString *startTime;
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 183 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.m

@@ -0,0 +1,183 @@
+//
+//  TableCourseModel.m
+//
+//  Created by Steven  on 2022/4/19
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import "TableCourseModel.h"
+
+
+NSString *const kTableCourseModelClassDate = @"classDate";
+NSString *const kTableCourseModelStatus = @"status";
+NSString *const kTableCourseModelSubjectId = @"subjectId";
+NSString *const kTableCourseModelCourseId = @"courseId";
+NSString *const kTableCourseModelUserId = @"userId";
+NSString *const kTableCourseModelCourseGoupId = @"courseGoupId";
+NSString *const kTableCourseModelEndTime = @"endTime";
+NSString *const kTableCourseModelSubjectName = @"subjectName";
+NSString *const kTableCourseModelCover = @"cover";
+NSString *const kTableCourseModelPayCount = @"payCount";
+NSString *const kTableCourseModelCourseType = @"courseType";
+NSString *const kTableCourseModelName = @"name";
+NSString *const kTableCourseModelStartTime = @"startTime";
+
+
+@interface TableCourseModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation TableCourseModel
+
+@synthesize classDate = _classDate;
+@synthesize status = _status;
+@synthesize subjectId = _subjectId;
+@synthesize courseId = _courseId;
+@synthesize userId = _userId;
+@synthesize courseGoupId = _courseGoupId;
+@synthesize endTime = _endTime;
+@synthesize subjectName = _subjectName;
+@synthesize cover = _cover;
+@synthesize payCount = _payCount;
+@synthesize courseType = _courseType;
+@synthesize name = _name;
+@synthesize startTime = _startTime;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // 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.classDate = [self objectOrNilForKey:kTableCourseModelClassDate fromDictionary:dict];
+            self.status = [self objectOrNilForKey:kTableCourseModelStatus fromDictionary:dict];
+            self.subjectId = [self objectOrNilForKey:kTableCourseModelSubjectId fromDictionary:dict];
+            self.courseId = [self objectOrNilForKey:kTableCourseModelCourseId fromDictionary:dict];
+            self.userId = [self objectOrNilForKey:kTableCourseModelUserId fromDictionary:dict];
+            self.courseGoupId = [self objectOrNilForKey:kTableCourseModelCourseGoupId fromDictionary:dict];
+            self.endTime = [self objectOrNilForKey:kTableCourseModelEndTime fromDictionary:dict];
+            self.subjectName = [self objectOrNilForKey:kTableCourseModelSubjectName fromDictionary:dict];
+            self.cover = [self objectOrNilForKey:kTableCourseModelCover fromDictionary:dict];
+            self.payCount = [self objectOrNilForKey:kTableCourseModelPayCount fromDictionary:dict];
+            self.courseType = [self objectOrNilForKey:kTableCourseModelCourseType fromDictionary:dict];
+            self.name = [self objectOrNilForKey:kTableCourseModelName fromDictionary:dict];
+            self.startTime = [self objectOrNilForKey:kTableCourseModelStartTime fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.classDate forKey:kTableCourseModelClassDate];
+    [mutableDict setValue:self.status forKey:kTableCourseModelStatus];
+    [mutableDict setValue:self.subjectId forKey:kTableCourseModelSubjectId];
+    [mutableDict setValue:self.courseId forKey:kTableCourseModelCourseId];
+    [mutableDict setValue:self.userId forKey:kTableCourseModelUserId];
+    [mutableDict setValue:self.courseGoupId forKey:kTableCourseModelCourseGoupId];
+    [mutableDict setValue:self.endTime forKey:kTableCourseModelEndTime];
+    [mutableDict setValue:self.subjectName forKey:kTableCourseModelSubjectName];
+    [mutableDict setValue:self.cover forKey:kTableCourseModelCover];
+    [mutableDict setValue:self.payCount forKey:kTableCourseModelPayCount];
+    [mutableDict setValue:self.courseType forKey:kTableCourseModelCourseType];
+    [mutableDict setValue:self.name forKey:kTableCourseModelName];
+    [mutableDict setValue:self.startTime forKey:kTableCourseModelStartTime];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.classDate = [aDecoder decodeObjectForKey:kTableCourseModelClassDate];
+    self.status = [aDecoder decodeObjectForKey:kTableCourseModelStatus];
+    self.subjectId = [aDecoder decodeObjectForKey:kTableCourseModelSubjectId];
+    self.courseId = [aDecoder decodeObjectForKey:kTableCourseModelCourseId];
+    self.userId = [aDecoder decodeObjectForKey:kTableCourseModelUserId];
+    self.courseGoupId = [aDecoder decodeObjectForKey:kTableCourseModelCourseGoupId];
+    self.endTime = [aDecoder decodeObjectForKey:kTableCourseModelEndTime];
+    self.subjectName = [aDecoder decodeObjectForKey:kTableCourseModelSubjectName];
+    self.cover = [aDecoder decodeObjectForKey:kTableCourseModelCover];
+    self.payCount = [aDecoder decodeObjectForKey:kTableCourseModelPayCount];
+    self.courseType = [aDecoder decodeObjectForKey:kTableCourseModelCourseType];
+    self.name = [aDecoder decodeObjectForKey:kTableCourseModelName];
+    self.startTime = [aDecoder decodeObjectForKey:kTableCourseModelStartTime];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_classDate forKey:kTableCourseModelClassDate];
+    [aCoder encodeObject:_status forKey:kTableCourseModelStatus];
+    [aCoder encodeObject:_subjectId forKey:kTableCourseModelSubjectId];
+    [aCoder encodeObject:_courseId forKey:kTableCourseModelCourseId];
+    [aCoder encodeObject:_userId forKey:kTableCourseModelUserId];
+    [aCoder encodeObject:_courseGoupId forKey:kTableCourseModelCourseGoupId];
+    [aCoder encodeObject:_endTime forKey:kTableCourseModelEndTime];
+    [aCoder encodeObject:_subjectName forKey:kTableCourseModelSubjectName];
+    [aCoder encodeObject:_cover forKey:kTableCourseModelCover];
+    [aCoder encodeObject:_payCount forKey:kTableCourseModelPayCount];
+    [aCoder encodeObject:_courseType forKey:kTableCourseModelCourseType];
+    [aCoder encodeObject:_name forKey:kTableCourseModelName];
+    [aCoder encodeObject:_startTime forKey:kTableCourseModelStartTime];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    TableCourseModel *copy = [[TableCourseModel alloc] init];
+    
+    if (copy) {
+
+        copy.classDate = [self.classDate copyWithZone:zone];
+        copy.status = [self.status copyWithZone:zone];
+        copy.subjectId = [self.subjectId copyWithZone:zone];
+        copy.courseId = [self.courseId copyWithZone:zone];
+        copy.userId = [self.userId copyWithZone:zone];
+        copy.courseGoupId = [self.courseGoupId copyWithZone:zone];
+        copy.endTime = [self.endTime copyWithZone:zone];
+        copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.cover = [self.cover copyWithZone:zone];
+        copy.payCount = [self.payCount copyWithZone:zone];
+        copy.courseType = [self.courseType copyWithZone:zone];
+        copy.name = [self.name copyWithZone:zone];
+        copy.startTime = [self.startTime copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 5 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.h

@@ -6,16 +6,21 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "TableCourseModel.h"
 
 typedef NS_ENUM(NSInteger, LIVECOURSEACTION) {
     LIVECOURSEACTION_CHAT, // 聊天
     LIVECOURSEACTION_LIVEROOM, // 上课
 };
 
+typedef void(^LiveLessonCallback)(LIVECOURSEACTION action, TableCourseModel * _Nonnull sourceModel);
+
 NS_ASSUME_NONNULL_BEGIN
 
 @interface CourseForLiveCell : UITableViewCell
 
+- (void)configWithSource:(TableCourseModel *)model beforeTime:(NSInteger)beforeTime callback:(LiveLessonCallback)callback;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 55 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.m

@@ -17,6 +17,10 @@
 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
 @property (weak, nonatomic) IBOutlet UIButton *operationButton;
 
+@property (nonatomic, copy) LiveLessonCallback callback;
+
+@property (nonatomic, strong) TableCourseModel *sourceModel;
+
 @end
 
 @implementation CourseForLiveCell
@@ -24,13 +28,62 @@
 - (void)awakeFromNib {
     [super awakeFromNib];
     // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
-- (IBAction)chatAction:(id)sender {
+
+- (void)configWithSource:(TableCourseModel *)model beforeTime:(NSInteger)beforeTime callback:(LiveLessonCallback)callback; {
+    if (callback) {
+        self.callback = callback;
+    }
+    self.sourceModel = model;
+    
+    // time
+    [self evaluateTimeLabelWithBeginTime:model.startTime endTime:model.endTime];
     
+    self.courseName.text = [NSString returnNoNullStringWithString:model.name];
+    self.subjectLabel.text = [NSString returnNoNullStringWithString:model.subjectName];
+    self.descLabel.text = [NSString stringWithFormat:@"%@人已购买", model.payCount];
+    if ([model.status isEqualToString:@"NOT_START"]) { // 未开始
+        self.courseStatusLabel.text = @"未开始";
+        self.courseStatusLabel.textColor = HexRGB(0xff802C);
+        
+    }
+    else if ([model.status isEqualToString:@"ING"]) { // 进行中
+        self.courseStatusLabel.text = @"进行中";
+        self.courseStatusLabel.textColor = THEMECOLOR;
+        
+    }
+    else if ([model.status isEqualToString:@"COMPLETE"]) { // 已结束
+        self.courseStatusLabel.text = @"已结束";
+        self.courseStatusLabel.textColor = HexRGB(0x999999);
+        
+    }
+}
+
+- (void)evaluateTimeLabelWithBeginTime:(NSString *)beginTime endTime:(NSString *)endTime {
+    // 时间
+    NSDateFormatter *dateFormatter = [NSObject getDateformatter];
+    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
+    NSDate *beginDate = [dateFormatter dateFromString:beginTime];
+    NSDate *endDate = [dateFormatter dateFromString:endTime];
+    [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    NSString *beginStr = [NSString returnNoNullStringWithString:[dateFormatter stringFromDate:beginDate]];
+    [dateFormatter setDateFormat:@"HH:mm"];
+    NSString *endStr = [NSString returnNoNullStringWithString:[dateFormatter stringFromDate:endDate]];
+    self.timeLabel.text = [NSString stringWithFormat:@"%@~%@", beginStr, endStr];
+}
+
+
+- (IBAction)chatAction:(id)sender {
+    if (self.callback) {
+        self.callback(LIVECOURSEACTION_CHAT, self.sourceModel);
+    }
 }
 
 - (IBAction)joinLiveroom:(id)sender {
-    
+    if (self.callback) {
+        self.callback(LIVECOURSEACTION_LIVEROOM, self.sourceModel);
+    }
 }
 
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {

+ 3 - 7
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.xib

@@ -50,17 +50,12 @@
                                 <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" 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="wA2-zs-RYl">
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="lesson_Live" translatesAutoresizingMaskIntoConstraints="NO" id="wA2-zs-RYl">
                                 <rect key="frame" x="11" y="56" width="47" height="47"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="47" id="9Wg-OO-U4i"/>
                                     <constraint firstAttribute="height" constant="47" id="uww-MX-dub"/>
                                 </constraints>
-                                <userDefinedRuntimeAttributes>
-                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="5"/>
-                                    </userDefinedRuntimeAttribute>
-                                </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="dEp-ou-JBA">
                                 <rect key="frame" x="68" y="56" width="152" height="24"/>
@@ -172,6 +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 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"/>
@@ -211,7 +207,7 @@
     <resources>
         <image name="course_chat" width="19" height="18"/>
         <image name="course_time" width="16" height="16"/>
-        <image name="user_default_avatal" width="52" height="52"/>
+        <image name="lesson_Live" width="47" height="51"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseNavView.h

@@ -17,6 +17,8 @@ typedef void(^ChooseMouthAction)(void);
 
 @property (weak, nonatomic) IBOutlet UILabel *navTitle;
 
+@property (nonatomic, assign) BOOL arrowUp;
+
 + (instancetype)shareInstance;
 
 - (void)chooseNavCallback:(ChooseMouthAction)callback;

+ 7 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseNavView.m

@@ -27,11 +27,18 @@
 }
 
 - (IBAction)buttonClickAction:(id)sender {
+    self.arrowUp = YES;
     if (self.callback) {
         self.callback();
     }
 }
 
+- (void)setArrowUp:(BOOL)arrowUp {
+    _arrowUp = arrowUp;
+    NSString *imageName = arrowUp ? @"sort_up" : @"sort_down";
+    [self.arrowImage setImage:[UIImage imageNamed:imageName]];
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.h

@@ -0,0 +1,22 @@
+//
+//  EvaluateDetailViewController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/18.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EvaluateDetailViewController : KSBaseViewController
+
+@property (nonatomic, strong) NSString *studentId;
+
+@property (nonatomic, strong) NSString *courseId;
+
+@property (nonatomic, strong) NSString *courseGroupId;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 146 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Controller/EvaluateDetailViewController.m

@@ -0,0 +1,146 @@
+//
+//  EvaluateDetailViewController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/18.
+//
+
+#import "EvaluateDetailViewController.h"
+#import "AccompanyEvaluateCell.h"
+#import "AccompanyCourseInfoCell.h"
+#import "AccompanyAlertView.h"
+#import "EvaluateDetailModel.h"
+
+@interface EvaluateDetailViewController ()<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic, strong) UITableView *tableView;
+
+@property (nonatomic, strong) AccompanyAlertView *alertView;
+
+@property (nonatomic, strong) EvaluateDetailModel *detailModel;
+
+@end
+
+
+@implementation EvaluateDetailViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"课后评价"];
+    [self configUI];
+    [self requestData];
+}
+
+- (void)configUI {
+    [self.scrollView removeFromSuperview];
+    self.view.backgroundColor = HexRGB(0xf6f8f9);
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.mas_equalTo(self.view);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+    }];
+}
+
+- (void)requestData {
+    [self showhud];
+    [KSNetworkingManager selectRepliedRequest:KS_POST courseGroupId:self.courseId courseScheduleId:self.courseGroupId studentId:self.studentId success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            self.detailModel = [[EvaluateDetailModel alloc] initWithDictionary:[dic dictionaryValueForKey:@"data"]];
+        }
+        else {
+            
+            [self MBPShow:MESSAGEKEY];
+        }
+        [self.tableView reloadData];
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+#pragma mark ----- table data source
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 2;
+}
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (indexPath.row == 0) { // 课程信息
+        AccompanyCourseInfoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyCourseInfoCell"];
+//        [cell configWithStartTime:self.detailModel.startTime endTime:self.detailModel.endTime studentAvatar:self.detailModel.studentAvatar studentName:self.detailModel.studentName studentId:self.detailModel.studentId studentSubject:self.detailModel.subjectName];
+        cell.hideChatButton = YES;
+        return cell;
+    }
+    else {
+        AccompanyEvaluateCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyEvaluateCell"];
+        NSString *message = self.detailModel.teacherReplied;
+        BOOL hasEvaluate = [NSString isEmptyString:self.detailModel.teacherReplied] ? NO : YES;
+        MJWeakSelf;
+        [cell configWithEvaluateMessage:message hasEvaluate:hasEvaluate callback:^{
+            [weakSelf evaluateCourse];
+        }];
+        return cell;
+    }
+}
+
+- (void)evaluateCourse {
+    self.alertView = [AccompanyAlertView shareInstance];
+    self.alertView.alertTitle.text = @"评价学员";
+    self.alertView.tipsLabel.text = @"请输入您对本次课程学员表现的评价";
+    self.alertView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight);
+    [self.alertView showInView:[UIApplication sharedApplication].keyWindow showStarView:NO];
+    MJWeakSelf;
+    [self.alertView sureCallback:^(NSString * _Nonnull content, NSInteger starNum) {
+        [weakSelf evaluateAction:content];
+    }];
+}
+
+- (void)evaluateAction:(NSString *)content {
+    if ([NSString isEmptyString:content]) {
+        [self MBPShow:@"请输入评价内容"];
+        return;
+    }
+    [self showhud];
+    [KSNetworkingManager teacherCourseRepliedRequest:KS_POST courseScheduleId:self.courseId courseGroupId:self.courseGroupId studentId:self.studentId teacherReplied:content success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            [self MBPShow:@"评价成功"];
+            [self requestData];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+#pragma mark --- lazying
+- (UITableView *)tableView {
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        _tableView.backgroundColor = [UIColor clearColor];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.showsHorizontalScrollIndicator = NO;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.rowHeight = UITableViewAutomaticDimension;
+        _tableView.estimatedRowHeight = 136.0f;
+        [_tableView registerNib:[UINib nibWithNibName:@"AccompanyCourseInfoCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyCourseInfoCell"];
+        [_tableView registerNib:[UINib nibWithNibName:@"AccompanyEvaluateCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyEvaluateCell"];
+    }
+    return _tableView;
+}
+
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 29 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.h

@@ -0,0 +1,29 @@
+//
+//  EvaluateDetailModel.h
+//
+//  Created by Steven  on 2022/4/19
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface EvaluateDetailModel : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, strong) NSString *courseGroupType;
+@property (nonatomic, strong) NSString *courseScheduleId;
+@property (nonatomic, strong) NSString *courseGroupId;
+@property (nonatomic, strong) NSString *updateTime;
+@property (nonatomic, strong) NSString *studentId;
+@property (nonatomic, strong) NSString *teacherReplied;
+@property (nonatomic, assign) double score;
+@property (nonatomic, strong) NSString *internalBaseClassIdentifier;
+@property (nonatomic, strong) NSString *createTime;
+@property (nonatomic, strong) NSString *studentReplied;
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 162 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateDetailModel.m

@@ -0,0 +1,162 @@
+//
+//  EvaluateDetailModel.m
+//
+//  Created by Steven  on 2022/4/19
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import "EvaluateDetailModel.h"
+
+
+NSString *const kEvaluateDetailModelCourseGroupType = @"courseGroupType";
+NSString *const kEvaluateDetailModelCourseScheduleId = @"courseScheduleId";
+NSString *const kEvaluateDetailModelCourseGroupId = @"courseGroupId";
+NSString *const kEvaluateDetailModelUpdateTime = @"updateTime";
+NSString *const kEvaluateDetailModelStudentId = @"studentId";
+NSString *const kEvaluateDetailModelTeacherReplied = @"teacherReplied";
+NSString *const kEvaluateDetailModelScore = @"score";
+NSString *const kEvaluateDetailModelId = @"id";
+NSString *const kEvaluateDetailModelCreateTime = @"createTime";
+NSString *const kEvaluateDetailModelStudentReplied = @"studentReplied";
+
+
+@interface EvaluateDetailModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation EvaluateDetailModel
+
+@synthesize courseGroupType = _courseGroupType;
+@synthesize courseScheduleId = _courseScheduleId;
+@synthesize courseGroupId = _courseGroupId;
+@synthesize updateTime = _updateTime;
+@synthesize studentId = _studentId;
+@synthesize teacherReplied = _teacherReplied;
+@synthesize score = _score;
+@synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier;
+@synthesize createTime = _createTime;
+@synthesize studentReplied = _studentReplied;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // 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.courseGroupType = [self objectOrNilForKey:kEvaluateDetailModelCourseGroupType fromDictionary:dict];
+            self.courseScheduleId = [self objectOrNilForKey:kEvaluateDetailModelCourseScheduleId fromDictionary:dict];
+            self.courseGroupId = [self objectOrNilForKey:kEvaluateDetailModelCourseGroupId fromDictionary:dict];
+            self.updateTime = [self objectOrNilForKey:kEvaluateDetailModelUpdateTime fromDictionary:dict];
+            self.studentId = [self objectOrNilForKey:kEvaluateDetailModelStudentId fromDictionary:dict];
+            self.teacherReplied = [self objectOrNilForKey:kEvaluateDetailModelTeacherReplied fromDictionary:dict];
+            self.score = [[self objectOrNilForKey:kEvaluateDetailModelScore fromDictionary:dict] doubleValue];
+            self.internalBaseClassIdentifier = [self objectOrNilForKey:kEvaluateDetailModelId fromDictionary:dict];
+            self.createTime = [self objectOrNilForKey:kEvaluateDetailModelCreateTime fromDictionary:dict];
+            self.studentReplied = [self objectOrNilForKey:kEvaluateDetailModelStudentReplied fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.courseGroupType forKey:kEvaluateDetailModelCourseGroupType];
+    [mutableDict setValue:self.courseScheduleId forKey:kEvaluateDetailModelCourseScheduleId];
+    [mutableDict setValue:self.courseGroupId forKey:kEvaluateDetailModelCourseGroupId];
+    [mutableDict setValue:self.updateTime forKey:kEvaluateDetailModelUpdateTime];
+    [mutableDict setValue:self.studentId forKey:kEvaluateDetailModelStudentId];
+    [mutableDict setValue:self.teacherReplied forKey:kEvaluateDetailModelTeacherReplied];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.score] forKey:kEvaluateDetailModelScore];
+    [mutableDict setValue:self.internalBaseClassIdentifier forKey:kEvaluateDetailModelId];
+    [mutableDict setValue:self.createTime forKey:kEvaluateDetailModelCreateTime];
+    [mutableDict setValue:self.studentReplied forKey:kEvaluateDetailModelStudentReplied];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.courseGroupType = [aDecoder decodeObjectForKey:kEvaluateDetailModelCourseGroupType];
+    self.courseScheduleId = [aDecoder decodeObjectForKey:kEvaluateDetailModelCourseScheduleId];
+    self.courseGroupId = [aDecoder decodeObjectForKey:kEvaluateDetailModelCourseGroupId];
+    self.updateTime = [aDecoder decodeObjectForKey:kEvaluateDetailModelUpdateTime];
+    self.studentId = [aDecoder decodeObjectForKey:kEvaluateDetailModelStudentId];
+    self.teacherReplied = [aDecoder decodeObjectForKey:kEvaluateDetailModelTeacherReplied];
+    self.score = [aDecoder decodeDoubleForKey:kEvaluateDetailModelScore];
+    self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kEvaluateDetailModelId];
+    self.createTime = [aDecoder decodeObjectForKey:kEvaluateDetailModelCreateTime];
+    self.studentReplied = [aDecoder decodeObjectForKey:kEvaluateDetailModelStudentReplied];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_courseGroupType forKey:kEvaluateDetailModelCourseGroupType];
+    [aCoder encodeObject:_courseScheduleId forKey:kEvaluateDetailModelCourseScheduleId];
+    [aCoder encodeObject:_courseGroupId forKey:kEvaluateDetailModelCourseGroupId];
+    [aCoder encodeObject:_updateTime forKey:kEvaluateDetailModelUpdateTime];
+    [aCoder encodeObject:_studentId forKey:kEvaluateDetailModelStudentId];
+    [aCoder encodeObject:_teacherReplied forKey:kEvaluateDetailModelTeacherReplied];
+    [aCoder encodeDouble:_score forKey:kEvaluateDetailModelScore];
+    [aCoder encodeObject:_internalBaseClassIdentifier forKey:kEvaluateDetailModelId];
+    [aCoder encodeObject:_createTime forKey:kEvaluateDetailModelCreateTime];
+    [aCoder encodeObject:_studentReplied forKey:kEvaluateDetailModelStudentReplied];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    EvaluateDetailModel *copy = [[EvaluateDetailModel alloc] init];
+    
+    if (copy) {
+
+        copy.courseGroupType = [self.courseGroupType copyWithZone:zone];
+        copy.courseScheduleId = [self.courseScheduleId copyWithZone:zone];
+        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
+        copy.updateTime = [self.updateTime copyWithZone:zone];
+        copy.studentId = [self.studentId copyWithZone:zone];
+        copy.teacherReplied = [self.teacherReplied copyWithZone:zone];
+        copy.score = self.score;
+        copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone];
+        copy.createTime = [self.createTime copyWithZone:zone];
+        copy.studentReplied = [self.studentReplied copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 32 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.h

@@ -0,0 +1,32 @@
+//
+//  EvaluateListModel.h
+//
+//  Created by Steven  on 2022/4/19
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface EvaluateListModel : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, strong) NSString *classDate;
+@property (nonatomic, strong) NSString *internalBaseClassIdentifier;
+@property (nonatomic, strong) NSString *subjectId;
+@property (nonatomic, strong) NSString *courseId;
+@property (nonatomic, strong) NSString *avatar;
+@property (nonatomic, strong) NSString *userId;
+@property (nonatomic, strong) NSString *endTime;
+@property (nonatomic, strong) NSString *userName;
+@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *signInTime;
+@property (nonatomic, strong) NSString *courseGoupId;
+@property (nonatomic, strong) NSString *startTime;
+@property (nonatomic, strong) NSString *status;
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 183 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/Model/EvaluateListModel.m

@@ -0,0 +1,183 @@
+//
+//  EvaluateListModel.m
+//
+//  Created by Steven  on 2022/4/19
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import "EvaluateListModel.h"
+
+
+NSString *const kEvaluateListModelClassDate = @"classDate";
+NSString *const kEvaluateListModelId = @"id";
+NSString *const kEvaluateListModelSubjectId = @"subjectId";
+NSString *const kEvaluateListModelCourseId = @"courseId";
+NSString *const kEvaluateListModelAvatar = @"avatar";
+NSString *const kEvaluateListModelUserId = @"userId";
+NSString *const kEvaluateListModelEndTime = @"endTime";
+NSString *const kEvaluateListModelUserName = @"userName";
+NSString *const kEvaluateListModelSubjectName = @"subjectName";
+NSString *const kEvaluateListModelSignInTime = @"signInTime";
+NSString *const kEvaluateListModelCourseGoupId = @"courseGoupId";
+NSString *const kEvaluateListModelStartTime = @"startTime";
+NSString *const kEvaluateListModelStatus = @"status";
+
+
+@interface EvaluateListModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation EvaluateListModel
+
+@synthesize classDate = _classDate;
+@synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier;
+@synthesize subjectId = _subjectId;
+@synthesize courseId = _courseId;
+@synthesize avatar = _avatar;
+@synthesize userId = _userId;
+@synthesize endTime = _endTime;
+@synthesize userName = _userName;
+@synthesize subjectName = _subjectName;
+@synthesize signInTime = _signInTime;
+@synthesize courseGoupId = _courseGoupId;
+@synthesize startTime = _startTime;
+@synthesize status = _status;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // 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.classDate = [self objectOrNilForKey:kEvaluateListModelClassDate fromDictionary:dict];
+            self.internalBaseClassIdentifier = [self objectOrNilForKey:kEvaluateListModelId fromDictionary:dict];
+            self.subjectId = [self objectOrNilForKey:kEvaluateListModelSubjectId fromDictionary:dict];
+            self.courseId = [self objectOrNilForKey:kEvaluateListModelCourseId fromDictionary:dict];
+            self.avatar = [self objectOrNilForKey:kEvaluateListModelAvatar fromDictionary:dict];
+            self.userId = [self objectOrNilForKey:kEvaluateListModelUserId fromDictionary:dict];
+            self.endTime = [self objectOrNilForKey:kEvaluateListModelEndTime fromDictionary:dict];
+            self.userName = [self objectOrNilForKey:kEvaluateListModelUserName fromDictionary:dict];
+            self.subjectName = [self objectOrNilForKey:kEvaluateListModelSubjectName fromDictionary:dict];
+            self.signInTime = [self objectOrNilForKey:kEvaluateListModelSignInTime fromDictionary:dict];
+            self.courseGoupId = [self objectOrNilForKey:kEvaluateListModelCourseGoupId fromDictionary:dict];
+            self.startTime = [self objectOrNilForKey:kEvaluateListModelStartTime fromDictionary:dict];
+            self.status = [self objectOrNilForKey:kEvaluateListModelStatus fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.classDate forKey:kEvaluateListModelClassDate];
+    [mutableDict setValue:self.internalBaseClassIdentifier forKey:kEvaluateListModelId];
+    [mutableDict setValue:self.subjectId forKey:kEvaluateListModelSubjectId];
+    [mutableDict setValue:self.courseId forKey:kEvaluateListModelCourseId];
+    [mutableDict setValue:self.avatar forKey:kEvaluateListModelAvatar];
+    [mutableDict setValue:self.userId forKey:kEvaluateListModelUserId];
+    [mutableDict setValue:self.endTime forKey:kEvaluateListModelEndTime];
+    [mutableDict setValue:self.userName forKey:kEvaluateListModelUserName];
+    [mutableDict setValue:self.subjectName forKey:kEvaluateListModelSubjectName];
+    [mutableDict setValue:self.signInTime forKey:kEvaluateListModelSignInTime];
+    [mutableDict setValue:self.courseGoupId forKey:kEvaluateListModelCourseGoupId];
+    [mutableDict setValue:self.startTime forKey:kEvaluateListModelStartTime];
+    [mutableDict setValue:self.status forKey:kEvaluateListModelStatus];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.classDate = [aDecoder decodeObjectForKey:kEvaluateListModelClassDate];
+    self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kEvaluateListModelId];
+    self.subjectId = [aDecoder decodeObjectForKey:kEvaluateListModelSubjectId];
+    self.courseId = [aDecoder decodeObjectForKey:kEvaluateListModelCourseId];
+    self.avatar = [aDecoder decodeObjectForKey:kEvaluateListModelAvatar];
+    self.userId = [aDecoder decodeObjectForKey:kEvaluateListModelUserId];
+    self.endTime = [aDecoder decodeObjectForKey:kEvaluateListModelEndTime];
+    self.userName = [aDecoder decodeObjectForKey:kEvaluateListModelUserName];
+    self.subjectName = [aDecoder decodeObjectForKey:kEvaluateListModelSubjectName];
+    self.signInTime = [aDecoder decodeObjectForKey:kEvaluateListModelSignInTime];
+    self.courseGoupId = [aDecoder decodeObjectForKey:kEvaluateListModelCourseGoupId];
+    self.startTime = [aDecoder decodeObjectForKey:kEvaluateListModelStartTime];
+    self.status = [aDecoder decodeObjectForKey:kEvaluateListModelStatus];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_classDate forKey:kEvaluateListModelClassDate];
+    [aCoder encodeObject:_internalBaseClassIdentifier forKey:kEvaluateListModelId];
+    [aCoder encodeObject:_subjectId forKey:kEvaluateListModelSubjectId];
+    [aCoder encodeObject:_courseId forKey:kEvaluateListModelCourseId];
+    [aCoder encodeObject:_avatar forKey:kEvaluateListModelAvatar];
+    [aCoder encodeObject:_userId forKey:kEvaluateListModelUserId];
+    [aCoder encodeObject:_endTime forKey:kEvaluateListModelEndTime];
+    [aCoder encodeObject:_userName forKey:kEvaluateListModelUserName];
+    [aCoder encodeObject:_subjectName forKey:kEvaluateListModelSubjectName];
+    [aCoder encodeObject:_signInTime forKey:kEvaluateListModelSignInTime];
+    [aCoder encodeObject:_courseGoupId forKey:kEvaluateListModelCourseGoupId];
+    [aCoder encodeObject:_startTime forKey:kEvaluateListModelStartTime];
+    [aCoder encodeObject:_status forKey:kEvaluateListModelStatus];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    EvaluateListModel *copy = [[EvaluateListModel alloc] init];
+    
+    if (copy) {
+
+        copy.classDate = [self.classDate copyWithZone:zone];
+        copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone];
+        copy.subjectId = [self.subjectId copyWithZone:zone];
+        copy.courseId = [self.courseId copyWithZone:zone];
+        copy.avatar = [self.avatar copyWithZone:zone];
+        copy.userId = [self.userId copyWithZone:zone];
+        copy.endTime = [self.endTime copyWithZone:zone];
+        copy.userName = [self.userName copyWithZone:zone];
+        copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.signInTime = [self.signInTime copyWithZone:zone];
+        copy.courseGoupId = [self.courseGoupId copyWithZone:zone];
+        copy.startTime = [self.startTime copyWithZone:zone];
+        copy.status = [self.status copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 40 - 5
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCourseBodyView.m

@@ -9,6 +9,8 @@
 #import "EvaluateSortView.h"
 #import "EvaluateCouseCell.h"
 #import "KSFullDatePicker.h"
+#import "EvaluateListModel.h"
+#import "EvaluateDetailViewController.h"
 
 @interface EvaluateCourseBodyView ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -105,8 +107,36 @@
     [self setPromptString:@"暂无内容" imageName:@"wd_img_zwsj" inView:self.tableView];
     [self.tableView reloadData];
 }
+
 - (void)requestData {
-    [self endRefresh];
+    NSInteger isEvaluate = self.selectIndex == 0 ? 0 : 1;
+    [KSNetworkingManager courseRepliedListRequest:KS_POST classMonth:self.chooseDate replied:isEvaluate studentName:self.searchKey page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
+        [self endRefresh];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSArray *sourceArray = [[dic dictionaryValueForKey:@"data"] arrayValueForKey:@"rows"];
+            for (NSDictionary *parm in sourceArray) {
+                EvaluateListModel *model = [[EvaluateListModel alloc] initWithDictionary:parm];
+                [self.dataArray addObject:model];
+            }
+            
+            if (sourceArray.count < self.rows) {
+                self.isLoadMore = NO;
+            }
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+        [self.tableView reloadData];
+        [self changePromptLabelStateWithArray:self.dataArray];
+    } faliure:^(NSError * _Nonnull error) {
+        [self endRefresh];
+        if (self.networkAvaiable == NO) {
+            [self setPromptString:@"暂无网络" imageName:@"no_networking" inView:self.tableView];
+        }
+        [self.dataArray removeAllObjects];
+        [self.tableView reloadData];
+        [self changePromptLabelStateWithArray:self.dataArray];
+    }];
 }
 
 - (void)beginRefreshImmediately {
@@ -149,19 +179,24 @@
 
 #pragma mark ----- table data source
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
-//    return self.dataArray.count;
-    return 10;
+    return self.dataArray.count;
 }
 
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    EvaluateListModel *model = self.dataArray[indexPath.row];
     EvaluateCouseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EvaluateCouseCell"];
+    [cell configCellWithModel:model];
     return cell;
 }
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     // 跳转到评价详情
-    
-    
+    EvaluateListModel *model = self.dataArray[indexPath.row];
+    EvaluateDetailViewController *ctrl = [[EvaluateDetailViewController alloc] init];
+    ctrl.courseId = model.courseId;
+    ctrl.courseGroupId = model.courseGoupId;
+    ctrl.studentId = model.userId;
+    [self.naviController pushViewController:ctrl animated:YES];
 }
 
 /**

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.h

@@ -6,11 +6,14 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "EvaluateListModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface EvaluateCouseCell : UITableViewCell
 
+- (void)configCellWithModel:(EvaluateListModel *)model;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 16 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateCouseCell.m

@@ -23,6 +23,22 @@
     self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
 
+- (void)configCellWithModel:(EvaluateListModel *)model {
+    // time
+    NSDateFormatter *formatter = [NSObject getDateformatter];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
+    NSDate *startDate = [formatter dateFromString:model.startTime];
+    NSDate *endDate = [formatter dateFromString:model.endTime];
+    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    NSString *lessonBegin = [formatter stringFromDate:startDate];
+    [formatter setDateFormat:@"HH:mm"];
+    NSString *lessonEnd = [formatter stringFromDate:endDate];
+    self.courseTime.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
+    [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
+    self.studentName.text = [NSString returnNoNullStringWithString:model.userName];
+    self.subjectName.text = [NSString returnNoNullStringWithString:model.subjectName];
+}
+
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
     [super setSelected:selected animated:animated];
 

+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Home/EvaluateCourse/View/EvaluateSortView.m

@@ -30,6 +30,7 @@
 }
 
 - (IBAction)searchTime:(id)sender {
+    self.arrowUp = YES;
     [self endEditing:YES];
     if (self.callack) {
         self.callack(EVALUATESORT_TIME, nil);
@@ -42,6 +43,11 @@
     }
 }
 
+- (void)setArrowUp:(BOOL)arrowUp {
+    _arrowUp = arrowUp;
+    NSString *imageName = arrowUp ? @"sort_up" : @"sort_down";
+    [self.arrowImage setImage:[UIImage imageNamed:imageName]];
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 8 - 8
KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/Controller/MyCourseViewController.m

@@ -204,13 +204,13 @@
     return _listViewArray;
 }
 /*
-#pragma mark - Navigation
-
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
-}
-*/
+ #pragma mark - Navigation
+ 
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+ // Get the new view controller using [segue destinationViewController].
+ // Pass the selected object to the new view controller.
+ }
+ */
 
 @end

+ 7 - 7
KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/View/MyLessonBodyView.m

@@ -399,21 +399,21 @@
             [self showAdjustPicker:model];
         }
             break;
-        case ACCOMPANY_TYPE_JOINROOM:  // 加入房间
+        case ACCOMPANY_DETAIL:  // 陪练课详情
         {
-            
-        }
-            break;
-        case ACCOMPANY_TYPE_EVALUATE:  // 评价
-        {
-            
+            [self showAccompanyDetail:model];
         }
             break;
+
         default:
             break;
     }
 }
 
+- (void)showAccompanyDetail:(AccompanyLessonModel *)model {
+    
+}
+
 - (void)showAdjustPicker:(AccompanyLessonModel *)model {
     
     KSFullDatePicker *picker = [[KSFullDatePicker alloc] initWithTitle:@"课时调整" date:[NSDate date] pickMode:KSDATEPICKER_MODE_DAY_TIME selectDateBlock:^(NSString *date) {

+ 6 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.h

@@ -7,21 +7,25 @@
 
 #import <UIKit/UIKit.h>
 #import "AccompanyLessonModel.h"
+#import "TableCourseModel.h"
 
 typedef NS_ENUM(NSInteger, ACCOMPANY_TYPE) {
     ACCOMPANY_TYPE_CHAT,
-    ACCOMPANY_TYPE_JOINROOM,
+    ACCOMPANY_DETAIL,
     ACCOMPANY_TYPE_ADJUST,
-    ACCOMPANY_TYPE_EVALUATE,
 };
 
 typedef void(^AccompanyCourseCallback)(ACCOMPANY_TYPE type, AccompanyLessonModel * _Nonnull source);
 
+typedef void(^AccompanyLessonCallback)(ACCOMPANY_TYPE type, TableCourseModel * _Nonnull courseModel);
+
 NS_ASSUME_NONNULL_BEGIN
 
 @interface AccompanyCourseCell : UITableViewCell
 
 - (void)configWithSource:(AccompanyLessonModel *)model actionCallback:(AccompanyCourseCallback)callback;
+/// 课表使用
+- (void)configWithCourseMessage:(TableCourseModel *)model beforeTime:(NSInteger)beforeTime actionCallback:(AccompanyLessonCallback)callback;
 
 @end
 

+ 108 - 5
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.m

@@ -21,6 +21,12 @@
 @property (nonatomic, strong) AccompanyLessonModel *sourceModel;
 
 @property (nonatomic, assign) ACCOMPANY_TYPE type;
+
+/// 课表使用
+@property (nonatomic, copy) AccompanyLessonCallback lessonCallback;
+
+@property (nonatomic, strong) TableCourseModel *lessonModel;
+
 @end
 
 @interface AccompanyCourseCell ()
@@ -43,12 +49,85 @@
     [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
     self.studentName.text = [NSString returnNoNullStringWithString:model.userName];
     self.studentSubject.text = [NSString returnNoNullStringWithString:model.subjectName];
-        
+    // time
+    [self evaluateTimeLabelWithBeginTime:model.startTime endTime:model.endTime];
+    
+    if ([model.status isEqualToString:@"NOT_START"]) { // 未开始
+        self.courseStatus.text = @"未开始";
+        self.courseStatus.textColor = HexRGB(0xff802C);
+        // 判断按钮显示调课还是进入教室
+        BOOL canChange = NO;
+        if (canChange) {
+            self.type = ACCOMPANY_TYPE_ADJUST;
+            self.opreationButton.userInteractionEnabled = YES;
+            [self.opreationButton setTitle:@"调课" forState:UIControlStateNormal];
+            [self.opreationButton setTitleColor:THEMECOLOR forState:UIControlStateNormal];
+            [self.opreationButton setBackgroundColor:HexRGB(0xffffff)];
+        }
+        else {
+            self.type = ACCOMPANY_DETAIL;
+            self.opreationButton.userInteractionEnabled = YES;
+            [self.opreationButton setTitle:@"进入教室" forState:UIControlStateNormal];
+            [self.opreationButton setTitleColor:HexRGB(0xffffff) forState:UIControlStateNormal];
+            [self.opreationButton setBackgroundColor:THEMECOLOR];
+        }
+    }
+    else if ([model.status isEqualToString:@"ING"]) { // 进行中
+        self.courseStatus.text = @"进行中";
+        self.courseStatus.textColor = THEMECOLOR;
+        self.type = ACCOMPANY_DETAIL;
+        self.opreationButton.userInteractionEnabled = YES;
+        [self.opreationButton setTitle:@"进入教室" forState:UIControlStateNormal];
+        [self.opreationButton setTitleColor:HexRGB(0xffffff) forState:UIControlStateNormal];
+        [self.opreationButton setBackgroundColor:THEMECOLOR];
+    }
+    else if ([model.status isEqualToString:@"COMPLETE"]) { // 已结束
+        self.courseStatus.text = @"已结束";
+        self.courseStatus.textColor = HexRGB(0x999999);
+        // 判断显示评价还是已评价
+        BOOL hasEvaluate = NO;
+        if (hasEvaluate) {
+            self.type = ACCOMPANY_DETAIL;
+            self.opreationButton.userInteractionEnabled = YES;
+            [self.opreationButton setTitle:@"评价" forState:UIControlStateNormal];
+            [self.opreationButton setTitleColor:THEMECOLOR forState:UIControlStateNormal];
+            [self.opreationButton setBackgroundColor:HexRGB(0xffffff)];
+        }
+        else {
+            self.opreationButton.userInteractionEnabled = NO;
+            [self.opreationButton setTitle:@"已评价" forState:UIControlStateNormal];
+            [self.opreationButton setTitleColor:THEMECOLOR forState:UIControlStateNormal];
+            [self.opreationButton setBackgroundColor:HexRGB(0xffffff)];
+        }
+    }
+}
+
+/// 课表使用
+- (void)configWithCourseMessage:(TableCourseModel *)model beforeTime:(NSInteger)beforeTime actionCallback:(AccompanyLessonCallback)callback {
+    if (callback) {
+        self.lessonCallback = callback;
+    }
+    self.lessonModel = model;
+    
+    [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:model.cover] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
+    self.studentName.text = [NSString returnNoNullStringWithString:model.name];
+    self.studentSubject.text = [NSString returnNoNullStringWithString:model.subjectName];
+    
+    // time
+    [self evaluateTimeLabelWithBeginTime:model.startTime endTime:model.endTime];
+    
     if ([model.status isEqualToString:@"NOT_START"]) { // 未开始
         self.courseStatus.text = @"未开始";
         self.courseStatus.textColor = HexRGB(0xff802C);
+        
         // 判断按钮显示调课还是进入教室
+        NSDate *currentDate = [NSDate date];
+        NSDate *beginDate = [self getCourseBeginDate:model.startTime];
+        NSTimeInterval beginTimeInterval = [beginDate timeIntervalSinceDate:currentDate];
         BOOL canChange = NO;
+        if (beginTimeInterval > beforeTime * 60) {
+            canChange = YES;
+        }
         if (canChange) {
             self.type = ACCOMPANY_TYPE_ADJUST;
             self.opreationButton.userInteractionEnabled = YES;
@@ -57,7 +136,7 @@
             [self.opreationButton setBackgroundColor:HexRGB(0xffffff)];
         }
         else {
-            self.type = ACCOMPANY_TYPE_JOINROOM;
+            self.type = ACCOMPANY_DETAIL;
             self.opreationButton.userInteractionEnabled = YES;
             [self.opreationButton setTitle:@"进入教室" forState:UIControlStateNormal];
             [self.opreationButton setTitleColor:HexRGB(0xffffff) forState:UIControlStateNormal];
@@ -67,7 +146,7 @@
     else if ([model.status isEqualToString:@"ING"]) { // 进行中
         self.courseStatus.text = @"进行中";
         self.courseStatus.textColor = THEMECOLOR;
-        self.type = ACCOMPANY_TYPE_JOINROOM;
+        self.type = ACCOMPANY_DETAIL;
         self.opreationButton.userInteractionEnabled = YES;
         [self.opreationButton setTitle:@"进入教室" forState:UIControlStateNormal];
         [self.opreationButton setTitleColor:HexRGB(0xffffff) forState:UIControlStateNormal];
@@ -79,7 +158,7 @@
         // 判断显示评价还是已评价
         BOOL hasEvaluate = NO;
         if (hasEvaluate) {
-            self.type = ACCOMPANY_TYPE_EVALUATE;
+            self.type = ACCOMPANY_DETAIL;
             self.opreationButton.userInteractionEnabled = YES;
             [self.opreationButton setTitle:@"评价" forState:UIControlStateNormal];
             [self.opreationButton setTitleColor:THEMECOLOR forState:UIControlStateNormal];
@@ -94,18 +173,42 @@
     }
 }
 
+- (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];
+    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
+    NSDate *beginDate = [dateFormatter dateFromString:beginTime];
+    NSDate *endDate = [dateFormatter dateFromString:endTime];
+    [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    NSString *beginStr = [NSString returnNoNullStringWithString:[dateFormatter stringFromDate:beginDate]];
+    [dateFormatter setDateFormat:@"HH:mm"];
+    NSString *endStr = [NSString returnNoNullStringWithString:[dateFormatter stringFromDate:endDate]];
+    self.courseTime.text = [NSString stringWithFormat:@"%@~%@", beginStr, endStr];    
+}
 
 - (IBAction)chatAction:(id)sender {
     if (self.callback) {
         self.callback(ACCOMPANY_TYPE_CHAT, self.sourceModel);
     }
+    else if (self.lessonCallback) {
+        self.lessonCallback(ACCOMPANY_TYPE_CHAT, self.lessonModel);
+    }
 }
 
 - (IBAction)courseAction:(UIButton *)sender {
     if (self.callback) {
         self.callback(self.type, self.sourceModel);
     }
-    
+    else if (self.lessonCallback) {
+        self.lessonCallback(self.type, self.lessonModel);
+    }
 }
 
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {

+ 7 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.xib

@@ -121,6 +121,12 @@
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                         <real key="value" value="14"/>
                                     </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="courseAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Cjj-lv-UXo"/>
@@ -140,6 +146,7 @@
                             <constraint firstItem="3FJ-PP-t5u" firstAttribute="leading" secondItem="hEp-yz-qU7" secondAttribute="leading" constant="11" id="SPj-TQ-Naq"/>
                             <constraint firstItem="eJa-81-RrN" firstAttribute="leading" secondItem="foX-kQ-NZi" secondAttribute="trailing" constant="10" id="XMS-cQ-9qv"/>
                             <constraint firstItem="3FJ-PP-t5u" firstAttribute="top" secondItem="hEp-yz-qU7" secondAttribute="top" constant="12" id="ZIs-gJ-5ER"/>
+                            <constraint firstItem="42d-Nb-iRS" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="NOA-EQ-Fjn" secondAttribute="trailing" constant="11" id="fQa-VV-TW6"/>
                             <constraint firstItem="foX-kQ-NZi" firstAttribute="leading" secondItem="hEp-yz-qU7" secondAttribute="leading" constant="11" id="fzi-Jo-dW2"/>
                             <constraint firstItem="XKr-bP-maa" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="y3h-K3-zJ8" secondAttribute="trailing" constant="10" id="iWy-rf-ocs"/>
                             <constraint firstItem="foX-kQ-NZi" firstAttribute="top" secondItem="wXs-1T-7ew" secondAttribute="bottom" constant="17" id="jyB-6O-Z10"/>

BIN
KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/AccompanyCourseCell.nib


BIN
KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/Assets.car


BIN
KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/CourseForLiveCell.nib


BIN
KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/KulexiuForTeacher


+ 8 - 8
KulexiuForTeacher/build/Debug-iphonesimulator/KulexiuForTeacher.app/_CodeSignature/CodeResources

@@ -10,7 +10,7 @@
 		</data>
 		<key>AccompanyAlertView.nib</key>
 		<data>
-		ZOMgv9nzHdM3mXwapv4VMO4n2uk=
+		uv0CJuJKEj4pzvVbbqLYuJEjpVQ=
 		</data>
 		<key>AccompanyArrangeCell.nib</key>
 		<data>
@@ -18,7 +18,7 @@
 		</data>
 		<key>AccompanyCourseCell.nib</key>
 		<data>
-		O2wZ484Gg5xmNK+OjLohLvZhfzI=
+		JJXxmOrzknfqK04m/kN2xhk6Ghc=
 		</data>
 		<key>AccompanyCourseInfoCell.nib</key>
 		<data>
@@ -58,7 +58,7 @@
 		</data>
 		<key>Assets.car</key>
 		<data>
-		BjSGt42KtmOtDhrowFnTECyGSvY=
+		mQv5687/RnQfxFQEHsxgHpK3s3s=
 		</data>
 		<key>AuthDisplayView.nib</key>
 		<data>
@@ -110,7 +110,7 @@
 		</data>
 		<key>CourseForLiveCell.nib</key>
 		<data>
-		4QkyeyDmTbMSNg/17/6OTlU4kus=
+		c3SsnSS3jk1y2Be3JpYoqxLkFIE=
 		</data>
 		<key>CourseNavView.nib</key>
 		<data>
@@ -3653,7 +3653,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			claEimHgvt1WEARMNHlNOWqnH7E+WioRpbGhQBUhpxA=
+			/n9eqmpdLSTqQjBgcbuxRVnIieCvAwUavYGLeas1Iv0=
 			</data>
 		</dict>
 		<key>AccompanyArrangeCell.nib</key>
@@ -3667,7 +3667,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			zuTR2eszBms2nZLjWywYoo4ut6nZ8cY4sqqqX6N5YTM=
+			pB5PNWRbfokqIi1WCoItOhoYM+VwS/l+mFvfXwGRjtY=
 			</data>
 		</dict>
 		<key>AccompanyCourseInfoCell.nib</key>
@@ -3737,7 +3737,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			+LJzMOOmwawEhimY7kIm8JowqRwrqe6atPjfzr5LPeU=
+			KZZ10ICf6OoQ59J95YoeUhNcflJjmskOUKHy8XJr9XY=
 			</data>
 		</dict>
 		<key>AuthDisplayView.nib</key>
@@ -3828,7 +3828,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			RQ4k370Gq7lPRL1xotZRx6wj7GaSSZ8XcYJl5louWZU=
+			4mygRBh7QNWAI9Rs0gcoBsCQqA5wOW2+J+N6l+DMO+g=
 			</data>
 		</dict>
 		<key>CourseNavView.nib</key>

BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphoneos/KulexiuForTeacher.build/KulexiuForTeacher-project-headers.hmap


BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/KulexiuForTeacher-project-headers.hmap


+ 2 - 1
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/AccompanyCourseCell.d

@@ -42,4 +42,5 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Tools/SafeControl/NSObject+KSImpChangeTool.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Tools/SafeControl/NSObject+KSSwizzling.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.h \
-  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/Model/AccompanyLessonModel.h
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/Model/AccompanyLessonModel.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.h

BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/AccompanyCourseCell.o


+ 2 - 1
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseForLiveCell.d

@@ -41,4 +41,5 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Tools/SafeControl/NSMutableString+KSSafe.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Tools/SafeControl/NSObject+KSImpChangeTool.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Tools/SafeControl/NSObject+KSSwizzling.h \
-  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.h
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.h

BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseForLiveCell.o


BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseNavView.o


+ 10 - 2
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseViewController.d

@@ -56,5 +56,13 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Custom/KSFullDatePicker.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/Model/AccompanyLessonModel.h \
-  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/LiveCourseCell.h \
-  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveCourse/Model/LiveCourseModel.h
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/View/CourseForLiveCell.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSChatConversationViewController.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Live/Model/KSEnterLiveroomManager.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Base/CustomNavViewController.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSBaseWKWebViewController.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Base/WeakWebViewScriptMessageDelegate.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSWebNavView.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSWebBackButton.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/Controller/AccompanyDetailViewController.h

BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseViewController.dia


BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/CourseViewController.o


BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KSChatListViewController.o


BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KSNetworkingManager.o


+ 4 - 0
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KulexiuForTeacher.LinkFileList

@@ -261,6 +261,7 @@
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/HomeworkListCell.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/LiveCourseModel.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/ALCalendarCollectionView.o
+/Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/TableCourseModel.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/kSJXCollectionView.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/LiveroomTimeManager.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/DeviceCheckView.o
@@ -426,6 +427,7 @@
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/ModifyNameBodyView.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/AudioRecordManager.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/UserInfoManager.o
+/Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/EvaluateDetailViewController.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/LiveSeatApplyView.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MessageDataSource.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MineVideoCell.o
@@ -460,6 +462,7 @@
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MainContainerView.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/WMPlayer.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/NSObject+ReadDocument-a71180d7fb30ca3833b2a7ac0def0d4a.o
+/Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/EvaluateListModel.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/UIColor+Extend.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KSBaseViewController.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/GroupApplyViewController.o
@@ -475,6 +478,7 @@
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/UIImage+MSSScale.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/NSObject+Parse.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/WeakWebViewScriptMessageDelegate.o
+/Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/EvaluateDetailModel.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KSLiveStreamVideo.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/AccompanyDownloadMessage.o
 /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/ModifyViewController.o

BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/KulexiuForTeacher_dependency_info.dat


+ 1 - 0
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MinePageCourseView.d

@@ -54,6 +54,7 @@ dependencies: \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Home/Music/Model/MusicMessageModel.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/AccompanyCourseCell.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Home/MyCourse/Model/AccompanyLessonModel.h \
+  /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Course/Model/TableCourseModel.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/LiveCourseCell.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/LiveCourse/Model/LiveCourseModel.h \
   /Users/wangzhi/DayaWorkspace/klx_teacher/KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMusicCell.h \

BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/MinePageCourseView.o


BIN
KulexiuForTeacher/build/KulexiuForTeacher.build/Debug-iphonesimulator/KulexiuForTeacher.build/Objects-normal/x86_64/UIView+XIBView.dia


BIN
KulexiuForTeacher/build/XCBuildData/BuildDescriptionCacheIndex-2297acb106a30e2935a01f5221f6a714


BIN
KulexiuForTeacher/build/XCBuildData/build.db