KSTXBaseChatViewController.m 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //
  2. // KSTXBaseChatViewController.m
  3. // KulexiuForTeacher
  4. //
  5. // Created by 王智 on 2023/8/10.
  6. //
  7. #import "KSTXBaseChatViewController.h"
  8. #import <AVFoundation/AVFoundation.h>
  9. #import <AssetsLibrary/AssetsLibrary.h>
  10. #import <MobileCoreServices/MobileCoreServices.h>
  11. #import <Photos/Photos.h>
  12. #import <TIMCommon/NSString+TUIEmoji.h>
  13. #import <TIMCommon/TIMDefine.h>
  14. #import <TUICore/NSDictionary+TUISafe.h>
  15. #import <TUICore/TUICore.h>
  16. #import <TUICore/TUILogin.h>
  17. #import <TUICore/TUIThemeManager.h>
  18. #import <TUICore/TUITool.h>
  19. #import "ReactiveObjC/ReactiveObjC.h"
  20. #import "TUIAIDenoiseSignatureManager.h"
  21. #import "TUIBaseMessageController.h"
  22. #import "TUICameraViewController.h"
  23. #import "TUIChatConfig.h"
  24. #import "TUIChatDataProvider.h"
  25. #import "TUIChatMediaDataProvider.h"
  26. #import "TUIChatModifyMessageHelper.h"
  27. #import "TUICloudCustomDataTypeCenter.h"
  28. #import "TUIFileMessageCellData.h"
  29. #import "TUIImageMessageCellData.h"
  30. #import "TUIJoinGroupMessageCell.h"
  31. #import "TUIMessageController.h"
  32. #import "TUIMessageDataProvider.h"
  33. #import "TUIMessageMultiChooseView.h"
  34. #import "TUIMessageReadViewController.h"
  35. #import "TUIReplyMessageCellData.h"
  36. #import "TUITextMessageCellData.h"
  37. #import "TUIVideoMessageCellData.h"
  38. #import "TUIVoiceMessageCellData.h"
  39. #import "KSChatUserDetailViewController.h"
  40. #import "ShareMusicViewController.h"
  41. #import "MinePageViewController.h"
  42. #import "KSBaseWKWebViewController.h"
  43. static UIView *gCustomTopView;
  44. @interface KSTXBaseChatViewController ()
  45. @end
  46. @implementation KSTXBaseChatViewController
  47. #pragma mark - Life Cycle
  48. - (void)messageController:(TUIBaseMessageController *)controller willDisplayCell:(TUIMessageCell *)cell withData:(TUIMessageCellData *)cellData {
  49. cell.avatarView.contentMode = UIViewContentModeScaleAspectFill;
  50. }
  51. - (void)messageController:(TUIBaseMessageController *)controller onSelectMessageAvatar:(TUIMessageCell *)cell {
  52. NSString *userID = nil;
  53. if (cell.messageData.innerMessage.groupID.length > 0) {
  54. userID = cell.messageData.innerMessage.sender;
  55. } else {
  56. if (cell.messageData.isUseMsgReceiverAvatar) {
  57. if (cell.messageData.innerMessage.isSelf) {
  58. userID = cell.messageData.innerMessage.userID;
  59. } else {
  60. userID = V2TIMManager.sharedInstance.getLoginUser;
  61. }
  62. } else {
  63. userID = cell.messageData.innerMessage.sender;
  64. }
  65. }
  66. if (userID == nil) {
  67. return;
  68. }
  69. // 跳转到用户详情
  70. if ([userID isEqualToString:UserDefault(IM_USERID)]) {
  71. [self displayMineInfo];
  72. }
  73. else { // 显示其他
  74. if ([userID containsString:@"STUDENT"]) {
  75. [self displayStudent:userID];
  76. }
  77. else {
  78. [self displayTeacherInfo:userID];
  79. }
  80. }
  81. }
  82. - (void)displayMineInfo {
  83. MinePageViewController *pageCtrl = [[MinePageViewController alloc] init];
  84. [self.navigationController pushViewController:pageCtrl animated:YES];
  85. }
  86. - (void)displayTeacherInfo:(NSString *)teacherId {
  87. KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
  88. ctrl.url = [NSString stringWithFormat:@"%@%@%@", WEBHOST, @"/#/teacherHome?teacherId=", teacherId];
  89. [self.navigationController pushViewController:ctrl animated:YES];
  90. }
  91. - (void)displayStudent:(NSString *)stuentId {
  92. KSChatUserDetailViewController *ctrl = [[KSChatUserDetailViewController alloc] init];
  93. ctrl.rongCloudId = stuentId;
  94. [self.navigationController pushViewController:ctrl animated:YES];
  95. }
  96. - (void)onShareMusicMoreCellData { // 分享曲谱
  97. MJWeakSelf;
  98. ShareMusicViewController *ctrl = [[ShareMusicViewController alloc] init];
  99. [ctrl shareSongChooseCallback:^(MusicMessageModel * _Nonnull chooseModel) {
  100. [weakSelf shareSongAction:chooseModel];
  101. }];
  102. [self.navigationController pushViewController:ctrl animated:YES];
  103. }
  104. - (void)shareSongAction:(MusicMessageModel *)musicModel {
  105. NSMutableDictionary *parm = [NSMutableDictionary dictionary];
  106. [parm setValue:@"TC_CHATSHARE_MUSIC" forKey:BussinessID];
  107. [parm setValue:[NSString returnNoNullStringWithString:musicModel.musicSheetName] forKey:@"songName"];
  108. [parm setValue:musicModel.chargeType forKey:@"chargeType"];
  109. [parm setValue:musicModel.composer forKey:@"songAuth"];
  110. [parm setValue:[musicModel.addUserAvatar getUrlEndcodeString] forKey:@"teacherAvatar"];
  111. [parm setValue:[NSString returnNoNullStringWithString:musicModel.musicSheetName] forKey:@"songName"];
  112. NSString *owner = @"";
  113. if ([NSString isEmptyString:musicModel.addName]) {
  114. owner = [NSString stringWithFormat:@"游客%.0f",musicModel.userId];
  115. }
  116. else {
  117. owner = musicModel.addName;
  118. }
  119. [parm setValue:owner forKey:@"teacherName"];
  120. [parm setValue:musicModel.subjectNames forKey:@"musicTagNames"];
  121. [parm setValue:[NSString stringWithFormat:@"%.0f",musicModel.internalBaseClassIdentifier] forKey:@"songId"];
  122. NSData *data = [NSJSONSerialization dataWithJSONObject:parm options:0 error:nil];
  123. V2TIMMessage *message = [[V2TIMManager sharedInstance] createCustomMessage:data];
  124. [self sendMessage:message];
  125. }
  126. /*
  127. #pragma mark - Navigation
  128. // In a storyboard-based application, you will often want to do a little preparation before navigation
  129. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  130. // Get the new view controller using [segue destinationViewController].
  131. // Pass the selected object to the new view controller.
  132. }
  133. */
  134. @end