Browse Source

趣纠课课程组

Steven 4 months ago
parent
commit
2cc34ac7aa
22 changed files with 447 additions and 581 deletions
  1. 22 28
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyCourseGroupViewController.m
  3. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/Controller/MusicRoomGroupViewController.m
  4. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomCourseListCell.h
  5. 4 5
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomCourseListCell.m
  6. 1 1
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomGroupHeadView.h
  7. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomGroupHeadView.m
  8. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Controller/VIPCourseGroupViewController.m
  9. 0 169
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseGroupDetailModel.m
  10. 0 23
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseStudentVos.h
  11. 0 120
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseStudentVos.m
  12. 0 181
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/GroupCourseListModel.m
  13. 6 6
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentCourseGroupDetailModel.h
  14. 169 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentCourseGroupDetailModel.m
  15. 14 10
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentGroupCourseListModel.h
  16. 190 0
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentGroupCourseListModel.m
  17. 12 12
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseGroupBodyView.m
  18. 2 2
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseInfoView.h
  19. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseInfoView.m
  20. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseListCell.h
  21. 5 6
      KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseListCell.m
  22. 4 0
      KulexiuForStudent/KulexiuForStudent/Module/Home/ArrangeCourse/Model/ArrangeVideoCourseModel.m

+ 22 - 28
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -481,15 +481,10 @@
 		BC542E5D2840A60100633781 /* UserSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E5B2840A60000633781 /* UserSettingViewController.m */; };
 		BC542E612840A60E00633781 /* UseBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E5E2840A60D00633781 /* UseBodyView.m */; };
 		BC542E622840A60E00633781 /* UseBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E5F2840A60D00633781 /* UseBodyView.xib */; };
-		BC5A4B3F2CF40BEF008C2FDD /* GroupCourseListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B3E2CF40BEF008C2FDD /* GroupCourseListModel.m */; };
-		BC5A4B402CF40BEF008C2FDD /* CourseGroupDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B3A2CF40BEF008C2FDD /* CourseGroupDetailModel.m */; };
-		BC5A4B412CF40BEF008C2FDD /* CourseStudentVos.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B3C2CF40BEF008C2FDD /* CourseStudentVos.m */; };
 		BC5A4B4D2CF40BF9008C2FDD /* ProgramCourseInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B452CF40BF9008C2FDD /* ProgramCourseInfoView.m */; };
 		BC5A4B4E2CF40BF9008C2FDD /* VipCouseInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B4B2CF40BF9008C2FDD /* VipCouseInfoCell.m */; };
 		BC5A4B4F2CF40BF9008C2FDD /* ProgramCourseGroupBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B432CF40BF9008C2FDD /* ProgramCourseGroupBodyView.m */; };
-		BC5A4B502CF40BF9008C2FDD /* ProgramCourseListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B482CF40BF9008C2FDD /* ProgramCourseListCell.m */; };
 		BC5A4B512CF40BF9008C2FDD /* ProgramCourseInfoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5A4B462CF40BF9008C2FDD /* ProgramCourseInfoView.xib */; };
-		BC5A4B522CF40BF9008C2FDD /* ProgramCourseListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5A4B492CF40BF9008C2FDD /* ProgramCourseListCell.xib */; };
 		BC5A4B532CF40BF9008C2FDD /* VipCouseInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5A4B4C2CF40BF9008C2FDD /* VipCouseInfoCell.xib */; };
 		BC5A4B642CF40C35008C2FDD /* CourseGroupPlanDescView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B5E2CF40C35008C2FDD /* CourseGroupPlanDescView.m */; };
 		BC5A4B652CF40C35008C2FDD /* CourseGroupNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5A4B552CF40C35008C2FDD /* CourseGroupNavView.m */; };
@@ -964,6 +959,10 @@
 		BCF425F72AB991E600BCD942 /* TenantAlbumModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF425F62AB991E600BCD942 /* TenantAlbumModel.m */; };
 		BCF472E72AB019CD0032BE16 /* TenantDarkViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF472E62AB019CD0032BE16 /* TenantDarkViewController.m */; };
 		BCF472EA2AB01AEB0032BE16 /* TenantMoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF472E92AB01AEB0032BE16 /* TenantMoreViewController.m */; };
+		BCFA12682CF424D8005229AC /* ProgramCourseListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCFA12672CF424D8005229AC /* ProgramCourseListCell.xib */; };
+		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 */; };
 		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 */; };
@@ -1888,20 +1887,11 @@
 		BC542E5E2840A60D00633781 /* UseBodyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UseBodyView.m; sourceTree = "<group>"; };
 		BC542E5F2840A60D00633781 /* UseBodyView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UseBodyView.xib; sourceTree = "<group>"; };
 		BC542E602840A60D00633781 /* UseBodyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UseBodyView.h; sourceTree = "<group>"; };
-		BC5A4B392CF40BEF008C2FDD /* CourseGroupDetailModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CourseGroupDetailModel.h; sourceTree = "<group>"; };
-		BC5A4B3A2CF40BEF008C2FDD /* CourseGroupDetailModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CourseGroupDetailModel.m; sourceTree = "<group>"; };
-		BC5A4B3B2CF40BEF008C2FDD /* CourseStudentVos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CourseStudentVos.h; sourceTree = "<group>"; };
-		BC5A4B3C2CF40BEF008C2FDD /* CourseStudentVos.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CourseStudentVos.m; sourceTree = "<group>"; };
-		BC5A4B3D2CF40BEF008C2FDD /* GroupCourseListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GroupCourseListModel.h; sourceTree = "<group>"; };
-		BC5A4B3E2CF40BEF008C2FDD /* GroupCourseListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GroupCourseListModel.m; sourceTree = "<group>"; };
 		BC5A4B422CF40BF9008C2FDD /* ProgramCourseGroupBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProgramCourseGroupBodyView.h; sourceTree = "<group>"; };
 		BC5A4B432CF40BF9008C2FDD /* ProgramCourseGroupBodyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProgramCourseGroupBodyView.m; sourceTree = "<group>"; };
 		BC5A4B442CF40BF9008C2FDD /* ProgramCourseInfoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProgramCourseInfoView.h; sourceTree = "<group>"; };
 		BC5A4B452CF40BF9008C2FDD /* ProgramCourseInfoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProgramCourseInfoView.m; sourceTree = "<group>"; };
 		BC5A4B462CF40BF9008C2FDD /* ProgramCourseInfoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProgramCourseInfoView.xib; sourceTree = "<group>"; };
-		BC5A4B472CF40BF9008C2FDD /* ProgramCourseListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProgramCourseListCell.h; sourceTree = "<group>"; };
-		BC5A4B482CF40BF9008C2FDD /* ProgramCourseListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProgramCourseListCell.m; sourceTree = "<group>"; };
-		BC5A4B492CF40BF9008C2FDD /* ProgramCourseListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProgramCourseListCell.xib; sourceTree = "<group>"; };
 		BC5A4B4A2CF40BF9008C2FDD /* VipCouseInfoCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VipCouseInfoCell.h; sourceTree = "<group>"; };
 		BC5A4B4B2CF40BF9008C2FDD /* VipCouseInfoCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VipCouseInfoCell.m; sourceTree = "<group>"; };
 		BC5A4B4C2CF40BF9008C2FDD /* VipCouseInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VipCouseInfoCell.xib; sourceTree = "<group>"; };
@@ -2622,6 +2612,13 @@
 		BCF880DD2B91C4FA0007B8F0 /* Config-debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Config-debug.xcconfig"; sourceTree = "<group>"; };
 		BCF880DF2B91C5090007B8F0 /* Config-test.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Config-test.xcconfig"; sourceTree = "<group>"; };
 		BCF880E02B91C5150007B8F0 /* Config-release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Config-release.xcconfig"; sourceTree = "<group>"; };
+		BCFA12652CF424D8005229AC /* ProgramCourseListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProgramCourseListCell.h; sourceTree = "<group>"; };
+		BCFA12662CF424D8005229AC /* ProgramCourseListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProgramCourseListCell.m; sourceTree = "<group>"; };
+		BCFA12672CF424D8005229AC /* ProgramCourseListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ProgramCourseListCell.xib; sourceTree = "<group>"; };
+		BCFA126A2CF425A7005229AC /* StudentCourseGroupDetailModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StudentCourseGroupDetailModel.h; sourceTree = "<group>"; };
+		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>"; };
 		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>"; };
@@ -6357,12 +6354,10 @@
 		BCFB9B992CE49F7A00B66BC0 /* Model */ = {
 			isa = PBXGroup;
 			children = (
-				BC5A4B392CF40BEF008C2FDD /* CourseGroupDetailModel.h */,
-				BC5A4B3A2CF40BEF008C2FDD /* CourseGroupDetailModel.m */,
-				BC5A4B3B2CF40BEF008C2FDD /* CourseStudentVos.h */,
-				BC5A4B3C2CF40BEF008C2FDD /* CourseStudentVos.m */,
-				BC5A4B3D2CF40BEF008C2FDD /* GroupCourseListModel.h */,
-				BC5A4B3E2CF40BEF008C2FDD /* GroupCourseListModel.m */,
+				BCFA126A2CF425A7005229AC /* StudentCourseGroupDetailModel.h */,
+				BCFA126B2CF425A7005229AC /* StudentCourseGroupDetailModel.m */,
+				BCFA126D2CF42703005229AC /* StudentGroupCourseListModel.h */,
+				BCFA126E2CF42703005229AC /* StudentGroupCourseListModel.m */,
 			);
 			path = Model;
 			sourceTree = "<group>";
@@ -6375,12 +6370,12 @@
 				BC5A4B442CF40BF9008C2FDD /* ProgramCourseInfoView.h */,
 				BC5A4B452CF40BF9008C2FDD /* ProgramCourseInfoView.m */,
 				BC5A4B462CF40BF9008C2FDD /* ProgramCourseInfoView.xib */,
-				BC5A4B472CF40BF9008C2FDD /* ProgramCourseListCell.h */,
-				BC5A4B482CF40BF9008C2FDD /* ProgramCourseListCell.m */,
-				BC5A4B492CF40BF9008C2FDD /* ProgramCourseListCell.xib */,
 				BC5A4B4A2CF40BF9008C2FDD /* VipCouseInfoCell.h */,
 				BC5A4B4B2CF40BF9008C2FDD /* VipCouseInfoCell.m */,
 				BC5A4B4C2CF40BF9008C2FDD /* VipCouseInfoCell.xib */,
+				BCFA12652CF424D8005229AC /* ProgramCourseListCell.h */,
+				BCFA12662CF424D8005229AC /* ProgramCourseListCell.m */,
+				BCFA12672CF424D8005229AC /* ProgramCourseListCell.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -6725,7 +6720,6 @@
 				BC119280280FB10900A716F7 /* AccompanyRemarkCell.xib in Resources */,
 				BCC409012AFCE6B500C60249 /* MusicPublicContentView.xib in Resources */,
 				BC5A4B512CF40BF9008C2FDD /* ProgramCourseInfoView.xib in Resources */,
-				BC5A4B522CF40BF9008C2FDD /* ProgramCourseListCell.xib in Resources */,
 				BC5A4B532CF40BF9008C2FDD /* VipCouseInfoCell.xib in Resources */,
 				BC7354992CEED2EB00C2B35C /* MyCourseGroupNavView.xib in Resources */,
 				BC71D271288804CD0010F14B /* img_26.png in Resources */,
@@ -6857,6 +6851,7 @@
 				BC71D273288804CD0010F14B /* img_33.png in Resources */,
 				BCC583C628A9EC6400BAB4CF /* cloud_animation_13.png in Resources */,
 				BCC583C428A9EC6400BAB4CF /* cloud_animation_16.png in Resources */,
+				BCFA12682CF424D8005229AC /* ProgramCourseListCell.xib in Resources */,
 				BC5A4B8B2CF42104008C2FDD /* MusicRoomCourseListCell.xib in Resources */,
 				BC5A4B8C2CF42104008C2FDD /* MusicRoomGroupHeadView.xib in Resources */,
 				BCFDA65828BCA2000022B497 /* live_animation.json in Resources */,
@@ -7313,7 +7308,6 @@
 				BC5A4B4D2CF40BF9008C2FDD /* ProgramCourseInfoView.m in Sources */,
 				BC5A4B4E2CF40BF9008C2FDD /* VipCouseInfoCell.m in Sources */,
 				BC5A4B4F2CF40BF9008C2FDD /* ProgramCourseGroupBodyView.m in Sources */,
-				BC5A4B502CF40BF9008C2FDD /* ProgramCourseListCell.m in Sources */,
 				BCBFDF41281157340052AFE5 /* HomeButtonView.m in Sources */,
 				2779358127E324A80010E277 /* StateView.m in Sources */,
 				BCECE2542B3D670500C0D555 /* FeedbackBodyView.m in Sources */,
@@ -7325,6 +7319,7 @@
 				2723B62927F157D500E0B90B /* KSChatComplainController.m in Sources */,
 				BC2933002AAEFC810024D98E /* INSSettingViewController.m in Sources */,
 				BCB5B2D12ABAFE8E005BF25D /* HomeMusicSheetLayout.m in Sources */,
+				BCFA12692CF424D8005229AC /* ProgramCourseListCell.m in Sources */,
 				BC31BF0D2B21925700F7D538 /* WidgetViewController.m in Sources */,
 				BC2821062C91875C008BD2CC /* GroupNoticeDetailBodyView.m in Sources */,
 				BC542E4B28409E9F00633781 /* InstrumentChooseViewController.m in Sources */,
@@ -7515,6 +7510,7 @@
 				BC2C1BB12CEB555500EDEB97 /* HomeArrangeVIPCourseView.m in Sources */,
 				BC76630E2827E48800C91A1D /* NotiferMessageModel.m in Sources */,
 				BCFE5406281545C600AD6786 /* HomeAlbumModel.m in Sources */,
+				BCFA126C2CF425A7005229AC /* StudentCourseGroupDetailModel.m in Sources */,
 				BC106C352A9338A7000759A9 /* TXUISeatMember.m in Sources */,
 				275FA1EE27E7351900CFEA2E /* KSBaseViewController.m in Sources */,
 				BC38C3F12AF893B400ABFCC2 /* KSAudioAnimationView.m in Sources */,
@@ -7571,11 +7567,9 @@
 				BCC9A7B62C955CB500F5D005 /* KSPlatformDownloadAlert.m in Sources */,
 				BCC0F6592A8CD8F500C4EFA4 /* TXChatAreaView.m in Sources */,
 				2723B5CD27F157BE00E0B90B /* GroupListModel.m in Sources */,
-				BC5A4B3F2CF40BEF008C2FDD /* GroupCourseListModel.m in Sources */,
-				BC5A4B402CF40BEF008C2FDD /* CourseGroupDetailModel.m in Sources */,
-				BC5A4B412CF40BEF008C2FDD /* CourseStudentVos.m in Sources */,
 				2723B63327F157D500E0B90B /* ChatComplainBodyView.m in Sources */,
 				BC85A9E72C6B570E003C1ABE /* KSSpectrumView.m in Sources */,
+				BCFA126F2CF42703005229AC /* StudentGroupCourseListModel.m in Sources */,
 				2779357927E324A70010E277 /* KSImageButton.m in Sources */,
 				BCC0F6E52A8CE24400C4EFA4 /* KSNewWhiteBoard.m in Sources */,
 				BCD959CC28DB0BAB00B70314 /* KSImageShareViewController.m in Sources */,

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Course/AccompanyCourse/Controller/AccompanyCourseGroupViewController.m

@@ -11,7 +11,7 @@
 #import "JXPagerListRefreshView.h"
 #import "ProgramCourseInfoView.h"
 #import "ProgramCourseGroupBodyView.h"
-#import "CourseGroupDetailModel.h"
+#import "StudentCourseGroupDetailModel.h"
 
 @interface AccompanyCourseGroupViewController ()<JXPagerViewDelegate,JXCategoryViewDelegate>
 
@@ -27,7 +27,7 @@
 
 @property (nonatomic, assign) BOOL isFirstLoad;
 
-@property (nonatomic, strong) CourseGroupDetailModel *detailModel;
+@property (nonatomic, strong) StudentCourseGroupDetailModel *detailModel;
 
 @property (nonatomic, assign) NSInteger enterStartTime;  // 开课前可进入时间配置(分钟)
 
@@ -71,7 +71,7 @@
     [KSNetworkingManager getCourseGroupDetailRequest:KS_POST courseGroupId:self.courseGroupId success:^(NSDictionary * _Nonnull dic) {
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             NSDictionary *parm = [dic ks_dictionaryValueForKey:@"data"];
-            self.detailModel = [[CourseGroupDetailModel alloc] initWithDictionary:parm];
+            self.detailModel = [[StudentCourseGroupDetailModel alloc] initWithDictionary:parm];
             // 配置信息
             NSDictionary *config = [[dic ks_dictionaryValueForKey:@"data"] ks_dictionaryValueForKey:@"sysConfig"];
             self.enterStartTime = [config ks_integerValueForKey:@"practiceStartTime"];

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/Controller/MusicRoomGroupViewController.m

@@ -10,7 +10,7 @@
 #import "JXCategoryView.h"
 #import "JXPagerListRefreshView.h"
 #import "ProgramCourseGroupBodyView.h"
-#import "CourseGroupDetailModel.h"
+#import "StudentCourseGroupDetailModel.h"
 #import "MusicRoomGroupHeadView.h"
 #import "MusicRoomStudentPageView.h"
 
@@ -28,7 +28,7 @@
 
 @property (nonatomic, assign) BOOL isFirstLoad;
 
-@property (nonatomic, strong) CourseGroupDetailModel *detailModel;
+@property (nonatomic, strong) StudentCourseGroupDetailModel *detailModel;
 
 @property (nonatomic, assign) NSInteger enterStartTime;  // 开课前可进入时间配置(分钟)
 
@@ -72,7 +72,7 @@
     [KSNetworkingManager getCourseGroupDetailRequest:KS_POST courseGroupId:self.courseGroupId success:^(NSDictionary * _Nonnull dic) {
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             NSDictionary *parm = [dic ks_dictionaryValueForKey:@"data"];
-            self.detailModel = [[CourseGroupDetailModel alloc] initWithDictionary:parm];
+            self.detailModel = [[StudentCourseGroupDetailModel alloc] initWithDictionary:parm];
             // 配置信息
             NSDictionary *config = [[dic ks_dictionaryValueForKey:@"data"] ks_dictionaryValueForKey:@"sysConfig"];
             self.enterStartTime = [config ks_integerValueForKey:@"pianoStartTime"];

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomCourseListCell.h

@@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MusicRoomCourseListCell : UITableViewCell
 
-- (void)configWithSource:(GroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback;
+- (void)configWithSource:(StudentGroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback;
 
 @end
 

+ 4 - 5
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomCourseListCell.m

@@ -25,7 +25,7 @@
 @property (weak, nonatomic) IBOutlet UIView *subjectView;
 @property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
 
-@property (nonatomic, strong) GroupCourseListModel *sourceModel;
+@property (nonatomic, strong) StudentGroupCourseListModel *sourceModel;
 
 @property (nonatomic, copy) GroupListModelCallback callback;
 
@@ -41,7 +41,7 @@
     self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
 
-- (void)configWithSource:(GroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback {
+- (void)configWithSource:(StudentGroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback {
     if (callback) {
         self.callback = callback;
     }
@@ -56,8 +56,7 @@
     NSString *lessonEnd = [formatter stringFromDate:endDate];
     self.timeLabel.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
     self.courseGroupName.text = [NSString returnNoNullStringWithString:model.courseGroupName];
-    CourseStudentVos *studentInfo = [model.courseStudentVos lastObject];
-    self.nameLabel.text = [NSString returnNoNullStringWithString:studentInfo.userName];
+    self.nameLabel.text = [NSString returnNoNullStringWithString:model.userName];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:model.subjectName];
     if ([NSString isEmptyString:model.subjectName]) {
         self.subjectView.hidden = YES;
@@ -68,7 +67,7 @@
     [self evaluateWithSource:model];
 }
 
-- (void)evaluateWithSource:(GroupCourseListModel *)model {
+- (void)evaluateWithSource:(StudentGroupCourseListModel *)model {
     NSString *imageName = model.attendanceStatus ? @"course_attendence" : @"course_noArrive";
     if ([model.status isEqualToString:@"ING"]) {
         self.statusLabel.text = @"进行中";

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomGroupHeadView.h

@@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 + (instancetype)sharedInstance;
 
-- (void)configWithSource:(CourseGroupDetailModel *)model;
+- (void)configWithSource:(StudentCourseGroupDetailModel *)model;
 
 - (void)programActionCallback:(ProgramPlanAction)callback;
 

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Course/MusicRoom/View/MusicRoomGroupHeadView.m

@@ -44,7 +44,7 @@
 }
 
 
-- (void)configWithSource:(CourseGroupDetailModel *)model {
+- (void)configWithSource:(StudentCourseGroupDetailModel *)model {
     [self.planContainer removeAllSubViews];
     if ([NSString isEmptyString:model.coursePlan]) {
         [self.planContainer addSubview:self.addView];
@@ -69,7 +69,7 @@
     /// 状态
     [self evaluateGroupStatus:model.status];
     
-    self.nameLabel.text = [NSString returnNoNullStringWithString:model.studentName];
+    self.nameLabel.text = [NSString returnNoNullStringWithString:model.teacherName];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:model.subjectName];
     if ([NSString isEmptyString:model.subjectName]) {
         self.subjectView.hidden = YES;

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Controller/VIPCourseGroupViewController.m

@@ -11,7 +11,7 @@
 #import "JXPagerListRefreshView.h"
 #import "ProgramCourseInfoView.h"
 #import "ProgramCourseGroupBodyView.h"
-#import "CourseGroupDetailModel.h"
+#import "StudentCourseGroupDetailModel.h"
 
 
 @interface VIPCourseGroupViewController ()<JXPagerViewDelegate,JXCategoryViewDelegate>
@@ -28,7 +28,7 @@
 
 @property (nonatomic, assign) BOOL isFirstLoad;
 
-@property (nonatomic, strong) CourseGroupDetailModel *detailModel;
+@property (nonatomic, strong) StudentCourseGroupDetailModel *detailModel;
 
 @property (nonatomic, assign) NSInteger enterStartTime;  // 开课前可进入时间配置(分钟)
 
@@ -72,7 +72,7 @@
     [KSNetworkingManager getCourseGroupDetailRequest:KS_POST courseGroupId:self.courseGroupId success:^(NSDictionary * _Nonnull dic) {
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             NSDictionary *parm = [dic ks_dictionaryValueForKey:@"data"];
-            self.detailModel = [[CourseGroupDetailModel alloc] initWithDictionary:parm];
+            self.detailModel = [[StudentCourseGroupDetailModel alloc] initWithDictionary:parm];
             
             // 配置信息
             NSDictionary *config = [[dic ks_dictionaryValueForKey:@"data"] ks_dictionaryValueForKey:@"sysConfig"];

+ 0 - 169
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseGroupDetailModel.m

@@ -1,169 +0,0 @@
-//
-//  CourseGroupDetailModel.m
-//
-//  Created by Steven  on 2024/11/22
-//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
-//
-
-#import "CourseGroupDetailModel.h"
-
-
-NSString *const kCourseGroupDetailModelStatus = @"status";
-NSString *const kCourseGroupDetailModelCoursePlan = @"coursePlan";
-NSString *const kCourseGroupDetailModelCourseGroupId = @"courseGroupId";
-NSString *const kCourseGroupDetailModelCourseGroupName = @"courseGroupName";
-NSString *const kCourseGroupDetailModelCompleteCourseNum = @"completeCourseNum";
-NSString *const kCourseGroupDetailModelSubjectId = @"subjectId";
-NSString *const kCourseGroupDetailModelStudentNum = @"studentNum";
-NSString *const kCourseGroupDetailModelSubjectName = @"subjectName";
-NSString *const kCourseGroupDetailModelStudentName = @"studentName";
-NSString *const kCourseGroupDetailModelCourseNum = @"courseNum";
-NSString *const kCourseGroupDetailModelStudentAvatar = @"studentAvatar";
-
-
-@interface CourseGroupDetailModel ()
-
-- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
-
-@end
-
-@implementation CourseGroupDetailModel
-
-@synthesize status = _status;
-@synthesize coursePlan = _coursePlan;
-@synthesize courseGroupId = _courseGroupId;
-@synthesize courseGroupName = _courseGroupName;
-@synthesize completeCourseNum = _completeCourseNum;
-@synthesize subjectId = _subjectId;
-@synthesize studentNum = _studentNum;
-@synthesize subjectName = _subjectName;
-@synthesize studentName = _studentName;
-@synthesize courseNum = _courseNum;
-@synthesize studentAvatar = _studentAvatar;
-
-
-+ (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.status = [self objectOrNilForKey:kCourseGroupDetailModelStatus fromDictionary:dict];
-            self.coursePlan = [self objectOrNilForKey:kCourseGroupDetailModelCoursePlan fromDictionary:dict];
-            self.courseGroupId = [self objectOrNilForKey:kCourseGroupDetailModelCourseGroupId fromDictionary:dict];
-            self.courseGroupName = [self objectOrNilForKey:kCourseGroupDetailModelCourseGroupName fromDictionary:dict];
-            self.completeCourseNum = [[self objectOrNilForKey:kCourseGroupDetailModelCompleteCourseNum fromDictionary:dict] doubleValue];
-            self.subjectId = [self objectOrNilForKey:kCourseGroupDetailModelSubjectId fromDictionary:dict];
-            self.studentNum = [[self objectOrNilForKey:kCourseGroupDetailModelStudentNum fromDictionary:dict] doubleValue];
-            self.subjectName = [self objectOrNilForKey:kCourseGroupDetailModelSubjectName fromDictionary:dict];
-            self.studentName = [self objectOrNilForKey:kCourseGroupDetailModelStudentName fromDictionary:dict];
-            self.courseNum = [[self objectOrNilForKey:kCourseGroupDetailModelCourseNum fromDictionary:dict] doubleValue];
-            self.studentAvatar = [self objectOrNilForKey:kCourseGroupDetailModelStudentAvatar fromDictionary:dict];
-
-    }
-    
-    return self;
-    
-}
-
-- (NSDictionary *)dictionaryRepresentation
-{
-    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-    [mutableDict setValue:self.status forKey:kCourseGroupDetailModelStatus];
-    [mutableDict setValue:self.coursePlan forKey:kCourseGroupDetailModelCoursePlan];
-    [mutableDict setValue:self.courseGroupId forKey:kCourseGroupDetailModelCourseGroupId];
-    [mutableDict setValue:self.courseGroupName forKey:kCourseGroupDetailModelCourseGroupName];
-    [mutableDict setValue:[NSNumber numberWithDouble:self.completeCourseNum] forKey:kCourseGroupDetailModelCompleteCourseNum];
-    [mutableDict setValue:self.subjectId forKey:kCourseGroupDetailModelSubjectId];
-    [mutableDict setValue:[NSNumber numberWithDouble:self.studentNum] forKey:kCourseGroupDetailModelStudentNum];
-    [mutableDict setValue:self.subjectName forKey:kCourseGroupDetailModelSubjectName];
-    [mutableDict setValue:self.studentName forKey:kCourseGroupDetailModelStudentName];
-    [mutableDict setValue:[NSNumber numberWithDouble:self.courseNum] forKey:kCourseGroupDetailModelCourseNum];
-    [mutableDict setValue:self.studentAvatar forKey:kCourseGroupDetailModelStudentAvatar];
-
-    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.status = [aDecoder decodeObjectForKey:kCourseGroupDetailModelStatus];
-    self.coursePlan = [aDecoder decodeObjectForKey:kCourseGroupDetailModelCoursePlan];
-    self.courseGroupId = [aDecoder decodeObjectForKey:kCourseGroupDetailModelCourseGroupId];
-    self.courseGroupName = [aDecoder decodeObjectForKey:kCourseGroupDetailModelCourseGroupName];
-    self.completeCourseNum = [aDecoder decodeDoubleForKey:kCourseGroupDetailModelCompleteCourseNum];
-    self.subjectId = [aDecoder decodeObjectForKey:kCourseGroupDetailModelSubjectId];
-    self.studentNum = [aDecoder decodeDoubleForKey:kCourseGroupDetailModelStudentNum];
-    self.subjectName = [aDecoder decodeObjectForKey:kCourseGroupDetailModelSubjectName];
-    self.studentName = [aDecoder decodeObjectForKey:kCourseGroupDetailModelStudentName];
-    self.courseNum = [aDecoder decodeDoubleForKey:kCourseGroupDetailModelCourseNum];
-    self.studentAvatar = [aDecoder decodeObjectForKey:kCourseGroupDetailModelStudentAvatar];
-    return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)aCoder
-{
-
-    [aCoder encodeObject:_status forKey:kCourseGroupDetailModelStatus];
-    [aCoder encodeObject:_coursePlan forKey:kCourseGroupDetailModelCoursePlan];
-    [aCoder encodeObject:_courseGroupId forKey:kCourseGroupDetailModelCourseGroupId];
-    [aCoder encodeObject:_courseGroupName forKey:kCourseGroupDetailModelCourseGroupName];
-    [aCoder encodeDouble:_completeCourseNum forKey:kCourseGroupDetailModelCompleteCourseNum];
-    [aCoder encodeObject:_subjectId forKey:kCourseGroupDetailModelSubjectId];
-    [aCoder encodeDouble:_studentNum forKey:kCourseGroupDetailModelStudentNum];
-    [aCoder encodeObject:_subjectName forKey:kCourseGroupDetailModelSubjectName];
-    [aCoder encodeObject:_studentName forKey:kCourseGroupDetailModelStudentName];
-    [aCoder encodeDouble:_courseNum forKey:kCourseGroupDetailModelCourseNum];
-    [aCoder encodeObject:_studentAvatar forKey:kCourseGroupDetailModelStudentAvatar];
-}
-
-- (id)copyWithZone:(NSZone *)zone
-{
-    CourseGroupDetailModel *copy = [[CourseGroupDetailModel alloc] init];
-    
-    if (copy) {
-
-        copy.status = [self.status copyWithZone:zone];
-        copy.coursePlan = [self.coursePlan copyWithZone:zone];
-        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
-        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
-        copy.completeCourseNum = self.completeCourseNum;
-        copy.subjectId = [self.subjectId copyWithZone:zone];
-        copy.studentNum = self.studentNum;
-        copy.subjectName = [self.subjectName copyWithZone:zone];
-        copy.studentName = [self.studentName copyWithZone:zone];
-        copy.courseNum = self.courseNum;
-        copy.studentAvatar = [self.studentAvatar copyWithZone:zone];
-    }
-    
-    return copy;
-}
-
-
-@end

+ 0 - 23
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseStudentVos.h

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

+ 0 - 120
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseStudentVos.m

@@ -1,120 +0,0 @@
-//
-//  CourseStudentVos.m
-//
-//  Created by Steven  on 2024/11/22
-//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
-//
-
-#import "CourseStudentVos.h"
-
-
-NSString *const kCourseStudentVosAvatar = @"avatar";
-NSString *const kCourseStudentVosUserId = @"userId";
-NSString *const kCourseStudentVosImUserId = @"imUserId";
-NSString *const kCourseStudentVosUserName = @"userName";
-
-
-@interface CourseStudentVos ()
-
-- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
-
-@end
-
-@implementation CourseStudentVos
-
-@synthesize avatar = _avatar;
-@synthesize userId = _userId;
-@synthesize imUserId = _imUserId;
-@synthesize userName = _userName;
-
-
-+ (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.avatar = [self objectOrNilForKey:kCourseStudentVosAvatar fromDictionary:dict];
-            self.userId = [self objectOrNilForKey:kCourseStudentVosUserId fromDictionary:dict];
-            self.imUserId = [self objectOrNilForKey:kCourseStudentVosImUserId fromDictionary:dict];
-            self.userName = [self objectOrNilForKey:kCourseStudentVosUserName fromDictionary:dict];
-
-    }
-    
-    return self;
-    
-}
-
-- (NSDictionary *)dictionaryRepresentation
-{
-    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-    [mutableDict setValue:self.avatar forKey:kCourseStudentVosAvatar];
-    [mutableDict setValue:self.userId forKey:kCourseStudentVosUserId];
-    [mutableDict setValue:self.imUserId forKey:kCourseStudentVosImUserId];
-    [mutableDict setValue:self.userName forKey:kCourseStudentVosUserName];
-
-    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.avatar = [aDecoder decodeObjectForKey:kCourseStudentVosAvatar];
-    self.userId = [aDecoder decodeObjectForKey:kCourseStudentVosUserId];
-    self.imUserId = [aDecoder decodeObjectForKey:kCourseStudentVosImUserId];
-    self.userName = [aDecoder decodeObjectForKey:kCourseStudentVosUserName];
-    return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)aCoder
-{
-
-    [aCoder encodeObject:_avatar forKey:kCourseStudentVosAvatar];
-    [aCoder encodeObject:_userId forKey:kCourseStudentVosUserId];
-    [aCoder encodeObject:_imUserId forKey:kCourseStudentVosImUserId];
-    [aCoder encodeObject:_userName forKey:kCourseStudentVosUserName];
-}
-
-- (id)copyWithZone:(NSZone *)zone
-{
-    CourseStudentVos *copy = [[CourseStudentVos alloc] init];
-    
-    if (copy) {
-
-        copy.avatar = [self.avatar copyWithZone:zone];
-        copy.userId = [self.userId copyWithZone:zone];
-        copy.imUserId = [self.imUserId copyWithZone:zone];
-        copy.userName = [self.userName copyWithZone:zone];
-    }
-    
-    return copy;
-}
-
-
-@end

+ 0 - 181
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/GroupCourseListModel.m

@@ -1,181 +0,0 @@
-//
-//  GroupCourseListModel.m
-//
-//  Created by Steven  on 2024/11/22
-//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
-//
-
-#import "GroupCourseListModel.h"
-
-
-NSString *const kGroupCourseListModelStatus = @"status";
-NSString *const kGroupCourseListModelClassDate = @"classDate";
-NSString *const kGroupCourseListModelEndTime = @"endTime";
-NSString *const kGroupCourseListModelCourseId = @"courseId";
-NSString *const kGroupCourseListModelCourseStudentVos = @"courseStudentVos";
-NSString *const kGroupCourseListModelCourseGoupId = @"courseGoupId";
-NSString *const kGroupCourseListModelStartTime = @"startTime";
-NSString *const kGroupCourseListModelCourseGroupName = @"courseGroupName";
-NSString *const kGroupCourseListModelAttendanceStatus = @"attendanceStatus";
-NSString *const kGroupCourseListModelSubjectName = @"subjectName";
-
-@interface GroupCourseListModel ()
-
-- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
-
-@end
-
-@implementation GroupCourseListModel
-
-@synthesize status = _status;
-@synthesize classDate = _classDate;
-@synthesize endTime = _endTime;
-@synthesize courseId = _courseId;
-@synthesize courseStudentVos = _courseStudentVos;
-@synthesize courseGoupId = _courseGoupId;
-@synthesize startTime = _startTime;
-@synthesize courseGroupName = _courseGroupName;
-@synthesize attendanceStatus = _attendanceStatus;
-@synthesize subjectName = _subjectName;
-
-+ (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.status = [self objectOrNilForKey:kGroupCourseListModelStatus fromDictionary:dict];
-            self.classDate = [self objectOrNilForKey:kGroupCourseListModelClassDate fromDictionary:dict];
-            self.endTime = [self objectOrNilForKey:kGroupCourseListModelEndTime fromDictionary:dict];
-            self.courseId = [self objectOrNilForKey:kGroupCourseListModelCourseId fromDictionary:dict];
-    NSObject *receivedCourseStudentVos = [dict objectForKey:kGroupCourseListModelCourseStudentVos];
-    NSMutableArray *parsedCourseStudentVos = [NSMutableArray array];
-    if ([receivedCourseStudentVos isKindOfClass:[NSArray class]]) {
-        for (NSDictionary *item in (NSArray *)receivedCourseStudentVos) {
-            if ([item isKindOfClass:[NSDictionary class]]) {
-                [parsedCourseStudentVos addObject:[CourseStudentVos modelObjectWithDictionary:item]];
-            }
-       }
-    } else if ([receivedCourseStudentVos isKindOfClass:[NSDictionary class]]) {
-       [parsedCourseStudentVos addObject:[CourseStudentVos modelObjectWithDictionary:(NSDictionary *)receivedCourseStudentVos]];
-    }
-
-    self.courseStudentVos = [NSArray arrayWithArray:parsedCourseStudentVos];
-            self.courseGoupId = [self objectOrNilForKey:kGroupCourseListModelCourseGoupId fromDictionary:dict];
-            self.startTime = [self objectOrNilForKey:kGroupCourseListModelStartTime fromDictionary:dict];
-            self.courseGroupName = [self objectOrNilForKey:kGroupCourseListModelCourseGroupName fromDictionary:dict];
-            self.attendanceStatus = [[self objectOrNilForKey:kGroupCourseListModelAttendanceStatus fromDictionary:dict] boolValue];
-
-    }
-    self.subjectName = [self objectOrNilForKey:kGroupCourseListModelSubjectName fromDictionary:dict];
-    return self;
-    
-}
-
-- (NSDictionary *)dictionaryRepresentation
-{
-    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-    [mutableDict setValue:self.status forKey:kGroupCourseListModelStatus];
-    [mutableDict setValue:self.classDate forKey:kGroupCourseListModelClassDate];
-    [mutableDict setValue:self.endTime forKey:kGroupCourseListModelEndTime];
-    [mutableDict setValue:self.courseId forKey:kGroupCourseListModelCourseId];
-    NSMutableArray *tempArrayForCourseStudentVos = [NSMutableArray array];
-    for (NSObject *subArrayObject in self.courseStudentVos) {
-        if([subArrayObject respondsToSelector:@selector(dictionaryRepresentation)]) {
-            // This class is a model object
-            [tempArrayForCourseStudentVos addObject:[subArrayObject performSelector:@selector(dictionaryRepresentation)]];
-        } else {
-            // Generic object
-            [tempArrayForCourseStudentVos addObject:subArrayObject];
-        }
-    }
-    [mutableDict setValue:[NSArray arrayWithArray:tempArrayForCourseStudentVos] forKey:kGroupCourseListModelCourseStudentVos];
-    [mutableDict setValue:self.courseGoupId forKey:kGroupCourseListModelCourseGoupId];
-    [mutableDict setValue:self.startTime forKey:kGroupCourseListModelStartTime];
-    [mutableDict setValue:self.courseGroupName forKey:kGroupCourseListModelCourseGroupName];
-    [mutableDict setValue:[NSNumber numberWithBool:self.attendanceStatus] forKey:kGroupCourseListModelAttendanceStatus];
-    [mutableDict setValue:self.subjectName forKey:kGroupCourseListModelSubjectName];
-    
-    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.status = [aDecoder decodeObjectForKey:kGroupCourseListModelStatus];
-    self.classDate = [aDecoder decodeObjectForKey:kGroupCourseListModelClassDate];
-    self.endTime = [aDecoder decodeObjectForKey:kGroupCourseListModelEndTime];
-    self.courseId = [aDecoder decodeObjectForKey:kGroupCourseListModelCourseId];
-    self.courseStudentVos = [aDecoder decodeObjectForKey:kGroupCourseListModelCourseStudentVos];
-    self.courseGoupId = [aDecoder decodeObjectForKey:kGroupCourseListModelCourseGoupId];
-    self.startTime = [aDecoder decodeObjectForKey:kGroupCourseListModelStartTime];
-    self.courseGroupName = [aDecoder decodeObjectForKey:kGroupCourseListModelCourseGroupName];
-    self.attendanceStatus = [aDecoder decodeBoolForKey:kGroupCourseListModelAttendanceStatus];
-    self.subjectName = [aDecoder decodeObjectForKey:kGroupCourseListModelSubjectName];
-    return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)aCoder
-{
-
-    [aCoder encodeObject:_status forKey:kGroupCourseListModelStatus];
-    [aCoder encodeObject:_classDate forKey:kGroupCourseListModelClassDate];
-    [aCoder encodeObject:_endTime forKey:kGroupCourseListModelEndTime];
-    [aCoder encodeObject:_courseId forKey:kGroupCourseListModelCourseId];
-    [aCoder encodeObject:_courseStudentVos forKey:kGroupCourseListModelCourseStudentVos];
-    [aCoder encodeObject:_courseGoupId forKey:kGroupCourseListModelCourseGoupId];
-    [aCoder encodeObject:_startTime forKey:kGroupCourseListModelStartTime];
-    [aCoder encodeObject:_courseGroupName forKey:kGroupCourseListModelCourseGroupName];
-    [aCoder encodeBool:_attendanceStatus forKey:kGroupCourseListModelAttendanceStatus];
-    [aCoder encodeObject:_subjectName forKey:kGroupCourseListModelSubjectName];
-}
-
-- (id)copyWithZone:(NSZone *)zone
-{
-    GroupCourseListModel *copy = [[GroupCourseListModel alloc] init];
-    
-    if (copy) {
-
-        copy.status = [self.status copyWithZone:zone];
-        copy.classDate = [self.classDate copyWithZone:zone];
-        copy.endTime = [self.endTime copyWithZone:zone];
-        copy.courseId = [self.courseId copyWithZone:zone];
-        copy.courseStudentVos = [self.courseStudentVos copyWithZone:zone];
-        copy.courseGoupId = [self.courseGoupId copyWithZone:zone];
-        copy.startTime = [self.startTime copyWithZone:zone];
-        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
-        copy.attendanceStatus = self.attendanceStatus;
-        copy.subjectName = [self.subjectName copyWithZone:zone];
-    }
-    
-    return copy;
-}
-
-
-@end

+ 6 - 6
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/CourseGroupDetailModel.h → KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentCourseGroupDetailModel.h

@@ -1,7 +1,7 @@
 //
-//  CourseGroupDetailModel.h
+//  StudentCourseGroupDetailModel.h
 //
-//  Created by Steven  on 2024/11/22
+//  Created by Steven  on 2024/11/25
 //  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
 //
 
@@ -9,19 +9,19 @@
 
 
 
-@interface CourseGroupDetailModel : NSObject <NSCoding, NSCopying>
+@interface StudentCourseGroupDetailModel : NSObject <NSCoding, NSCopying>
 
 @property (nonatomic, strong) NSString *status;
 @property (nonatomic, strong) NSString *coursePlan;
 @property (nonatomic, strong) NSString *courseGroupId;
 @property (nonatomic, strong) NSString *courseGroupName;
+@property (nonatomic, strong) NSString *teacherName;
 @property (nonatomic, assign) double completeCourseNum;
 @property (nonatomic, strong) NSString *subjectId;
-@property (nonatomic, assign) double studentNum;
 @property (nonatomic, strong) NSString *subjectName;
-@property (nonatomic, strong) NSString *studentName;
+@property (nonatomic, strong) NSString *teacherId;
 @property (nonatomic, assign) double courseNum;
-@property (nonatomic, strong) NSString *studentAvatar;
+@property (nonatomic, strong) NSString *teacherAvatar;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 169 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentCourseGroupDetailModel.m

@@ -0,0 +1,169 @@
+//
+//  StudentCourseGroupDetailModel.m
+//
+//  Created by Steven  on 2024/11/25
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import "StudentCourseGroupDetailModel.h"
+
+
+NSString *const kStudentCourseGroupDetailModelStatus = @"status";
+NSString *const kStudentCourseGroupDetailModelCoursePlan = @"coursePlan";
+NSString *const kStudentCourseGroupDetailModelCourseGroupId = @"courseGroupId";
+NSString *const kStudentCourseGroupDetailModelCourseGroupName = @"courseGroupName";
+NSString *const kStudentCourseGroupDetailModelTeacherName = @"teacherName";
+NSString *const kStudentCourseGroupDetailModelCompleteCourseNum = @"completeCourseNum";
+NSString *const kStudentCourseGroupDetailModelSubjectId = @"subjectId";
+NSString *const kStudentCourseGroupDetailModelSubjectName = @"subjectName";
+NSString *const kStudentCourseGroupDetailModelTeacherId = @"teacherId";
+NSString *const kStudentCourseGroupDetailModelCourseNum = @"courseNum";
+NSString *const kStudentCourseGroupDetailModelTeacherAvatar = @"teacherAvatar";
+
+
+@interface StudentCourseGroupDetailModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation StudentCourseGroupDetailModel
+
+@synthesize status = _status;
+@synthesize coursePlan = _coursePlan;
+@synthesize courseGroupId = _courseGroupId;
+@synthesize courseGroupName = _courseGroupName;
+@synthesize teacherName = _teacherName;
+@synthesize completeCourseNum = _completeCourseNum;
+@synthesize subjectId = _subjectId;
+@synthesize subjectName = _subjectName;
+@synthesize teacherId = _teacherId;
+@synthesize courseNum = _courseNum;
+@synthesize teacherAvatar = _teacherAvatar;
+
+
++ (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.status = [self objectOrNilForKey:kStudentCourseGroupDetailModelStatus fromDictionary:dict];
+            self.coursePlan = [self objectOrNilForKey:kStudentCourseGroupDetailModelCoursePlan fromDictionary:dict];
+            self.courseGroupId = [self objectOrNilForKey:kStudentCourseGroupDetailModelCourseGroupId fromDictionary:dict];
+            self.courseGroupName = [self objectOrNilForKey:kStudentCourseGroupDetailModelCourseGroupName fromDictionary:dict];
+            self.teacherName = [self objectOrNilForKey:kStudentCourseGroupDetailModelTeacherName fromDictionary:dict];
+            self.completeCourseNum = [[self objectOrNilForKey:kStudentCourseGroupDetailModelCompleteCourseNum fromDictionary:dict] doubleValue];
+            self.subjectId = [self objectOrNilForKey:kStudentCourseGroupDetailModelSubjectId fromDictionary:dict];
+            self.subjectName = [self objectOrNilForKey:kStudentCourseGroupDetailModelSubjectName fromDictionary:dict];
+            self.teacherId = [self objectOrNilForKey:kStudentCourseGroupDetailModelTeacherId fromDictionary:dict];
+            self.courseNum = [[self objectOrNilForKey:kStudentCourseGroupDetailModelCourseNum fromDictionary:dict] doubleValue];
+            self.teacherAvatar = [self objectOrNilForKey:kStudentCourseGroupDetailModelTeacherAvatar fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.status forKey:kStudentCourseGroupDetailModelStatus];
+    [mutableDict setValue:self.coursePlan forKey:kStudentCourseGroupDetailModelCoursePlan];
+    [mutableDict setValue:self.courseGroupId forKey:kStudentCourseGroupDetailModelCourseGroupId];
+    [mutableDict setValue:self.courseGroupName forKey:kStudentCourseGroupDetailModelCourseGroupName];
+    [mutableDict setValue:self.teacherName forKey:kStudentCourseGroupDetailModelTeacherName];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.completeCourseNum] forKey:kStudentCourseGroupDetailModelCompleteCourseNum];
+    [mutableDict setValue:self.subjectId forKey:kStudentCourseGroupDetailModelSubjectId];
+    [mutableDict setValue:self.subjectName forKey:kStudentCourseGroupDetailModelSubjectName];
+    [mutableDict setValue:self.teacherId forKey:kStudentCourseGroupDetailModelTeacherId];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.courseNum] forKey:kStudentCourseGroupDetailModelCourseNum];
+    [mutableDict setValue:self.teacherAvatar forKey:kStudentCourseGroupDetailModelTeacherAvatar];
+
+    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.status = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelStatus];
+    self.coursePlan = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelCoursePlan];
+    self.courseGroupId = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelCourseGroupId];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelCourseGroupName];
+    self.teacherName = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelTeacherName];
+    self.completeCourseNum = [aDecoder decodeDoubleForKey:kStudentCourseGroupDetailModelCompleteCourseNum];
+    self.subjectId = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelSubjectId];
+    self.subjectName = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelSubjectName];
+    self.teacherId = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelTeacherId];
+    self.courseNum = [aDecoder decodeDoubleForKey:kStudentCourseGroupDetailModelCourseNum];
+    self.teacherAvatar = [aDecoder decodeObjectForKey:kStudentCourseGroupDetailModelTeacherAvatar];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_status forKey:kStudentCourseGroupDetailModelStatus];
+    [aCoder encodeObject:_coursePlan forKey:kStudentCourseGroupDetailModelCoursePlan];
+    [aCoder encodeObject:_courseGroupId forKey:kStudentCourseGroupDetailModelCourseGroupId];
+    [aCoder encodeObject:_courseGroupName forKey:kStudentCourseGroupDetailModelCourseGroupName];
+    [aCoder encodeObject:_teacherName forKey:kStudentCourseGroupDetailModelTeacherName];
+    [aCoder encodeDouble:_completeCourseNum forKey:kStudentCourseGroupDetailModelCompleteCourseNum];
+    [aCoder encodeObject:_subjectId forKey:kStudentCourseGroupDetailModelSubjectId];
+    [aCoder encodeObject:_subjectName forKey:kStudentCourseGroupDetailModelSubjectName];
+    [aCoder encodeObject:_teacherId forKey:kStudentCourseGroupDetailModelTeacherId];
+    [aCoder encodeDouble:_courseNum forKey:kStudentCourseGroupDetailModelCourseNum];
+    [aCoder encodeObject:_teacherAvatar forKey:kStudentCourseGroupDetailModelTeacherAvatar];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    StudentCourseGroupDetailModel *copy = [[StudentCourseGroupDetailModel alloc] init];
+    
+    if (copy) {
+
+        copy.status = [self.status copyWithZone:zone];
+        copy.coursePlan = [self.coursePlan copyWithZone:zone];
+        copy.courseGroupId = [self.courseGroupId copyWithZone:zone];
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
+        copy.teacherName = [self.teacherName copyWithZone:zone];
+        copy.completeCourseNum = self.completeCourseNum;
+        copy.subjectId = [self.subjectId copyWithZone:zone];
+        copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.teacherId = [self.teacherId copyWithZone:zone];
+        copy.courseNum = self.courseNum;
+        copy.teacherAvatar = [self.teacherAvatar copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 14 - 10
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/GroupCourseListModel.h → KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentGroupCourseListModel.h

@@ -1,26 +1,30 @@
 //
-//  GroupCourseListModel.h
+//  StudentGroupCourseListModel.h
 //
-//  Created by Steven  on 2024/11/22
+//  Created by Steven  on 2024/11/25
 //  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
 //
 
 #import <Foundation/Foundation.h>
-#import "CourseStudentVos.h"
 
 
-@interface GroupCourseListModel : NSObject <NSCoding, NSCopying>
 
-@property (nonatomic, strong) NSString *status;
+@interface StudentGroupCourseListModel : NSObject <NSCoding, NSCopying>
+
 @property (nonatomic, strong) NSString *classDate;
-@property (nonatomic, strong) NSString *endTime;
+@property (nonatomic, strong) NSString *subjectId;
 @property (nonatomic, strong) NSString *courseId;
-@property (nonatomic, strong) NSArray *courseStudentVos;
-@property (nonatomic, strong) NSString *courseGoupId;
+@property (nonatomic, strong) NSString *avatar;
+@property (nonatomic, strong) NSString *userId;
+@property (nonatomic, strong) NSString *imUserId;
+@property (nonatomic, strong) NSString *endTime;
+@property (nonatomic, strong) NSString *userName;
+@property (nonatomic, assign) double courseGoupId;
+@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, assign) BOOL attendanceStatus;
 @property (nonatomic, strong) NSString *startTime;
 @property (nonatomic, strong) NSString *courseGroupName;
-@property (nonatomic, assign) BOOL attendanceStatus;
-@property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *status;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 190 - 0
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/Model/StudentGroupCourseListModel.m

@@ -0,0 +1,190 @@
+//
+//  StudentGroupCourseListModel.m
+//
+//  Created by Steven  on 2024/11/25
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import "StudentGroupCourseListModel.h"
+
+
+NSString *const kStudentGroupCourseListModelClassDate = @"classDate";
+NSString *const kStudentGroupCourseListModelSubjectId = @"subjectId";
+NSString *const kStudentGroupCourseListModelCourseId = @"courseId";
+NSString *const kStudentGroupCourseListModelAvatar = @"avatar";
+NSString *const kStudentGroupCourseListModelUserId = @"userId";
+NSString *const kStudentGroupCourseListModelImUserId = @"imUserId";
+NSString *const kStudentGroupCourseListModelEndTime = @"endTime";
+NSString *const kStudentGroupCourseListModelUserName = @"userName";
+NSString *const kStudentGroupCourseListModelCourseGoupId = @"courseGoupId";
+NSString *const kStudentGroupCourseListModelSubjectName = @"subjectName";
+NSString *const kStudentGroupCourseListModelAttendanceStatus = @"attendanceStatus";
+NSString *const kStudentGroupCourseListModelStartTime = @"startTime";
+NSString *const kStudentGroupCourseListModelCourseGroupName = @"courseGroupName";
+NSString *const kStudentGroupCourseListModelStatus = @"status";
+
+
+@interface StudentGroupCourseListModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation StudentGroupCourseListModel
+
+@synthesize classDate = _classDate;
+@synthesize subjectId = _subjectId;
+@synthesize courseId = _courseId;
+@synthesize avatar = _avatar;
+@synthesize userId = _userId;
+@synthesize imUserId = _imUserId;
+@synthesize endTime = _endTime;
+@synthesize userName = _userName;
+@synthesize courseGoupId = _courseGoupId;
+@synthesize subjectName = _subjectName;
+@synthesize attendanceStatus = _attendanceStatus;
+@synthesize startTime = _startTime;
+@synthesize courseGroupName = _courseGroupName;
+@synthesize status = _status;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // This check serves to make sure that a non-NSDictionary object
+    // passed into the model class doesn't break the parsing.
+    if(self && [dict isKindOfClass:[NSDictionary class]]) {
+            self.classDate = [self objectOrNilForKey:kStudentGroupCourseListModelClassDate fromDictionary:dict];
+            self.subjectId = [self objectOrNilForKey:kStudentGroupCourseListModelSubjectId fromDictionary:dict];
+            self.courseId = [self objectOrNilForKey:kStudentGroupCourseListModelCourseId fromDictionary:dict];
+            self.avatar = [self objectOrNilForKey:kStudentGroupCourseListModelAvatar fromDictionary:dict];
+            self.userId = [self objectOrNilForKey:kStudentGroupCourseListModelUserId fromDictionary:dict];
+            self.imUserId = [self objectOrNilForKey:kStudentGroupCourseListModelImUserId fromDictionary:dict];
+            self.endTime = [self objectOrNilForKey:kStudentGroupCourseListModelEndTime fromDictionary:dict];
+            self.userName = [self objectOrNilForKey:kStudentGroupCourseListModelUserName fromDictionary:dict];
+            self.courseGoupId = [[self objectOrNilForKey:kStudentGroupCourseListModelCourseGoupId fromDictionary:dict] doubleValue];
+            self.subjectName = [self objectOrNilForKey:kStudentGroupCourseListModelSubjectName fromDictionary:dict];
+            self.attendanceStatus = [[self objectOrNilForKey:kStudentGroupCourseListModelAttendanceStatus fromDictionary:dict] boolValue];
+            self.startTime = [self objectOrNilForKey:kStudentGroupCourseListModelStartTime fromDictionary:dict];
+            self.courseGroupName = [self objectOrNilForKey:kStudentGroupCourseListModelCourseGroupName fromDictionary:dict];
+            self.status = [self objectOrNilForKey:kStudentGroupCourseListModelStatus fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.classDate forKey:kStudentGroupCourseListModelClassDate];
+    [mutableDict setValue:self.subjectId forKey:kStudentGroupCourseListModelSubjectId];
+    [mutableDict setValue:self.courseId forKey:kStudentGroupCourseListModelCourseId];
+    [mutableDict setValue:self.avatar forKey:kStudentGroupCourseListModelAvatar];
+    [mutableDict setValue:self.userId forKey:kStudentGroupCourseListModelUserId];
+    [mutableDict setValue:self.imUserId forKey:kStudentGroupCourseListModelImUserId];
+    [mutableDict setValue:self.endTime forKey:kStudentGroupCourseListModelEndTime];
+    [mutableDict setValue:self.userName forKey:kStudentGroupCourseListModelUserName];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.courseGoupId] forKey:kStudentGroupCourseListModelCourseGoupId];
+    [mutableDict setValue:self.subjectName forKey:kStudentGroupCourseListModelSubjectName];
+    [mutableDict setValue:[NSNumber numberWithBool:self.attendanceStatus] forKey:kStudentGroupCourseListModelAttendanceStatus];
+    [mutableDict setValue:self.startTime forKey:kStudentGroupCourseListModelStartTime];
+    [mutableDict setValue:self.courseGroupName forKey:kStudentGroupCourseListModelCourseGroupName];
+    [mutableDict setValue:self.status forKey:kStudentGroupCourseListModelStatus];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.classDate = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelClassDate];
+    self.subjectId = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelSubjectId];
+    self.courseId = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelCourseId];
+    self.avatar = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelAvatar];
+    self.userId = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelUserId];
+    self.imUserId = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelImUserId];
+    self.endTime = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelEndTime];
+    self.userName = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelUserName];
+    self.courseGoupId = [aDecoder decodeDoubleForKey:kStudentGroupCourseListModelCourseGoupId];
+    self.subjectName = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelSubjectName];
+    self.attendanceStatus = [aDecoder decodeBoolForKey:kStudentGroupCourseListModelAttendanceStatus];
+    self.startTime = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelStartTime];
+    self.courseGroupName = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelCourseGroupName];
+    self.status = [aDecoder decodeObjectForKey:kStudentGroupCourseListModelStatus];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_classDate forKey:kStudentGroupCourseListModelClassDate];
+    [aCoder encodeObject:_subjectId forKey:kStudentGroupCourseListModelSubjectId];
+    [aCoder encodeObject:_courseId forKey:kStudentGroupCourseListModelCourseId];
+    [aCoder encodeObject:_avatar forKey:kStudentGroupCourseListModelAvatar];
+    [aCoder encodeObject:_userId forKey:kStudentGroupCourseListModelUserId];
+    [aCoder encodeObject:_imUserId forKey:kStudentGroupCourseListModelImUserId];
+    [aCoder encodeObject:_endTime forKey:kStudentGroupCourseListModelEndTime];
+    [aCoder encodeObject:_userName forKey:kStudentGroupCourseListModelUserName];
+    [aCoder encodeDouble:_courseGoupId forKey:kStudentGroupCourseListModelCourseGoupId];
+    [aCoder encodeObject:_subjectName forKey:kStudentGroupCourseListModelSubjectName];
+    [aCoder encodeBool:_attendanceStatus forKey:kStudentGroupCourseListModelAttendanceStatus];
+    [aCoder encodeObject:_startTime forKey:kStudentGroupCourseListModelStartTime];
+    [aCoder encodeObject:_courseGroupName forKey:kStudentGroupCourseListModelCourseGroupName];
+    [aCoder encodeObject:_status forKey:kStudentGroupCourseListModelStatus];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    StudentGroupCourseListModel *copy = [[StudentGroupCourseListModel alloc] init];
+    
+    if (copy) {
+
+        copy.classDate = [self.classDate copyWithZone:zone];
+        copy.subjectId = [self.subjectId copyWithZone:zone];
+        copy.courseId = [self.courseId copyWithZone:zone];
+        copy.avatar = [self.avatar copyWithZone:zone];
+        copy.userId = [self.userId copyWithZone:zone];
+        copy.imUserId = [self.imUserId copyWithZone:zone];
+        copy.endTime = [self.endTime copyWithZone:zone];
+        copy.userName = [self.userName copyWithZone:zone];
+        copy.courseGoupId = self.courseGoupId;
+        copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.attendanceStatus = self.attendanceStatus;
+        copy.startTime = [self.startTime copyWithZone:zone];
+        copy.courseGroupName = [self.courseGroupName copyWithZone:zone];
+        copy.status = [self.status copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 12 - 12
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseGroupBodyView.m

@@ -14,7 +14,7 @@
 #import "AccompanyDetailViewController.h"
 #import "VipCouseDetailViewController.h"
 #import "MusicRoomDetailViewController.h"
-#import "GroupCourseListModel.h"
+#import "StudentGroupCourseListModel.h"
 #import "OnlineClassManager.h"
 #import "KSPremissionAlert.h"
 #import "RecordCheckManager.h"
@@ -146,7 +146,7 @@
         if ([dic ks_integerValueForKey:@"code"] == 200 && [dic ks_boolValueForKey:@"status"]) {
             NSArray *sourceArray = [dic ks_arrayValueForKey:@"data"];
             for (NSDictionary *parm in sourceArray) {
-                GroupCourseListModel *model = [[GroupCourseListModel alloc] initWithDictionary:parm];
+                StudentGroupCourseListModel *model = [[StudentGroupCourseListModel alloc] initWithDictionary:parm];
                 [self.dataArray addObject:model];
             }
         }
@@ -221,11 +221,11 @@
 }
 
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
-    GroupCourseListModel *model = self.dataArray[indexPath.row];
+    StudentGroupCourseListModel *model = self.dataArray[indexPath.row];
     if (self.courseType == COURSE_GROUP_TYPE_VIP || self.courseType == COURSE_GROUP_TYPE_ACCOMPANY) {
         ProgramCourseListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ProgramCourseListCell"];
         MJWeakSelf;
-        [cell configWithSource:model beforeTime:self.enterStartTime callback:^(GroupCourseListModel * _Nonnull model) {
+        [cell configWithSource:model beforeTime:self.enterStartTime callback:^(StudentGroupCourseListModel * _Nonnull model) {
             [weakSelf enterClassRoom:model];
         }];
         return cell;
@@ -233,14 +233,14 @@
     else {
         MusicRoomCourseListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MusicRoomCourseListCell"];
         MJWeakSelf;
-        [cell configWithSource:model beforeTime:self.enterStartTime callback:^(GroupCourseListModel * _Nonnull model) {
+        [cell configWithSource:model beforeTime:self.enterStartTime callback:^(StudentGroupCourseListModel * _Nonnull model) {
             [weakSelf enterClassRoom:model];
         }];
         return cell;
     }
 }
 
-- (void)enterClassRoom:(GroupCourseListModel *)model {
+- (void)enterClassRoom:(StudentGroupCourseListModel *)model {
     
     NSDateFormatter *dateFormatter = [NSObject getDateformatter];
     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
@@ -265,23 +265,23 @@
 
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     // 课程详情
-    GroupCourseListModel *courseModel = self.dataArray[indexPath.row];
+    StudentGroupCourseListModel *courseModel = self.dataArray[indexPath.row];
     if (self.courseType == COURSE_GROUP_TYPE_VIP) {
         VipCouseDetailViewController *detailVC = [[VipCouseDetailViewController alloc] init];
         detailVC.courseId = courseModel.courseId;
-        detailVC.courseGroupId = courseModel.courseGoupId;
+        detailVC.courseGroupId = [NSString stringWithFormat:@"%.0f",courseModel.courseGoupId];
         [self.naviController pushViewController:detailVC animated:YES];
     }
     else if (self.courseType == COURSE_GROUP_TYPE_ACCOMPANY) {
         AccompanyDetailViewController *detailVC = [[AccompanyDetailViewController alloc] init];
         detailVC.courseId = courseModel.courseId;
-        detailVC.courseGroupId = courseModel.courseGoupId;
+        detailVC.courseGroupId = [NSString stringWithFormat:@"%.0f",courseModel.courseGoupId];
         [self.naviController pushViewController:detailVC animated:YES];
     }
     else if (self.courseType == COURSE_GROUP_TYPE_MUSICROOM) {
         MusicRoomDetailViewController *ctrl = [[MusicRoomDetailViewController alloc] init];
         ctrl.courseId = courseModel.courseId;
-        ctrl.courseGroupId = courseModel.courseGoupId;
+        ctrl.courseGroupId = [NSString stringWithFormat:@"%.0f",courseModel.courseGoupId];
         [self.naviController pushViewController:ctrl animated:YES];
     }
 }
@@ -314,7 +314,7 @@
 
 
 // 加入房间
-- (void)joinClassRoom:(GroupCourseListModel *)model {
+- (void)joinClassRoom:(StudentGroupCourseListModel *)model {
     
     // 加入房间前判断摄像头和麦克风逻辑
     [RecordCheckManager checkCameraPremissionAvaiableCallback:^(PREMISSIONTYPE type) {
@@ -322,7 +322,7 @@
     }];
 }
 
-- (void)afterCheckCameraCheckMic:(PREMISSIONTYPE)cameraType source:(GroupCourseListModel *)model {
+- (void)afterCheckCameraCheckMic:(PREMISSIONTYPE)cameraType source:(StudentGroupCourseListModel *)model {
     [RecordCheckManager checkMicPermissionAvaiableCallback:^(PREMISSIONTYPE type) {
         if (type == PREMISSIONTYPE_YES && cameraType == PREMISSIONTYPE_YES) {
             // 判断是否进行课前检测

+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseInfoView.h

@@ -6,7 +6,7 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "CourseGroupDetailModel.h"
+#import "StudentCourseGroupDetailModel.h"
 
 typedef void(^ProgramPlanAction)(void);
 
@@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 + (instancetype)sharedInstance;
 
-- (void)configWithSource:(CourseGroupDetailModel *)model;
+- (void)configWithSource:(StudentCourseGroupDetailModel *)model;
 
 - (void)programActionCallback:(ProgramPlanAction)callback;
 

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseInfoView.m

@@ -45,7 +45,7 @@
     return view;
 }
 
-- (void)configWithSource:(CourseGroupDetailModel *)model {
+- (void)configWithSource:(StudentCourseGroupDetailModel *)model {
     [self.planContainer removeAllSubViews];
     if ([NSString isEmptyString:model.coursePlan]) {
         [self.planContainer addSubview:self.addView];
@@ -70,8 +70,8 @@
     /// 状态
     [self evaluateGroupStatus:model.status];
     
-    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.studentAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
-    self.nameLabel.text = [NSString returnNoNullStringWithString:model.studentName];
+    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.teacherAvatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
+    self.nameLabel.text = [NSString returnNoNullStringWithString:model.teacherName];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:model.subjectName];
     if ([NSString isEmptyString:model.subjectName]) {
         self.subjectView.hidden = YES;

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseListCell.h

@@ -6,15 +6,15 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "GroupCourseListModel.h"
+#import "StudentGroupCourseListModel.h"
 
-typedef void(^GroupListModelCallback)(GroupCourseListModel * _Nonnull model);
+typedef void(^GroupListModelCallback)(StudentGroupCourseListModel * _Nonnull model);
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface ProgramCourseListCell : UITableViewCell
 
-- (void)configWithSource:(GroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback;
+- (void)configWithSource:(StudentGroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback;
 
 @end
 

+ 5 - 6
KulexiuForStudent/KulexiuForStudent/Module/Course/VipCourse/View/ProgramCourseListCell.m

@@ -27,7 +27,7 @@
 @property (weak, nonatomic) IBOutlet UIView *subjectView;
 @property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
 
-@property (nonatomic, strong) GroupCourseListModel *sourceModel;
+@property (nonatomic, strong) StudentGroupCourseListModel *sourceModel;
 
 @property (nonatomic, copy) GroupListModelCallback callback;
 
@@ -43,7 +43,7 @@
     self.selectionStyle = UITableViewCellSelectionStyleNone;
 }
 
-- (void)configWithSource:(GroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback {
+- (void)configWithSource:(StudentGroupCourseListModel *)model beforeTime:(NSInteger)beforeTime callback:(GroupListModelCallback)callback {
     if (callback) {
         self.callback = callback;
     }
@@ -58,9 +58,8 @@
     NSString *lessonEnd = [formatter stringFromDate:endDate];
     self.timeLabel.text = [NSString stringWithFormat:@"%@~%@",[NSString returnNoNullStringWithString:lessonBegin],[NSString returnNoNullStringWithString:lessonEnd]];
     self.courseGroupName.text = [NSString returnNoNullStringWithString:model.courseGroupName];
-    CourseStudentVos *studentInfo = [model.courseStudentVos lastObject];
-    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[studentInfo.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
-    self.nameLabel.text = [NSString returnNoNullStringWithString:studentInfo.userName];
+    [self.avatar sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:TEACHER_AVATAR]];
+    self.nameLabel.text = [NSString returnNoNullStringWithString:model.userName];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:model.subjectName];
     if ([NSString isEmptyString:model.subjectName]) {
         self.subjectView.hidden = YES;
@@ -71,7 +70,7 @@
     [self evaluateWithSource:model];
 }
 
-- (void)evaluateWithSource:(GroupCourseListModel *)model {
+- (void)evaluateWithSource:(StudentGroupCourseListModel *)model {
     NSString *imageName = model.attendanceStatus ? @"course_attendence" : @"course_noArrive";
     if ([model.status isEqualToString:@"ING"]) {
         self.statusLabel.text = @"进行中";

+ 4 - 0
KulexiuForStudent/KulexiuForStudent/Module/Home/ArrangeCourse/Model/ArrangeVideoCourseModel.m

@@ -123,6 +123,10 @@ NSString *const kArrangeVideoCourseModelMusicNum = @"musicNum";
 - (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;
 }