Procházet zdrojové kódy

直播问题修复

Steven před 1 rokem
rodič
revize
19f1170d45
45 změnil soubory, kde provedl 286 přidání a 56 odebrání
  1. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/highStaff_nomal.imageset/highStaff_nomal@2x.png
  2. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/highStaff_nomal.imageset/highStaff_nomal@3x.png
  3. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/lowStaff_nomal.imageset/lowStaff_nomal@2x.png
  4. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/lowStaff_nomal.imageset/lowStaff_nomal@3x.png
  5. 6 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/Contents.json
  6. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/group_more.imageset/Contents.json
  7. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/group_more.imageset/group_more@2x.png
  8. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/group_more.imageset/group_more@3x.png
  9. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/liveroom_pause.imageset/Contents.json
  10. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/liveroom_pause.imageset/liveroom_pause@2x.png
  11. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/liveroom_pause.imageset/liveroom_pause@3x.png
  12. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_choose.imageset/Contents.json
  13. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_choose.imageset/student_choose@2x.png
  14. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_choose.imageset/student_choose@3x.png
  15. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_unchoose.imageset/Contents.json
  16. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_unchoose.imageset/student_unchoose@2x.png
  17. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_unchoose.imageset/student_unchoose@3x.png
  18. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/videoMask_delete.imageset/Contents.json
  19. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/videoMask_delete.imageset/videoMask_delete@2x.png
  20. binární
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/videoMask_delete.imageset/videoMask_delete@3x.png
  21. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  22. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+KSLayer.h
  23. 9 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+KSLayer.m
  24. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/ChatAddressViewController.m
  25. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSGroupConversationController.m
  26. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/GroupNoticeCell.m
  27. 4 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/NoticeEditBodyView.m
  28. 7 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.m
  29. 32 1
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/Controller/TXClassroomViewController.m
  30. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/Service/Classroom/ClassroomService.m
  31. 4 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/CoursewareView/CoursewareAlertView.m
  32. 3 3
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/Login/LoginHelper.m
  33. 2 2
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MainContainerView/TXClassroomMainContainer.m
  34. 1 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MainToolBar/TXMainToolView.m
  35. 16 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/ClassMemberListView.m
  36. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberListBodyView.h
  37. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberListBodyView.m
  38. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberSettingMicAlert.h
  39. 6 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberSettingMicAlert.m
  40. 3 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/NewWhiteboard/KSNewWhiteBoard.m
  41. 17 0
      KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/VideoList/TXClassroomVideoListCell.m
  42. 46 36
      KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/Controller/TXLiveRoomViewController.m
  43. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/Service/LiveModuleService.h
  44. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/Service/LiveModuleService.m
  45. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/View/TXSeatContainerView.m

binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/highStaff_nomal.imageset/highStaff_nomal@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/highStaff_nomal.imageset/highStaff_nomal@3x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/lowStaff_nomal.imageset/lowStaff_nomal@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Classroom/lowStaff_nomal.imageset/lowStaff_nomal@3x.png


+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/group_more.imageset/Contents.json

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

binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/group_more.imageset/group_more@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Converstaion/group_more.imageset/group_more@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/liveroom_pause.imageset/Contents.json

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

binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/liveroom_pause.imageset/liveroom_pause@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Live/liveroom_pause.imageset/liveroom_pause@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_choose.imageset/Contents.json

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

binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_choose.imageset/student_choose@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_choose.imageset/student_choose@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_unchoose.imageset/Contents.json

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

binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_unchoose.imageset/student_unchoose@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/student_unchoose.imageset/student_unchoose@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/videoMask_delete.imageset/Contents.json

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

binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/videoMask_delete.imageset/videoMask_delete@2x.png


binární
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/NewClassroom/videoMask_delete.imageset/videoMask_delete@3x.png


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

@@ -1512,6 +1512,7 @@
 /// @param success 成功
 /// @param faliure 失败
 + (void)musicRoomDetailRequest:(NSString *)post courseId:(NSString *)courseId success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
     NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/homework/detail/list"];
     NSMutableDictionary *parm = [NSMutableDictionary dictionary];
     [parm setValue:courseId forKey:@"courseId"];

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+KSLayer.h

@@ -21,6 +21,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)configLayerWithType:(KSLAYER_RADIUS)type radius:(CGFloat)radius;
 
++ (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 9 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+KSLayer.m

@@ -55,7 +55,15 @@
         }
         self.layer.masksToBounds = YES;
     }
-    
 }
 
++ (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
+    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
+    gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
+    gradientLayer.startPoint = startPoint;
+    gradientLayer.endPoint = endPoint;
+    gradientLayer.frame = bounds;
+    gradientLayer.locations = @[@(0),@(1.0f)];
+    return gradientLayer;
+}
 @end

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/ChatAddressViewController.m

@@ -54,6 +54,8 @@
     self.pagerView.mainTableView.gestureDelegate = self;
     self.pagerView.backgroundColor = [UIColor clearColor];
     self.pagerView.mainTableView.backgroundColor = [UIColor clearColor];
+    self.pagerView.isListHorizontalScrollEnabled = NO; // 不允许左右滑动
+    
     [self.view addSubview:self.pagerView];
     self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagerView.listContainerView;
 }

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSGroupConversationController.m

@@ -48,7 +48,7 @@
 }
 
 - (void)configUI {
-    [self rightButton:[UIImage imageNamed:@"mine_setting"]];
+    [self rightButton:[UIImage imageNamed:@"group_more"]];
     self.vc = [[KSTXGroupChatViewController alloc] init];
     if (![NSString isEmptyString:self.highlightKeyword]) {
         self.vc.highlightKeyword = self.highlightKeyword;

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/GroupNoticeCell.m

@@ -49,12 +49,12 @@
     if ([source isKindOfClass:[GroupNoticeModel class]]) {
         GroupNoticeModel *model = source;
         self.userName.text = [NSString returnNoNullStringWithString:model.username];
-        BOOL isCourseGroup = [model.groupId containsString:@"COURSE"] ? YES : NO;
-        NSString *groupPlaceHolder = isCourseGroup ? GROUP_COURSE_LOGO : GROUP_FAN_LOGO;
-        [self.userLogo setImage:[UIImage imageNamed:groupPlaceHolder]];
+//        BOOL isCourseGroup = [model.groupId containsString:@"COURSE"] ? YES : NO;
+//        NSString *groupPlaceHolder = isCourseGroup ? GROUP_COURSE_LOGO : GROUP_FAN_LOGO;
+//        [self.userLogo setImage:[UIImage imageNamed:groupPlaceHolder]];
         
         
-//        [self.userLogo sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USER_LOGO_RECTANGLE]];
+        [self.userLogo sd_setImageWithURL:[NSURL URLWithString:[model.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USER_LOGO_RECTANGLE]];
         self.noticeTitle.text = [NSString returnNoNullStringWithString:model.title];
         self.noticeContent.text = [NSString returnNoNullStringWithString:model.content];
         self.focusLabel.hidden = model.top ? NO : YES;

+ 4 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/GroupNotice/View/NoticeEditBodyView.m

@@ -86,10 +86,10 @@
 }
 
 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
-    if ([text isEqualToString:@"\n"]) {
-        [self endEditing:YES];
-        return YES;
-    }
+//    if ([text isEqualToString:@"\n"]) {
+//        [self endEditing:YES];
+//        return YES;
+//    }
     if (textView == self.titleView) {
         NSString *newText = [[textView text] stringByReplacingCharactersInRange:range withString:text];
         if (newText.length > 25) {

+ 7 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Login/Model/UserInfoManager.m

@@ -13,6 +13,7 @@
 #import <UMCommon/MobClick.h>
 #import "TXIMLinsenter.h"
 #import "AppDelegate+AppService.h"
+#import <SDWebImage/SDWebImageManager.h>
 
 @interface UserInfoManager ()
 
@@ -159,6 +160,7 @@
             UserDefaultSet(self.userInfo.imToken, IM_TOKEN);
             UserDefaultSet(self.userInfo.username, NicknameKey);
             UserDefaultSet(self.userInfo.avatar, AvatarUrlKey);
+            
             [[NSUserDefaults standardUserDefaults] synchronize];
             
             NSString *imToken = UserDefault(IM_TOKEN);
@@ -216,7 +218,7 @@
             UserDefaultSet(self.userInfo.username, NicknameKey);
             UserDefaultSet(self.userInfo.avatar, AvatarUrlKey);
             [[NSUserDefaults standardUserDefaults] synchronize];
-            
+            [self cacheImage];
             // 设置推送别名
             [JPUSHService setAlias:UserDefault(UIDKey) completion:nil seq:0];
             [Bugly setUserIdentifier:UserDefault(UIDKey)];
@@ -232,6 +234,10 @@
     }];
 }
 
+- (void)cacheImage {
+//    [[SDWebImageManager sharedManager] down]
+}
+
 - (void)startUMCountAndLoginCount {
     [self startCountUMEvent];
     [self sendUMEvent:@"klx_login"];

+ 32 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/Controller/TXClassroomViewController.m

@@ -59,6 +59,7 @@
 #import "TXDanMuView.h"
 #import "TXTimeView.h"
 #import "CoursewareAlertView.h"
+#import "TXIMLinsenter.h"
 
 #define MAXBIGPHOTONUMBER (3)
 #define MAXPHOTONUMBER (3)
@@ -257,11 +258,39 @@
     [self changeOrientation:YES];
 }
 
+- (void)joinChatRoom {
+    if (TXIM_LINSENTER.loginIMSuccess == NO) {
+        NSString *imToken = UserDefault(IM_TOKEN);
+        [TXIM_LINSENTER TXIMLoginWithUserId:UserDefault(IM_USERID) sig:imToken callback:^(BOOL isSuccess, NSString * _Nullable msg) {
+            [self liveConversationJoin];
+        }];
+    }
+    else {
+        [self liveConversationJoin];
+    }
+}
+
+- (void)liveConversationJoin {
+    NSString *roomId = [ClassroomService sharedService].currentRoom.roomId;
+    [[V2TIMManager sharedInstance] joinGroup:roomId msg:nil succ:^{
+        
+    } fail:^(int code, NSString *desc) {
+        [self showErrorTips];
+    }];
+}
+
+- (void)showErrorTips {
+    [self.tipsView showTipsMessage:@"加入聊天群失败" inView:self.view];
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [[LoginHelper sharedInstance] logout];
+    });
+}
+
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
     self.ks_prefersNavigationBarHidden = YES;
-    
+    [self joinChatRoom];
     self.view.backgroundColor = [UIColor whiteColor];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(leaveRoomAction) name:@"classroomLogout" object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(quitRoomAction) name:@"classroomQuit" object:nil];
@@ -650,6 +679,7 @@
         }
     }
     [self.memberListView reloadPersonList:member tag:ClassPersonListTagRemove];
+
     if ([self.progressView isShow]) {
         [self.progressView requestData];
     }
@@ -903,6 +933,7 @@
 - (void)showDanChatView {
     // 视频页面添加弹幕
     [self.containerView.videoView addSubview:self.danView];
+    [self.containerView.videoView bringSubviewToFront:self.containerView.toolView];
 }
 
 

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/Service/Classroom/ClassroomService.m

@@ -571,6 +571,7 @@ isAudience:(BOOL)audience
                 RoomMember *mem = [[RoomMember alloc] init];
                 mem.userId = msg.userInfo.sendUserId;
                 mem.name = msg.userInfo.sendUserName;
+                mem.headUrl = msg.userInfo.avatarUrl;
                 mem.role = (Role)(msg.role);
                 mem.joinTime = msg.timestamp;
                 mem.cameraEnable = msg.camera;

+ 4 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/CoursewareView/CoursewareAlertView.m

@@ -220,6 +220,10 @@
 
 
 - (IBAction)sureAction:(id)sender {
+    if (self.sourceArray.count == 0) {
+        [LOADING_MANAGER MBShowAUTOHidingInWindow:@"请选择曲目"];
+        return;
+    }
     if (self.callback) {
         CoursewareListModel *lastModel = self.sourceArray[self.lastChooseIndex];
         self.callback(lastModel.url,lastModel.mp3url, lastModel.musicSheetName, lastModel.musicSheetAccompanimentId);

+ 3 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/Login/LoginHelper.m

@@ -87,9 +87,9 @@
             }
         });
     } failer:^(NSInteger code) {
-        if(self.delegate && [self.delegate respondsToSelector:@selector(classroomDidJoinFailRTC:)]){
-            [self.delegate classroomDidJoinFailRTC:@(code)];
-        }
+//        if(self.delegate && [self.delegate respondsToSelector:@selector(classroomDidJoinFailRTC:)]){
+//            [self.delegate classroomDidJoinFailRTC:@(code)];
+//        }
     }];
 }
 

+ 2 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MainContainerView/TXClassroomMainContainer.m

@@ -51,7 +51,7 @@
 
         [self.videoView addSubview:self.toolView];
         [self.toolView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.left.right.mas_equalTo(self.videoView);
+            make.right.mas_equalTo(self.videoView);
             make.bottom.mas_equalTo(self.videoView.mas_bottom);
             make.height.mas_equalTo(100);
         }];
@@ -212,7 +212,7 @@
 
 - (TXMainToolView *)toolView {
     if (!_toolView) {
-        _toolView = [[TXMainToolView alloc] initWithFrame:CGRectMake(0, CGRectGetHeight(self.videoView.frame) - 100, CGRectGetWidth(self.videoView.frame), 100)];
+        _toolView = [[TXMainToolView alloc] initWithFrame:CGRectZero];
         _toolView.delegate = self;
     }
     return _toolView;

+ 1 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MainToolBar/TXMainToolView.m

@@ -61,6 +61,7 @@
         make.right.mas_equalTo(self.micButton.mas_left).offset(-12);
         make.width.mas_equalTo(ToolButtonWidth);
         make.height.mas_equalTo(ToolButtonHeight);
+        make.left.mas_equalTo(self.mas_left);
     }];
     
     

+ 16 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/ClassMemberListView.m

@@ -52,6 +52,7 @@
         [self configTitles];
         [self configUI];
         [self getGroupAttrInfo];
+        [self addNotifer];
     }
     return self;
 }
@@ -67,6 +68,11 @@
     return count;
 }
 
+- (void)addNotifer {
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveGroupMessage:)  name:OnReceiveTXClassroomGroupNotification object:nil];
+
+}
+
 - (void)configTitles{
     NSInteger inClassCount = [self getOnlineMemberCount];
     NSString *leftTitle = [NSString stringWithFormat:@"在线成员(%zd)",inClassCount];
@@ -176,6 +182,7 @@
         MemberListBodyView *bodyView = self.listViewArray[0];
         [bodyView refreshAndRequestData];
     }
+    [self refresh];
 }
 
 #pragma mark - JXPagerViewDelegate
@@ -281,6 +288,15 @@
     NSLog(@"--- dealloc--");
 }
 
+- (void)setCancelMuteFlag:(BOOL)cancelMuteFlag {
+    _cancelMuteFlag = cancelMuteFlag;
+    for (id object in self.listViewArray) {
+        if ([object isKindOfClass:[MemberListBodyView class]]) {
+            MemberListBodyView *bodyView = object;
+            bodyView.cancelMuteFlag = cancelMuteFlag;
+        }
+    }
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberListBodyView.h

@@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MemberListBodyView : UIView <JXPagerViewListViewDelegate>
 
+@property (nonatomic, assign) BOOL cancelMuteFlag;
+
 @property (nonatomic, weak) UINavigationController *naviController;
 
 @property (nonatomic, strong) UITableView *tableView;

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberListBodyView.m

@@ -275,6 +275,8 @@
 - (void)allMicAction:(BOOL)isOn {
     if (isOn == NO) {
         self.micOffAlert = [MemberSettingMicAlert shareInstance];
+        self.micOffAlert.cancelMuteFlag = self.cancelMuteFlag;
+
         [self.micOffAlert memberSettingAction:^(MUTIOFFTYPE type, BOOL isMute) {
             if (type == MUTIOFFTYPE_SURE) {
                 [[ClassroomService sharedService] enableMutiMicOff:isMute setMicOff:YES];

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberSettingMicAlert.h

@@ -19,6 +19,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MemberSettingMicAlert : UIView
 
+@property (nonatomic, assign) BOOL cancelMuteFlag;
+
 @property (nonatomic, assign) BOOL isDisplay;
 
 + (instancetype)shareInstance;

+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/MemberList/MemberSettingMicAlert.m

@@ -75,6 +75,12 @@
     }
     [self.chooseImage setImage:[UIImage imageNamed:img]];
 }
+
+- (void)setCancelMuteFlag:(BOOL)cancelMuteFlag {
+    _cancelMuteFlag = cancelMuteFlag;
+    self.isChoose = cancelMuteFlag;
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 3 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/NewWhiteboard/KSNewWhiteBoard.m

@@ -681,6 +681,9 @@
     }
     else {
         UITouch *touch = [touches anyObject];
+        if (![touch.view isDescendantOfView:self.myWebView]) {
+            return;
+        }
         if (self.delegate && [self.delegate respondsToSelector:@selector(customShowTopTitleView:)]) {
             [self.delegate customShowTopTitleView:touch.view];
         }

+ 17 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/TXClassRoom/View/VideoList/TXClassroomVideoListCell.m

@@ -10,6 +10,8 @@
 #import "ClassroomService.h"
 #import "LocalRenderManager.h"
 #import "TXRTCService.h"
+#import "UIView+KSLayer.h"
+#import "TXClassroomVideoListView.h"
 
 @interface TXClassroomVideoListCell ()
 
@@ -85,6 +87,21 @@
         make.right.mas_equalTo(self.videoView.mas_right);
     }];
     
+    // layer view
+    UIView *layerView = [[UIView alloc] init];
+    layerView.backgroundColor = [UIColor clearColor];
+    [self.contentView addSubview:layerView];
+    [layerView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.bottom.mas_equalTo(self.closeCameraView);
+        make.height.mas_equalTo(37);
+    }];
+    layerView.layer.cornerRadius = 10;
+    layerView.layer.maskedCorners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner;
+    layerView.clipsToBounds = YES;
+
+    CAGradientLayer *layer = [UIView createGradientLayerFromColor:HexRGBAlpha(0x000000, 0.0f) startPoint:CGPointMake(0.5, 0.1) endColor:HexRGBAlpha(0x000000, 0.7f) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, VIDEO_WIDTH, 37)];
+    [layerView.layer addSublayer:layer];
+    
     // 添加信号图
     [self.contentView addSubview:self.qualityImage];
     [self.qualityImage mas_makeConstraints:^(MASConstraintMaker *make) {

+ 46 - 36
KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/Controller/TXLiveRoomViewController.m

@@ -870,6 +870,7 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
         return;
     }
     NSMutableArray *memberArray = [self.remoteMemberArray mutableCopy];
+    NSLog(@"----- member count %zd", memberArray.count);
     NSMutableArray *seatUser = [NSMutableArray array];
     for (TXUISeatMember *member in memberArray) {
         NSMutableDictionary *memberDic = [NSMutableDictionary dictionary];
@@ -2178,10 +2179,11 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
         uint64_t interval = (uint64_t)(2 * NSEC_PER_SEC);
         dispatch_source_set_timer(_SEITimer, DISPATCH_TIME_NOW, interval, 0);
 //        @weakify(self);
+        MJWeakSelf;
         dispatch_source_set_event_handler(_SEITimer, ^{
             dispatch_async(dispatch_get_main_queue(), ^{
 //                @strongify(self);
-                [self sendSEIMessage];
+                [weakSelf sendSEIMessage];
             });
         });
     }
@@ -2392,42 +2394,50 @@ typedef NS_ENUM(NSInteger, LIVEPAGE) {
 #pragma mark ---- time manager
 - (void)formatTime:(NSString *)timeString timeType:(LIVETIMETYPE)type {
     self.headView.timeLabel.text = timeString;
-    switch (type) {
-        case LIVETIMETYPE_NOTSTART:
-        {
-            self.headView.timeView.hidden = YES;
-        }
-            break;
-        case LIVETIMETYPE_COURSE:
-        {
-            self.headView.timeView.hidden = NO;
-            self.headView.tipsLabel.text = @"课程时长: ";
-            self.headView.timeLabel.textColor = HexRGB(0x00FFF0);
-        }
-            break;
-        case LIVETIMETYPE_REST:
-        {
-            self.headView.timeView.hidden = NO;
-            self.headView.tipsLabel.text = @"课间时间: ";
-            self.headView.timeLabel.textColor = HexRGB(0x00FFF0);
-        }
-            break;
-        case LIVETIMETYPE_CLOSECOUNT:
-        {
-            self.headView.timeView.hidden = NO;
-            self.headView.tipsLabel.text = @"直播即将关闭: ";
-            self.headView.timeLabel.textColor = HexRGB(0xFF605E);
-        }
-            break;
-        case LIVETIMETYPE_CLOSE:
-        {
-            self.headView.timeView.hidden = NO;
-            self.headView.tipsLabel.text = @"直播即将关闭:";
-            self.headView.timeLabel.textColor = HexRGB(0xFF605E);
+    
+    if (self.isLiveCourse) {
+        switch (type) {
+            case LIVETIMETYPE_NOTSTART:
+            {
+                self.headView.timeView.hidden = YES;
+            }
+                break;
+            case LIVETIMETYPE_COURSE:
+            {
+                self.headView.timeView.hidden = NO;
+                self.headView.tipsLabel.text = @"课程时长: ";
+                self.headView.timeLabel.textColor = HexRGB(0x00FFF0);
+            }
+                break;
+            case LIVETIMETYPE_REST:
+            {
+                self.headView.timeView.hidden = NO;
+                self.headView.tipsLabel.text = @"课间时间: ";
+                self.headView.timeLabel.textColor = HexRGB(0x00FFF0);
+            }
+                break;
+            case LIVETIMETYPE_CLOSECOUNT:
+            {
+                self.headView.timeView.hidden = NO;
+                self.headView.tipsLabel.text = @"直播即将关闭: ";
+                self.headView.timeLabel.textColor = HexRGB(0xFF605E);
+            }
+                break;
+            case LIVETIMETYPE_CLOSE:
+            {
+                self.headView.timeView.hidden = NO;
+                self.headView.tipsLabel.text = @"直播即将关闭:";
+                self.headView.timeLabel.textColor = HexRGB(0xFF605E);
+            }
+                break;
+            default:
+                break;
         }
-            break;
-        default:
-            break;
+    }
+    else {
+        self.headView.timeView.hidden = NO;
+        self.headView.tipsLabel.text = @"剩余时长: ";
+        self.headView.timeLabel.textColor = HexRGB(0x00FFF0);
     }
 }
 

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/Service/LiveModuleService.h

@@ -60,7 +60,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (void)roomDestroyRequest:(NSString *)get roomUid:(NSString *)roomUid success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 // 退出直播间通知
-// /api-im/user/statusImUser
+// /api-im/liveRoom/syncUserStatus
 
 /// 退出直播间
 /// @param post post json

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/Service/LiveModuleService.m

@@ -87,7 +87,7 @@
 }
 
 // 退出直播间通知
-// /api-im/user/statusImUser
+// /api-im/liveRoom/syncUserStatus
 
 /// 退出直播间
 /// @param post post json

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/TXLiveModule/View/TXSeatContainerView.m

@@ -219,7 +219,7 @@
                 [self.userAvatar sd_setImageWithURL:[NSURL URLWithString:[[result ks_stringValueForKey:@"friendAvatar"] getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
                 
                 self.currentMember.userName = [result ks_stringValueForKey:@"friendNickname"];
-                self.currentMember.imageUrl = [result ks_stringValueForKey:@"avatar"];
+                self.currentMember.imageUrl = [result ks_stringValueForKey:@"friendAvatar"];
             }
             else {
                 NSLog(@"-delloc------");