Steven 4 months ago
parent
commit
b1c1f7ac29
46 changed files with 1399 additions and 191 deletions
  1. 34 0
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForStudent/KulexiuForStudent/AppDelegate.m
  3. 2 2
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_down_grey.imageset/Contents.json
  4. 0 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_down_grey.imageset/sort_down_grey@2x.png
  5. 0 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_down_grey.imageset/sort_down_grey@3x.png
  6. 12 4
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h
  7. 20 4
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m
  8. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.h
  9. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/View/AccompanyCourseInfoCell.m
  10. 58 5
      KulexiuForStudent/KulexiuForStudent/Module/Course/Controller/CourseViewController.m
  11. 24 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/Model/GroupCourseStudentModel.h
  12. 127 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/Model/GroupCourseStudentModel.m
  13. 28 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicGroupStudenListCell.h
  14. 96 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicGroupStudenListCell.m
  15. 133 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicGroupStudenListCell.xib
  16. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomCourseInfoCell.m
  17. 226 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomStudentPageView.m
  18. 6 25
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/AccompanyCourseCell.m
  19. 116 89
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/AccompanyCourseCell.xib
  20. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseForLiveCell.m
  21. 2 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseGroupView/GroupCourseSortView.h
  22. 11 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseGroupView/GroupCourseSortView.m
  23. 65 26
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseGroupView/GroupCourseSortView.xib
  24. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/MusicRoomCourseCell.m
  25. 20 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/VIPCourseCell.h
  26. 152 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/VIPCourseCell.m
  27. 222 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/View/VIPCourseCell.xib
  28. 2 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseGroupBodyView.h
  29. 7 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseGroupBodyView.m
  30. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseListCell.xib
  31. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/VipCouseInfoCell.m
  32. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/VipCouseInfoCell.xib
  33. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/ArrangeCourse/Controller/HomeArrangeCourseController.h
  34. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/ArrangeCourse/View/VideoCourseArrangeCell.m
  35. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Home/View/HomeCourseTipsView.h
  36. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Live/View/KSShopCardView.xib
  37. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Feedback/View/FeedbackListNavView.m
  38. 6 6
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Feedback/View/FeedbackListNavView.xib
  39. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Homework/View/HomeworkListCell.m
  40. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Controller/MyCourseViewController.h
  41. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/LiveCourseGroup/MyLiveCourseGroupListCell.m
  42. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyCourseSortView/MyCourseSearchView.xib
  43. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m
  44. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLiveCourseCell.m
  45. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/VIPCourseGroup/MyProgramCourseGroupCell.m
  46. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/TXLive/Controller/TXLiveRoomViewController.m

+ 34 - 0
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -653,6 +653,8 @@
 		BC802DBA28BC8C810079E350 /* HomeHotVideoCourseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC802DB928BC8C810079E350 /* HomeHotVideoCourseView.xib */; };
 		BC802DBD28BC8E2C0079E350 /* HomeHotLiveCourseView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC802DBC28BC8E2C0079E350 /* HomeHotLiveCourseView.m */; };
 		BC802DBF28BC8E350079E350 /* HomeHotLiveCourseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC802DBE28BC8E350079E350 /* HomeHotLiveCourseView.xib */; };
+		BC82D70C2CF470B8007C947B /* VIPCourseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC82D70B2CF470B8007C947B /* VIPCourseCell.xib */; };
+		BC82D70D2CF470B8007C947B /* VIPCourseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC82D70A2CF470B8007C947B /* VIPCourseCell.m */; };
 		BC83A8362AD27C470033D48B /* TenantNotiferCenterController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC83A8352AD27C470033D48B /* TenantNotiferCenterController.m */; };
 		BC83A83A2AD2825F0033D48B /* TenantNotiferMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC83A8382AD2825F0033D48B /* TenantNotiferMessageCell.m */; };
 		BC83A83B2AD2825F0033D48B /* TenantNotiferMessageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC83A8392AD2825F0033D48B /* TenantNotiferMessageCell.xib */; };
@@ -963,6 +965,9 @@
 		BCFA12692CF424D8005229AC /* ProgramCourseListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFA12662CF424D8005229AC /* ProgramCourseListCell.m */; };
 		BCFA126C2CF425A7005229AC /* StudentCourseGroupDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFA126B2CF425A7005229AC /* StudentCourseGroupDetailModel.m */; };
 		BCFA126F2CF42703005229AC /* StudentGroupCourseListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFA126E2CF42703005229AC /* StudentGroupCourseListModel.m */; };
+		BCFA127B2CF45F85005229AC /* MusicGroupStudenListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFA12792CF45F85005229AC /* MusicGroupStudenListCell.m */; };
+		BCFA127C2CF45F85005229AC /* MusicGroupStudenListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCFA127A2CF45F85005229AC /* MusicGroupStudenListCell.xib */; };
+		BCFA12802CF45FDD005229AC /* GroupCourseStudentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFA127F2CF45FDD005229AC /* GroupCourseStudentModel.m */; };
 		BCFB9B9E2CE4A04000B66BC0 /* VIPCourseGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFB9B9D2CE4A03F00B66BC0 /* VIPCourseGroupViewController.m */; };
 		BCFB9BA12CE4A07900B66BC0 /* VipCouseDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFB9BA02CE4A07900B66BC0 /* VipCouseDetailViewController.m */; };
 		BCFB9BA42CE58C0B00B66BC0 /* AccompanyCourseGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFB9BA32CE58C0B00B66BC0 /* AccompanyCourseGroupViewController.m */; };
@@ -2119,6 +2124,9 @@
 		BC802DBB28BC8E2C0079E350 /* HomeHotLiveCourseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHotLiveCourseView.h; sourceTree = "<group>"; };
 		BC802DBC28BC8E2C0079E350 /* HomeHotLiveCourseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHotLiveCourseView.m; sourceTree = "<group>"; };
 		BC802DBE28BC8E350079E350 /* HomeHotLiveCourseView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeHotLiveCourseView.xib; sourceTree = "<group>"; };
+		BC82D7092CF470B8007C947B /* VIPCourseCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIPCourseCell.h; sourceTree = "<group>"; };
+		BC82D70A2CF470B8007C947B /* VIPCourseCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VIPCourseCell.m; sourceTree = "<group>"; };
+		BC82D70B2CF470B8007C947B /* VIPCourseCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VIPCourseCell.xib; sourceTree = "<group>"; };
 		BC83A8342AD27C470033D48B /* TenantNotiferCenterController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TenantNotiferCenterController.h; sourceTree = "<group>"; };
 		BC83A8352AD27C470033D48B /* TenantNotiferCenterController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TenantNotiferCenterController.m; sourceTree = "<group>"; };
 		BC83A8372AD2825F0033D48B /* TenantNotiferMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TenantNotiferMessageCell.h; sourceTree = "<group>"; };
@@ -2619,6 +2627,11 @@
 		BCFA126B2CF425A7005229AC /* StudentCourseGroupDetailModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StudentCourseGroupDetailModel.m; sourceTree = "<group>"; };
 		BCFA126D2CF42703005229AC /* StudentGroupCourseListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StudentGroupCourseListModel.h; sourceTree = "<group>"; };
 		BCFA126E2CF42703005229AC /* StudentGroupCourseListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StudentGroupCourseListModel.m; sourceTree = "<group>"; };
+		BCFA12782CF45F85005229AC /* MusicGroupStudenListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MusicGroupStudenListCell.h; sourceTree = "<group>"; };
+		BCFA12792CF45F85005229AC /* MusicGroupStudenListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicGroupStudenListCell.m; sourceTree = "<group>"; };
+		BCFA127A2CF45F85005229AC /* MusicGroupStudenListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicGroupStudenListCell.xib; sourceTree = "<group>"; };
+		BCFA127E2CF45FDD005229AC /* GroupCourseStudentModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GroupCourseStudentModel.h; sourceTree = "<group>"; };
+		BCFA127F2CF45FDD005229AC /* GroupCourseStudentModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GroupCourseStudentModel.m; sourceTree = "<group>"; };
 		BCFB9B9C2CE4A03F00B66BC0 /* VIPCourseGroupViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIPCourseGroupViewController.h; sourceTree = "<group>"; };
 		BCFB9B9D2CE4A03F00B66BC0 /* VIPCourseGroupViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VIPCourseGroupViewController.m; sourceTree = "<group>"; };
 		BCFB9B9F2CE4A07900B66BC0 /* VipCouseDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VipCouseDetailViewController.h; sourceTree = "<group>"; };
@@ -3165,6 +3178,9 @@
 				BC119233280ED97C00A716F7 /* CourseForLiveCell.h */,
 				BC119231280ED97B00A716F7 /* CourseForLiveCell.m */,
 				BC119232280ED97C00A716F7 /* CourseForLiveCell.xib */,
+				BC82D7092CF470B8007C947B /* VIPCourseCell.h */,
+				BC82D70A2CF470B8007C947B /* VIPCourseCell.m */,
+				BC82D70B2CF470B8007C947B /* VIPCourseCell.xib */,
 				BC119236280ED98D00A716F7 /* AccompanyCourseCell.h */,
 				BC119238280ED98E00A716F7 /* AccompanyCourseCell.m */,
 				BC119237280ED98E00A716F7 /* AccompanyCourseCell.xib */,
@@ -4980,6 +4996,7 @@
 			isa = PBXGroup;
 			children = (
 				BC494A74286952A200CCD343 /* Controller */,
+				BCFA127D2CF45FD6005229AC /* Model */,
 				BC494A78286958C700CCD343 /* View */,
 			);
 			path = MusicRoom;
@@ -5010,6 +5027,9 @@
 				BC5A4B852CF42104008C2FDD /* MusicRoomGroupHeadView.xib */,
 				BC5A4B862CF42104008C2FDD /* MusicRoomStudentPageView.h */,
 				BC5A4B872CF42104008C2FDD /* MusicRoomStudentPageView.m */,
+				BCFA12782CF45F85005229AC /* MusicGroupStudenListCell.h */,
+				BCFA12792CF45F85005229AC /* MusicGroupStudenListCell.m */,
+				BCFA127A2CF45F85005229AC /* MusicGroupStudenListCell.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -6340,6 +6360,15 @@
 			path = configuration;
 			sourceTree = "<group>";
 		};
+		BCFA127D2CF45FD6005229AC /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				BCFA127E2CF45FDD005229AC /* GroupCourseStudentModel.h */,
+				BCFA127F2CF45FDD005229AC /* GroupCourseStudentModel.m */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
 		BCFB9B982CE49F7A00B66BC0 /* Controller */ = {
 			isa = PBXGroup;
 			children = (
@@ -6665,6 +6694,7 @@
 				BCC0F6B02A8CDD4000C4EFA4 /* high_staff.png in Resources */,
 				BCECE2482B3D670500C0D555 /* FeedbackBodyView.xib in Resources */,
 				275FA23A27E7356B00CFEA2E /* VefiBodyView.xib in Resources */,
+				BC82D70C2CF470B8007C947B /* VIPCourseCell.xib in Resources */,
 				BCCE95D52AB043EF00AB6385 /* mutiMusic_Ani.json in Resources */,
 				BC119258280FA85300A716F7 /* HomeworkListCell.xib in Resources */,
 				BC542E5728409EC900633781 /* InstrumentChooseBottonView.xib in Resources */,
@@ -6870,6 +6900,7 @@
 				27F9033C27E87FE100C08A19 /* MineBodyView.xib in Resources */,
 				BCC0F6A82A8CDD3F00C4EFA4 /* SealClass.strings in Resources */,
 				BC2932F02AAEC3AF0024D98E /* InstitutionNomalNavView.xib in Resources */,
+				BCFA127C2CF45F85005229AC /* MusicGroupStudenListCell.xib in Resources */,
 				BCFCE44F28DD5C000051FED8 /* High.wav in Resources */,
 				BCB9FA2C286D79A4005D766B /* ScanNavView.xib in Resources */,
 				BCB5B3102ABC1717005BF25D /* KSPhotoChooseView.xib in Resources */,
@@ -7190,6 +7221,7 @@
 				BCECE24E2B3D670500C0D555 /* CourseFileDisplayView.m in Sources */,
 				BCCE95CC2AB03BE200AB6385 /* TenantDragView.m in Sources */,
 				BC31BF2A2B21925700F7D538 /* WidgetBottomButtonView.m in Sources */,
+				BC82D70D2CF470B8007C947B /* VIPCourseCell.m in Sources */,
 				BC106C392A9338A7000759A9 /* TXLiveVideoView.m in Sources */,
 				2779356527E324A70010E277 /* KSMediaManager.m in Sources */,
 				BC3BF6402B9FE92600831494 /* ShareFunctionView.m in Sources */,
@@ -7282,6 +7314,7 @@
 				277935BF27E324A90010E277 /* FSCalendarHeaderView.m in Sources */,
 				275FA1AE27E734C600CFEA2E /* KSImageAlert.m in Sources */,
 				BC3332762CEC259F00649FF9 /* MusicSquareNavView.m in Sources */,
+				BCFA127B2CF45F85005229AC /* MusicGroupStudenListCell.m in Sources */,
 				BC2888582A80F7BF0064B773 /* KSLoginManager.m in Sources */,
 				BCC0F60D2A8CD86C00C4EFA4 /* TXDeviceControlNotiferMsg.m in Sources */,
 				275FA1DE27E7351900CFEA2E /* KSLocalWebViewController.m in Sources */,
@@ -7692,6 +7725,7 @@
 				27F9032C27E87C2E00C08A19 /* KSNetworkAlert.m in Sources */,
 				BCC0F60B2A8CD86C00C4EFA4 /* TXClassroomMemberChange.m in Sources */,
 				BC40BA1828124D3D00DEC0D1 /* NotiferMessageViewController.m in Sources */,
+				BCFA12802CF45FDD005229AC /* GroupCourseStudentModel.m in Sources */,
 				BCD1603A2CEC808700A78B43 /* ArrangeTeacherModel.m in Sources */,
 				BC31BF1F2B21925700F7D538 /* TunerSettingView.m in Sources */,
 				275FA22D27E7356B00CFEA2E /* ChatViewController.m in Sources */,

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/AppDelegate.m

@@ -783,7 +783,7 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
     else {  // 平台
         if ([action isEqualToString:@"app"]) {
             NSString *pageType = [dict ks_stringValueForKey:@"pageTag"];
-            if ([pageType isEqualToString:@"practiceClass"]) { // 我的课程 ->陪练
+            if ([pageType isEqualToString:@"practiceClass"]) { // 我的课程 ->趣纠
                 DISPLAY_INDEX index = DISPLAY_INDEX_FIRST;
                 MyCourseViewController *ctrl = [[MyCourseViewController alloc] init];
                 [ctrl displayWithIndex:index];

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_up_grey.imageset/Contents.json → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_down_grey.imageset/Contents.json

@@ -5,12 +5,12 @@
       "scale" : "1x"
     },
     {
-      "filename" : "sort_up_grey@2x.png",
+      "filename" : "sort_down_grey@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "sort_up_grey@3x.png",
+      "filename" : "sort_down_grey@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

+ 0 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_up_grey.imageset/sort_up_grey@2x.png → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_down_grey.imageset/sort_down_grey@2x.png


+ 0 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_up_grey.imageset/sort_up_grey@3x.png → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/Feedback/sort_down_grey.imageset/sort_down_grey@3x.png


+ 12 - 4
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h

@@ -480,7 +480,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 // /api-student/homework/detail/{courseId}
 
-/// 陪练课课后作业信息详情
+/// 趣纠课课后作业信息详情
 /// @param get get
 /// @param courseId 课程信息
 /// @param success 成功
@@ -497,7 +497,7 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)homeSubmitAction:(NSString *)post courseScheduleId:(NSString *)courseScheduleId attachment:(NSString *)attachment success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
-#pragma mark ------ 陪练课评价
+#pragma mark ------ 趣纠课评价
 // /api-student/courseSchedule/selectReplied
 
 /// 查询评价详情
@@ -510,7 +510,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 // /api-student/courseSchedule/replied
 
-/// 评价陪练
+/// 评价趣纠
 /// @param post post
 /// @param courseScheduleId 课程编号
 /// @param courseGroupId 课程组编号
@@ -523,7 +523,7 @@ NS_ASSUME_NONNULL_BEGIN
 #pragma mark ----- 我的课程
 // /api-student/courseSchedule/queryStudentPracticeCourse
 
-/// 我的课程-陪练
+/// 我的课程-趣纠
 /// @param post post
 /// @param classMonth 月份 yyyy-MM
 /// @param status 课程状态(NOT_START:未开始 ING:进行中 COMPLETE:已完成 CANCEL:已取消)
@@ -1138,6 +1138,14 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)courseScheduleListRequest:(NSString *)post courseGroupId:(NSString *)courseGroupId classMonth:(NSString *)classMonth attendanceStatus:(NSString *)attendanceStatus courseStatus:(NSString *)status success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+// /courseGroup/queryStudentByGroupId
+
+/// 查询课程组关联学生
+/// @param post post
+/// @param courseGroupId 课程组ID
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryStudentByGroupIdRequest:(NSString *)post courseGroupId:(NSString *)courseGroupId success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 @end
 
 NS_ASSUME_NONNULL_END

+ 20 - 4
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m

@@ -1009,7 +1009,7 @@
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 
-#pragma mark ------ 陪练课评价
+#pragma mark ------ 趣纠课评价
 // /api-student/courseSchedule/selectReplied
 
 /// 查询评价详情
@@ -1030,7 +1030,7 @@
 
 // /api-student/courseSchedule/replied
 
-/// 评价陪练
+/// 评价趣纠
 /// @param post post
 /// @param courseScheduleId 课程编号
 /// @param courseGroupId 课程组编号
@@ -1074,7 +1074,7 @@
 
 // /api-student/homework/detail/{courseId}
 
-/// 陪练课课后作业信息详情
+/// 趣纠课课后作业信息详情
 /// @param get get
 /// @param courseId 课程信息
 /// @param success 成功
@@ -1104,7 +1104,7 @@
 #pragma mark ----- 我的课程
 // /api-student/courseSchedule/queryStudentPracticeCourse
 
-/// 我的课程-陪练
+/// 我的课程-趣纠
 /// @param post post
 /// @param classMonth 月份 yyyy-MM
 /// @param status 课程状态(NOT_START:未开始 ING:进行中 COMPLETE:已完成 CANCEL:已取消)
@@ -2166,4 +2166,20 @@
     [parm setValue:status forKey:@"status"];
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
+
+// /courseGroup/queryStudentByGroupId
+
+/// 查询课程组关联学生
+/// @param post post
+/// @param courseGroupId 课程组ID
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryStudentByGroupIdRequest:(NSString *)post courseGroupId:(NSString *)courseGroupId success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodForm];
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-student/courseGroup/queryStudentByGroupId"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:courseGroupId forKey:@"groupId"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 @end

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.h

@@ -8,7 +8,7 @@
 #import "KSBaseViewController.h"
 
 NS_ASSUME_NONNULL_BEGIN
-/// 陪练课详情
+/// 趣纠课详情
 @interface AccompanyDetailViewController : KSBaseViewController
 
 @property (nonatomic, strong) NSString *courseId;

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/View/AccompanyCourseInfoCell.m

@@ -39,7 +39,7 @@
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     NSDate *startDate = [formatter dateFromString:beginTime];
     NSDate *endDate = [formatter dateFromString:endTime];
-    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
     NSString *lessonBegin = [formatter stringFromDate:startDate];
     [formatter setDateFormat:@"HH:mm"];
     NSString *lessonEnd = [formatter stringFromDate:endDate];

+ 58 - 5
KulexiuForStudent/KulexiuForStudent/Module/Course/Controller/CourseViewController.m

@@ -18,8 +18,10 @@
 #import "AccompanyCourseCell.h"
 #import "CourseForLiveCell.h"
 #import "AccompanyDetailViewController.h"
+#import "VipCouseDetailViewController.h"
 #import "MusicRoomCourseCell.h"
 #import "MusicRoomDetailViewController.h"
+#import "VIPCourseCell.h"
 
 @interface CourseViewController ()<UITableViewDataSource,UITableViewDelegate,FSCalendarDataSource,FSCalendarDelegate,UIGestureRecognizerDelegate>
 {
@@ -49,9 +51,13 @@
 
 @property (nonatomic, assign) BOOL isPickerChoose; // 是否选择的月份
 
-@property (nonatomic, assign) NSInteger practiceStartTime;  // 陪练课开课前可进入时间配置(分钟)
+@property (nonatomic, assign) NSInteger vipStartTime; // VIP课开课前可进入时间配置(分钟)
 
-@property (nonatomic, assign) NSInteger practiceEndTime;    // 陪练课结束后退出时间配置(分钟)
+@property (nonatomic, assign) NSInteger vipEndTime; // VIP课结束后退出时间配置(分钟)
+
+@property (nonatomic, assign) NSInteger practiceStartTime;  // 趣纠课开课前可进入时间配置(分钟)
+
+@property (nonatomic, assign) NSInteger practiceEndTime;    // 趣纠课结束后退出时间配置(分钟)
 
 @property (nonatomic, assign) NSInteger liveStartTime;      // 直播课开课前可进入时间配置(分钟)
 
@@ -339,6 +345,8 @@
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             // 配置信息
             NSDictionary *config = [[dic ks_dictionaryValueForKey:@"data"] ks_dictionaryValueForKey:@"sysConfig"];
+            self.vipStartTime = [config ks_integerValueForKey:@"vipStartTime"];
+            self.vipEndTime = [config ks_integerValueForKey:@"vipEndTime"];
             self.practiceStartTime = [config ks_integerValueForKey:@"practiceStartTime"];
             self.practiceEndTime = [config ks_integerValueForKey:@"practiceEndTime"];
             self.liveStartTime = [config ks_integerValueForKey:@"liveStartTime"];
@@ -405,9 +413,17 @@
     return  self.dataArray.count;
 }
 
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    TableCourseModel *model = self.dataArray[indexPath.row];
+    if ([model.courseType isEqualToString:@"PIANO_ROOM_CLASS"]) {
+       return 127.0f;
+    }
+    return 137.0f;
+}
+
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     TableCourseModel *model = self.dataArray[indexPath.row];
-    if ([model.courseType isEqualToString:@"PRACTICE"]) { // 陪练课
+    if ([model.courseType isEqualToString:@"PRACTICE"]) { // 趣纠
         AccompanyCourseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AccompanyCourseCell"];
         MJWeakSelf;
         [cell configWithCourseMessage:model beforeTime:self.practiceStartTime actionCallback:^(ACCOMPANY_TYPE type, TableCourseModel * _Nonnull courseModel) {
@@ -415,6 +431,14 @@
         }];
         return cell;
     }
+    else if ([model.courseType isEqualToString:@"VIP"]) { // 定制课
+        VIPCourseCell *cell = [tableView dequeueReusableCellWithIdentifier:@"VIPCourseCell"];
+        MJWeakSelf;
+        [cell configWithCourseMessage:model beforeTime:self.vipStartTime actionCallback:^(ACCOMPANY_TYPE type, TableCourseModel * _Nonnull courseModel) {
+            [weakSelf vipLessionAction:type source:courseModel];
+        }];
+        return cell;
+    }
     else if ([model.courseType isEqualToString:@"LIVE"]) { // 直播课
         CourseForLiveCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CourseForLiveCell"];
         MJWeakSelf;
@@ -435,9 +459,12 @@
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     TableCourseModel *model = self.dataArray[indexPath.row];
-    if ([model.courseType isEqualToString:@"PRACTICE"]) { // 陪练
+    if ([model.courseType isEqualToString:@"PRACTICE"]) { // 趣纠
         [self showAccompanyDetailAction:model];
     }
+    else if ([model.courseType isEqualToString:@"VIP"]) {
+        [self showVipDetailAction:model];
+    }
     else if ([model.courseType isEqualToString:@"LIVE"]) { // 直播课详情
         [self liveCourseDetail:model.courseId courseGroupId:model.courseGoupId];
     }
@@ -466,6 +493,23 @@
     }
 }
 
+- (void)vipLessionAction:(ACCOMPANY_TYPE)action source:(TableCourseModel *)source {
+    switch (action) {
+        case ACCOMPANY_TYPE_CHAT:
+        {
+            [self chatAction:source.imUserId groupName:source.name isGroup:NO];
+        }
+            break;
+        case ACCOMPANY_DETAIL:
+        {
+            [self showVipDetailAction:source];
+        }
+            break;
+        default:
+            break;
+    }
+}
+
 - (void)showAccompanyDetailAction:(TableCourseModel *)source {
     AccompanyDetailViewController *detailVC = [[AccompanyDetailViewController alloc] init];
     detailVC.courseId = source.courseId;
@@ -473,6 +517,13 @@
     [self.navigationController pushViewController:detailVC animated:YES];
 }
 
+- (void)showVipDetailAction:(TableCourseModel *)source {
+    AccompanyDetailViewController *detailVC = [[AccompanyDetailViewController alloc] init];
+    detailVC.courseId = source.courseId;
+    detailVC.courseGroupId = source.courseGoupId;
+    [self.navigationController pushViewController:detailVC animated:YES];
+}
+
 - (void)showMusicRoomDetail:(TableCourseModel *)source {
     MusicRoomDetailViewController *detailVC = [[MusicRoomDetailViewController alloc] init];
     detailVC.courseId = source.courseId;
@@ -593,6 +644,7 @@
     }
     return _dateFormatter;
 }
+
 - (UITableView *)tableView {
     if (!_tableView) {
         _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
@@ -602,10 +654,11 @@
         _tableView.backgroundColor = [UIColor clearColor];
         _tableView.showsVerticalScrollIndicator = NO;
         _tableView.showsHorizontalScrollIndicator = NO;
-        _tableView.rowHeight = 127.0f;
         [_tableView registerNib:[UINib nibWithNibName:@"AccompanyCourseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"AccompanyCourseCell"];
         [_tableView registerNib:[UINib nibWithNibName:@"CourseForLiveCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"CourseForLiveCell"];
         [_tableView registerNib:[UINib nibWithNibName:@"MusicRoomCourseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MusicRoomCourseCell"];
+        [_tableView registerNib:[UINib nibWithNibName:@"VIPCourseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"VIPCourseCell"];
+        
         UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 15)];
         bottomView.backgroundColor = [UIColor clearColor];
         _tableView.tableFooterView = bottomView;

+ 24 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/Model/GroupCourseStudentModel.h

@@ -0,0 +1,24 @@
+//
+//  GroupCourseStudentModel.h
+//
+//  Created by Steven  on 2024/11/25
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface GroupCourseStudentModel : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, strong) NSString *userName;
+@property (nonatomic, strong) NSString *studentId;
+@property (nonatomic, strong) NSString *studentName;
+@property (nonatomic, strong) NSString *imUserId;
+@property (nonatomic, strong) NSString *avatar;
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 127 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/Model/GroupCourseStudentModel.m

@@ -0,0 +1,127 @@
+//
+//  GroupCourseStudentModel.m
+//
+//  Created by Steven  on 2024/11/25
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import "GroupCourseStudentModel.h"
+
+
+NSString *const kGroupCourseStudentModelUserName = @"userName";
+NSString *const kGroupCourseStudentModelStudentId = @"studentId";
+NSString *const kGroupCourseStudentModelStudentName = @"studentName";
+NSString *const kGroupCourseStudentModelImUserId = @"imUserId";
+NSString *const kGroupCourseStudentModelAvatar = @"avatar";
+
+
+@interface GroupCourseStudentModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation GroupCourseStudentModel
+
+@synthesize userName = _userName;
+@synthesize studentId = _studentId;
+@synthesize studentName = _studentName;
+@synthesize imUserId = _imUserId;
+@synthesize avatar = _avatar;
+
+
++ (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.userName = [self objectOrNilForKey:kGroupCourseStudentModelUserName fromDictionary:dict];
+            self.studentId = [self objectOrNilForKey:kGroupCourseStudentModelStudentId fromDictionary:dict];
+            self.studentName = [self objectOrNilForKey:kGroupCourseStudentModelStudentName fromDictionary:dict];
+            self.imUserId = [self objectOrNilForKey:kGroupCourseStudentModelImUserId fromDictionary:dict];
+            self.avatar = [self objectOrNilForKey:kGroupCourseStudentModelAvatar fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.userName forKey:kGroupCourseStudentModelUserName];
+    [mutableDict setValue:self.studentId forKey:kGroupCourseStudentModelStudentId];
+    [mutableDict setValue:self.studentName forKey:kGroupCourseStudentModelStudentName];
+    [mutableDict setValue:self.imUserId forKey:kGroupCourseStudentModelImUserId];
+    [mutableDict setValue:self.avatar forKey:kGroupCourseStudentModelAvatar];
+
+    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.userName = [aDecoder decodeObjectForKey:kGroupCourseStudentModelUserName];
+    self.studentId = [aDecoder decodeObjectForKey:kGroupCourseStudentModelStudentId];
+    self.studentName = [aDecoder decodeObjectForKey:kGroupCourseStudentModelStudentName];
+    self.imUserId = [aDecoder decodeObjectForKey:kGroupCourseStudentModelImUserId];
+    self.avatar = [aDecoder decodeObjectForKey:kGroupCourseStudentModelAvatar];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_userName forKey:kGroupCourseStudentModelUserName];
+    [aCoder encodeObject:_studentId forKey:kGroupCourseStudentModelStudentId];
+    [aCoder encodeObject:_studentName forKey:kGroupCourseStudentModelStudentName];
+    [aCoder encodeObject:_imUserId forKey:kGroupCourseStudentModelImUserId];
+    [aCoder encodeObject:_avatar forKey:kGroupCourseStudentModelAvatar];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    GroupCourseStudentModel *copy = [[GroupCourseStudentModel alloc] init];
+    
+    if (copy) {
+
+        copy.userName = [self.userName copyWithZone:zone];
+        copy.studentId = [self.studentId copyWithZone:zone];
+        copy.studentName = [self.studentName copyWithZone:zone];
+        copy.imUserId = [self.imUserId copyWithZone:zone];
+        copy.avatar = [self.avatar copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 28 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicGroupStudenListCell.h

@@ -0,0 +1,28 @@
+//
+//  MusicGroupStudenListCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/25.
+//
+
+#import <UIKit/UIKit.h>
+#import "GroupCourseStudentModel.h"
+
+typedef NS_ENUM(NSInteger, STUDENTCELL_ROW_INDEX) {
+    STUDENTCELL_ROW_INDEX_TOP,   // 顶部
+    STUDENTCELL_ROW_INDEX_MIDDLE, // 中间
+    STUDENTCELL_ROW_INDEX_BOTTOM, // 底部
+    STUDENTCELL_ROW_INDEX_SINGLE, // 只有一个
+};
+
+typedef void(^ChatStudentCallback)(NSString * _Nonnull imUserId);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MusicGroupStudenListCell : UITableViewCell
+
+- (void)configWithRowIndex:(STUDENTCELL_ROW_INDEX)rowIndex source:(GroupCourseStudentModel *)model callback:(ChatStudentCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 96 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicGroupStudenListCell.m

@@ -0,0 +1,96 @@
+//
+//  MusicGroupStudenListCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/25.
+//
+
+#import "MusicGroupStudenListCell.h"
+
+@interface MusicGroupStudenListCell ()
+
+@property (weak, nonatomic) IBOutlet UIView *bgView;
+
+@property (weak, nonatomic) IBOutlet UIView *lineView;
+
+@property (weak, nonatomic) IBOutlet UIImageView *avatar;
+
+@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
+
+@property (weak, nonatomic) IBOutlet UIView *subjectView;
+
+@property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
+
+@property (nonatomic, strong) GroupCourseStudentModel *sourceModel;
+
+@property (nonatomic, copy) ChatStudentCallback callback;
+
+@end
+
+@implementation MusicGroupStudenListCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+}
+
+- (void)configWithRowIndex:(STUDENTCELL_ROW_INDEX)rowIndex source:(GroupCourseStudentModel *)model callback:(ChatStudentCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+    self.sourceModel = model;
+    [self evaluateWithRowIndex:rowIndex];
+    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
+    self.nameLabel.text = [NSString returnNoNullStringWithString:model.userName];
+    
+}
+
+- (void)evaluateWithRowIndex:(STUDENTCELL_ROW_INDEX)rowIndex {
+    switch (rowIndex) {
+        case STUDENTCELL_ROW_INDEX_TOP:
+        {
+            self.bgView.layer.cornerRadius = 10.0f;
+            self.bgView.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner;
+            self.lineView.hidden = NO;
+        }
+            break;
+        case STUDENTCELL_ROW_INDEX_MIDDLE:
+        {
+            self.bgView.layer.cornerRadius = 0.0f;
+            self.lineView.hidden = NO;
+        }
+            break;
+        case STUDENTCELL_ROW_INDEX_BOTTOM:
+        {
+            self.bgView.layer.cornerRadius = 10.0f;
+            self.bgView.layer.maskedCorners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner;
+            self.lineView.hidden = YES;
+        }
+            break;
+        case STUDENTCELL_ROW_INDEX_SINGLE:
+        {
+            self.bgView.layer.cornerRadius = 10.0f;
+            self.bgView.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner |  kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner;
+            self.lineView.hidden = YES;
+        }
+            break;
+        default:
+            break;
+    }
+}
+
+- (IBAction)chat:(id)sender {
+    if (self.callback) {
+        self.callback(self.sourceModel.imUserId);
+    }
+}
+
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 133 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicGroupStudenListCell.xib

@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="111" id="KGk-i7-Jjw" customClass="MusicGroupStudenListCell">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="62"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="320" height="62"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YJa-Sz-dgK">
+                        <rect key="frame" x="14" y="0.0" width="292" height="62"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="ptD-A6-acq">
+                                <rect key="frame" x="12" y="11" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="JB3-Pb-p94"/>
+                                    <constraint firstAttribute="width" constant="40" id="RNL-Tu-a8Y"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="20"/>
+                                    </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="u7Z-0Z-7wM">
+                                <rect key="frame" x="62" y="11" width="42" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="I1E-hY-TXQ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view contentMode="scaleToFill" horizontalCompressionResistancePriority="752" translatesAutoresizingMaskIntoConstraints="NO" id="Ied-Eg-5IC">
+                                <rect key="frame" x="62" y="31" width="38" height="17"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TAr-Dy-ehb">
+                                        <rect key="frame" x="4" y="2.6666666666666643" width="30" height="12"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                        <color key="textColor" red="1" green="0.54901960780000003" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.94509803920000002" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="3tt-T6-zqe"/>
+                                    <constraint firstAttribute="trailing" secondItem="TAr-Dy-ehb" secondAttribute="trailing" constant="4" id="5sY-vO-yE2"/>
+                                    <constraint firstItem="TAr-Dy-ehb" firstAttribute="centerY" secondItem="Ied-Eg-5IC" secondAttribute="centerY" id="FA7-Fg-KU7"/>
+                                    <constraint firstItem="TAr-Dy-ehb" firstAttribute="leading" secondItem="Ied-Eg-5IC" secondAttribute="leading" constant="4" id="s4r-TW-L2z"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="4"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
+                            <button hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ri9-ZU-k37">
+                                <rect key="frame" x="248" y="9" width="44" height="44"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="44" id="Lf8-uH-Zjc"/>
+                                    <constraint firstAttribute="width" constant="44" id="X2W-PK-9mN"/>
+                                </constraints>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" image="chat_chat"/>
+                                <connections>
+                                    <action selector="chat:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="CKY-qh-kRY"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VJs-9e-FQR">
+                                <rect key="frame" x="12" y="61" width="268" height="1"/>
+                                <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="rEK-A1-dgq"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="Ied-Eg-5IC" firstAttribute="top" secondItem="u7Z-0Z-7wM" secondAttribute="bottom" constant="3" id="1Kg-Iv-mr8"/>
+                            <constraint firstItem="u7Z-0Z-7wM" firstAttribute="top" secondItem="ptD-A6-acq" secondAttribute="top" id="7I9-fy-arW"/>
+                            <constraint firstItem="ri9-ZU-k37" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Ied-Eg-5IC" secondAttribute="trailing" id="HJ7-SQ-w12"/>
+                            <constraint firstItem="u7Z-0Z-7wM" firstAttribute="leading" secondItem="ptD-A6-acq" secondAttribute="trailing" constant="10" id="IVR-9L-ADJ"/>
+                            <constraint firstItem="ptD-A6-acq" firstAttribute="centerY" secondItem="YJa-Sz-dgK" secondAttribute="centerY" id="IZu-rg-MOK"/>
+                            <constraint firstAttribute="trailing" secondItem="ri9-ZU-k37" secondAttribute="trailing" id="L8n-Xc-wg6"/>
+                            <constraint firstAttribute="bottom" secondItem="VJs-9e-FQR" secondAttribute="bottom" id="P3t-sh-m7b"/>
+                            <constraint firstAttribute="trailing" secondItem="VJs-9e-FQR" secondAttribute="trailing" constant="12" id="RMD-7M-vuH"/>
+                            <constraint firstItem="ri9-ZU-k37" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="u7Z-0Z-7wM" secondAttribute="trailing" id="Rv9-Rv-lRl"/>
+                            <constraint firstItem="VJs-9e-FQR" firstAttribute="leading" secondItem="YJa-Sz-dgK" secondAttribute="leading" constant="12" id="SLO-NK-06K"/>
+                            <constraint firstItem="ptD-A6-acq" firstAttribute="leading" secondItem="YJa-Sz-dgK" secondAttribute="leading" constant="12" id="gnd-Zm-Kke"/>
+                            <constraint firstItem="Ied-Eg-5IC" firstAttribute="leading" secondItem="u7Z-0Z-7wM" secondAttribute="leading" id="iAK-gb-RHm"/>
+                            <constraint firstItem="ri9-ZU-k37" firstAttribute="centerY" secondItem="YJa-Sz-dgK" secondAttribute="centerY" id="imO-HP-OPG"/>
+                        </constraints>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="bottom" secondItem="YJa-Sz-dgK" secondAttribute="bottom" id="I60-R5-AQz"/>
+                    <constraint firstAttribute="trailing" secondItem="YJa-Sz-dgK" secondAttribute="trailing" constant="14" id="knx-FH-XYZ"/>
+                    <constraint firstItem="YJa-Sz-dgK" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="mhs-Mx-vek"/>
+                    <constraint firstItem="YJa-Sz-dgK" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="qRw-kV-PaR"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="avatar" destination="ptD-A6-acq" id="GfX-qO-Dtz"/>
+                <outlet property="bgView" destination="YJa-Sz-dgK" id="QA7-a9-4GV"/>
+                <outlet property="lineView" destination="VJs-9e-FQR" id="cvJ-JO-26l"/>
+                <outlet property="nameLabel" destination="u7Z-0Z-7wM" id="1C6-EE-E3V"/>
+                <outlet property="subjectLabel" destination="TAr-Dy-ehb" id="n3a-Pr-h2T"/>
+                <outlet property="subjectView" destination="Ied-Eg-5IC" id="iWz-Tk-fBW"/>
+            </connections>
+            <point key="canvasLocation" x="51.908396946564885" y="43.309859154929576"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="chat_chat" width="19" height="18"/>
+        <image name="student_avatar" width="150" height="150"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomCourseInfoCell.m

@@ -38,7 +38,7 @@
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     NSDate *startDate = [formatter dateFromString:beginTime];
     NSDate *endDate = [formatter dateFromString:endTime];
-    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
     NSString *lessonBegin = [formatter stringFromDate:startDate];
     [formatter setDateFormat:@"HH:mm"];
     NSString *lessonEnd = [formatter stringFromDate:endDate];

+ 226 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomStudentPageView.m

@@ -6,9 +6,235 @@
 //
 
 #import "MusicRoomStudentPageView.h"
+#import "StateView.h"
+#import "Reachability.h"
+#import "MusicGroupStudenListCell.h"
+#import "GroupCourseStudentModel.h"
+#import "KSChatConversationViewController.h"
+
+@interface MusicRoomStudentPageView ()<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic, strong) NSMutableArray *dataArray;
+
+@property (nonatomic, strong) StateView *promptView;
+@property (nonatomic, strong) UIView *promptPlaceView;
+
+@property (nonatomic, assign) BOOL networkAvaiable; // 网络是否可用
+
+@end
 
 @implementation MusicRoomStudentPageView
 
+- (instancetype)initWithFrame:(CGRect)frame {
+    self =  [super initWithFrame:frame];
+    if (self) {
+        self.backgroundColor = [UIColor clearColor];
+        self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height) style:UITableViewStylePlain];
+        self.tableView.backgroundColor = [UIColor clearColor];
+        self.tableView.showsVerticalScrollIndicator = NO;
+        
+        self.tableView.dataSource = self;
+        self.tableView.delegate = self;
+        
+        self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        [self addSubview:self.tableView];
+        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
+        [self.tableView registerNib:[UINib nibWithNibName:@"MusicGroupStudenListCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MusicGroupStudenListCell"];
+        
+        
+        UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KPortraitWidth, iPhoneXSafeBottomMargin)];
+        bottomView.backgroundColor = [UIColor clearColor];
+        self.tableView.tableFooterView = bottomView;
+        
+        MJWeakSelf;
+        self.tableView.mj_header = [KSGifRefreshHeader headerWithRefreshingBlock:^{
+            [weakSelf resetParamenter];
+            [weakSelf requestData];
+        }];
+    }
+    return self;
+}
+
+- (void)refreshAndRequestData {
+    [self resetParamenter];
+    [self requestData];
+}
+
+- (void)resetParamenter {
+    self.dataArray = [NSMutableArray array];
+    [self.tableView.mj_footer resetNoMoreData];
+    [self setPromptString:@"暂无内容" imageName:@"empty_course" inView:self.tableView];
+    [self.tableView reloadData];
+}
+
+- (void)endRefresh {
+    @weakObj(self);
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        @strongObj(self);
+        [self.tableView.mj_header endRefreshing];
+    });
+}
+
+
+- (void)requestData {
+    [KSNetworkingManager queryStudentByGroupIdRequest:KS_POST courseGroupId:self.courseGroupId success:^(NSDictionary * _Nonnull dic) {
+        [self endRefresh];
+        if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
+            NSArray *sourceArray = [dic ks_arrayValueForKey:@"data"];
+            for (NSDictionary *parm in sourceArray) {
+                GroupCourseStudentModel *model = [[GroupCourseStudentModel alloc] initWithDictionary:parm];
+                [self.dataArray addObject:model];
+            }
+        }
+        else {
+            [LOADING_MANAGER MBShowAUTOHidingInWindow: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 {
+    [self.tableView.mj_header beginRefreshing];
+}
+
+- (void)beginFirstRefresh {
+    if (!self.isHeaderRefreshed) {
+        [self beginRefreshImmediately];
+    }
+}
+- (void)selectCellAtIndexPath:(NSIndexPath *)indexPath {
+    
+    if (self.lastSelectedIndexPath == indexPath) {
+        return;
+    }
+    if (self.lastSelectedIndexPath != nil) {
+        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:self.lastSelectedIndexPath];
+        [cell setSelected:NO animated:NO];
+    }
+    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
+    [cell setSelected:YES animated:NO];
+    self.lastSelectedIndexPath = indexPath;
+}
+
+- (void)layoutSubviews {
+    [super layoutSubviews];
+    [self.tableView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.mas_top).offset(12);
+        make.left.right.bottom.mas_equalTo(self);
+    }];
+}
+
+#pragma mark - UITableViewDataSource
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return self.dataArray.count;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    return 64.0f;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    GroupCourseStudentModel *model = self.dataArray[indexPath.row];
+    
+    MusicGroupStudenListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicGroupStudenListCell"];
+    STUDENTCELL_ROW_INDEX cellIndex = STUDENTCELL_ROW_INDEX_MIDDLE;
+    if (self.dataArray.count == 1) {
+        cellIndex = STUDENTCELL_ROW_INDEX_SINGLE;
+    }
+    else {
+        if (indexPath.row == 0) {
+            cellIndex = STUDENTCELL_ROW_INDEX_TOP;
+        }
+        else if (indexPath.row == self.dataArray.count - 1) {
+            cellIndex = STUDENTCELL_ROW_INDEX_BOTTOM;
+        }
+    }
+    MJWeakSelf;
+    [cell configWithRowIndex:cellIndex source:model callback:^(NSString * _Nonnull imUserId) {
+        [weakSelf chatStudent:imUserId];
+    }];
+    
+    return cell;
+}
+
+- (void)chatStudent:(NSString *)imUserId {
+    TUIChatConversationModel *model = [[TUIChatConversationModel alloc] init];
+    model.userID = imUserId;
+    KSChatConversationViewController *ctrl = [[KSChatConversationViewController alloc] init];
+    ctrl.conversation = model;
+    [self.naviController pushViewController:ctrl animated:YES];
+}
+
+/**
+ 设置没有数据时的显示
+ 
+ @param promptString 提示语
+ @param imgName 图片名称
+ @param view 显示在什么地方
+ */
+- (void)setPromptString:(NSString *)promptString imageName:(NSString *)imgName inView:(UIView *)view {
+    if (self.promptView != nil) {
+        [self.promptView removeFromSuperview];
+    }
+    else {
+        self.promptView = [[StateView alloc]init];
+        self.promptView.frame = CGRectMake(0, 0, KPortraitWidth, KPortraitHeight - 300);
+    }
+    _promptPlaceView = view;
+    //当请求不到数据时 ,自定义提示view 将会出现;
+    self.promptView.imageName = imgName;
+    self.promptView.alpha = 0.0f;
+    [self.promptView setText:promptString];
+    [view addSubview:self.promptView];
+}
+
+// 结束刷新后调用方法
+- (void)changePromptLabelStateWithArray:(NSMutableArray *)array {
+    NSInteger count;
+    if (array.count) {
+        count = array.count;
+    } else {
+        count = 0;
+    }
+    
+    [UIView animateWithDuration:0.1 animations:^{
+        [[self promptView] setAlpha:count ? 0.0f :1.0f];
+    }];
+}
+
+- (BOOL)networkAvaiable {
+    return [self checkNetworkAvaiable];
+}
+
+- (BOOL)checkNetworkAvaiable {
+    BOOL isExistenceNetwork = YES;
+    Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
+    switch ([reach currentReachabilityStatus]) {
+        case NotReachable:
+            isExistenceNetwork = NO;
+            //NSLog(@"notReachable");
+            break;
+        case ReachableViaWiFi:
+            isExistenceNetwork = YES;
+            //NSLog(@"WIFI");
+            break;
+        case ReachableViaWWAN:
+            isExistenceNetwork = YES;
+            //NSLog(@"3G");
+            break;
+    }
+    return isExistenceNetwork;
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 6 - 25
KulexiuForStudent/KulexiuForStudent/Module/Course/View/AccompanyCourseCell.m

@@ -6,8 +6,11 @@
 //
 
 #import "AccompanyCourseCell.h"
-
+#import "UIButton+EnlargeEdge.h"
 @interface AccompanyCourseCell ()
+
+@property (weak, nonatomic) IBOutlet UIButton *chatButton;
+
 @property (weak, nonatomic) IBOutlet UILabel *courseTime;
 @property (weak, nonatomic) IBOutlet UILabel *courseStatus;
 @property (weak, nonatomic) IBOutlet UIImageView *studentAvatar;
@@ -39,6 +42,7 @@
     [super awakeFromNib];
     // Initialization code
     self.selectionStyle = UITableViewCellSelectionStyleNone;
+    [self.chatButton setEnlargeEdgeWithTop:0 right:10 bottom:0 left:10];
 }
 
 - (void)configWithSource:(AccompanyLessonModel *)model actionCallback:(AccompanyCourseCallback)callback {
@@ -60,38 +64,15 @@
         self.courseStatus.textColor = HexRGB(0xff802C);
         
         self.type = ACCOMPANY_DETAIL;
-        
-//        [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)];
-//        }
     }
 }
 
@@ -177,7 +158,7 @@
     [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"];
+    [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]];

+ 116 - 89
KulexiuForStudent/KulexiuForStudent/Module/Course/View/AccompanyCourseCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -12,109 +12,108 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="AccompanyCourseCell">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="127"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="137"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
-                <rect key="frame" x="0.0" y="0.0" width="414" height="127"/>
+                <rect key="frame" x="0.0" y="0.0" width="414" height="137"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hEp-yz-qU7">
-                        <rect key="frame" x="14" y="0.0" width="386" height="115"/>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="z9H-5R-6IZ">
+                        <rect key="frame" x="14" y="0.0" width="386" height="125"/>
                         <subviews>
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wXs-1T-7ew">
-                                <rect key="frame" x="10" y="38" width="366" height="1"/>
-                                <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZUe-qb-byK">
+                                <rect key="frame" x="12" y="38" width="362" height="1"/>
+                                <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="1" id="r83-A3-xqW"/>
+                                    <constraint firstAttribute="height" constant="1" id="9Jd-Sl-9jO"/>
                                 </constraints>
                             </view>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_time" translatesAutoresizingMaskIntoConstraints="NO" id="3FJ-PP-t5u">
-                                <rect key="frame" x="11" y="12" width="16" height="16"/>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_time" translatesAutoresizingMaskIntoConstraints="NO" id="K3E-6f-5bl">
+                                <rect key="frame" x="12" y="11" width="16" height="16"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="16" id="kGT-bb-CIU"/>
-                                    <constraint firstAttribute="height" constant="16" id="tQi-IQ-bdk"/>
+                                    <constraint firstAttribute="width" constant="16" id="Ul4-pH-BVx"/>
+                                    <constraint firstAttribute="height" constant="16" id="UnF-tv-ieq"/>
                                 </constraints>
                             </imageView>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y3h-K3-zJ8">
-                                <rect key="frame" x="34" y="20" width="0.0" height="0.0"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="2021-09-17 14:00~14:25" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zYI-Wx-jRP">
+                                <rect key="frame" x="35" y="10" width="151.5" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="WpX-SM-tYe"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XKr-bP-maa">
-                                <rect key="frame" x="325" y="20" width="50" height="0.0"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="50" id="cYb-s7-ndU"/>
-                                </constraints>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" text="进行中" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Uu-YA-WKJ">
+                                <rect key="frame" x="332" y="10.5" width="42" height="17"/>
                                 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
-                                <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="foX-kQ-NZi">
-                                <rect key="frame" x="11" y="56" width="47" height="47"/>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="S4f-Ij-ptl">
+                                <rect key="frame" x="11" y="55" width="54" height="54"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="47" id="cRs-VR-QQw"/>
-                                    <constraint firstAttribute="width" constant="47" id="t7w-Ui-5tY"/>
+                                    <constraint firstAttribute="width" constant="54" id="46R-1t-gpC"/>
+                                    <constraint firstAttribute="height" constant="54" id="W06-qQ-chz"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="5"/>
+                                        <real key="value" value="8"/>
                                     </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="eJa-81-RrN">
-                                <rect key="frame" x="68" y="56" width="0.0" height="24"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张豆豆" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="T2u-fv-gSp">
+                                <rect key="frame" x="75" y="57" width="48" height="22"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="24" id="u07-aD-Pru"/>
+                                    <constraint firstAttribute="height" constant="22" id="cD9-cy-mF0"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
-                                <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dGh-TI-XLP">
-                                <rect key="frame" x="68" y="83" width="10" height="20"/>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8NS-o2-naR">
+                                <rect key="frame" x="124" y="87" width="45" height="20"/>
                                 <subviews>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mz9-eT-OVS">
-                                        <rect key="frame" x="5" y="0.0" width="0.0" height="20"/>
-                                        <fontDescription key="fontDescription" type="system" pointSize="11"/>
-                                        <color key="textColor" red="1" green="0.5490196078431373" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="igT-B2-tre">
+                                        <rect key="frame" x="6" y="0.0" width="33" height="20"/>
+                                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
+                                        <color key="textColor" red="1" green="0.61960784310000006" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                         <nil key="highlightedColor"/>
                                     </label>
                                 </subviews>
-                                <color key="backgroundColor" red="1" green="0.94509803921568625" blue="0.87058823529411766" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="backgroundColor" red="1" green="0.95686274510000002" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="bottom" secondItem="mz9-eT-OVS" secondAttribute="bottom" id="5gk-Fm-zz0"/>
-                                    <constraint firstItem="mz9-eT-OVS" firstAttribute="leading" secondItem="dGh-TI-XLP" secondAttribute="leading" constant="5" id="D7V-i6-966"/>
-                                    <constraint firstItem="mz9-eT-OVS" firstAttribute="top" secondItem="dGh-TI-XLP" secondAttribute="top" id="Hfm-VX-vtc"/>
-                                    <constraint firstAttribute="height" constant="20" id="UmQ-Xh-8WZ"/>
-                                    <constraint firstAttribute="trailing" secondItem="mz9-eT-OVS" secondAttribute="trailing" constant="5" id="z12-0a-6PU"/>
+                                    <constraint firstItem="igT-B2-tre" firstAttribute="leading" secondItem="8NS-o2-naR" secondAttribute="leading" constant="6" id="Nav-Bp-COD"/>
+                                    <constraint firstAttribute="height" constant="20" id="PC9-54-mhp"/>
+                                    <constraint firstAttribute="trailing" secondItem="igT-B2-tre" secondAttribute="trailing" constant="6" id="V5q-i5-f5m"/>
+                                    <constraint firstItem="igT-B2-tre" firstAttribute="top" secondItem="8NS-o2-naR" secondAttribute="top" id="bnP-gm-gXU"/>
+                                    <constraint firstAttribute="bottom" secondItem="igT-B2-tre" secondAttribute="bottom" id="e6A-iE-Fna"/>
                                 </constraints>
                                 <userDefinedRuntimeAttributes>
                                     <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                        <real key="value" value="4"/>
+                                        <real key="value" value="3"/>
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                             </view>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NOA-EQ-Fjn">
-                                <rect key="frame" x="68" y="48" width="40" height="40"/>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qQB-pf-JWg">
+                                <rect key="frame" x="129" y="48" width="19" height="40"/>
                                 <constraints>
-                                    <constraint firstAttribute="height" constant="40" id="87u-cE-Y5V"/>
-                                    <constraint firstAttribute="width" constant="40" id="gOV-9c-ibN"/>
+                                    <constraint firstAttribute="height" constant="40" id="ST4-qt-b3I"/>
                                 </constraints>
                                 <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                 <state key="normal" image="course_chat"/>
                                 <connections>
-                                    <action selector="chatAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="oA7-RL-IvS"/>
+                                    <action selector="chatAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="fsl-nW-gD0"/>
                                 </connections>
                             </button>
-                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="42d-Nb-iRS">
-                                <rect key="frame" x="304" y="67" width="70" height="28"/>
-                                <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pfw-VM-UtE">
+                                <rect key="frame" x="304" y="81" width="70" height="28"/>
+                                <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="70" id="FVJ-kk-We8"/>
-                                    <constraint firstAttribute="height" constant="28" id="Hin-5d-6me"/>
+                                    <constraint firstAttribute="width" constant="70" id="FaD-pw-gha"/>
+                                    <constraint firstAttribute="height" constant="28" id="yhu-ex-rFG"/>
                                 </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                 <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                 <state key="normal" title="进入教室"/>
                                 <userDefinedRuntimeAttributes>
@@ -125,37 +124,64 @@
                                         <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"/>
+                                        <color key="value" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttributes>
                                 <connections>
-                                    <action selector="courseAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Cjj-lv-UXo"/>
+                                    <action selector="courseAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="vXU-w9-0s4"/>
                                 </connections>
                             </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Hm-Rn-2RM">
+                                <rect key="frame" x="75" y="87" width="45" height="20"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="趣纠课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mWS-ZC-8eu">
+                                        <rect key="frame" x="6" y="0.0" width="33" height="20"/>
+                                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
+                                        <color key="textColor" red="1" green="0.61960784310000006" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.95686274510000002" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="20" id="3bl-Fe-Y1D"/>
+                                    <constraint firstAttribute="trailing" secondItem="mWS-ZC-8eu" secondAttribute="trailing" constant="6" id="RK8-Cs-jkm"/>
+                                    <constraint firstAttribute="bottom" secondItem="mWS-ZC-8eu" secondAttribute="bottom" id="mTX-BB-GLt"/>
+                                    <constraint firstItem="mWS-ZC-8eu" firstAttribute="leading" secondItem="6Hm-Rn-2RM" secondAttribute="leading" constant="6" id="oty-gc-UXZ"/>
+                                    <constraint firstItem="mWS-ZC-8eu" firstAttribute="top" secondItem="6Hm-Rn-2RM" secondAttribute="top" id="wXP-hr-pYg"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="3"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="XKr-bP-maa" firstAttribute="centerY" secondItem="y3h-K3-zJ8" secondAttribute="centerY" id="2ud-Y3-DkF"/>
-                            <constraint firstItem="wXs-1T-7ew" firstAttribute="top" secondItem="3FJ-PP-t5u" secondAttribute="bottom" constant="10" id="4AU-q2-JKK"/>
-                            <constraint firstItem="eJa-81-RrN" firstAttribute="top" secondItem="foX-kQ-NZi" secondAttribute="top" id="9f4-fS-Mjm"/>
-                            <constraint firstItem="dGh-TI-XLP" firstAttribute="bottom" secondItem="foX-kQ-NZi" secondAttribute="bottom" id="Azp-AH-Ulo"/>
-                            <constraint firstItem="NOA-EQ-Fjn" firstAttribute="centerY" secondItem="eJa-81-RrN" secondAttribute="centerY" id="Dh1-vS-VH4"/>
-                            <constraint firstItem="y3h-K3-zJ8" firstAttribute="leading" secondItem="3FJ-PP-t5u" secondAttribute="trailing" constant="7" id="HDn-Dn-gXp"/>
-                            <constraint firstItem="wXs-1T-7ew" firstAttribute="leading" secondItem="hEp-yz-qU7" secondAttribute="leading" constant="10" id="MuH-hq-nak"/>
-                            <constraint firstAttribute="bottom" secondItem="42d-Nb-iRS" secondAttribute="bottom" constant="20" id="PRc-Qs-mXb"/>
-                            <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"/>
-                            <constraint firstItem="y3h-K3-zJ8" firstAttribute="centerY" secondItem="3FJ-PP-t5u" secondAttribute="centerY" id="krf-gM-z84"/>
-                            <constraint firstAttribute="trailing" secondItem="XKr-bP-maa" secondAttribute="trailing" constant="11" id="n7L-Ge-hdB"/>
-                            <constraint firstItem="NOA-EQ-Fjn" firstAttribute="leading" secondItem="eJa-81-RrN" secondAttribute="trailing" id="oGP-bV-vh8"/>
-                            <constraint firstItem="dGh-TI-XLP" firstAttribute="leading" secondItem="eJa-81-RrN" secondAttribute="leading" id="qFE-Ju-IOj"/>
-                            <constraint firstAttribute="trailing" secondItem="42d-Nb-iRS" secondAttribute="trailing" constant="12" id="tvp-eu-D3U"/>
-                            <constraint firstAttribute="trailing" secondItem="wXs-1T-7ew" secondAttribute="trailing" constant="10" id="yzO-qN-lJn"/>
+                            <constraint firstAttribute="trailing" secondItem="7Uu-YA-WKJ" secondAttribute="trailing" constant="12" id="0W5-7O-36j"/>
+                            <constraint firstAttribute="trailing" secondItem="pfw-VM-UtE" secondAttribute="trailing" constant="12" id="5dR-o6-YaB"/>
+                            <constraint firstAttribute="trailing" secondItem="ZUe-qb-byK" secondAttribute="trailing" constant="12" id="JAV-MH-KfF"/>
+                            <constraint firstItem="S4f-Ij-ptl" firstAttribute="top" secondItem="ZUe-qb-byK" secondAttribute="bottom" constant="16" id="KRh-OM-cJ7"/>
+                            <constraint firstItem="6Hm-Rn-2RM" firstAttribute="leading" secondItem="T2u-fv-gSp" secondAttribute="leading" id="SFH-qn-1qY"/>
+                            <constraint firstItem="ZUe-qb-byK" firstAttribute="leading" secondItem="z9H-5R-6IZ" secondAttribute="leading" constant="12" id="SYC-Fl-jU8"/>
+                            <constraint firstItem="zYI-Wx-jRP" firstAttribute="centerY" secondItem="K3E-6f-5bl" secondAttribute="centerY" id="Tq0-XL-EKd"/>
+                            <constraint firstItem="7Uu-YA-WKJ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="zYI-Wx-jRP" secondAttribute="trailing" constant="5" id="WIn-bs-3D6"/>
+                            <constraint firstItem="ZUe-qb-byK" firstAttribute="top" secondItem="K3E-6f-5bl" secondAttribute="bottom" constant="11" id="Xgg-T8-Pph"/>
+                            <constraint firstItem="K3E-6f-5bl" firstAttribute="top" secondItem="z9H-5R-6IZ" secondAttribute="top" constant="11" id="Z0E-Xm-hH4"/>
+                            <constraint firstItem="K3E-6f-5bl" firstAttribute="leading" secondItem="z9H-5R-6IZ" secondAttribute="leading" constant="12" id="ZUs-VC-5ep"/>
+                            <constraint firstItem="8NS-o2-naR" firstAttribute="centerY" secondItem="6Hm-Rn-2RM" secondAttribute="centerY" id="bYg-Nu-k3A"/>
+                            <constraint firstItem="6Hm-Rn-2RM" firstAttribute="top" secondItem="T2u-fv-gSp" secondAttribute="bottom" constant="8" id="bjW-Br-WI2"/>
+                            <constraint firstItem="T2u-fv-gSp" firstAttribute="top" secondItem="S4f-Ij-ptl" secondAttribute="top" constant="2" id="bo2-qe-Mz0"/>
+                            <constraint firstItem="qQB-pf-JWg" firstAttribute="leading" secondItem="T2u-fv-gSp" secondAttribute="trailing" constant="6" id="dk0-uP-cMJ"/>
+                            <constraint firstItem="S4f-Ij-ptl" firstAttribute="leading" secondItem="z9H-5R-6IZ" secondAttribute="leading" constant="11" id="h5o-7C-oSk"/>
+                            <constraint firstItem="pfw-VM-UtE" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="qQB-pf-JWg" secondAttribute="trailing" constant="11" id="ikk-xu-kXt"/>
+                            <constraint firstItem="T2u-fv-gSp" firstAttribute="leading" secondItem="S4f-Ij-ptl" secondAttribute="trailing" constant="10" id="jfE-J2-Wja"/>
+                            <constraint firstItem="qQB-pf-JWg" firstAttribute="centerY" secondItem="T2u-fv-gSp" secondAttribute="centerY" id="r95-MK-gpw"/>
+                            <constraint firstItem="zYI-Wx-jRP" firstAttribute="leading" secondItem="K3E-6f-5bl" secondAttribute="trailing" constant="7" id="sST-oX-EPW"/>
+                            <constraint firstAttribute="bottom" secondItem="S4f-Ij-ptl" secondAttribute="bottom" constant="16" id="wZt-dm-lw3"/>
+                            <constraint firstItem="7Uu-YA-WKJ" firstAttribute="centerY" secondItem="zYI-Wx-jRP" secondAttribute="centerY" id="xP4-bx-BJW"/>
+                            <constraint firstItem="8NS-o2-naR" firstAttribute="leading" secondItem="6Hm-Rn-2RM" secondAttribute="trailing" constant="4" id="xoN-1D-XBx"/>
+                            <constraint firstAttribute="bottom" secondItem="pfw-VM-UtE" secondAttribute="bottom" constant="16" id="ynW-8R-ptu"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -166,21 +192,22 @@
                 </subviews>
                 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                 <constraints>
-                    <constraint firstAttribute="bottom" secondItem="hEp-yz-qU7" secondAttribute="bottom" constant="12" id="1H8-ep-qYi"/>
-                    <constraint firstItem="hEp-yz-qU7" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="Kid-r9-L7D"/>
-                    <constraint firstItem="hEp-yz-qU7" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="sEC-om-6Mn"/>
-                    <constraint firstAttribute="trailing" secondItem="hEp-yz-qU7" secondAttribute="trailing" constant="14" id="zlt-1I-Jvx"/>
+                    <constraint firstAttribute="bottom" secondItem="z9H-5R-6IZ" secondAttribute="bottom" constant="12" id="35I-J7-jjb"/>
+                    <constraint firstItem="z9H-5R-6IZ" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="UA8-VZ-sqP"/>
+                    <constraint firstItem="z9H-5R-6IZ" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="b62-HR-SyG"/>
+                    <constraint firstAttribute="trailing" secondItem="z9H-5R-6IZ" secondAttribute="trailing" constant="14" id="xho-WQ-sdD"/>
                 </constraints>
             </tableViewCellContentView>
             <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <connections>
-                <outlet property="courseStatus" destination="XKr-bP-maa" id="lUj-uE-gX6"/>
-                <outlet property="courseTime" destination="y3h-K3-zJ8" id="BQP-Dh-J69"/>
-                <outlet property="opreationButton" destination="42d-Nb-iRS" id="Jez-ID-7gC"/>
-                <outlet property="studentAvatar" destination="foX-kQ-NZi" id="9D9-zE-vdE"/>
-                <outlet property="studentName" destination="eJa-81-RrN" id="Lob-ln-gKG"/>
-                <outlet property="studentSubject" destination="mz9-eT-OVS" id="99G-qb-mJx"/>
+                <outlet property="chatButton" destination="qQB-pf-JWg" id="3kg-1A-Q5q"/>
+                <outlet property="courseStatus" destination="7Uu-YA-WKJ" id="I1s-Qj-gja"/>
+                <outlet property="courseTime" destination="zYI-Wx-jRP" id="POz-6g-YaR"/>
+                <outlet property="opreationButton" destination="pfw-VM-UtE" id="09d-xB-Fko"/>
+                <outlet property="studentAvatar" destination="S4f-Ij-ptl" id="r3u-RQ-chH"/>
+                <outlet property="studentName" destination="T2u-fv-gSp" id="mzo-oT-anE"/>
+                <outlet property="studentSubject" destination="igT-B2-tre" id="Agt-J0-SDM"/>
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="95.424107142857139"/>
         </tableViewCell>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseForLiveCell.m

@@ -92,7 +92,7 @@
     [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"];
+    [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]];

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseGroupView/GroupCourseSortView.h

@@ -20,6 +20,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface GroupCourseSortView : UIView
 
+@property (nonatomic, assign) BOOL showWhiteBg;
+
 @property (weak, nonatomic) IBOutlet UILabel *firstLabel;
 @property (weak, nonatomic) IBOutlet UILabel *secondLabel;
 @property (weak, nonatomic) IBOutlet UILabel *thirdLabel;

+ 11 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseGroupView/GroupCourseSortView.m

@@ -10,6 +10,9 @@
 @interface GroupCourseSortView ()
 
 @property (nonatomic, copy) SortActionBlock block;
+@property (weak, nonatomic) IBOutlet UIView *firstWihteView;
+@property (weak, nonatomic) IBOutlet UIView *secondWhiteView;
+@property (weak, nonatomic) IBOutlet UIView *thirdWihteView;
 
 @property (weak, nonatomic) IBOutlet UIImageView *firstArrow;
 @property (weak, nonatomic) IBOutlet UIImageView *secondArrow;
@@ -87,6 +90,14 @@
     [_thirdArrow setImage:[UIImage imageNamed:imageName]];
 }
 
+- (void)setShowWhiteBg:(BOOL)showWhiteBg {
+    _showWhiteBg = showWhiteBg;
+    if (showWhiteBg) {
+        self.firstWihteView.hidden = NO;
+        self.secondWhiteView.hidden = NO;
+        self.thirdWihteView.hidden = NO;
+    }
+}
 + (CGFloat)getViewHeight {
     return 50.0f;
 }

+ 65 - 26
KulexiuForStudent/KulexiuForStudent/Module/Course/View/CourseGroupView/GroupCourseSortView.xib

@@ -10,30 +10,42 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="GroupCourseSortView">
-            <rect key="frame" x="0.0" y="0.0" width="385" height="55"/>
+            <rect key="frame" x="0.0" y="0.0" width="375" height="55"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nUQ-28-ciH">
-                    <rect key="frame" x="14" y="0.0" width="357" height="55"/>
+                    <rect key="frame" x="14" y="0.0" width="347" height="55"/>
                     <subviews>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3ud-K6-gBw">
-                            <rect key="frame" x="0.0" y="0.0" width="112.33333333333333" height="55"/>
+                            <rect key="frame" x="0.0" y="0.0" width="109" height="55"/>
                             <subviews>
+                                <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aMc-qL-Urw">
+                                    <rect key="frame" x="4.9999999999999929" y="16.666666666666668" width="127.33333333333331" height="22.000000000000004"/>
+                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="0KX-Sp-gSa"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="11"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="XXXX年XX月" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cfT-LB-SNv">
-                                    <rect key="frame" x="7.3333333333333286" y="19" width="89.999999999999986" height="17"/>
+                                    <rect key="frame" x="17" y="19" width="89.333333333333329" height="17"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <color key="textColor" red="0.074509803921568626" green="0.078431372549019607" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="aFu-Ok-mVy">
-                                    <rect key="frame" x="102.33333333333333" y="25" width="9" height="5"/>
+                                    <rect key="frame" x="111.33333333333333" y="25" width="9" height="5"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="5" id="f2v-0M-H3l"/>
                                         <constraint firstAttribute="width" constant="9" id="zTE-EP-L2e"/>
                                     </constraints>
                                 </imageView>
                                 <button opaque="NO" tag="1001" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ac9-lB-T0k">
-                                    <rect key="frame" x="0.0" y="0.0" width="112.33333333333333" height="55"/>
+                                    <rect key="frame" x="0.0" y="0.0" width="109" height="55"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <state key="normal">
                                         <color key="titleColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
@@ -45,34 +57,49 @@
                             </subviews>
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                             <constraints>
-                                <constraint firstItem="cfT-LB-SNv" firstAttribute="centerX" secondItem="3ud-K6-gBw" secondAttribute="centerX" constant="-4" id="6fu-Rx-39P"/>
+                                <constraint firstItem="aMc-qL-Urw" firstAttribute="leading" secondItem="cfT-LB-SNv" secondAttribute="leading" constant="-12" id="0wS-wv-cqh"/>
+                                <constraint firstItem="cfT-LB-SNv" firstAttribute="centerX" secondItem="3ud-K6-gBw" secondAttribute="centerX" constant="7" id="6fu-Rx-39P"/>
+                                <constraint firstItem="aFu-Ok-mVy" firstAttribute="trailing" secondItem="aMc-qL-Urw" secondAttribute="trailing" constant="-12" id="F1D-4S-yAe"/>
                                 <constraint firstAttribute="bottom" secondItem="Ac9-lB-T0k" secondAttribute="bottom" id="FjI-Y5-7yE"/>
                                 <constraint firstItem="cfT-LB-SNv" firstAttribute="centerY" secondItem="3ud-K6-gBw" secondAttribute="centerY" id="J0t-LD-eL1"/>
                                 <constraint firstItem="Ac9-lB-T0k" firstAttribute="leading" secondItem="3ud-K6-gBw" secondAttribute="leading" id="g1O-Id-15a"/>
                                 <constraint firstItem="aFu-Ok-mVy" firstAttribute="centerY" secondItem="3ud-K6-gBw" secondAttribute="centerY" id="gDl-5L-mjU"/>
                                 <constraint firstItem="aFu-Ok-mVy" firstAttribute="leading" secondItem="cfT-LB-SNv" secondAttribute="trailing" constant="5" id="llT-OJ-w6i"/>
                                 <constraint firstItem="Ac9-lB-T0k" firstAttribute="top" secondItem="3ud-K6-gBw" secondAttribute="top" id="ofj-Sg-mn8"/>
+                                <constraint firstItem="aMc-qL-Urw" firstAttribute="centerY" secondItem="cfT-LB-SNv" secondAttribute="centerY" id="s31-wv-m1e"/>
                                 <constraint firstAttribute="trailing" secondItem="Ac9-lB-T0k" secondAttribute="trailing" id="tlR-cR-LCw"/>
                             </constraints>
                         </view>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z8Q-fT-2Vr">
-                            <rect key="frame" x="122.33333333333334" y="0.0" width="112.33333333333334" height="55"/>
+                            <rect key="frame" x="119" y="0.0" width="109" height="55"/>
                             <subviews>
+                                <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FvZ-Cn-UvC">
+                                    <rect key="frame" x="21.666666666666657" y="16.666666666666668" width="94" height="22.000000000000004"/>
+                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="uMS-WH-w0m"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="11"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部状态" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vxK-r7-9sg">
-                                    <rect key="frame" x="24.333333333333314" y="19" width="56" height="17"/>
+                                    <rect key="frame" x="33.666666666666657" y="19" width="56" height="17"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <color key="textColor" red="0.074509803921568626" green="0.078431372549019607" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="idf-14-rMz">
-                                    <rect key="frame" x="85.333333333333314" y="25" width="9" height="5"/>
+                                    <rect key="frame" x="94.666666666666657" y="25" width="9" height="5"/>
                                     <constraints>
                                         <constraint firstAttribute="width" constant="9" id="2rB-eK-C35"/>
                                         <constraint firstAttribute="height" constant="5" id="PIL-WN-xkd"/>
                                     </constraints>
                                 </imageView>
                                 <button opaque="NO" tag="1002" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j1t-mT-XyA">
-                                    <rect key="frame" x="0.0" y="0.0" width="112.33333333333333" height="55"/>
+                                    <rect key="frame" x="0.0" y="0.0" width="109" height="55"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <state key="normal">
                                         <color key="titleColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
@@ -85,33 +112,48 @@
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                             <constraints>
                                 <constraint firstItem="j1t-mT-XyA" firstAttribute="leading" secondItem="Z8Q-fT-2Vr" secondAttribute="leading" id="0ib-n1-ca3"/>
+                                <constraint firstItem="idf-14-rMz" firstAttribute="trailing" secondItem="FvZ-Cn-UvC" secondAttribute="trailing" constant="-12" id="52B-YO-Bif"/>
+                                <constraint firstItem="FvZ-Cn-UvC" firstAttribute="leading" secondItem="vxK-r7-9sg" secondAttribute="leading" constant="-12" id="8gm-W4-scE"/>
                                 <constraint firstAttribute="bottom" secondItem="j1t-mT-XyA" secondAttribute="bottom" id="FZL-fn-2Dt"/>
-                                <constraint firstItem="vxK-r7-9sg" firstAttribute="centerX" secondItem="Z8Q-fT-2Vr" secondAttribute="centerX" constant="-4" id="MaH-dZ-7ix"/>
+                                <constraint firstItem="vxK-r7-9sg" firstAttribute="centerX" secondItem="Z8Q-fT-2Vr" secondAttribute="centerX" constant="7" id="MaH-dZ-7ix"/>
                                 <constraint firstItem="vxK-r7-9sg" firstAttribute="centerY" secondItem="Z8Q-fT-2Vr" secondAttribute="centerY" id="VqG-LO-GJj"/>
                                 <constraint firstAttribute="trailing" secondItem="j1t-mT-XyA" secondAttribute="trailing" id="VxY-bB-unG"/>
                                 <constraint firstItem="j1t-mT-XyA" firstAttribute="top" secondItem="Z8Q-fT-2Vr" secondAttribute="top" id="cMc-ie-YnM"/>
                                 <constraint firstItem="idf-14-rMz" firstAttribute="leading" secondItem="vxK-r7-9sg" secondAttribute="trailing" constant="5" id="dLB-Vt-NCZ"/>
+                                <constraint firstItem="FvZ-Cn-UvC" firstAttribute="centerY" secondItem="vxK-r7-9sg" secondAttribute="centerY" id="hWh-Qq-GIs"/>
                                 <constraint firstItem="idf-14-rMz" firstAttribute="centerY" secondItem="Z8Q-fT-2Vr" secondAttribute="centerY" id="yDm-pc-vUp"/>
                             </constraints>
                         </view>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yMy-1B-zxV">
-                            <rect key="frame" x="244.66666666666671" y="0.0" width="112.33333333333334" height="55"/>
+                            <rect key="frame" x="238" y="0.0" width="109" height="55"/>
                             <subviews>
+                                <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="s7M-qE-XDr">
+                                    <rect key="frame" x="7.6666666666666856" y="16.666666666666668" width="94" height="22.000000000000004"/>
+                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="mvo-Js-pra"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="11"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </view>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部考勤" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Xc-2m-8mt">
-                                    <rect key="frame" x="24.333333333333314" y="19" width="56" height="17"/>
+                                    <rect key="frame" x="19.666666666666686" y="19" width="56" height="17"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <color key="textColor" red="0.074509803921568626" green="0.078431372549019607" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="grW-VA-qlz">
-                                    <rect key="frame" x="85.333333333333314" y="25" width="9" height="5"/>
+                                    <rect key="frame" x="80.666666666666686" y="25" width="9" height="5"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="5" id="hAG-sG-mv7"/>
                                         <constraint firstAttribute="width" constant="9" id="sqn-jl-TbO"/>
                                     </constraints>
                                 </imageView>
                                 <button opaque="NO" tag="1003" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5J6-Qp-5o7">
-                                    <rect key="frame" x="0.0" y="0.0" width="112.33333333333333" height="55"/>
+                                    <rect key="frame" x="0.0" y="0.0" width="109" height="55"/>
                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                     <state key="normal">
                                         <color key="titleColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
@@ -125,12 +167,15 @@
                             <constraints>
                                 <constraint firstItem="5J6-Qp-5o7" firstAttribute="leading" secondItem="yMy-1B-zxV" secondAttribute="leading" id="0pe-f0-slu"/>
                                 <constraint firstItem="grW-VA-qlz" firstAttribute="centerY" secondItem="yMy-1B-zxV" secondAttribute="centerY" id="47f-2b-PEp"/>
-                                <constraint firstItem="9Xc-2m-8mt" firstAttribute="centerX" secondItem="yMy-1B-zxV" secondAttribute="centerX" constant="-4" id="4bT-SA-PhH"/>
+                                <constraint firstItem="9Xc-2m-8mt" firstAttribute="centerX" secondItem="yMy-1B-zxV" secondAttribute="centerX" constant="-7" id="4bT-SA-PhH"/>
+                                <constraint firstItem="s7M-qE-XDr" firstAttribute="centerY" secondItem="9Xc-2m-8mt" secondAttribute="centerY" id="7PO-WH-aaV"/>
                                 <constraint firstAttribute="trailing" secondItem="5J6-Qp-5o7" secondAttribute="trailing" id="8jw-zM-6iK"/>
                                 <constraint firstItem="5J6-Qp-5o7" firstAttribute="top" secondItem="yMy-1B-zxV" secondAttribute="top" id="HUX-nk-toA"/>
                                 <constraint firstAttribute="bottom" secondItem="5J6-Qp-5o7" secondAttribute="bottom" id="SLT-UZ-dPb"/>
                                 <constraint firstItem="9Xc-2m-8mt" firstAttribute="centerY" secondItem="yMy-1B-zxV" secondAttribute="centerY" id="jhO-f9-KY6"/>
                                 <constraint firstItem="grW-VA-qlz" firstAttribute="leading" secondItem="9Xc-2m-8mt" secondAttribute="trailing" constant="5" id="m1B-rA-bFZ"/>
+                                <constraint firstItem="grW-VA-qlz" firstAttribute="trailing" secondItem="s7M-qE-XDr" secondAttribute="trailing" constant="-12" id="mGV-zF-ekd"/>
+                                <constraint firstItem="s7M-qE-XDr" firstAttribute="leading" secondItem="9Xc-2m-8mt" secondAttribute="leading" constant="-12" id="vbs-hs-Ih7"/>
                             </constraints>
                         </view>
                     </subviews>
@@ -153,15 +198,6 @@
                         <userDefinedRuntimeAttribute type="size" keyPath="shadowOffset">
                             <size key="value" width="0.0" height="2"/>
                         </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
-                            <real key="value" value="1"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
-                            <real key="value" value="7"/>
-                        </userDefinedRuntimeAttribute>
-                        <userDefinedRuntimeAttribute type="color" keyPath="shadowUIColor">
-                            <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.070000000000000007" colorSpace="calibratedRGB"/>
-                        </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </view>
             </subviews>
@@ -178,10 +214,13 @@
             <connections>
                 <outlet property="firstArrow" destination="aFu-Ok-mVy" id="HfH-fU-Kon"/>
                 <outlet property="firstLabel" destination="cfT-LB-SNv" id="fxC-FN-FHH"/>
+                <outlet property="firstWihteView" destination="aMc-qL-Urw" id="TQr-no-EXT"/>
                 <outlet property="secondArrow" destination="idf-14-rMz" id="vtq-9G-6Dc"/>
                 <outlet property="secondLabel" destination="vxK-r7-9sg" id="fKB-7V-W3z"/>
+                <outlet property="secondWhiteView" destination="FvZ-Cn-UvC" id="PCo-eX-gaH"/>
                 <outlet property="thirdArrow" destination="grW-VA-qlz" id="KLm-di-ir9"/>
                 <outlet property="thirdLabel" destination="9Xc-2m-8mt" id="1q0-e6-Dmr"/>
+                <outlet property="thirdWihteView" destination="s7M-qE-XDr" id="Nky-Dj-ksz"/>
             </connections>
             <point key="canvasLocation" x="41.984732824427482" y="-148.94366197183101"/>
         </view>

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

@@ -116,7 +116,7 @@
     [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"];
+    [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]];

+ 20 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/View/VIPCourseCell.h

@@ -0,0 +1,20 @@
+//
+//  VIPCourseCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/25.
+//
+
+#import <UIKit/UIKit.h>
+#import "AccompanyCourseCell.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface VIPCourseCell : UITableViewCell
+
+/// 课表使用
+- (void)configWithCourseMessage:(TableCourseModel *)model beforeTime:(NSInteger)beforeTime actionCallback:(AccompanyLessonCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 152 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/View/VIPCourseCell.m

@@ -0,0 +1,152 @@
+//
+//  VIPCourseCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2024/11/25.
+//
+
+#import "VIPCourseCell.h"
+#import "UIButton+EnlargeEdge.h"
+
+@interface VIPCourseCell ()
+@property (weak, nonatomic) IBOutlet UIButton *chatButton;
+
+@property (weak, nonatomic) IBOutlet UILabel *courseTime;
+@property (weak, nonatomic) IBOutlet UILabel *courseStatus;
+@property (weak, nonatomic) IBOutlet UIImageView *studentAvatar;
+@property (weak, nonatomic) IBOutlet UILabel *studentName;
+@property (weak, nonatomic) IBOutlet UILabel *studentSubject;
+
+@property (weak, nonatomic) IBOutlet UIButton *opreationButton;
+
+@property (nonatomic, strong) AccompanyLessonModel *sourceModel;
+
+@property (nonatomic, assign) ACCOMPANY_TYPE type;
+
+/// 课表使用
+@property (nonatomic, copy) AccompanyLessonCallback lessonCallback;
+
+@property (nonatomic, strong) TableCourseModel *lessonModel;
+
+@end
+
+@implementation VIPCourseCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+    [self.chatButton setEnlargeEdgeWithTop:0 right:10 bottom:0 left:10];
+}
+
+/// 课表使用
+- (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 getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
+    if ([NSString isEmptyString:model.name]) {
+        self.studentName.text = [NSString stringWithFormat:@"游客%@",model.userId];
+    }
+    else {
+        self.studentName.text = 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];
+        
+        if (beginTimeInterval < beforeTime * 60) {
+            self.type = ACCOMPANY_DETAIL;
+            self.opreationButton.userInteractionEnabled = YES;
+            self.opreationButton.hidden = NO;
+            [self.opreationButton setTitle:@"进入教室" forState:UIControlStateNormal];
+            [self.opreationButton setTitleColor:HexRGB(0xffffff) forState:UIControlStateNormal];
+            [self.opreationButton setBackgroundColor:THEMECOLOR];
+        }
+        else {
+            self.opreationButton.userInteractionEnabled = NO;
+            self.opreationButton.hidden = YES;
+        }
+    }
+    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 = [model.teacherReplied isEqualToString:@"1"] ? YES : NO;
+        if (hasEvaluate == NO) {
+            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)];
+        }
+    }
+}
+
+- (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.lessonCallback) {
+        self.lessonCallback(ACCOMPANY_TYPE_CHAT, self.lessonModel);
+    }
+}
+
+- (IBAction)courseAction:(UIButton *)sender {
+    if (self.lessonCallback) {
+        self.lessonCallback(self.type, self.lessonModel);
+    }
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 222 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/View/VIPCourseCell.xib

@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="99" id="KGk-i7-Jjw" customClass="VIPCourseCell">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="137"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="137"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Prt-82-eFb">
+                        <rect key="frame" x="14" y="0.0" width="347" height="125"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jQ1-Wj-ucc">
+                                <rect key="frame" x="12" y="38" width="323" height="1"/>
+                                <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="OZb-Zn-ljG"/>
+                                </constraints>
+                            </view>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_time" translatesAutoresizingMaskIntoConstraints="NO" id="8gY-RN-itJ">
+                                <rect key="frame" x="12" y="11" width="16" height="16"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="16" id="UmW-l8-Oad"/>
+                                    <constraint firstAttribute="width" constant="16" id="oYG-4m-J1v"/>
+                                </constraints>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="2021-09-17 14:00~14:25" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fqj-41-s1K">
+                                <rect key="frame" x="35" y="10" width="151.33333333333334" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="4G0-gx-woG"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" text="进行中" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lid-9a-OQf">
+                                <rect key="frame" x="293" y="10.666666666666664" width="42" height="17"/>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
+                                <color key="textColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="fEg-xE-FLb">
+                                <rect key="frame" x="11" y="55" width="54" height="54"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="54" id="Np7-Ob-XE2"/>
+                                    <constraint firstAttribute="height" constant="54" id="qgd-YB-Ffr"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="8"/>
+                                    </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="uaL-C5-cxT">
+                                <rect key="frame" x="75" y="57" width="48" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="22" id="sQ2-yi-rPG"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
+                                <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yFL-8X-NNI">
+                                <rect key="frame" x="143.33333333333334" y="87" width="45" height="20"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iDN-9i-ii9">
+                                        <rect key="frame" x="6" y="0.0" width="33" height="20"/>
+                                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
+                                        <color key="textColor" red="1" green="0.61960784313725492" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.95686274509803915" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="iDN-9i-ii9" firstAttribute="top" secondItem="yFL-8X-NNI" secondAttribute="top" id="9zI-bx-Ru1"/>
+                                    <constraint firstAttribute="bottom" secondItem="iDN-9i-ii9" secondAttribute="bottom" id="NSB-J3-jVr"/>
+                                    <constraint firstItem="iDN-9i-ii9" firstAttribute="leading" secondItem="yFL-8X-NNI" secondAttribute="leading" constant="6" id="PA9-pv-xhP"/>
+                                    <constraint firstAttribute="height" constant="20" id="eup-02-R2H"/>
+                                    <constraint firstAttribute="trailing" secondItem="iDN-9i-ii9" secondAttribute="trailing" constant="6" id="ucu-6V-Vjr"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="3"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0e3-fp-uAc">
+                                <rect key="frame" x="129" y="48" width="19" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="jH6-a3-7S5"/>
+                                </constraints>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" image="course_chat"/>
+                                <connections>
+                                    <action selector="chatAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="x8R-Ln-3na"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iNM-Ch-sTL">
+                                <rect key="frame" x="265" y="81" width="70" height="28"/>
+                                <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="28" id="LHz-TW-hCI"/>
+                                    <constraint firstAttribute="width" constant="70" id="dDE-4R-ZUz"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="进入教室"/>
+                                <userDefinedRuntimeAttributes>
+                                    <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.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                                <connections>
+                                    <action selector="courseAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="4XB-b2-f6n"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ke6-vg-Fje">
+                                <rect key="frame" x="75" y="87" width="64.333333333333314" height="20"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="VIP定制课" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Exb-Tk-01t">
+                                        <rect key="frame" x="6.0000000000000036" y="0.0" width="52.333333333333343" height="20"/>
+                                        <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
+                                        <color key="textColor" red="1" green="0.61960784310000006" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.95686274510000002" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="Exb-Tk-01t" firstAttribute="top" secondItem="Ke6-vg-Fje" secondAttribute="top" id="NIn-P2-F4v"/>
+                                    <constraint firstAttribute="height" constant="20" id="QtG-Ur-NhS"/>
+                                    <constraint firstAttribute="bottom" secondItem="Exb-Tk-01t" secondAttribute="bottom" id="VbW-Md-6Og"/>
+                                    <constraint firstItem="Exb-Tk-01t" firstAttribute="leading" secondItem="Ke6-vg-Fje" secondAttribute="leading" constant="6" id="frZ-KJ-sn0"/>
+                                    <constraint firstAttribute="trailing" secondItem="Exb-Tk-01t" secondAttribute="trailing" constant="6" id="kdV-OR-xhQ"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                        <real key="value" value="3"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="fEg-xE-FLb" firstAttribute="top" secondItem="jQ1-Wj-ucc" secondAttribute="bottom" constant="16" id="24B-Ke-hjh"/>
+                            <constraint firstItem="Ke6-vg-Fje" firstAttribute="leading" secondItem="uaL-C5-cxT" secondAttribute="leading" id="65B-Ng-aXu"/>
+                            <constraint firstItem="uaL-C5-cxT" firstAttribute="leading" secondItem="fEg-xE-FLb" secondAttribute="trailing" constant="10" id="B51-VO-hCM"/>
+                            <constraint firstItem="Ke6-vg-Fje" firstAttribute="top" secondItem="uaL-C5-cxT" secondAttribute="bottom" constant="8" id="DT9-5c-00S"/>
+                            <constraint firstItem="yFL-8X-NNI" firstAttribute="centerY" secondItem="Ke6-vg-Fje" secondAttribute="centerY" id="Ekx-Kh-2n7"/>
+                            <constraint firstItem="8gY-RN-itJ" firstAttribute="leading" secondItem="Prt-82-eFb" secondAttribute="leading" constant="12" id="GRq-Nt-JtF"/>
+                            <constraint firstItem="0e3-fp-uAc" firstAttribute="centerY" secondItem="uaL-C5-cxT" secondAttribute="centerY" id="L3T-WT-yJf"/>
+                            <constraint firstItem="Lid-9a-OQf" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Fqj-41-s1K" secondAttribute="trailing" constant="5" id="MBu-MZ-fjb"/>
+                            <constraint firstItem="fEg-xE-FLb" firstAttribute="leading" secondItem="Prt-82-eFb" secondAttribute="leading" constant="11" id="P0G-na-1GI"/>
+                            <constraint firstItem="iNM-Ch-sTL" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="0e3-fp-uAc" secondAttribute="trailing" constant="11" id="RWh-KD-Jib"/>
+                            <constraint firstItem="uaL-C5-cxT" firstAttribute="top" secondItem="fEg-xE-FLb" secondAttribute="top" constant="2" id="Y0a-tb-RAI"/>
+                            <constraint firstItem="yFL-8X-NNI" firstAttribute="leading" secondItem="Ke6-vg-Fje" secondAttribute="trailing" constant="4" id="d9B-QA-fS9"/>
+                            <constraint firstItem="Fqj-41-s1K" firstAttribute="centerY" secondItem="8gY-RN-itJ" secondAttribute="centerY" id="dof-s4-2a2"/>
+                            <constraint firstAttribute="bottom" secondItem="fEg-xE-FLb" secondAttribute="bottom" constant="16" id="ez7-17-uvz"/>
+                            <constraint firstItem="Fqj-41-s1K" firstAttribute="leading" secondItem="8gY-RN-itJ" secondAttribute="trailing" constant="7" id="ftG-Zv-OvD"/>
+                            <constraint firstItem="0e3-fp-uAc" firstAttribute="leading" secondItem="uaL-C5-cxT" secondAttribute="trailing" constant="6" id="lAQ-vu-yML"/>
+                            <constraint firstAttribute="trailing" secondItem="Lid-9a-OQf" secondAttribute="trailing" constant="12" id="lII-s2-S7S"/>
+                            <constraint firstAttribute="trailing" secondItem="iNM-Ch-sTL" secondAttribute="trailing" constant="12" id="mWg-2h-u5l"/>
+                            <constraint firstAttribute="trailing" secondItem="jQ1-Wj-ucc" secondAttribute="trailing" constant="12" id="oFF-ib-myr"/>
+                            <constraint firstItem="jQ1-Wj-ucc" firstAttribute="leading" secondItem="Prt-82-eFb" secondAttribute="leading" constant="12" id="r9l-d0-vkD"/>
+                            <constraint firstAttribute="bottom" secondItem="iNM-Ch-sTL" secondAttribute="bottom" constant="16" id="rjh-ho-7de"/>
+                            <constraint firstItem="Lid-9a-OQf" firstAttribute="centerY" secondItem="Fqj-41-s1K" secondAttribute="centerY" id="skm-qo-kaq"/>
+                            <constraint firstItem="8gY-RN-itJ" firstAttribute="top" secondItem="Prt-82-eFb" secondAttribute="top" constant="11" id="syU-bn-rHQ"/>
+                            <constraint firstItem="jQ1-Wj-ucc" firstAttribute="top" secondItem="8gY-RN-itJ" secondAttribute="bottom" constant="11" id="tIC-Rn-pXK"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="Prt-82-eFb" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="BAS-8s-yOh"/>
+                    <constraint firstAttribute="trailing" secondItem="Prt-82-eFb" secondAttribute="trailing" constant="14" id="EYN-Fm-aIr"/>
+                    <constraint firstItem="Prt-82-eFb" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="OXj-OD-pJA"/>
+                    <constraint firstAttribute="bottom" secondItem="Prt-82-eFb" secondAttribute="bottom" constant="12" id="UYo-s1-qpy"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="chatButton" destination="0e3-fp-uAc" id="Idg-Qe-Kt7"/>
+                <outlet property="courseStatus" destination="Lid-9a-OQf" id="puv-tc-X8L"/>
+                <outlet property="courseTime" destination="Fqj-41-s1K" id="T7J-1b-342"/>
+                <outlet property="opreationButton" destination="iNM-Ch-sTL" id="mmB-ao-flp"/>
+                <outlet property="studentAvatar" destination="fEg-xE-FLb" id="T5R-So-meg"/>
+                <outlet property="studentName" destination="uaL-C5-cxT" id="DOg-ai-2lz"/>
+                <outlet property="studentSubject" destination="iDN-9i-ii9" id="T4B-rg-hTr"/>
+            </connections>
+            <point key="canvasLocation" x="51.145038167938928" y="38.380281690140848"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="course_chat" width="19" height="18"/>
+        <image name="course_time" width="16" height="16"/>
+        <image name="teacher_avatar" width="150" height="150"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseGroupBodyView.h

@@ -25,6 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, assign) NSInteger quitEndTime;    // 结束后退出时间配置(分钟)
 
+@property (nonatomic, assign) UIColor *sortBgColor;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 7 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseGroupBodyView.m

@@ -196,6 +196,9 @@
 
     if (![self.subviews containsObject:self.sortView]) {
         [self addSubview:self.sortView];
+        if (self.courseType == COURSE_GROUP_TYPE_MUSICROOM) {
+            self.sortView.showWhiteBg = YES;
+        }
         [self.sortView mas_makeConstraints:^(MASConstraintMaker *make) {
             make.left.right.top.mas_equalTo(self);
             make.height.mas_equalTo(sortViewHeight);
@@ -575,6 +578,10 @@
     self.sortView.firstArrowUp = NO;
 }
 
+- (void)setSortBgColor:(UIColor *)sortBgColor {
+    _sortBgColor = sortBgColor;
+    self.sortView.backgroundColor = sortBgColor;
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseListCell.xib

@@ -53,7 +53,7 @@
                                 <color key="textColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="fC0-s3-zGf">
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="fC0-s3-zGf">
                                 <rect key="frame" x="12" y="59" width="40" height="40"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="40" id="44E-TM-UhJ"/>
@@ -199,7 +199,7 @@
     <resources>
         <image name="course_time" width="16" height="16"/>
         <image name="merge_next" width="14" height="14"/>
-        <image name="student_avatar" width="150" height="150"/>
+        <image name="teacher_avatar" width="150" height="150"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/VipCouseInfoCell.m

@@ -38,7 +38,7 @@
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     NSDate *startDate = [formatter dateFromString:beginTime];
     NSDate *endDate = [formatter dateFromString:endTime];
-    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
     NSString *lessonBegin = [formatter stringFromDate:startDate];
     [formatter setDateFormat:@"HH:mm"];
     NSString *lessonEnd = [formatter stringFromDate:endDate];
@@ -50,7 +50,7 @@
         self.studentName.text = studentName;
     }
     self.studentName.text = [NSString returnNoNullStringWithString:studentName];
-    [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:[studentAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
+    [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:[studentAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
     self.studentSubject.text = [NSString returnNoNullStringWithString:studentSubject];
 
     self.userId = studentId;

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/VipCouseInfoCell.xib

@@ -53,7 +53,7 @@
                                 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="student_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="3cO-85-Ox1">
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="teacher_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="3cO-85-Ox1">
                                 <rect key="frame" x="11" y="56" width="47" height="47"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="47" id="YsZ-Ob-XKz"/>
@@ -162,7 +162,7 @@
     <resources>
         <image name="course_chat" width="19" height="18"/>
         <image name="course_time" width="16" height="16"/>
-        <image name="student_avatar" width="150" height="150"/>
+        <image name="teacher_avatar" width="150" height="150"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/ArrangeCourse/Controller/HomeArrangeCourseController.h

@@ -11,7 +11,7 @@
 
 typedef NS_ENUM(NSInteger, DISPLAY_INDEX) {
     DISPLAY_INDEX_VIP = 0,    // VIP定制
-    DISPLAY_INDEX_FIRST,      // 陪练
+    DISPLAY_INDEX_FIRST,      // 趣纠
     DISPLAY_INDEX_LIVE,       // 直播课
     DISPLAY_INDEX_VIEO,       // 视频课
 };

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Home/ArrangeCourse/View/VideoCourseArrangeCell.m

@@ -86,7 +86,7 @@
         self.musicLabelRight.constant = 0.0f;
     }
     
-    self.teacherName.text = [NSString returnNoNullStringWithString:model.realName];
+    self.teacherName.text = [NSString returnNoNullStringWithString:model.userName];
     [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlFileName]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
 }
 

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

@@ -9,7 +9,7 @@
 #import "RecentCourseModel.h"
 
 typedef NS_ENUM(NSInteger, COURSETYPE) {
-    COURSETYPE_ACCOMPANY, // 陪练
+    COURSETYPE_ACCOMPANY, // 趣纠
     COURSETYPE_LIVE,      // 直播课
     COURSETYPE_MUSICROOM, // 琴房课
 };

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Live/View/KSShopCardView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -27,7 +27,7 @@
                             </constraints>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                            <state key="normal" title="陪练课" backgroundImage="course_bg">
+                            <state key="normal" title="趣纠课" backgroundImage="course_bg">
                                 <color key="titleColor" red="0.25490196078431371" green="0.43529411764705883" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                             </state>
                             <connections>

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/Feedback/View/FeedbackListNavView.m

@@ -61,7 +61,7 @@
     }
     else {
         self.sortLabel.textColor = HexRGB(0x333333);
-        [self.arrowImage setImage:[UIImage imageNamed:@"sort_up_grey"]];
+        [self.arrowImage setImage:[UIImage imageNamed:@"sort_down_grey"]];
     }
 }
 /*

+ 6 - 6
KulexiuForStudent/KulexiuForStudent/Module/Mine/Feedback/View/FeedbackListNavView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_12" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -40,19 +40,19 @@
                             <nil key="highlightedColor"/>
                         </label>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="筛选" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fmd-vA-gcd">
-                            <rect key="frame" x="339.33333333333331" y="13.666666666666664" width="28.666666666666686" height="17"/>
+                            <rect key="frame" x="340" y="13.666666666666664" width="28" height="17"/>
                             <fontDescription key="fontDescription" type="system" pointSize="14"/>
                             <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iQI-gt-pbi">
-                            <rect key="frame" x="339.33333333333331" y="0.0" width="53.666666666666686" height="44"/>
+                            <rect key="frame" x="340" y="0.0" width="53" height="44"/>
                             <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                             <connections>
                                 <action selector="sortAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="frh-cm-nNf"/>
                             </connections>
                         </button>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_up_grey" translatesAutoresizingMaskIntoConstraints="NO" id="2vX-UI-bnk">
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="2vX-UI-bnk">
                             <rect key="frame" x="372" y="19.666666666666671" width="9" height="5"/>
                         </imageView>
                     </subviews>
@@ -95,6 +95,6 @@
     </objects>
     <resources>
         <image name="back_black" width="12" height="20"/>
-        <image name="sort_up_grey" width="9" height="5"/>
+        <image name="sort_down_grey" width="9" height="5"/>
     </resources>
 </document>

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

@@ -48,7 +48,7 @@
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     NSDate *startDate = [formatter dateFromString:sourceModel.startTime];
     NSDate *endDate = [formatter dateFromString:sourceModel.endTime];
-    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
     NSString *lessonBegin = [formatter stringFromDate:startDate];
     [formatter setDateFormat:@"HH:mm"];
     NSString *lessonEnd = [formatter stringFromDate:endDate];

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/Controller/MyCourseViewController.h

@@ -12,7 +12,7 @@
 
 typedef NS_ENUM(NSInteger, DISPLAY_INDEX) {
     DISPLAY_INDEX_VIP = 0,    // VIP定制
-    DISPLAY_INDEX_FIRST,  // 陪练
+    DISPLAY_INDEX_FIRST,  // 趣纠
     DISPLAY_INDEX_LIVE,       // 直播课
     DISPLAY_INDEX_VIEO,       // 视频课
     DISPLAY_INDEX_MUSIC,      // 琴房课

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/LiveCourseGroup/MyLiveCourseGroupListCell.m

@@ -62,7 +62,7 @@
     [attrs appendAttributedString:totalNumAttr];
     self.finishDesc.attributedText = attrs;
     [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
-    self.nameLabel.text = [NSString returnNoNullStringWithString:model.realName];
+    self.nameLabel.text = [NSString returnNoNullStringWithString:model.name];
 }
 
 

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyCourseSortView/MyCourseSearchView.xib

@@ -22,7 +22,7 @@
                             <color key="textColor" red="0.074509803920000006" green="0.078431372550000003" blue="0.08235294118" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_up_grey" translatesAutoresizingMaskIntoConstraints="NO" id="aG3-fG-AR8">
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sort_down_grey" translatesAutoresizingMaskIntoConstraints="NO" id="aG3-fG-AR8">
                             <rect key="frame" x="32" y="14.666666666666668" width="9" height="5"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="9" id="VIv-ab-N47"/>
@@ -124,6 +124,6 @@
     </objects>
     <resources>
         <image name="search_green" width="15" height="16"/>
-        <image name="sort_up_grey" width="9" height="5"/>
+        <image name="sort_down_grey" width="9" height="5"/>
     </resources>
 </document>

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

@@ -128,7 +128,7 @@
 }
 
 - (void)requestData {
-    if (self.selectIndex == 0) { // 陪练
+    if (self.selectIndex == 0) { // 趣纠
         [KSNetworkingManager queryStudentPracticeCourse:KS_POST classMonth:self.classDate status:self.status subjectId:self.subjectId page:self.pages rows:self.rows success:^(NSDictionary * _Nonnull dic) {
             [self endRefresh];
             if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
@@ -459,7 +459,7 @@
             [self.naviController pushViewController:ctrl animated:YES];
         }
             break;
-        case ACCOMPANY_DETAIL:  // 陪练课详情
+        case ACCOMPANY_DETAIL:  // 趣纠课详情
         {
             [self showAccompanyDetail:model];
         }
@@ -493,7 +493,7 @@
 }
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
-    if (self.selectIndex == 0) { // 进入陪练课详情
+    if (self.selectIndex == 0) { // 进入趣纠课详情
         AccompanyLessonModel *model = self.dataArray[indexPath.row];
         [self showAccompanyDetail:model];
     }

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/MyLiveCourseCell.m

@@ -47,7 +47,7 @@
     NSDate *startDate = [formatter dateFromString:model.startTime];
     NSDate *endDate = [formatter dateFromString:model.endTime];
     
-    [formatter setDateFormat:@"yyyy/MM/dd HH:mm"];
+    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
     NSString *courseBegin = [formatter stringFromDate:startDate];
     [formatter setDateFormat:@"HH:mm"];
     NSString *endTime = [formatter stringFromDate:endDate];

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/VIPCourseGroup/MyProgramCourseGroupCell.m

@@ -39,7 +39,7 @@
     /// 状态
     [self evaluateGroupStatus:model.status];
     
-    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.teacherAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
+    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.teacherAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
     
     self.nameLabel.text = [NSString returnNoNullStringWithString:model.teacherName];
     

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/TXLive/Controller/TXLiveRoomViewController.m

@@ -2078,7 +2078,7 @@ static int clickPraiseBtnTimes  = 0;
     }
     return _cardView;
 }
-// tabs=  practice | 陪练课 live | 直播课 video | 视频课 music | 乐谱 跳转到对应tab页
+// tabs=  practice | 趣纠课 live | 直播课 video | 视频课 music | 乐谱 跳转到对应tab页
 
 - (void)displayTeacherInfo:(CART_TYPE)type {
     [self sendRushMessage];