Kaynağa Gözat

修改登录后用户信息管理

ganzf 7 ay önce
ebeveyn
işleme
47c1864f3d
100 değiştirilmiş dosya ile 709 ekleme ve 2452 silme
  1. 4 0
      ABtong/ABtong.xcodeproj/project.pbxproj
  2. 16 6
      ABtong/ABtong/ALLController/JSwebRTC/JSGController.m
  3. 22 0
      ABtong/ABtong/ALLController/call/PhoneKeybord.m
  4. 0 0
      ABtong/ABtong/ALLController/chatCtr/CameraViewController.h
  5. 0 0
      ABtong/ABtong/ALLController/chatCtr/CameraViewController.m
  6. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatController.h
  7. 20 38
      ABtong/ABtong/ALLController/chatCtr/ChatController.m
  8. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatHistory.storyboard
  9. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatHistoryController.h
  10. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatHistoryController.m
  11. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatIndexController.h
  12. 1 1
      ABtong/ABtong/ALLController/chatCtr/ChatIndexController.m
  13. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatListCell.h
  14. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatListCell.m
  15. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatListCell.xib
  16. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatRecordController.h
  17. 0 0
      ABtong/ABtong/ALLController/chatCtr/ChatRecordController.m
  18. 0 0
      ABtong/ABtong/ALLController/chatCtr/MentionTextView.h
  19. 0 0
      ABtong/ABtong/ALLController/chatCtr/MentionTextView.m
  20. 0 0
      ABtong/ABtong/ALLController/chatCtr/QuoteDetailController.h
  21. 0 0
      ABtong/ABtong/ALLController/chatCtr/QuoteDetailController.m
  22. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberCell.h
  23. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberCell.m
  24. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberView.h
  25. 2 2
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberView.m
  26. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatBatchView.h
  27. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatBatchView.m
  28. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatFileModel.h
  29. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatFileModel.m
  30. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatLongPressMenuView.h
  31. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatLongPressMenuView.m
  32. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatMessageModel.h
  33. 2 2
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatMessageModel.m
  34. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatPopoverView.h
  35. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatPopoverView.m
  36. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatQuoteView.h
  37. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/ChatQuoteView.m
  38. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/chatCellView.h
  39. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/chatCellView.m
  40. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/chatpopView.h
  41. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/chatpopView.m
  42. 0 0
      ABtong/ABtong/ALLController/chatCtr/chetCell/chatpopView.xib
  43. 0 0
      ABtong/ABtong/ALLController/friendCtr/EXFriendController.h
  44. 0 0
      ABtong/ABtong/ALLController/friendCtr/EXFriendController.m
  45. 0 0
      ABtong/ABtong/ALLController/friendCtr/EXFriendListCell.h
  46. 0 0
      ABtong/ABtong/ALLController/friendCtr/EXFriendListCell.m
  47. 0 0
      ABtong/ABtong/ALLController/friendCtr/ForwardViewController.h
  48. 3 14
      ABtong/ABtong/ALLController/friendCtr/ForwardViewController.m
  49. 0 0
      ABtong/ABtong/ALLController/friendCtr/FriendController.h
  50. 0 0
      ABtong/ABtong/ALLController/friendCtr/FriendController.m
  51. 0 0
      ABtong/ABtong/ALLController/friendCtr/FriendListCell.h
  52. 0 0
      ABtong/ABtong/ALLController/friendCtr/FriendListCell.m
  53. 0 0
      ABtong/ABtong/ALLController/friendCtr/FriendListController.h
  54. 34 7
      ABtong/ABtong/ALLController/friendCtr/FriendListController.m
  55. 0 0
      ABtong/ABtong/ALLController/friendCtr/ReportViewController.h
  56. 0 1
      ABtong/ABtong/ALLController/friendCtr/ReportViewController.m
  57. 0 0
      ABtong/ABtong/ALLController/friendCtr/addFriendController.h
  58. 2 1
      ABtong/ABtong/ALLController/friendCtr/addFriendController.m
  59. 0 19
      ABtong/ABtong/ALLController/group/GroupController.h
  60. 0 747
      ABtong/ABtong/ALLController/group/GroupController.m
  61. 0 21
      ABtong/ABtong/ALLController/group/GroupEditController.h
  62. 0 343
      ABtong/ABtong/ALLController/group/GroupEditController.m
  63. 0 21
      ABtong/ABtong/ALLController/group/GroupGonggaoController.h
  64. 0 68
      ABtong/ABtong/ALLController/group/GroupGonggaoController.m
  65. 0 29
      ABtong/ABtong/ALLController/group/GroupListCell.h
  66. 0 173
      ABtong/ABtong/ALLController/group/GroupListCell.m
  67. 0 18
      ABtong/ABtong/ALLController/group/GroupListController.h
  68. 0 116
      ABtong/ABtong/ALLController/group/GroupListController.m
  69. 0 18
      ABtong/ABtong/ALLController/group/NewGroupController.h
  70. 0 322
      ABtong/ABtong/ALLController/group/NewGroupController.m
  71. 0 136
      ABtong/ABtong/ALLController/group/groupstory.storyboard
  72. 10 2
      ABtong/ABtong/ALLController/login/APPLockView.m
  73. 1 1
      ABtong/ABtong/ALLController/login/GCoverController.m
  74. 2 6
      ABtong/ABtong/ALLController/login/GLoginController.m
  75. 1 0
      ABtong/ABtong/ALLController/login/GserverListController.m
  76. 16 10
      ABtong/ABtong/ALLController/mine/AppLockPasswordController.m
  77. 2 2
      ABtong/ABtong/ALLController/mine/ChatSettingController.m
  78. 1 1
      ABtong/ABtong/ALLController/mine/DeleteAccountController.m
  79. 18 5
      ABtong/ABtong/ALLController/mine/PersonalInfoController.m
  80. 2 2
      ABtong/ABtong/ALLController/mine/UserConterController.m
  81. 15 15
      ABtong/ABtong/AppDelegate.m
  82. 1 10
      ABtong/ABtong/Common/CommonUI/TopPopupView.m
  83. 3 3
      ABtong/ABtong/Common/CommonUI/Util/config.h
  84. 1 1
      ABtong/ABtong/Common/Defaults/UDManager.h
  85. 8 0
      ABtong/ABtong/Common/Network/FriendNetApi.h
  86. 14 0
      ABtong/ABtong/Common/Network/FriendNetApi.m
  87. 5 4
      ABtong/ABtong/Common/Network/GBaseNetApi.m
  88. 8 0
      ABtong/ABtong/Common/Network/GDBManager.h
  89. 244 7
      ABtong/ABtong/Common/Network/GDBManager.m
  90. 4 4
      ABtong/ABtong/Common/Network/GWebSocket.m
  91. 0 73
      ABtong/ABtong/Common/Network/GroupNetApi.h
  92. 0 123
      ABtong/ABtong/Common/Network/GroupNetApi.m
  93. 3 0
      ABtong/ABtong/Common/Network/UserNetApi.h
  94. 5 0
      ABtong/ABtong/Common/Network/UserNetApi.m
  95. 46 44
      ABtong/ABtong/Common/Store/ChatListStore.m
  96. 6 31
      ABtong/ABtong/Common/Store/ChatsStore.m
  97. 41 0
      ABtong/ABtong/Common/Store/FirendStore.h
  98. 123 0
      ABtong/ABtong/Common/Store/FirendStore.m
  99. 14 5
      ABtong/ABtong/Common/Store/LoginStateManager.m
  100. 9 0
      ABtong/ABtong/Localizable.xcstrings

+ 4 - 0
ABtong/ABtong.xcodeproj/project.pbxproj

@@ -229,6 +229,8 @@
 				INFOPLIST_KEY_CFBundleDisplayName = "MY‘IM";
 				INFOPLIST_KEY_NSCameraUsageDescription = "App 需要访问您的相机来拍摄照片。";
 				INFOPLIST_KEY_NSMicrophoneUsageDescription = "App 需要您允许视频播放。";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App 需要访问您的相册来选择照片。";
+				INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "需要语音识别权限以进行通话";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UIMainStoryboardFile = Main;
@@ -272,6 +274,8 @@
 				INFOPLIST_KEY_CFBundleDisplayName = "MY‘IM";
 				INFOPLIST_KEY_NSCameraUsageDescription = "App 需要访问您的相机来拍摄照片。";
 				INFOPLIST_KEY_NSMicrophoneUsageDescription = "App 需要您允许视频播放。";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "App 需要访问您的相册来选择照片。";
+				INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "需要语音识别权限以进行通话";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UIMainStoryboardFile = Main;

+ 16 - 6
ABtong/ABtong/ALLController/JSwebRTC/JSGController.m

@@ -15,6 +15,7 @@
 #import "AFNetworking/AFNetworkReachabilityManager.h"
 #import <SystemConfiguration/SystemConfiguration.h>
 #import "CustomJitsiLogger.h"
+#import "FirendStore.h"
 
 @interface JSGController()<WebRTCStoreDelegate,AVAudioPlayerDelegate>
 @property (nonatomic,strong) JitsiMeetView *jitsiView;
@@ -56,6 +57,8 @@
     WebRTCStore.shareInstance.delegate = self;
     _jitsiView = (JitsiMeetView*)self.view;
     _jitsiView.delegate = self;
+    
+    [self updataTongxunlu];
 
 //    CustomJitsiLogger *handler = [CustomJitsiLogger sharedHandler];
 //    handler.errorCount = 0;
@@ -105,6 +108,13 @@
     }
 }
 
+//判断并添加到通讯录
+-(void)updataTongxunlu{
+    
+    [FirendStore.shareInstance updataTongxunlu:self.chatId];
+    
+}
+
 #pragma mark 应用被唤醒时判断解锁状态
 - (void)GapplicationDidBecomeActive:(NSNotification *)notification {
     // 应用进入前台
@@ -279,7 +289,7 @@
 
 
 -(void)sendBusy{
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     
     NSLog(@"userinfo:%@",userinfo);
     if (userinfo == nil) {
@@ -289,7 +299,7 @@
         });
         return;
     }
-    NSString *userId = userinfo[@"id"];
+    NSString *userId = userinfo[@"userId"];
     NSString *username = userinfo[@"name"];
     NSString *useravatar = userinfo[@"avatar"];
     NSDate *now = [NSDate date];
@@ -327,9 +337,9 @@
 
 
 -(void)sendCall{
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     NSLog(@"userinfo:%@",userinfo);
-    NSString *userId = userinfo[@"id"];
+    NSString *userId = userinfo[@"userId"];
     NSString *username = userinfo[@"name"];
     NSString *useravatar = userinfo[@"avatar"];
     NSLog(@"-------拨打-------");
@@ -372,11 +382,11 @@
         return;
     }
     NSLog(@"-------挂断-------");
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     if(userinfo==nil){
         return;
     }
-    NSString *userId = userinfo[@"id"];
+    NSString *userId = userinfo[@"userId"];
     NSString *username = userinfo[@"name"];
     NSString *useravatar = userinfo[@"avatar"];
     NSDate *now = [NSDate date];

+ 22 - 0
ABtong/ABtong/ALLController/call/PhoneKeybord.m

@@ -8,6 +8,7 @@
 #import <Foundation/Foundation.h>
 #import "FriendNetApi.h"
 #import "PhoneKeybord.h"
+#import "FirendStore.h"
 
 @interface PhoneKeybord()
 
@@ -49,6 +50,10 @@
     self.alpha = 0;
     _phoneInput.text = @"";
     _userContentV.alpha = 0;
+    [FirendStore.shareInstance reciveMsg:[_showDic copy]];
+    [self addAbtFirend:_showDic];
+    
+    
 }
 
 
@@ -134,6 +139,23 @@
     [_avatar sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"Avatar"]];
 }
 
+-(void)addAbtFirend:(NSDictionary *)dic{
+    if(dic==nil){
+        return;
+    }
+    NSDictionary *dis = @{
+        @"friendId":dic[@"id"],
+        @"message":@""
+    };
+    
+    [FriendNetApi AddTongxunlu:dis succ:^(int code, NSDictionary * res) {
+        NSLog(@"res:%@",res);
+        
+    } fail:^(NSError * _Nonnull error) {
+        NSLog(@"error:%@",error);
+    }];
+}
+
 
 
 @end

+ 0 - 0
ABtong/ABtong/ALLController/chat/CameraViewController.h → ABtong/ABtong/ALLController/chatCtr/CameraViewController.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/CameraViewController.m → ABtong/ABtong/ALLController/chatCtr/CameraViewController.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatController.h → ABtong/ABtong/ALLController/chatCtr/ChatController.h


+ 20 - 38
ABtong/ABtong/ALLController/chat/ChatController.m → ABtong/ABtong/ALLController/chatCtr/ChatController.m

@@ -13,12 +13,12 @@
 #import <UniformTypeIdentifiers/UniformTypeIdentifiers.h>
 #import "ChatController.h"
 #import "FriendController.h"
-#import "GroupController.h"
 #import "ChatsStore.h"
 #import "ChatListStore.h"
+#import "FirendStore.h"
+
 #import "FriendNetApi.h"
 #import "FileNetApi.h"
-#import "GroupNetApi.h"
 #import "UserNetApi.h"
 #import "GWebSocket.h"
 #import "UDManager.h"
@@ -166,7 +166,7 @@ static const CGFloat kQuoteViewHeight = 46.0f;
                                                  name:nkonNewMessageNote
                                                object:nil];
     
-    [self inidatastate];
+    [self updataTongxunlu];
     _textV=[[UITextView alloc] init];
     
     _markView=[[UIView alloc] init];
@@ -179,9 +179,9 @@ static const CGFloat kQuoteViewHeight = 46.0f;
     [self initpopbottonView];
     [self setupPreloader];
     
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     NSLog(@"viewDidLoad userinfo:%@",userinfo);
-    self.userId = userinfo[@"id"];
+    self.userId = userinfo[@"userId"];
     self.username = userinfo[@"name"];
     self.useravatar = userinfo[@"avatar"];
     
@@ -195,12 +195,7 @@ static const CGFloat kQuoteViewHeight = 46.0f;
         type=@"0";
         [ChatsStore.shareInstance reloadData:self.chatId type:self.type];
     }
-    else if(self.type==1){
-        type=@"1";
-//        [ChatsStore.shareInstance reloadQunData:@"1871105598206210050" type:self.type];
-        [ChatsStore.shareInstance getGroupUserList:self.chatId];
-        [self getGroupInfo];
-    }
+    
     _canloadhistory=true;
     
     NSDictionary *chatMsg=@{
@@ -222,7 +217,11 @@ static const CGFloat kQuoteViewHeight = 46.0f;
     [__tableView reloadData];
     
     _titlelb.text = self.titlename;
-    
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+    NSLog(@"reloadAllData userinfo:%@",userinfo);
+    self.userId = userinfo[@"userId"];
+    self.username = userinfo[@"name"];
+    self.useravatar = userinfo[@"avatar"];
     ChatsStore.shareInstance.delegate = self;
     ChatsStore.shareInstance.chatId = self.chatId;
     ChatsStore.shareInstance.userid =self.userId;
@@ -233,12 +232,7 @@ static const CGFloat kQuoteViewHeight = 46.0f;
         type=@"0";
         [ChatsStore.shareInstance reloadData:self.chatId type:self.type];
     }
-    else if(self.type==1){
-        type=@"1";
-//        [ChatsStore.shareInstance reloadQunData:@"1871105598206210050" type:self.type];
-        [ChatsStore.shareInstance getGroupUserList:self.chatId];
-        [self getGroupInfo];
-    }
+    
     _canloadhistory=true;
     
     NSDictionary *chatMsg=@{
@@ -360,16 +354,6 @@ static const CGFloat kQuoteViewHeight = 46.0f;
         friendctr.friendId = self.chatId;
         [self presentViewController :uiNavC animated:YES completion:nil];
     }
-    else{
-        UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
-        GroupController *friendctr = [board instantiateViewControllerWithIdentifier:@"GroupController"];
-        UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:friendctr];
-        uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-        friendctr.groupMsg = nil;
-        friendctr.groupId = self.chatId;
-        [self presentViewController :uiNavC animated:YES completion:nil];
-    }
-    
 }
 
 - (IBAction)yuyinBt:(id)sender {
@@ -417,18 +401,16 @@ static const CGFloat kQuoteViewHeight = 46.0f;
     alert = nil;
 }
 
-#pragma mark 群信息
-- (void)getGroupInfo{
-    [GroupNetApi getGroupInfo:self.chatId succ:^(int code, NSDictionary * _Nullable result) {
-//        NSLog(@"GroupInfo:----%@",result);
-        self.groupInfo = result[@"data"];
-        self.titlename = self.groupInfo[@"name"];
-        self.titlelb.text = self.groupInfo[@"name"];
-    } fail:^(NSError * _Nonnull error) {
-        NSLog(@"error:%@",error);
-    }];
+
+//判断并添加到通讯录
+-(void)updataTongxunlu{
+    
+    [FirendStore.shareInstance updataTongxunlu:self.chatId];
+    
 }
 
+
+
 #pragma mark ChatsStoreDelegate
 
 -(void)getlocalData{

+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatHistory.storyboard → ABtong/ABtong/ALLController/chatCtr/ChatHistory.storyboard


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatHistoryController.h → ABtong/ABtong/ALLController/chatCtr/ChatHistoryController.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatHistoryController.m → ABtong/ABtong/ALLController/chatCtr/ChatHistoryController.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatIndexController.h → ABtong/ABtong/ALLController/chatCtr/ChatIndexController.h


+ 1 - 1
ABtong/ABtong/ALLController/chat/ChatIndexController.m → ABtong/ABtong/ALLController/chatCtr/ChatIndexController.m

@@ -54,7 +54,7 @@
 -(void)ChatListChange:(NSArray *)array{
     
     self.chatlist = [NSMutableArray arrayWithArray:array];
-//    NSLog(@"self.chatlist:%@",self.chatlist);
+    NSLog(@"self.chatlist:%@",self.chatlist);
     [self._tableView reloadData];
 }
 

+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatListCell.h → ABtong/ABtong/ALLController/chatCtr/ChatListCell.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatListCell.m → ABtong/ABtong/ALLController/chatCtr/ChatListCell.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatListCell.xib → ABtong/ABtong/ALLController/chatCtr/ChatListCell.xib


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatRecordController.h → ABtong/ABtong/ALLController/chatCtr/ChatRecordController.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/ChatRecordController.m → ABtong/ABtong/ALLController/chatCtr/ChatRecordController.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/MentionTextView.h → ABtong/ABtong/ALLController/chatCtr/MentionTextView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/MentionTextView.m → ABtong/ABtong/ALLController/chatCtr/MentionTextView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/QuoteDetailController.h → ABtong/ABtong/ALLController/chatCtr/QuoteDetailController.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/QuoteDetailController.m → ABtong/ABtong/ALLController/chatCtr/QuoteDetailController.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatAtMemberCell.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberCell.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatAtMemberCell.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberCell.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatAtMemberView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberView.h


+ 2 - 2
ABtong/ABtong/ALLController/chat/chetCell/ChatAtMemberView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatAtMemberView.m

@@ -65,10 +65,10 @@
 
 #pragma mark setter
 - (void)setMemberArray:(NSArray *)memberArray{
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     NSMutableArray * tempArr = [NSMutableArray arrayWithArray:memberArray];
     for (NSDictionary * member in memberArray) {
-        if ([member[@"id"] isEqualToString:userinfo[@"id"]]) {
+        if ([member[@"id"] isEqualToString:userinfo[@"userId"]]) {
             [tempArr removeObjectAtIndex:[memberArray indexOfObject:member]];
             break;
         }

+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatBatchView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatBatchView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatBatchView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatBatchView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatFileModel.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatFileModel.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatFileModel.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatFileModel.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatLongPressMenuView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatLongPressMenuView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatLongPressMenuView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatLongPressMenuView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatMessageModel.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatMessageModel.h


+ 2 - 2
ABtong/ABtong/ALLController/chat/chetCell/ChatMessageModel.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatMessageModel.m

@@ -42,8 +42,8 @@
     self.msgId = mutableDict[@"id"];
     self.fromId = mutableDict[@"fromId"];
     // 发送方标识
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
-    NSString *userId = userinfo[@"id"];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+    NSString *userId = userinfo[@"userId"];
     if([self.fromId isEqualToString:userId]){
         self.isSender=true;
     }

+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatPopoverView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatPopoverView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatPopoverView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatPopoverView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatQuoteView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatQuoteView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/ChatQuoteView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/ChatQuoteView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/chatCellView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/chatCellView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/chatCellView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/chatCellView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/chatpopView.h → ABtong/ABtong/ALLController/chatCtr/chetCell/chatpopView.h


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/chatpopView.m → ABtong/ABtong/ALLController/chatCtr/chetCell/chatpopView.m


+ 0 - 0
ABtong/ABtong/ALLController/chat/chetCell/chatpopView.xib → ABtong/ABtong/ALLController/chatCtr/chetCell/chatpopView.xib


+ 0 - 0
ABtong/ABtong/ALLController/friend/EXFriendController.h → ABtong/ABtong/ALLController/friendCtr/EXFriendController.h


+ 0 - 0
ABtong/ABtong/ALLController/friend/EXFriendController.m → ABtong/ABtong/ALLController/friendCtr/EXFriendController.m


+ 0 - 0
ABtong/ABtong/ALLController/friend/EXFriendListCell.h → ABtong/ABtong/ALLController/friendCtr/EXFriendListCell.h


+ 0 - 0
ABtong/ABtong/ALLController/friend/EXFriendListCell.m → ABtong/ABtong/ALLController/friendCtr/EXFriendListCell.m


+ 0 - 0
ABtong/ABtong/ALLController/friend/ForwardViewController.h → ABtong/ABtong/ALLController/friendCtr/ForwardViewController.h


+ 3 - 14
ABtong/ABtong/ALLController/friend/ForwardViewController.m → ABtong/ABtong/ALLController/friendCtr/ForwardViewController.m

@@ -9,7 +9,6 @@
 
 #import "FriendListCell.h"
 #import "FriendNetApi.h"
-#import "GroupNetApi.h"
 #import "ChatListStore.h"
 #import "GWebSocket.h"
 #import "UDManager.h"
@@ -28,7 +27,6 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     [self configUI];
-    [self getGroupList];
     [self getFriendlist];
 }
 
@@ -52,15 +50,6 @@
 }
 
 #pragma mark api
-- (void)getGroupList{
-    [GroupNetApi getGroupList:^(int code, NSDictionary * _Nullable result) {
-        NSLog(@"result:%@",result);
-        [self.groupArray addObjectsFromArray:result[@"data"]];
-        [self.tableView reloadData];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
 
 -(void)getFriendlist{
     [FriendNetApi getfriends:nil succ:^(int code, NSDictionary * res) {
@@ -86,7 +75,7 @@
     NSDate *now = [NSDate date];
     NSTimeInterval trt = [now timeIntervalSince1970];
     NSInteger time = trt*1000;
-    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     NSString * typeString = type == 0 ? @"1" : @"0";
     if (!self.isMultiple) {//逐条转发
         for (NSDictionary * msg in self.msgArray) {
@@ -95,7 +84,7 @@
             NSDictionary *Smsgd=@{
                 @"messageType":msg[@"messageType"],
                 @"chatId":friend[@"id"],
-                @"fromId":userInfo[@"id"],
+                @"fromId":userInfo[@"userId"],
                 @"fromName":self.userName,
                 @"fromAvatar":self.userAvatar,
                 @"content":msg[@"content"],
@@ -132,7 +121,7 @@
         NSDictionary *Smsgd=@{
             @"messageType":@"6",
             @"chatId":friend[@"id"],
-            @"fromId":userInfo[@"id"],
+            @"fromId":userInfo[@"userId"],
             @"fromName":self.userName,
             @"fromAvatar":self.userAvatar,
             @"content":@"聊天记录",

+ 0 - 0
ABtong/ABtong/ALLController/friend/FriendController.h → ABtong/ABtong/ALLController/friendCtr/FriendController.h


+ 0 - 0
ABtong/ABtong/ALLController/friend/FriendController.m → ABtong/ABtong/ALLController/friendCtr/FriendController.m


+ 0 - 0
ABtong/ABtong/ALLController/friend/FriendListCell.h → ABtong/ABtong/ALLController/friendCtr/FriendListCell.h


+ 0 - 0
ABtong/ABtong/ALLController/friend/FriendListCell.m → ABtong/ABtong/ALLController/friendCtr/FriendListCell.m


+ 0 - 0
ABtong/ABtong/ALLController/friend/FriendListController.h → ABtong/ABtong/ALLController/friendCtr/FriendListController.h


+ 34 - 7
ABtong/ABtong/ALLController/friend/FriendListController.m → ABtong/ABtong/ALLController/friendCtr/FriendListController.m

@@ -16,7 +16,9 @@
 #import "GLoginController.h"
 #import "LoginStateManager.h"
 
-@interface FriendListController()<UITableViewDelegate,UITableViewDataSource>
+#import "FirendStore.h"
+
+@interface FriendListController()<UITableViewDelegate,UITableViewDataSource,FirendStoreDelegate>
 
 
 @property (weak, nonatomic) IBOutlet UILabel *titleLb;
@@ -56,17 +58,20 @@
 }
 
 -(void)viewWillAppear:(BOOL)animated{
-    [self getFriendlist];
+    [self gettongxunlulist];
     [self getexfriends];
-    [self startTimer];
+//    [self startTimer];
     // 获取TabBarController
     UITabBarController *tabBarController = (UITabBarController *)self.parentViewController;
     // 移除红点(使用系统方法)
     tabBarController.tabBar.items[1].badgeValue = nil;
+    FirendStore.shareInstance.delegate = self;
+    [self getLocalFrends];
 }
 -(void)viewWillDisappear:(BOOL)animated{
     [super viewWillDisappear:animated];
     [self endTimer];
+    FirendStore.shareInstance.delegate = nil;
 }
 
 
@@ -91,17 +96,28 @@
 }
 
 
+-(void)getLocalFrends{
+    [FirendStore.shareInstance reloadData:@""];
+}
+
+- (void)FirendChange:(NSArray *_Nullable)msgList type:(NSInteger)typpe{
+    NSLog(@"fList-----:%@",msgList);
+}
 
--(void)getFriendlist{
-    [FriendNetApi getfriends:nil succ:^(int code, NSDictionary * res) {
+
+-(void)gettongxunlulist{
+    
+    [FriendNetApi getabtTongxunlus:nil succ:^(int code, NSDictionary * res) {
         self.friendlist = res[@"data"];
         NSLog(@"self.friendlist:%@",self.friendlist);
         if(self.friendlist){
             [self._tableView reloadData];
+            [self updataLocalFirends:self.friendlist];
         }
     } fail:^(NSError * _Nonnull error) {
-        
+        ;
     }];
+
 }
 
 -(void)getexfriends{
@@ -218,11 +234,14 @@
 -(void)deleteFriend:(NSInteger)index{
     if(self.friendlist.count>index){
         NSDictionary *dic = self.friendlist[index];
-        [FriendNetApi deletefriend:dic[@"id"] succ:^(int code, NSDictionary * res) {
+        
+        [FriendNetApi deleteTongxunlu:dic[@"id"] succ:^(int code, NSDictionary * res) {
+            NSLog(@"deleteTongxunlu:%@",res);
             NSMutableArray *tempArray = [NSMutableArray arrayWithArray:self.friendlist];
             [tempArray removeObjectAtIndex:index];
             self.friendlist = tempArray;
             [self._tableView reloadData];
+            [FirendStore.shareInstance deleteAbtFirend:dic[@"id"]];
         } fail:^(NSError * _Nonnull error) {
             ;
         }];
@@ -239,4 +258,12 @@
 }
 
 
+
+-(void)updataLocalFirends:(NSArray *)array{
+    for (NSDictionary *dic in array) {
+        [FirendStore.shareInstance reciveMsg:dic];
+    }
+}
+    
+
 @end

+ 0 - 0
ABtong/ABtong/ALLController/friend/ReportViewController.h → ABtong/ABtong/ALLController/friendCtr/ReportViewController.h


+ 0 - 1
ABtong/ABtong/ALLController/friend/ReportViewController.m → ABtong/ABtong/ALLController/friendCtr/ReportViewController.m

@@ -9,7 +9,6 @@
 
 #import "FriendListCell.h"
 #import "FriendNetApi.h"
-#import "GroupNetApi.h"
 #import "ChatListStore.h"
 #import "GWebSocket.h"
 #import "UDManager.h"

+ 0 - 0
ABtong/ABtong/ALLController/friend/addFriendController.h → ABtong/ABtong/ALLController/friendCtr/addFriendController.h


+ 2 - 1
ABtong/ABtong/ALLController/friend/addFriendController.m → ABtong/ABtong/ALLController/friendCtr/addFriendController.m

@@ -86,7 +86,8 @@
         @"friendId":self.userDic[@"id"],
         @"message":_beizhuT.text
     };
-    [FriendNetApi shenqingADDfriend:dis succ:^(int code, NSDictionary * res) {
+    
+    [FriendNetApi AddTongxunlu:dis succ:^(int code, NSDictionary * res) {
         NSLog(@"res:%@",res);
         self.userDic = nil;
         [self dismissViewControllerAnimated:YES completion:nil];

+ 0 - 19
ABtong/ABtong/ALLController/group/GroupController.h

@@ -1,19 +0,0 @@
-//
-//  GroupController.h
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#ifndef GroupController_h
-#define GroupController_h
-
-
-#endif /* GroupController_h */
-#import <UIKit/UIKit.h>
-@interface GroupController : UIViewController
-
-@property(nonatomic, strong) NSDictionary *groupMsg;
-@property(nonatomic, strong) NSString *groupId;
-
-@end

+ 0 - 747
ABtong/ABtong/ALLController/group/GroupController.m

@@ -1,747 +0,0 @@
-//
-//  GroupController.m
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#import <Foundation/Foundation.h>
-#import "GroupController.h"
-#import "GroupNetApi.h"
-#import <SDWebImage/UIImageView+WebCache.h>
-#import "ChatController.h"
-#import "ChatListStore.h"
-#import "config.h"
-#import "UDManager.h"
-#import "GroupEditController.h"
-#import "GroupGonggaoController.h"
-#import "ChatHistoryController.h"
-#import "NewGroupController.h"
-#import "FriendNetApi.h"
-
-@interface GroupController()<UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource>
-@property (weak, nonatomic) IBOutlet UICollectionView *collView;
-@property (weak, nonatomic) IBOutlet UITableView *tableView;
-@property (weak, nonatomic) IBOutlet UIScrollView *ctScrollView;
-@property (weak, nonatomic) IBOutlet UILabel *bartitleLb;
-@property (weak, nonatomic) IBOutlet UIButton *rightBt;
-
-
-@property (nonatomic,strong) NSMutableArray *cellDatas;
-@property (nonatomic,strong) NSMutableArray *collDatas;
-@property (nonatomic,strong) NSString *master;
-@property (nonatomic) BOOL ismaster;
-@property (nonatomic) BOOL reloadMsg;
-@property (nonatomic, strong) NSDictionary * noDisturbDict;
-@end
-
-@implementation GroupController
-
--(void)viewDidLoad{
-    [super viewDidLoad];
-    [self.navigationController setNavigationBarHidden:YES animated:NO];
-    _bartitleLb.text = @"";
-    _reloadMsg=NO;
-    _cellDatas = [[NSMutableArray alloc] init];
-    _collDatas = [[NSMutableArray alloc] init];
-    _rightBt.alpha = 0;
-    if(self.groupMsg){
-        [self initData];
-        [self getNoDiturbSettingData];
-    }
-    else{
-        if(self.groupId){
-            [self getNetGroupMsg];
-        }
-    }
-    [self initSubView];
-}
-
--(void)viewWillAppear:(BOOL)animated{
-    [super viewWillAppear:YES];
-    if(_reloadMsg){
-        [self getNetGroupMsg];
-    }
-}
-
--(void)viewDidDisappear:(BOOL)animated{
-    [super viewDidDisappear:YES];
-    _reloadMsg=YES;
-}
-
-
--(void)initData{
-    
-    _ismaster=NO;
-    
-    if (self.groupMsg) {
-        _master = self.groupMsg[@"master"]?:@"";
-        _groupId =self.groupMsg[@"id"];
-        NSDictionary *userInfo = [UDManager.shareInstance getDDManager:dkuserinfo];
-        if ([_master isEqualToString:userInfo[@"id"]]) {
-            _ismaster=YES;
-            _rightBt.alpha = 1;
-        }
-    }
-    _bartitleLb.text = self.groupMsg[@"name"];
-    
-    NSDictionary *d1 =@{
-        @"name":@"GroupCtr-xiaoximdr",
-        @"image":@"noDisturb_chat_icon",
-    };
-    NSDictionary *d2 =@{
-        @"name":@"GroupCtr-ruquanshe",
-        @"image":@"check_group_icon",
-    };
-    NSDictionary *d3 =@{
-        @"name":@"GroupCtr-zhuanrangq",
-        @"image":@"transfer_group_icon",
-    };
-    NSDictionary *d4 =@{
-        @"name":@"GroupCtr-liaotianjl",
-        @"image":@"record_chat_icon",
-    };
-    NSDictionary *d5 =@{
-        @"name":@"GroupCtr-gonggao",
-        @"image":@"announce_group_icon",
-    };
-    NSDictionary *d6 =@{
-        @"name":@"GroupCtr-liaotian",
-        @"image":@"wzhuxiaozz",
-    };
-    
-    NSString *d7name = @"GroupCtr-tuichuql";
-    if(_ismaster){
-        d7name = @"GroupCtr-jiesanquz";
-    }
-    
-    NSDictionary *d7 =@{
-        @"name":d7name,
-        @"image":@"wzhuxiaozz",
-    };
-    
-    
-    [_cellDatas removeAllObjects];
-    
-    if(_ismaster){
-        [_cellDatas addObject:d2];
-        [_cellDatas addObject:d3];
-    }
-    [_cellDatas addObject:d4];
-    [_cellDatas addObject:d5];
-    [_cellDatas addObject:d1];
-    [_cellDatas addObject:d6];
-    [_cellDatas addObject:d7];
-    
-    
-    [self getGroupUsers];
-}
-
--(void)getNetGroupMsg{
-    [GroupNetApi getGroupInfo:self.groupId succ:^(int code, NSDictionary * res) {
-        NSLog(@"res:%@",res);
-        self.groupMsg = [self replaceNullsWithEmptyStringInDictionary:res[@"data"]];
-        [self initData];
-        [self getNoDiturbSettingData];
-        [self.tableView reloadData];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
--(void)getNoDiturbSettingData{
-    [FriendNetApi getNoDisturbSetting:self.groupMsg[@"id"] succ:^(int code, NSDictionary * _Nullable result) {
-        NSLog(@"noDisturbSetting:-----%@",result);
-        NSArray * dataArray = result[@"data"];
-        if (dataArray.count!=0) {
-            self.noDisturbDict = dataArray[0];
-        }
-        [self.tableView reloadData];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
-- (void)saveNoDisturbSetting{
-    NSDictionary * param = @{
-        @"userId":self.groupMsg[@"id"],
-        @"chatId":self.groupMsg[@"id"]
-    };
-    [FriendNetApi saveNoDisturbSetting:param succ:^(int code, NSDictionary * _Nullable result) {
-        [MBProgressHUD showWithText:result[@"msg"]];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
-- (void)cancelNoDisturbSetting{
-    [FriendNetApi cancelNoDisturbSettingWithUserId:self.groupMsg[@"id"] chatId:self.groupMsg[@"id"] succ:^(int code, NSDictionary * _Nullable result) {
-        [MBProgressHUD showWithText:result[@"msg"]];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
--(void)initSubView{
-    [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellT"];
-    [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellTT"];
-    [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellTT3"];
-    _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
-    _tableView.backgroundColor = [UIColor clearColor];
-    _tableView.delegate = self;
-    _tableView.dataSource = self;
-    _tableView.scrollEnabled = NO;
-    
-    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
-    layout.scrollDirection = UICollectionViewScrollDirectionVertical; // 设置垂直流布局
-    CGFloat width = _collView.frame.size.width;
-    width=(width-20)/3;
-    layout.itemSize = CGSizeMake(width, width); // 设置每个item的大小
-    layout.minimumInteritemSpacing = 5; // 设置单元格之间的间距
-    [_collView setCollectionViewLayout:layout];
-    [_collView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collT"];
-    [_collView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collTT"];
-    _collView.dataSource = self;
-    _collView.delegate = self;
-    _collView.backgroundColor = [UIColor clearColor];
-    _ctScrollView.showsVerticalScrollIndicator =NO;
-    _ctScrollView.backgroundColor = [UIColor clearColor];
-       
-}
-
--(void)resetframe{
-    NSLog(@"_ismaster");
-    CGFloat tableH = _cellDatas.count*62;
-    NSInteger row =_collDatas.count/3;
-    
-    if(_ismaster){
-        NSLog(@"_ismaster11-----");
-        row =(_collDatas.count+2)/3;
-        if((_collDatas.count+2)>row*3) {
-            row=row+1;
-        }
-    }
-    else{
-        NSString *openInvite = self.groupMsg[@"openInvite"];
-        if(openInvite.intValue==1){
-            row =(_collDatas.count+1)/3;
-            if((_collDatas.count+1)>row*3) {
-                row=row+1;
-            }
-        }
-        else{
-            row =_collDatas.count/3;
-            if(_collDatas.count>row*3) {
-                row=row+1;
-            }
-        }
-    }
-    
-    CGFloat width = _collView.frame.size.width;
-    width=(width-20)/3;
-    
-    CGFloat collVH = row*(width+10);
-    
-    CGRect r = _collView.frame;
-    r.origin.x =0.0f;
-    r.origin.y = 0.0f;
-    r.size.height = collVH;
-    _collView.frame = r;
-    
-    CGRect t = _tableView.frame;
-    t.origin.x =0.0f;
-    t.origin.y = collVH +10.0f;
-    t.size.height = tableH;
-    _tableView.frame = t;
-    
-    _ctScrollView.contentSize = CGSizeMake(_ctScrollView.frame.size.width, tableH+collVH+20);
-    [_collView reloadData];
-    [_tableView reloadData];
-}
-
-- (IBAction)gotoBack:(id)sender {
-    [self dismissViewControllerAnimated:YES completion:nil];
-}
-- (IBAction)rightBt:(id)sender {
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
-    NewGroupController *groupctr = [board instantiateViewControllerWithIdentifier:@"NewGroupController"];
-    groupctr.groupMsg = self.groupMsg;
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:groupctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-
-- (void)switchAction:(id)sender {
-    UISwitch *switchButton = (UISwitch*)sender;
-    BOOL isButtonOn = [switchButton isOn];
-    if (isButtonOn) {
-        // 处理开关打开的情况
-        NSLog(@"isButtonOn");
-        [self saveNoDisturbSetting];
-    } else {
-        // 处理开关关闭的情况
-        NSLog(@"isButtonOff");
-        [self cancelNoDisturbSetting];
-    }
-}
-
-#pragma mark UICollectionViewDelegate
-
--(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
-    return 1;
-}
-
--(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
-    if(_ismaster){
-        return self.collDatas.count +2;
-    }
-    else{
-        NSString *openInvite = self.groupMsg[@"openInvite"];
-        if(openInvite.intValue==1){
-            return self.collDatas.count +1;
-        }
-        else{
-            return self.collDatas.count;
-        }
-        
-    }
-}
-
-- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
-    
-    // 配置cell的内容
-    if(indexPath.row==self.collDatas.count){
-        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collTT" forIndexPath:indexPath];
-        CGFloat width = cell.frame.size.width;
-        UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"jiaqun"]];
-        [cell addSubview:img];
-        img.contentMode = UIViewContentModeScaleAspectFill;
-        img.frame = CGRectMake(20, 0, width-40, width-40);
-        img.layer.cornerRadius = (width-40)/2;
-        img.layer.masksToBounds = YES;
-        img.backgroundColor=[UIColor lightGrayColor];
-        cell.backgroundColor=[UIColor clearColor];
-        return cell;
-    }
-    else if(indexPath.row==self.collDatas.count+1){
-        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collTT" forIndexPath:indexPath];
-        CGFloat width = cell.frame.size.width;
-        UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tichuqun"]];
-        [cell addSubview:img];
-        img.contentMode = UIViewContentModeScaleAspectFill;
-        img.frame = CGRectMake(20, 0, width-40, width-40);
-        img.layer.cornerRadius = (width-40)/2;
-        img.layer.masksToBounds = YES;
-        img.backgroundColor=[UIColor lightGrayColor];
-        cell.backgroundColor=[UIColor clearColor];
-        return cell;
-    }
-    else{
-       
-        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collT" forIndexPath:indexPath];
-        
-        NSArray *array = cell.contentView.subviews;
-        for (id sbv in array) {
-            [sbv removeFromSuperview];
-        }
-        NSDictionary *dic = self.collDatas[indexPath.row];
-        CGFloat width = cell.frame.size.width;
-        UIImageView *img = [[UIImageView alloc] init];
-        [cell.contentView addSubview:img];
-        [img sd_setImageWithURL:[NSURL URLWithString:dic[@"avatar"]] placeholderImage:[UIImage imageNamed:@"Avatar"]];
-        img.contentMode = UIViewContentModeScaleAspectFill;
-        img.frame = CGRectMake(20, 0, width-40, width-40);
-        img.layer.cornerRadius = (width-40)/2;
-        img.layer.masksToBounds = YES;
-        img.backgroundColor=[UIColor lightGrayColor];
-        
-        UILabel *name = [[UILabel alloc] init];
-        name.text = dic[@"name"];
-        [cell.contentView addSubview:name];
-        name.frame = CGRectMake(0, width-40, width, 30.0f);
-        name.textAlignment = NSTextAlignmentCenter;
-        if([_master isEqualToString:dic[@"id"]]){
-            name.textColor = globalColor(GCTypeOrangeR);
-            name.font = [UIFont systemFontOfSize:15.0f];
-        }
-        else{
-            name.textColor = [UIColor whiteColor];
-            name.font = [UIFont systemFontOfSize:14.0f];
-        }
-        cell.backgroundColor=[UIColor clearColor];
-        return cell;
-    }
-    return nil;
-}
-
--(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
-    if(indexPath.row==self.collDatas.count){//邀请加入群
-        UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
-        GroupEditController *chatctr = [board instantiateViewControllerWithIdentifier:@"GroupEditController"];
-        UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-        uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-        chatctr.editType = 3;
-        chatctr.groupId = self.groupMsg[@"id"];
-        [self presentViewController :uiNavC animated:YES completion:nil];
-        
-    }else if(indexPath.row==self.collDatas.count+1){//踢出群
-        UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
-        GroupEditController *chatctr = [board instantiateViewControllerWithIdentifier:@"GroupEditController"];
-        UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-        uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-        chatctr.editType = 4;
-        chatctr.groupId = self.groupMsg[@"id"];
-        [self presentViewController :uiNavC animated:YES completion:nil];
-    }
-    
-    NSLog(@"");
-}
-
-
-#pragma mark UITableViewDelegate
-
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
-    
-    NSInteger section =indexPath.section;
-    NSDictionary *time =_cellDatas[section];
-    NSString *cellT =@"cellT";
-    if(section>_cellDatas.count-3){
-        cellT =@"cellTT";
-        UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellT forIndexPath:indexPath];
-        if(cell==nil){
-            cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellT];
-        }
-        cell.selectionStyle = UITableViewCellSelectionStyleNone;
-        cell.backgroundColor = [UIColor clearColor];
-        cell.contentView.layer.borderWidth = 0.5f;
-        cell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
-        cell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-        if(section==_cellDatas.count-1){
-            cell.contentView.backgroundColor = globalColor(GCTypeOrangeR);
-        }
-        else{
-            cell.contentView.backgroundColor = globalColor(GCTypeGreen);
-            
-        }
-        
-        cell.textLabel.text =NSLocalizedString(time[@"name"], @"");
-        cell.textLabel.textAlignment = NSTextAlignmentCenter;
-        
-        return cell;
-    }
-    else if(indexPath.section == self.cellDatas.count-3){
-        cellT =@"cellTT3";
-        UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellT forIndexPath:indexPath];
-        if(cell==nil){
-            cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellT];
-        }
-        cell.selectionStyle = UITableViewCellSelectionStyleNone;
-        cell.backgroundColor = [UIColor clearColor];
-        NSString *title = NSLocalizedString(time[@"name"], @"");
-        
-        cell.imageView.image = [UIImage imageNamed:time[@"image"]];
-        cell.textLabel.text =title;
-        cell.textLabel.textColor = [UIColor whiteColor];
-        CGRect ctfrm = cell.contentView.frame;
-        UISwitch * stateSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(ctfrm.size.width-66, 10, 20, 10)];
-        stateSwitch.onImage = kImageMake(@"switch_on");
-        stateSwitch.offImage = kImageMake(@"switch_off");
-        
-        if (self.noDisturbDict && [self.noDisturbDict jk_hasKey:@"id"]) {
-            [stateSwitch setOn:YES];
-        }else{
-            [stateSwitch setOn:NO];
-        }
-        [stateSwitch addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
-        [cell.contentView addSubview:stateSwitch];
-        cell.contentView.layer.borderWidth = 0.5f;
-        cell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
-        cell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-        return cell;
-    }
-    else{
-        UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellT forIndexPath:indexPath];
-        if(cell==nil){
-            cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellT];
-        }
-        cell.selectionStyle = UITableViewCellSelectionStyleNone;
-        cell.backgroundColor = [UIColor clearColor];
-        NSString *title = NSLocalizedString(time[@"name"], @"");
-        
-        cell.imageView.image = [UIImage imageNamed:time[@"image"]];
-        cell.textLabel.text =title;
-        cell.textLabel.textColor = [UIColor whiteColor];
-        CGRect ctfrm = cell.contentView.frame;
-        UIImageView *right = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow-right"]];
-        right.frame = CGRectMake(ctfrm.size.width-30, 21, 20, 20);
-        [cell.contentView addSubview:right];
-        cell.contentView.layer.borderWidth = 0.5f;
-        cell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
-        cell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-        return cell;
-    }
-    
-
-}
--(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
-    
-    if(_ismaster){//群主
-        if(indexPath.section == 0){
-            [self gotoRuqunshenhe];
-        }
-        if(indexPath.section == 1){
-            [self zhuanrangqun];
-        }
-        if(indexPath.section == 2){
-            [self gotoLiaotianjilu];
-        }
-        if(indexPath.section == 3){
-            [self gotoGonggao];
-        }
-        
-        if(indexPath.section == 5){
-            [self gotoChart];
-        }
-        if(indexPath.section == 6){
-            [self jiesanqun];
-        }
-    }
-    else{//非群主
-        if(indexPath.section == 0){
-            [self gotoLiaotianjilu];
-        }
-        if(indexPath.section == 1){
-            [self gotoGonggao];
-        }
-        
-        if(indexPath.section == 3){
-            [self gotoChart];
-        }
-        if(indexPath.section == 4){
-            [self tuichuqun];
-        }
-    }
-}
-
--(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
-    return 1;
-}
-
--(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
-    return _cellDatas.count;
-}
-
--(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
-    return 52.0;
-}
-
--(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
-    CGFloat height =10.0;
-    if(section==0){
-        height =0.0;
-    }
-    return height;
-}
-
--(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
-    CGFloat height =10.0;
-    if(section==0){
-        height =0.0;
-    }
-    UIView *view =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, height)];
-    view.backgroundColor = [UIColor clearColor];
-    return view;
-}
-
-
--(void)getGroupUsers{
-    NSLog(@"self.groupMsg:%@",self.groupMsg);
-    if (self.groupMsg) {
-        [GroupNetApi getGroupUserList:self.groupMsg[@"id"] succ:^(int code, NSDictionary *res) {
-            NSLog(@"res:%@",res);
-            self.collDatas = [NSMutableArray arrayWithArray:[self replaceNullsWithEmptyStringInArray:res[@"data"]]];
-            [self resetframe];
-        } fail:^(NSError * _Nonnull error) {
-            NSLog(@"errer");
-        }];
-    }
-}
-
-#pragma mark 入群审核
--(void)gotoRuqunshenhe{
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
-    GroupEditController *chatctr = [board instantiateViewControllerWithIdentifier:@"GroupEditController"];
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    chatctr.editType = 1;
-    chatctr.groupId = self.groupMsg[@"id"];
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-#pragma mark 转让群
--(void)zhuanrangqun{
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
-    GroupEditController *chatctr = [board instantiateViewControllerWithIdentifier:@"GroupEditController"];
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    chatctr.editType = 2;
-    chatctr.groupId = self.groupMsg[@"id"];
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-
-#pragma mark 聊天记录
--(void)gotoLiaotianjilu{
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"ChatHistory" bundle:[NSBundle mainBundle]];
-    ChatHistoryController *chatctr = [board instantiateViewControllerWithIdentifier:@"ChatHistoryController"];
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    chatctr.chatId = self.groupMsg[@"id"];
-    chatctr.type = 1;
-    chatctr.titlename = self.groupMsg[@"name"];
-    chatctr.avatar = self.groupMsg[@"avatar"];
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-#pragma mark 公告
--(void)gotoGonggao{
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
-    GroupGonggaoController *chatctr = [board instantiateViewControllerWithIdentifier:@"GroupGonggaoController"];
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    chatctr.groupId = self.groupMsg[@"id"];
-    chatctr.gonggao =self.groupMsg[@"announcement"];
-    if(_ismaster){
-        chatctr.editType = 1;
-    }
-    else{
-        chatctr.editType = 2;
-    }
-    
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-
-#pragma mark 消息免打扰
--(void)changeXiaoximdr{
-    
-}
-
-
-#pragma mark 聊天
--(void)gotoChart{
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
-    
-    ChatController *chatctr = [board instantiateViewControllerWithIdentifier:@"ChatController"];
-    
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
-    
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    
-    chatctr.chatId = self.groupMsg[@"id"];
-    chatctr.type = 1;
-    ChatListStore.shareInstance.chatId =self.groupMsg[@"id"];
-    chatctr.titlename = self.groupMsg[@"name"];
-    chatctr.avatar = self.groupMsg[@"avatar"];
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-
-#pragma mark 退出群
--(void)tuichuqun{
-    // 创建弹框询问
-    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
-                                                                 message:@"是否确认退出群?"
-                                                          preferredStyle:UIAlertControllerStyleAlert];
-    // 创建取消按钮和确定按钮,并添加到弹框中
-    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了取消");
-    }];
-    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了确定");
-        [GroupNetApi exitGroup:self.groupId succ:^(int code, NSDictionary * res) {
-            NSString *coder = res[@"code"];
-            if(coder.intValue==200){
-                [self dismissViewControllerAnimated:YES completion:nil];
-            }
-        } fail:^(NSError * _Nonnull error) {
-            
-        }];
-    }];
-    [alert addAction:cancelAction];
-    [alert addAction:okAction];
-    // 显示弹框
-    [self presentViewController:alert animated:YES completion:nil];
-}
-
-#pragma mark 解散群
--(void)jiesanqun{
-    // 创建弹框询问
-    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
-                                                                 message:@"是否确认解散群?"
-                                                          preferredStyle:UIAlertControllerStyleAlert];
-    // 创建取消按钮和确定按钮,并添加到弹框中
-    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了取消");
-    }];
-    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了确定");
-        [GroupNetApi deleteGroup:self.groupId succ:^(int code, NSDictionary * res) {
-            NSString *coder = res[@"code"];
-            if(coder.intValue==200){
-                [self dismissViewControllerAnimated:YES completion:nil];
-            }
-        } fail:^(NSError * _Nonnull error) {
-            
-        }];
-    }];
-    [alert addAction:cancelAction];
-    [alert addAction:okAction];
-    // 显示弹框
-    [self presentViewController:alert animated:YES completion:nil];
-}
-
-#pragma mark statusBar
-- (UIStatusBarStyle)preferredStatusBarStyle{
-    return UIStatusBarStyleLightContent;
-}
-
-#pragma mark 工具
-// 递归替换字典中的 NSNull 为 @""
-- (NSDictionary *)replaceNullsWithEmptyStringInDictionary:(NSDictionary *)dictionary {
-    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithDictionary:dictionary];
-    
-    for (id key in [mutableDict allKeys]) {
-        id value = [mutableDict objectForKey:key];
-        
-        if ([value isKindOfClass:[NSNull class]]) {
-            [mutableDict setObject:@"" forKey:key];
-        } else if ([value isKindOfClass:[NSDictionary class]]) {
-            // 递归处理子字典
-            [mutableDict setObject:[self replaceNullsWithEmptyStringInDictionary:value] forKey:key];
-        } else if ([value isKindOfClass:[NSArray class]]) {
-            // 递归处理数组
-            [mutableDict setObject:[self replaceNullsWithEmptyStringInArray:value] forKey:key];
-        }
-    }
-    
-    return [NSDictionary dictionaryWithDictionary:mutableDict];
-}
-
-// 递归替换数组中的 NSNull 为 @""
-- (NSArray *)replaceNullsWithEmptyStringInArray:(NSArray *)array {
-    NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
-    
-    for (NSInteger i = 0; i < [mutableArray count]; i++) {
-        id value = [mutableArray objectAtIndex:i];
-        
-        if ([value isKindOfClass:[NSNull class]]) {
-            [mutableArray replaceObjectAtIndex:i withObject:@""];
-        } else if ([value isKindOfClass:[NSDictionary class]]) {
-            // 递归处理子字典
-            [mutableArray replaceObjectAtIndex:i withObject:[self replaceNullsWithEmptyStringInDictionary:value]];
-        } else if ([value isKindOfClass:[NSArray class]]) {
-            // 递归处理子数组
-            [mutableArray replaceObjectAtIndex:i withObject:[self replaceNullsWithEmptyStringInArray:value]];
-        }
-    }
-    
-    return [NSArray arrayWithArray:mutableArray];
-}
-
-@end

+ 0 - 21
ABtong/ABtong/ALLController/group/GroupEditController.h

@@ -1,21 +0,0 @@
-//
-//  GroupEditController.h
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-#ifndef GroupEditController_h
-#define GroupEditController_h
-
-
-#endif /* GroupEditController_h */
-#import <UIKit/UIKit.h>
-
-@interface GroupEditController : UIViewController
-
-@property(nonatomic) NSInteger editType;
-@property(nonatomic,strong) NSString *groupId;
-
-
-
-@end

+ 0 - 343
ABtong/ABtong/ALLController/group/GroupEditController.m

@@ -1,343 +0,0 @@
-//
-//  GroupEditController.m
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#import <Foundation/Foundation.h>
-#import "GroupEditController.h"
-#import "GroupNetApi.h"
-#import "GroupListCell.h"
-#import "FriendNetApi.h"
-#import "GWebSocket.h"
-#import "UDManager.h"
-#import "config.h"
-
-
-@interface GroupEditController()<UITableViewDelegate,UITableViewDataSource,GroupListCellDelegate>
-
-@property (weak, nonatomic) IBOutlet UILabel *titleLb;
-@property (weak, nonatomic) IBOutlet UITableView *tableView;
-
-
-
-@property (strong, nonatomic) NSArray *dataList;
-@property (strong, nonatomic) NSArray *groupUserList;
-@property (strong,nonatomic) NSString *userId;
-
-@end
-
-
-@implementation GroupEditController
-
--(void)viewDidLoad{
-    [super viewDidLoad];
-    [self.navigationController setNavigationBarHidden:YES animated:NO];
-    if(self.editType==1){
-        _titleLb.text = NSLocalizedString(@"EGroupCtr-rqtitle", @"入群审核");
-    }
-    if (self.editType==2) {
-        _titleLb.text = NSLocalizedString(@"EGroupCtr-qunzhuanr", @"转让群");
-    }
-    if (self.editType==3) {
-        _titleLb.text = NSLocalizedString(@"EGroupCtr-yaoqingrq", @"邀请加入群");
-    }
-    if (self.editType==4) {
-        _titleLb.text = NSLocalizedString(@"EGroupCtr-tichuq", @"踢出群");
-    }
-    
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
-    NSLog(@"userinfo:%@",userinfo);
-    _userId = userinfo[@"id"];
-    
-    [self initFrame];
-    [self initData];
-}
-- (IBAction)gotoback:(id)sender {
-    [self dismissViewControllerAnimated:YES completion:nil];
-}
-
-
-
--(void)initFrame{
-    [_tableView registerClass:[GroupListCell class] forCellReuseIdentifier:@"cellT"];
-    _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
-    _tableView.backgroundColor = [UIColor clearColor];
-    _tableView.delegate=self;
-    _tableView.dataSource=self;
-}
-
--(void)initData{
-    if(self.editType==1){
-        [self getshenheList];
-    }
-    else if(self.editType==2){
-        [self getGroupUserList];
-    }
-    else if(self.editType==3){
-        [self getGroupUserList];
-    }
-    else if(self.editType==4){
-        [self getGroupUserList];
-    }
-}
-
-
-#pragma mark 获取待审核入群人员
--(void)getshenheList{
-    [GroupNetApi getshenheList:self.groupId succ:^(int code, NSDictionary * res) {
-        NSLog(@"res:%@",res);
-        self.dataList = res[@"data"];
-        [self->_tableView reloadData];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
-#pragma mark 获取群成员
--(void)getGroupUserList{
-    [GroupNetApi getGroupUserList:self.groupId succ:^(int code, NSDictionary * res) {
-        if(self.editType == 3){
-            self.groupUserList = res[@"data"];
-            [self getFriendList];
-        }
-        else{
-            self.dataList = res[@"data"];
-            [self->_tableView reloadData];
-        }
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-#pragma mark 获取所有好友
--(void)getFriendList{
-    [FriendNetApi getfriends:nil succ:^(int code, NSDictionary * res) {
-        self.dataList = res[@"data"];
-        //NSLog(@"self.friendlist:%@",self.friendlist);
-        if(self.dataList){
-            [self dowithFriendList];
-        }
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
--(void)dowithFriendList{
-    NSMutableArray *array = [[NSMutableArray alloc] init];
-    for (NSDictionary *item in self.dataList) {
-        NSString *fid = item[@"id"];
-        BOOL mark=YES;
-        for (NSDictionary *jtem in self.groupUserList) {
-            NSString *jid = jtem[@"id"];
-            if(fid.intValue == jid.intValue){
-                mark=NO;
-                break;
-            }
-        }
-        if(mark){
-            [array addObject:item];
-        }
-    }
-    NSLog(@"self.groupUserList:%@",self.groupUserList);
-    NSLog(@"self.dataList:%@",self.dataList);
-    self.dataList = array;
-    [self.tableView reloadData];
-}
-
-#pragma mark UITableViewDelegate
-
--(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
-    return 1;
-}
-
--(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
-    return self.dataList.count;
-}
-
--(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
-    return 70;
-}
-
--(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
-    NSDictionary *data=self.dataList[indexPath.row];
-    NSLog(@"cellForRowAtIndexPath:%@",data);
-    if(data){
-        
-        GroupListCell *cell =[tableView dequeueReusableCellWithIdentifier:@"cellT" forIndexPath:indexPath];
-        if(cell==nil){
-            cell=[[GroupListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellT"];
-        }
-        cell.selectionStyle = UITableViewCellSelectionStyleNone;
-        cell.backgroundColor = [UIColor clearColor];
-        [cell fillWithData:data cellType:self.editType];
-        cell.delegate = self;
-        
-        return cell;
-    }
-    return nil;
-}
-
--(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
-    
-}
-
--(void)GroupListCellAct:(NSString *)actId act:(NSInteger)state{
-    NSLog(@"GroupListCellAct:%@,%ld",actId,(long)state);
-    if(self.editType==1){//入群审核
-        if(state==1){//同意申请
-            [self tongyiruqunshenqing:actId];
-        }
-        else{//拒绝
-            [self jujueruqunshenqing:actId];
-        }
-    }
-    if(self.editType==2){//转让
-        [self zhuanrangqun:actId];
-    }
-    if(self.editType==3){//邀请
-        [self yaoqingruqun:actId];
-    }
-    if(self.editType==4){//踢出
-        [self tichuqun:actId];
-    }
-}
-
-
-#pragma mark net acttion
-//
--(void)tongyiruqunshenqing:(NSString *)userid{
-    [GroupNetApi Checkagree:userid succ:^(int code, NSDictionary * res) {
-        //发送通知
-        NSString *coder = res[@"code"];
-        if(coder.intValue==200){
-            [self sendNote];
-        }
-        //更新列表
-        [self initData];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
--(void)jujueruqunshenqing:(NSString *)userid{
-    [GroupNetApi Checkrefuse:userid succ:^(int code, NSDictionary * res) {
-        //更新列表
-        [self initData];
-    } fail:^(NSError * _Nonnull error) {
-        
-    }];
-}
-
--(void)zhuanrangqun:(NSString *)userid{
-    // 创建弹框询问
-    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
-                                                                 message:@"是否转让群?"
-                                                          preferredStyle:UIAlertControllerStyleAlert];
-    // 创建取消按钮和确定按钮,并添加到弹框中
-    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了取消");
-    }];
-    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了确定");
-        [GroupNetApi transferGroup:self.groupId userId:userid succ:^(int code, NSDictionary * res) {
-            NSString *coder = res[@"code"];
-            if(coder.intValue==200){
-                [self dismissViewControllerAnimated:YES completion:nil];
-            }
-        } fail:^(NSError * _Nonnull error) {
-            
-        }];
-    }];
-    [alert addAction:cancelAction];
-    [alert addAction:okAction];
-    // 显示弹框
-    [self presentViewController:alert animated:YES completion:nil];
-}
-
--(void)yaoqingruqun:(NSString *)userid{
-    NSArray *userlds = @[userid];
-    //NSString *userlds = [NSString stringWithFormat:@"[%@]",userid];
-    NSDictionary *dic = @{
-        @"userIds":userlds,
-        @"groupId":self.groupId
-    };
-    [GroupNetApi addUsertoGroup:dic groupId:nil succ:^(int code, NSDictionary * res) {
-        NSLog(@"res%@",res);
-        NSString *coder =res[@"code"];
-        if(coder.intValue==200){
-            NSMutableArray *array = [[NSMutableArray alloc] init];
-            for (NSDictionary *item in self.dataList) {
-                NSString *fid = item[@"id"];
-                if(userid.intValue!=fid.intValue){
-                    [array addObject:item];
-                }
-            }
-            self.dataList = array;
-            [self.tableView reloadData];
-        }
-    } fail:^(NSError * _Nonnull error) {
-        NSLog(@"error:%@",error);
-    }];
-}
-
--(void)tichuqun:(NSString *)userid{
-    // 创建弹框询问
-    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
-                                                                 message:@"是否剔除用户出群?"
-                                                          preferredStyle:UIAlertControllerStyleAlert];
-    // 创建取消按钮和确定按钮,并添加到弹框中
-    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了取消");
-    }];
-    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
-        NSLog(@"用户点击了确定");
-        [GroupNetApi getoutUserGroup:self.groupId userId:userid succ:^(int code, NSDictionary * res) {
-            [self initData];
-        } fail:^(NSError * _Nonnull error) {
-            
-        }];
-    }];
-    [alert addAction:cancelAction];
-    [alert addAction:okAction];
-    // 显示弹框
-    [self presentViewController:alert animated:YES completion:nil];
-}
-
-
--(void)sendNote{
-   
-    NSDate *now = [NSDate date];
-    NSTimeInterval trt = [now timeIntervalSince1970];
-    NSInteger time = trt*1000;
-    NSString *strtime = [NSString stringWithFormat:@"%ld",(long)time];
-   
-    NSString *content = @"有新用户入群";
-    NSDictionary *callMsg = @{
-        @"code":SendCode_MESSAGE,
-        @"message": @{
-            @"chatId":self.groupId,
-            @"fromId":self.userId,
-            @"type":@"1",
-            @"mine":@"ture",
-            @"content":content,
-            @"timestamp":strtime,
-            @"messageType":MessageType_event
-        }
-    };
-    NSError *error;
-    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:callMsg options:0 error:&error];
-    if (!jsonData) {
-        NSLog(@"Got an error: %@", error);
-    } else {
-        NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
-        NSLog(@"%@", jsonString); // 输出: {"name":"John","age":25}
-        [GWebSocket.shareInstance sendMsg:jsonString];
-    }
-}
-
-#pragma mark statusBar
-- (UIStatusBarStyle)preferredStatusBarStyle{
-    return UIStatusBarStyleLightContent;
-}
-@end

+ 0 - 21
ABtong/ABtong/ALLController/group/GroupGonggaoController.h

@@ -1,21 +0,0 @@
-//
-//  GroupGonggaoController.h
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#ifndef GroupGonggaoController_h
-#define GroupGonggaoController_h
-
-
-#endif /* GroupGonggaoController_h */
-#import <UIKit/UIKit.h>
-@interface GroupGonggaoController : UIViewController
-
-
-@property(nonatomic) NSInteger editType;
-@property(nonatomic,strong) NSString *groupId;
-@property(nonatomic,strong) NSString *gonggao;
-
-@end

+ 0 - 68
ABtong/ABtong/ALLController/group/GroupGonggaoController.m

@@ -1,68 +0,0 @@
-//
-//  GroupGonggaoController.m
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#import <Foundation/Foundation.h>
-#import "GroupGonggaoController.h"
-#import "GroupNetApi.h"
-
-
-@interface GroupGonggaoController()
-
-
-@property (weak, nonatomic) IBOutlet UILabel *titleLb;
-@property (weak, nonatomic) IBOutlet UITextView *gonggaoT;
-@property (weak, nonatomic) IBOutlet UIButton *baocunBt;
-
-
-
-@end
-
-
-@implementation GroupGonggaoController
-
--(void)viewDidLoad{
-    [super viewDidLoad];
-    [self.navigationController setNavigationBarHidden:YES animated:NO];
-    if(self.editType==1){
-        _gonggaoT.editable = YES;
-        _baocunBt.alpha = 1;
-    }
-    else{
-        _gonggaoT.editable = NO;
-        _baocunBt.alpha = 0;
-    }
-    _gonggaoT.text = ![self.gonggao isKindOfClass:NSNull.class]?self.gonggao:@"";
-    
-}
-- (IBAction)gotoback:(id)sender {
-    [self dismissViewControllerAnimated:YES completion:nil];
-}
-
-- (IBAction)saveAct:(id)sender {
-    if(self.editType ==1){
-        NSString *str = _gonggaoT.text;
-        if([str isKindOfClass:[NSString class]]&&str.length>0){
-            NSDictionary *dic=@{
-                @"announcement":str
-            };
-            [GroupNetApi updateGroup:dic groupId:self.groupId succ:^(int code, NSDictionary * res) {
-                NSLog(@"res:%@",res);
-                [self dismissViewControllerAnimated:YES completion:nil];
-            } fail:^(NSError * _Nonnull error) {
-                ;
-            }];
-        }
-    }
-}
-
-#pragma mark statusBar
-- (UIStatusBarStyle)preferredStatusBarStyle{
-    return UIStatusBarStyleLightContent;
-}
-
-
-@end

+ 0 - 29
ABtong/ABtong/ALLController/group/GroupListCell.h

@@ -1,29 +0,0 @@
-//
-//  GroupListCell.h
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#ifndef GroupListCell_h
-#define GroupListCell_h
-
-
-#endif /* GroupListCell_h */
-#import <UIKit/UIKit.h>
-@protocol GroupListCellDelegate <NSObject>
-@optional
-- (void)GroupListCellAct:(NSString *_Nullable)actId act:(NSInteger)state;
-@end
-
-@interface GroupListCell : UITableViewCell
-@property (nonatomic,weak) id <GroupListCellDelegate> delegate;
-@property(nonatomic, strong) UIImageView * _Nullable avatar;
-@property(nonatomic, strong) UILabel * _Nullable name;
-@property(nonatomic, strong) UIButton * _Nullable tongyi;
-@property(nonatomic, strong) UIButton * _Nullable jujue;
-- (void)fillWithData:( NSDictionary*_Nullable)data cellType:(NSInteger)type;
-
-@property(nonatomic, strong) NSString * _Nullable actId;
-
-@end

+ 0 - 173
ABtong/ABtong/ALLController/group/GroupListCell.m

@@ -1,173 +0,0 @@
-//
-//  GroupListCell.m
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#import <Foundation/Foundation.h>
-#import "GroupListCell.h"
-#import <SDWebImage/UIImageView+WebCache.h>
-
-
-@implementation GroupListCell
-
-- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
-    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
-    if (self) {
-        [self setupViews];
-    }
-    return self;
-}
-
-- (void)setupViews {
-    CGSize size = self.contentView.frame.size;
-    _avatar =[[UIImageView alloc] init];
-    _avatar.frame=CGRectMake(8, 8, 50, 50);
-    _avatar.contentMode = UIViewContentModeScaleAspectFill;
-    _avatar.layer.cornerRadius = 25;
-    _avatar.layer.masksToBounds = YES;
-    _avatar.backgroundColor=[UIColor lightGrayColor];
-    [self.contentView addSubview:_avatar];
-    
-    _name = [[UILabel alloc] init];
-    _name.frame=CGRectMake(68, 8,190, 50);
-    _name.backgroundColor=[UIColor clearColor];
-    [_name setFont:[UIFont boldSystemFontOfSize:15]];
-    _name.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
-    _name.adjustsFontForContentSizeCategory = YES;
-    [_name setTextColor:[UIColor whiteColor]];
-    
-    [self.contentView addSubview:_name];
-    
-    
-    _tongyi = [[UIButton alloc] init];
-    _tongyi.frame=CGRectMake(size.width-70, 16, 50, 30);
-    _tongyi.backgroundColor =globalColor(GCTypeGreen);
-    _tongyi.layer.cornerRadius = 8;
-    _tongyi.layer.masksToBounds = YES; // 防止子视图超出圆角边界
-    _tongyi.titleLabel.font = [UIFont systemFontOfSize: 14.0];
-    [_tongyi setTitle:@"同意" forState:UIControlStateNormal];
-    _tongyi.titleLabel.textColor = [UIColor whiteColor];
-    [self.contentView addSubview:_tongyi];
-    _jujue = [[UIButton alloc] init];
-//    _jujue.frame=CGRectMake(size.width-10, 16, 50, 30);
-    _jujue.titleLabel.font = [UIFont systemFontOfSize: 14.0];
-    [_jujue setTitle:@"拒绝" forState:UIControlStateNormal];
-    _jujue.backgroundColor =globalColor(GCTypeOrangeR);
-    _jujue.layer.cornerRadius = 8;
-    _jujue.layer.masksToBounds = YES; // 防止子视图超出圆角边界
-    _jujue.titleLabel.textColor = [UIColor whiteColor];
-    [self.contentView addSubview:_jujue];
-    [_tongyi addTarget:self action:@selector(tongyiAct) forControlEvents:UIControlEventTouchUpInside];
-    [_jujue addTarget:self action:@selector(jujueAct) forControlEvents:UIControlEventTouchUpInside];
-    
-    
-    
-}
-
-- (void)fillWithData:( NSDictionary*)data cellType:(NSInteger)type{
-    [_name setTextColor:[UIColor whiteColor]];
-    [_jujue mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.right.equalTo(self.contentView).offset(-0);
-        make.top.equalTo(self.contentView).offset(16);
-        make.width.height.mas_equalTo(CGSizeMake(50, 30));
-    }];
-    
-    [_tongyi mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.right.equalTo(_jujue.mas_left).offset(-6);
-        make.top.equalTo(self.contentView).offset(16);
-        make.width.height.mas_equalTo(CGSizeMake(50, 30));
-    }];
-    if(type==0){
-        _tongyi.alpha = 0;
-        _jujue.alpha = 0;
-    }
-    else if(type==1){
-        _tongyi.alpha = 1;
-        _jujue.alpha = 1;
-        _actId =data[@"id"];
-    }
-    else if(type==2){
-        if([self ismaster:data[@"id"]]){
-            _tongyi.alpha = 0;
-            _jujue.alpha = 0;
-            [_name setTextColor:globalColor(GCTypeOrangeR)];
-        }
-        else{
-            _tongyi.alpha = 0;
-            _jujue.alpha = 1;
-            _actId =data[@"id"];
-            [_jujue setTitle:@"转让" forState:UIControlStateNormal];
-        }
-    }
-    else if(type==3){
-        _tongyi.alpha = 0;
-        _jujue.alpha = 1;
-        _actId =data[@"id"];
-        [_jujue setTitle:@"邀请" forState:UIControlStateNormal];
-    }
-    else if(type==4){
-        if([self ismaster:data[@"id"]]){
-            _tongyi.alpha = 0;
-            _jujue.alpha = 0;
-            [_name setTextColor:globalColor(GCTypeOrangeR)];
-        }
-        else{
-            _tongyi.alpha = 0;
-            _jujue.alpha = 1;
-            _actId =data[@"id"];
-            [_jujue setTitle:@"踢出" forState:UIControlStateNormal];
-        }
-        
-    }
-    
-    //NSLog(@"fillWithData:%@",data);
-    NSString *avatar =data[@"avatar"];
-    if([avatar isKindOfClass:[NSString class]]){
-        
-    }
-    else{
-        avatar = @"";
-    }
-    
-   [self.avatar sd_setImageWithURL:[NSURL URLWithString:avatar] placeholderImage:[UIImage imageNamed:@"Avatar"]];
-    if(type==1){
-        self.name.text = data[@"userName"];
-    }
-    else{
-        self.name.text = data[@"name"];
-    }
-    
-    // tell constraints they need updating
-    [self setNeedsUpdateConstraints];
-
-    // update constraints now so we can animate the change
-    [self updateConstraintsIfNeeded];
-
-    [self layoutIfNeeded];
-}
-
--(void)tongyiAct{
-    if(self.delegate){
-        [self.delegate GroupListCellAct:_actId act:1];
-    }
-}
-
--(void)jujueAct{
-    if(self.delegate){
-        [self.delegate GroupListCellAct:_actId act:0];
-    }
-}
-
--(BOOL)ismaster:(NSString *)userId{
-    NSDictionary * userinfo= [UDManager.shareInstance getDDManager:dkuserinfo];
-    NSString *usid = userinfo[@"id"];
-    if([userId isEqualToString:usid]){
-        return YES;
-    }
-    return NO;
-}
-
-
-@end

+ 0 - 18
ABtong/ABtong/ALLController/group/GroupListController.h

@@ -1,18 +0,0 @@
-//
-//  GroupListController.h
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#ifndef GroupListController_h
-#define GroupListController_h
-
-
-#endif /* GroupListController_h */
-#import <UIKit/UIKit.h>
-@interface GroupListController : UIViewController
-
-@property(nonatomic, strong) NSArray *grouplist;
-
-@end

+ 0 - 116
ABtong/ABtong/ALLController/group/GroupListController.m

@@ -1,116 +0,0 @@
-//
-//  GroupListController.m
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#import <Foundation/Foundation.h>
-#import "GroupListController.h"
-#import "GroupNetApi.h"
-#import "GroupListCell.h"
-#import "GroupController.h"
-#import "NewGroupController.h"
-
-@interface GroupListController()<UITableViewDelegate,UITableViewDataSource>
-@property (weak, nonatomic) IBOutlet UITableView *tableView;
-@property (weak, nonatomic) IBOutlet UILabel *titleLb;
-
-
-@end
-
-@implementation GroupListController
-
--(void)viewDidLoad{
-    [super viewDidLoad];
-    _titleLb.text = NSLocalizedString(@"TabBarItem3", @"");
-    [self initSubView];
-}
-
--(void)viewWillAppear:(BOOL)animated{
-    [super viewWillAppear:YES];
-    [self getGrouplistData];
-    // 获取TabBarController
-    UITabBarController *tabBarController = (UITabBarController *)self.parentViewController;
-    // 移除红点(使用系统方法)
-    tabBarController.tabBar.items[2].badgeValue = nil;
-}
-
--(void)initSubView{
-    _tableView.delegate = self;
-    _tableView.dataSource = self;
-    _tableView.backgroundColor = [UIColor clearColor];
-    [_tableView registerClass:[GroupListCell class] forCellReuseIdentifier:@"group"]; // 使用 Storyboard 时不需要这行代码,除非你混合使用 Storyboard 和代码配置 Cell。
-}
-
--(void)getGrouplistData{
-    [GroupNetApi getGroupList:^(int code, NSDictionary * res) {
-        NSLog(@"res:%@",res);
-        self.grouplist = res[@"data"];
-        [self.tableView reloadData];
-    } fail:^(NSError * _Nonnull error) {
-        NSLog(@"error");
-    }];
-    
-}
-
-
-
-- (IBAction)addNewGroup:(id)sender {
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
-    NewGroupController *groupctr = [board instantiateViewControllerWithIdentifier:@"NewGroupController"];
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:groupctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    [self presentViewController :uiNavC animated:YES completion:nil];
-    
-}
-
-
-#pragma mark UITableViewDelegate
-
-
--(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
-    return 1;
-}
--(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
-    NSLog(@"numberOfRowsInSection:%lu",(unsigned long)self.grouplist.count);
-    return self.grouplist.count;
-}
--(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
-    NSDictionary *data=self.grouplist[indexPath.row];
-    NSLog(@"cellForRowAtIndexPath:%@",data);
-    if(data){
-        
-        GroupListCell *cell =[tableView dequeueReusableCellWithIdentifier:@"group" forIndexPath:indexPath];
-        if(cell==nil){
-            cell=[[GroupListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"group"];
-        }
-        cell.selectionStyle = UITableViewCellSelectionStyleNone;
-        cell.backgroundColor = [UIColor clearColor];
-        [cell fillWithData:data cellType:0];
-        return cell;
-    }
-    return nil;
-}
-
--(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
-    return 70;
-}
-
--(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
-    NSLog(@"didSelectRowAtIndexPath:%@",indexPath);
-    
-    NSDictionary *data=self.grouplist[indexPath.row];
-    UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
-    GroupController *groupctr = [board instantiateViewControllerWithIdentifier:@"GroupController"];
-    UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:groupctr];
-    uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
-    groupctr.groupMsg = data;
-    groupctr.groupId = data[@"id"];
-    [self presentViewController :uiNavC animated:YES completion:nil];
-}
-#pragma mark statusBar
-- (UIStatusBarStyle)preferredStatusBarStyle{
-    return UIStatusBarStyleLightContent;
-}
-@end

+ 0 - 18
ABtong/ABtong/ALLController/group/NewGroupController.h

@@ -1,18 +0,0 @@
-//
-//  NewGroupController.h
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#ifndef NewGroupController_h
-#define NewGroupController_h
-
-
-#endif /* NewGroupController_h */
-#import <UIKit/UIKit.h>
-
-@interface NewGroupController:UIViewController
-@property(nonatomic, strong) NSDictionary *groupMsg;
-
-@end

+ 0 - 322
ABtong/ABtong/ALLController/group/NewGroupController.m

@@ -1,322 +0,0 @@
-//
-//  NewGroupController.m
-//  ABtong
-//
-//  Created by gan on 2025/7/28.
-//
-
-#import <Foundation/Foundation.h>
-#import "NewGroupController.h"
-#import "config.h"
-#import "GroupNetApi.h"
-#import <SDWebImage/UIImageView+WebCache.h>
-
-@interface NewGroupController()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
-@property (weak, nonatomic) IBOutlet UIImageView *avatar;
-@property (weak, nonatomic) IBOutlet UITextField *inputName;
-@property (weak, nonatomic) IBOutlet UITableViewCell *yaoqingCell;
-@property (weak, nonatomic) IBOutlet UILabel *titleLb;
-
-@property (weak, nonatomic) IBOutlet UITableViewCell *shenheCell;
-
-@property (weak, nonatomic) IBOutlet UITableViewCell *jinyanCell;
-@property (weak, nonatomic) IBOutlet UITableViewCell *jiahaoyCell;
-@property (weak, nonatomic) IBOutlet UIButton *saveBt;
-
-@property (weak, nonatomic) IBOutlet UISwitch *yaoqingS;
-@property (weak, nonatomic) IBOutlet UISwitch *shenheS;
-
-@property (weak, nonatomic) IBOutlet UISwitch *jinyanS;
-@property (weak, nonatomic) IBOutlet UISwitch *jinjiaS;
-
-
-@property (nonatomic,strong) NSString *avatarStr;
-
-@property (nonatomic,strong) NSString *yaoqing;
-@property (nonatomic,strong) NSString *jinyan;
-@property (nonatomic,strong) NSString *jinjia;
-@property (nonatomic,strong) NSString *shenhe;
-
-
-
-@end
-
-@implementation NewGroupController
-
--(void)viewDidLoad{
-    [super viewDidLoad];
-    [self.navigationController setNavigationBarHidden:YES animated:NO];
-    _titleLb.text = NSLocalizedString(@"group-addNew", @"");
-    // 创建一个点击手势
-    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
-    // 将手势添加到主视图上
-    [self.view addGestureRecognizer:tap];
-    _yaoqing=@"1";
-    _jinyan=@"0";
-    _jinjia=@"0";
-    _shenhe=@"1";
-    [self initSubview];
-    [self initGData];
-}
-
--(void)dismissKeyboard{
-    NSLog(@"dismissKeyboard");
-    [self.view endEditing:YES];
-}
-- (IBAction)gotoback:(id)sender {
-    [self dismissViewControllerAnimated:YES completion:nil];
-}
-
-- (IBAction)yaoqingC:(id)sender {
-    UISwitch *switchButton = (UISwitch*)sender;
-    BOOL isButtonOn = [switchButton isOn];
-    if(isButtonOn){
-        _yaoqing = @"1";
-    }
-    else{
-        _yaoqing = @"0";
-    }
-}
-
-- (IBAction)shenheC:(id)sender {
-    UISwitch *switchButton = (UISwitch*)sender;
-    BOOL isButtonOn = [switchButton isOn];
-    if(isButtonOn){
-        _shenhe = @"1";
-    }
-    else{
-        _shenhe = @"0";
-    }
-}
-
-- (IBAction)jinyanC:(id)sender {
-    UISwitch *switchButton = (UISwitch*)sender;
-    BOOL isButtonOn = [switchButton isOn];
-    if(isButtonOn){
-        _jinyan = @"1";
-    }
-    else{
-        _jinyan = @"0";
-    }
-}
-
-- (IBAction)jinjiaC:(id)sender {
-    UISwitch *switchButton = (UISwitch*)sender;
-    BOOL isButtonOn = [switchButton isOn];
-    if(isButtonOn){
-        _jinjia = @"1";
-    }
-    else{
-        _jinjia = @"0";
-    }
-}
-
-- (IBAction)selectImg:(id)sender {
-    [self openImagePicker];
-}
-
-
-- (IBAction)saveAct:(id)sender {
-    [self addnewGroup];
-}
-
--(void)initSubview{
-    _yaoqingCell.contentView.layer.borderWidth = 0.5f;
-    _yaoqingCell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
-    _yaoqingCell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-    _yaoqingCell.textLabel.text =NSLocalizedString(@"NGroupCtr-kaiqiyaoq", @"开启邀请");
-    _yaoqingCell.textLabel.textColor = [UIColor whiteColor];
-    [_yaoqingS setOn:YES];
-    
-    
-    [_saveBt setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
-    [_saveBt setBackgroundColor:globalColor(GCTypeGreen)];
-    _saveBt.layer.cornerRadius = 8;
-    _saveBt.layer.masksToBounds = YES; // 防止子视图超出圆角边界
-    
-    _shenheCell.contentView.layer.borderWidth = 0.5f;
-    _shenheCell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor;
-    _shenheCell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-    _shenheCell.textLabel.text =NSLocalizedString(@"NGroupCtr-ruqunxsh", @"入群需审核");
-    _shenheCell.textLabel.textColor = [UIColor whiteColor];
-    [_shenheS setOn:YES];
-    
-    _jinyanCell.contentView.layer.borderWidth = 0.5f;
-    _jinyanCell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
-    _jinyanCell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-    _jinyanCell.textLabel.text =NSLocalizedString(@"NGroupCtr-quantijy", @"全体禁言");
-    _jinyanCell.textLabel.textColor = [UIColor whiteColor];
-    [_jinyanS setOn:NO];
-    
-    _jiahaoyCell.contentView.layer.borderWidth = 0.5f;
-    _jiahaoyCell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
-    _jiahaoyCell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
-    _jiahaoyCell.textLabel.text =NSLocalizedString(@"NGroupCtr-jinjiahy", @"禁加好友");
-    _jiahaoyCell.textLabel.textColor = [UIColor whiteColor];
-    [_jinjiaS setOn:NO];
-   
-}
-
--(void)initGData{
-    _avatarStr = @"";
-    if(self.groupMsg){
-        _avatarStr = self.groupMsg[@"avatar"];
-        NSString *temp = self.groupMsg[@"name"];
-        _inputName.text = temp;
-        temp = self.groupMsg[@"openInvite"];
-        _yaoqing=temp;
-        if(temp.intValue ==1){
-            [_yaoqingS setOn:YES];
-        }
-        else{
-            [_yaoqingS setOn:NO];
-        }
-        temp = self.groupMsg[@"inviteCheck"];
-        _shenhe=temp;
-        if(temp.intValue ==1){
-            [_shenheS setOn:YES];
-        }
-        else{
-            [_shenheS setOn:NO];
-        }
-        temp = self.groupMsg[@"prohibition"];
-        _jinyan=temp;
-        if(temp.intValue ==1){
-            [_jinyanS setOn:YES];
-        }
-        else{
-            [_jinyanS setOn:NO];
-        }
-        temp = self.groupMsg[@"prohibitFriend"];
-        _jinjia=temp;
-        if(temp.intValue ==1){
-            [_jinjiaS setOn:YES];
-        }
-        else{
-            [_jinjiaS setOn:NO];
-        }
-    }
-    [_avatar sd_setImageWithURL:[NSURL URLWithString:_avatarStr] placeholderImage:[UIImage imageNamed:@"Avatar"]];
-   
-}
-
-/*
-   * 添加群组
-   * @param name 群名称
-   * @param avatar 群头像
-   * @param openInvite  是否开放邀请
-   * @param inviteCheck 加群是否需要审核
-   * @param prohibition 禁言
-   * @param prohibitFriend 是否允许加好友
-   * @param announcement 群公告
-*/
-
--(void)addnewGroup{
-    if(self.groupMsg){
-        NSString *groupId = self.groupMsg[@"id"];
-        NSDictionary *dic = @{
-            @"name":_inputName.text,
-            @"avatar":_avatarStr,
-            @"openInvite":_yaoqing,
-            @"inviteCheck":_shenhe,
-            @"prohibition":_jinyan,
-            @"prohibitFriend":_jinjia,
-        };
-        [GroupNetApi updateGroup:dic groupId:groupId succ:^(int code, NSDictionary * res) {
-            NSLog(@"res updateGroup:%@",res);
-            NSString *codestr = res[@"code"];
-            if(codestr.intValue==200){
-                [self dismissViewControllerAnimated:YES completion:nil];
-            }
-        } fail:^(NSError * _Nonnull error) {
-            
-        }];
-    }
-    else{
-        if(_inputName.text.length>0){
-            
-            NSDictionary *dic = @{
-                @"name":_inputName.text,
-                @"avatar":_avatarStr,
-                @"openInvite":_yaoqing,
-                @"inviteCheck":_shenhe,
-                @"prohibition":_jinyan,
-                @"prohibitFriend":_jinjia,
-                @"announcement":@"",
-            };
-            [GroupNetApi addNewGroup:dic succ:^(int code, NSDictionary * res) {
-                NSLog(@"res addNewGroup:%@",res);
-                NSString *codestr = res[@"code"];
-                if(codestr.intValue==200){
-                    [self dismissViewControllerAnimated:YES completion:nil];
-                }
-            } fail:^(NSError * _Nonnull error) {
-                
-            }];
-        }
-        else{
-        }
-    }
-    
-    
-}
-
-
-#pragma  mark imagePicker
-
-- (void)openImagePicker {
-    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
-    imagePicker.delegate = self;
-    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // 或者使用UIImagePickerControllerSourceTypeCamera
-    [self presentViewController:imagePicker animated:YES completion:nil];
-}
-
-
-- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
-    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; // 如果你设置了允许编辑,则使用这个键;否则使用UIImagePickerControllerOriginalImage
-    if (!chosenImage) {
-        chosenImage = info[UIImagePickerControllerOriginalImage];
-    }
-    // 裁剪图片,例如裁剪成一个圆形头像
-    chosenImage = [self imageWithImage:chosenImage scaledToFillSize:CGSizeMake(100, 100)]; // 假设我们想要一个100x100的圆形头像
-    [self dismissViewControllerAnimated:YES completion:nil];
-    // 现在你可以调用上传图片的方法了
-    [self uploadProfilePicture:chosenImage];
-}
- 
-- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
-    [self dismissViewControllerAnimated:YES completion:nil];
-}
-- (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size {
-    UIGraphicsBeginImageContextWithOptions(size, NO, image.scale);
-    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)];
-    [path addClip];
-    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
-    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
-    UIGraphicsEndImageContext();
-    return newImage;
-}
-
-- (void)uploadProfilePicture:(UIImage *)image {
-    NSDate *now = [NSDate date];
-    NSTimeInterval trt = [now timeIntervalSince1970];
-    NSInteger time = trt*1000;
-    
-    NSString *fileName = [NSString stringWithFormat:@"%ld.png",(long)time];
-    NSData *imageData = UIImagePNGRepresentation(image);
-    [GroupNetApi upLoaddataWToken:imageData fileName:fileName succ:^(int code, NSDictionary * res) {
-        NSLog(@"res:%@",res);
-        self->_avatarStr = res[@"url"];
-        [self->_avatar sd_setImageWithURL:[NSURL URLWithString:self->_avatarStr] placeholderImage:[UIImage imageNamed:@"Avatar"]];
-    } fail:^(NSError * _Nonnull error) {
-        ;
-    }];
-    
-}
-
-#pragma mark statusBar
-- (UIStatusBarStyle)preferredStatusBarStyle{
-    return UIStatusBarStyleLightContent;
-}
-
-@end

+ 0 - 136
ABtong/ABtong/ALLController/group/groupstory.storyboard

@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
-    <device id="retina6_12" orientation="portrait" appearance="light"/>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--Group Edit Controller-->
-        <scene sceneID="s0d-6b-0kx">
-            <objects>
-                <viewController storyboardIdentifier="GroupEditController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="Y6W-OH-hqX" customClass="GroupEditController" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="5EZ-qb-Rvc">
-                        <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="loginBG" translatesAutoresizingMaskIntoConstraints="NO" id="qgo-5d-6Ni">
-                                <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                            </imageView>
-                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="f4V-r1-bJy">
-                                <rect key="frame" x="32" y="51" width="44" height="44"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                <state key="normal" title="Button"/>
-                                <buttonConfiguration key="configuration" style="plain" image="fanhui"/>
-                                <connections>
-                                    <action selector="gotoback:" destination="Y6W-OH-hqX" eventType="touchUpInside" id="tw9-hZ-0Me"/>
-                                </connections>
-                            </button>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1RA-dp-vQi">
-                                <rect key="frame" x="77" y="63" width="238" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="09Y-Y7-3fE">
-                                <rect key="frame" x="16" y="118" width="361" height="666"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                            </tableView>
-                        </subviews>
-                        <viewLayoutGuide key="safeArea" id="vDu-zF-Fre"/>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                    </view>
-                    <connections>
-                        <outlet property="tableView" destination="09Y-Y7-3fE" id="HJZ-Vu-0qa"/>
-                        <outlet property="titleLb" destination="1RA-dp-vQi" id="ERy-Em-JMh"/>
-                    </connections>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="130.53435114503816" y="-28.169014084507044"/>
-        </scene>
-        <!--Group Gonggao Controller-->
-        <scene sceneID="UN7-rG-nfd">
-            <objects>
-                <viewController storyboardIdentifier="GroupGonggaoController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="dYa-mS-XDo" customClass="GroupGonggaoController" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="F4n-lB-Fuo">
-                        <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="loginBG" translatesAutoresizingMaskIntoConstraints="NO" id="bdn-8q-g22">
-                                <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                            </imageView>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="公告" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rTc-tO-bKe">
-                                <rect key="frame" x="77" y="60" width="238" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="公告:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AWD-BX-HaC">
-                                <rect key="frame" x="45" y="118" width="150" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="right" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7ai-6b-Z1E">
-                                <rect key="frame" x="259" y="111" width="91" height="35"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                <color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                                <state key="normal" title="保存"/>
-                                <connections>
-                                    <action selector="saveAct:" destination="dYa-mS-XDo" eventType="touchUpInside" id="KVp-87-tnu"/>
-                                </connections>
-                            </button>
-                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Nff-YH-19o">
-                                <rect key="frame" x="25" y="48" width="44" height="44"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                <state key="normal" title="Button"/>
-                                <buttonConfiguration key="configuration" style="plain" image="fanhui"/>
-                                <connections>
-                                    <action selector="gotoback:" destination="dYa-mS-XDo" eventType="touchUpInside" id="vtC-c6-dCw"/>
-                                </connections>
-                            </button>
-                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="X7A-B1-KcE">
-                                <rect key="frame" x="45" y="147" width="304" height="295"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
-                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                                <color key="textColor" systemColor="labelColor"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
-                            </textView>
-                        </subviews>
-                        <viewLayoutGuide key="safeArea" id="qt7-Ba-j0k"/>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                    </view>
-                    <connections>
-                        <outlet property="baocunBt" destination="7ai-6b-Z1E" id="KOZ-0p-xl2"/>
-                        <outlet property="gonggaoT" destination="X7A-B1-KcE" id="VbM-05-4VK"/>
-                        <outlet property="titleLb" destination="rTc-tO-bKe" id="9ft-c0-78V"/>
-                    </connections>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="T0u-HG-8i0" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="890.83969465648852" y="-28.169014084507044"/>
-        </scene>
-    </scenes>
-    <resources>
-        <image name="fanhui" width="20" height="20"/>
-        <image name="loginBG" width="375" height="812"/>
-        <systemColor name="labelColor">
-            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
-        <systemColor name="systemBackgroundColor">
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
-    </resources>
-</document>

+ 10 - 2
ABtong/ABtong/ALLController/login/APPLockView.m

@@ -177,7 +177,7 @@
     
     
     NSString *userid = [UDManager.shareInstance getSDManager:dkuserloginId];
-    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:nkhttphost];
     
     [GDBManager.shareInstance replayAllData];//统一清除数据方法
     
@@ -251,8 +251,16 @@
                                 };
             if([gcode intValue]==200){
                 NSLog(@"ps:%@",ps);
-                [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
                 [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
+                NSDictionary *actuserInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+                NSMutableDictionary *Dict = [NSMutableDictionary dictionaryWithDictionary:actuserInfo];
+                [Dict setObject:ps[@"id"]?:@"" forKey:@"userId"];
+                [Dict setObject:ps[@"name"]?:@"" forKey:@"name"];
+                [Dict setObject:ps[@"avatar"]?:@"" forKey:@"avatar"];
+                actuserInfo = [Dict copy];
+                [UDManager.shareInstance setDDManager:actuserInfo key:nkactuserInfo];
+                [GDBManager.shareInstance updataUserServer:actuserInfo succ:nil fail:nil];
+                
                 [[NSNotificationCenter defaultCenter] postNotificationName: nkonLoginSucc object:nil];
                 [self hide];
             }

+ 1 - 1
ABtong/ABtong/ALLController/login/GCoverController.m

@@ -329,7 +329,7 @@
 
 - (NSMutableDictionary *)userInfo{
     if (!_userInfo) {
-        _userInfo = [NSMutableDictionary dictionaryWithDictionary:[UDManager.shareInstance getDDManager:dkuserinfo]];
+        _userInfo = [NSMutableDictionary dictionaryWithDictionary:[UDManager.shareInstance getDDManager:nkactuserInfo]];
     }
     return _userInfo;
 }

+ 2 - 6
ABtong/ABtong/ALLController/login/GLoginController.m

@@ -304,11 +304,12 @@
                 [MBProgressHUD showWithText:@"登录成功"];
                 [[LoginStateManager sharedManager] setloginState:YES];
                 [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
-                [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
                 
                 NSDictionary *actuserInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
                 NSMutableDictionary *Dict = [NSMutableDictionary dictionaryWithDictionary:actuserInfo];
                 [Dict setObject:ps[@"id"]?:@"" forKey:@"userId"];
+                [Dict setObject:ps[@"name"]?:@"" forKey:@"name"];
+                [Dict setObject:ps[@"avatar"]?:@"" forKey:@"avatar"];
                 actuserInfo = [Dict copy];
                 [UDManager.shareInstance setDDManager:actuserInfo key:nkactuserInfo];
                 [GDBManager.shareInstance updataUserServer:actuserInfo succ:nil fail:nil];
@@ -347,9 +348,4 @@
 }
 
 
--(void)updataUserServerInfo{
-    
-}
-
-
 @end

+ 1 - 0
ABtong/ABtong/ALLController/login/GserverListController.m

@@ -213,6 +213,7 @@
         [UDManager.shareInstance setSDManager:item[@"serverIP"] key:nkhttphost];
         [UDManager.shareInstance setSDManager:item[@"token"] key:gkeytoken];
         [UDManager.shareInstance setSDManager:item[@"userName"] key:dkuserloginId];
+        [UDManager.shareInstance setSDManager:item[@"userId"] key:dkuserId];
         [LoginStateManager.sharedManager changeServerToLogin:item];
     }
     

+ 16 - 10
ABtong/ABtong/ALLController/mine/AppLockPasswordController.m

@@ -361,19 +361,15 @@
     
     
     NSString *userid = [UDManager.shareInstance getSDManager:dkuserloginId];
-    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:dkuserinfo];
-    [GDBManager.shareInstance delLocalmsglistTable:userid];
-    [GDBManager.shareInstance delchatlistTable:^(NSArray * _Nullable array) {
-        
-    } fail:^(NSString * _Nullable error) {
-        
-    }];
-    [GDBManager.shareInstance deleteDB];
+    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+    
+    [GDBManager.shareInstance replayAllData];
+    
     //清空token
     
     //断开socket
     [[GWebSocket shareInstance] closeWebSocket];
-//    [UDManager.shareInstance removeUDManager:gkeytoken];
+    [UDManager.shareInstance removeUDManager:gkeytoken];
     NSDictionary * param = @{
         @"username":userInfo[@"username"],
         @"password":@"qtw123..xx",
@@ -430,8 +426,18 @@
                                 };
             if([gcode intValue]==200){
                 NSLog(@"ps:%@",ps);
-                [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
+                
                 [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
+                
+                NSDictionary *actuserInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+                NSMutableDictionary *Dict = [NSMutableDictionary dictionaryWithDictionary:actuserInfo];
+                [Dict setObject:ps[@"id"]?:@"" forKey:@"userId"];
+                [Dict setObject:ps[@"name"]?:@"" forKey:@"name"];
+                [Dict setObject:ps[@"avatar"]?:@"" forKey:@"avatar"];
+                actuserInfo = [Dict copy];
+                [UDManager.shareInstance setDDManager:actuserInfo key:nkactuserInfo];
+                [GDBManager.shareInstance updataUserServer:actuserInfo succ:nil fail:nil];
+                
                 if(self.onSuccessWithSecurity){
                     self.onSuccessWithSecurity();
                 }

+ 2 - 2
ABtong/ABtong/ALLController/mine/ChatSettingController.m

@@ -69,8 +69,8 @@
 
 #pragma mark api
 - (void)getChatSettingData{
-    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:dkuserinfo];
-    [UserNetApi getChatSetting:userInfo[@"id"] succ:^(int code, NSDictionary * _Nullable result) {
+    NSDictionary * userInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+    [UserNetApi getChatSetting:userInfo[@"userId"] succ:^(int code, NSDictionary * _Nullable result) {
         NSLog(@"chat setting:%@",result);
         if ([result jk_hasKey:@"data"]) {
             self.settingDict = [NSMutableDictionary dictionaryWithDictionary:result[@"data"]];

+ 1 - 1
ABtong/ABtong/ALLController/mine/DeleteAccountController.m

@@ -300,7 +300,7 @@
 
 - (NSMutableDictionary *)userInfo{
     if (!_userInfo) {
-        _userInfo = [NSMutableDictionary dictionaryWithDictionary:[UDManager.shareInstance getDDManager:dkuserinfo]];
+        _userInfo = [NSMutableDictionary dictionaryWithDictionary:[UDManager.shareInstance getDDManager:nkactuserInfo]];
     }
     return _userInfo;
 }

+ 18 - 5
ABtong/ABtong/ALLController/mine/PersonalInfoController.m

@@ -6,10 +6,9 @@
 //
 
 #import "PersonalInfoController.h"
-
+#import "GDBManager.h"
 #import "UDManager.h"
 #import "UserNetApi.h"
-#import "GroupNetApi.h"
 
 @interface PersonalInfoController ()<UITextFieldDelegate,UINavigationControllerDelegate,UIImagePickerControllerDelegate>
 @property (nonatomic, strong) UIImageView * avatarImageView;
@@ -201,7 +200,16 @@
                                      @"sex":[self.genderTextfield.text isEqualToString:@"男"]?@"0":@"1",
                                      @"username":self.userInfo[@"username"]?:@"",
                                     };
-                [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
+                
+                NSDictionary *actuserInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+                NSMutableDictionary *Dict = [NSMutableDictionary dictionaryWithDictionary:actuserInfo];
+                [Dict setObject:ps[@"id"]?:@"" forKey:@"userId"];
+                [Dict setObject:ps[@"name"]?:@"" forKey:@"name"];
+                [Dict setObject:ps[@"avatar"]?:@"" forKey:@"avatar"];
+                actuserInfo = [Dict copy];
+                [UDManager.shareInstance setDDManager:actuserInfo key:nkactuserInfo];
+                [GDBManager.shareInstance updataUserServer:actuserInfo succ:nil fail:nil];
+                
                 !self->_infoRefreshBlock ?: self->_infoRefreshBlock();
             }
         }
@@ -312,8 +320,13 @@
     
     NSString *fileName = [NSString stringWithFormat:@"%ld.png",(long)time];
     NSData *imageData = UIImagePNGRepresentation(image);
-    [GroupNetApi upLoaddataWToken:imageData fileName:fileName succ:^(int code, NSDictionary * res) {
+    [UserNetApi upLoaddataWToken:imageData fileName:fileName succ:^(int code, NSDictionary * res) {
         NSLog(@"res:%@",res);
+        NSString *strcode = res[@"code"];
+        if([strcode intValue]!=200){
+            [MBProgressHUD showWithText:@"上传失败"];
+            return;
+        }
         [self.avatarImageView sd_setImageWithURL:getURL(res[@"url"]) placeholderImage:kImageMake(@"Avatar")];
         [self.userInfo setObject:res[@"url"] forKey:@"avatar"];
     } fail:^(NSError * _Nonnull error) {
@@ -505,7 +518,7 @@
 
 - (NSMutableDictionary *)userInfo{
     if (!_userInfo) {
-        _userInfo = [NSMutableDictionary dictionaryWithDictionary:[UDManager.shareInstance getDDManager:dkuserinfo]];
+        _userInfo = [NSMutableDictionary dictionaryWithDictionary:[UDManager.shareInstance getDDManager:nkactuserInfo]];
     }
     return _userInfo;
 }

+ 2 - 2
ABtong/ABtong/ALLController/mine/UserConterController.m

@@ -51,7 +51,7 @@
 - (void)viewWillAppear:(BOOL)animated{
     [super viewWillAppear:animated];
     [self setNavigationBarHidden:YES animated:YES];
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     _nameLb.text = userinfo[@"name"];
     NSURL *av = [NSURL URLWithString:userinfo[@"avatar"]];
     [_avatar sd_setImageWithURL:av placeholderImage:[UIImage imageNamed:@"Avatar"]];
@@ -64,7 +64,7 @@
     _tableView.backgroundColor = [UIColor clearColor];
     _tableView.delegate =self;
     _tableView.dataSource = self;
-    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *userinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     _nameLb.text = userinfo[@"name"];
     _qianmLb.alpha = 0;
     NSURL *av = [NSURL URLWithString:userinfo[@"avatar"]];

+ 15 - 15
ABtong/ABtong/AppDelegate.m

@@ -250,11 +250,11 @@
 
 -(void)updivicetoken{
     NSString *token =[UDManager.shareInstance getSDManager:dkpushtoken];
-    NSDictionary *usinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *usinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     NSLog(@"dkpushtoken:%@",token);
     NSDictionary *ud=@{
         @"registrationId": token?:@"",
-        @"userId":usinfo[@"id"]?:@"",
+        @"userId":usinfo[@"userId"]?:@"",
         @"platformType":@"i"
     };
     
@@ -273,14 +273,14 @@
 }
 -(void)updiviceVoIPtoken{
     NSString *token =[UDManager.shareInstance getSDManager:dkvoiptoken];
-    NSDictionary *usinfo = [UDManager.shareInstance getDDManager:dkuserinfo];
+    NSDictionary *usinfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
     NSLog(@"dkvoiptoken:%@",token);
     if([token isKindOfClass:[NSNull class]]){
         return;
     }
     NSDictionary *ud=@{
         @"voipTk": token?:@"",
-        @"userId":usinfo[@"id"]?:@"",
+        @"userId":usinfo[@"userId"]?:@"",
         @"platformType":@"i"
     };
     
@@ -295,17 +295,11 @@
 - (void)addFriend{
     NSLog(@"addFriend------------");
     UITabBarController * tabbarVc = (UITabBarController *)self.window.rootViewController;
-    UITabBarItem *tabBarItem = tabbarVc.tabBar.items[1];
-    tabBarItem.badgeValue = @"";
-}
-
-- (void)exGroup{
-    NSLog(@"exGroup------------");
-    UITabBarController * tabbarVc = (UITabBarController *)self.window.rootViewController;
     UITabBarItem *tabBarItem = tabbarVc.tabBar.items[2];
     tabBarItem.badgeValue = @"";
 }
 
+
 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
     NSLog(@"Received notification: %@", userInfo);
     
@@ -345,14 +339,15 @@
     //消息目的地 chatId
     NSString *userId = [UDManager.shareInstance getSDManager:dkuserId];
     NSString *chatId = msg[@"chatId"]?:@"";
+    if ([chatId isEqualToString:userId]) {
+        return;
+    }
+    
     NSMutableDictionary * mutablemsg = msg.mutableCopy;
     [mutablemsg setObject:msg[@"fromId"] forKey:@"chatId"];
     NSLog(@"showActNotification  msg:%@",msg);
     ChatMessageModel *message = [ChatMessageModel modelWithDictionary:mutablemsg];
     NSLog(@"chatId:%@,%@",chatId,userId);
-    if ([chatId isEqualToString:userId]) {
-        return;
-    }
     
     if (message.content.length==0) {
         if (message.messageType==7) {
@@ -373,6 +368,8 @@
                 [UDManager.shareInstance setSDManager:item[@"serverIP"] key:nkhttphost];
                 [UDManager.shareInstance setSDManager:item[@"token"] key:gkeytoken];
                 [UDManager.shareInstance setSDManager:item[@"userName"] key:dkuserloginId];
+                [UDManager.shareInstance setSDManager:item[@"userId"] key:dkuserId];
+                
                 [LoginStateManager.sharedManager changeServerToLogin:item];
                 ChatMessageModel *message = [ChatMessageModel modelWithDictionary:mutablemsg];
                 [self openChatController:message];
@@ -726,7 +723,9 @@
                 [UDManager.shareInstance setSDManager:item[@"serverIP"] key:nkhttphost];
                 [UDManager.shareInstance setSDManager:item[@"token"] key:gkeytoken];
                 [UDManager.shareInstance setSDManager:item[@"userName"] key:dkuserloginId];
+                [UDManager.shareInstance setSDManager:item[@"userId"] key:dkuserId];
                 [LoginStateManager.sharedManager changeServerToLogin:item];
+                NSLog(@"---mutablemsg:%@",mutablemsg);
                 ChatMessageModel *message = [ChatMessageModel modelWithDictionary:mutablemsg];
                 [self openChatController:message];
             }
@@ -790,7 +789,7 @@
 //        [GDBManager.shareInstance deleteDB];
     [UDManager.shareInstance removeUDManager:gkeytoken];
     [UDManager.shareInstance removeUDManager:dkuserloginId];
-    [UDManager.shareInstance removeUDManager:dkuserinfo];
+    [UDManager.shareInstance removeUDManager:nkactuserInfo];
     [UDManager.shareInstance removeUDManager:dkuserId];
     [self clearVoipToken];
     [self openLoginController];
@@ -934,6 +933,7 @@
             } fail:^(NSString * _Nullable error) {
             }];
             [GDBManager.shareInstance createCallmsgTable];
+            [GDBManager.shareInstance createfirendsTable];
         }
         
         //服务器数据表

+ 1 - 10
ABtong/ABtong/Common/CommonUI/TopPopupView.m

@@ -6,7 +6,6 @@
 //
 
 #import "TopPopupView.h"
-#import "GroupNetApi.h"
 
 static const CGFloat kPopupHeight = 80.0f;
 static const CGFloat kPopupCornerRadius = 20.0f;
@@ -99,15 +98,7 @@ static const NSTimeInterval kPopupDisplayTime = 3.0;
     if (type == 0) {
         [self.avatar sd_setImageWithURL:getURL(chatId)];
     }else{
-        [GroupNetApi getGroupInfo:chatId succ:^(int code, NSDictionary * _Nullable result) {
-            NSDictionary * userinfo=result[@"data"];
-            if (userinfo[@"avatar"]) {
-                [self.avatar sd_setImageWithURL:getURL(userinfo[@"avatar"])];
-                self.nicknameLabel.text = [NSString stringWithFormat:@"%@(%@)",nickname,userinfo[@"name"]];
-            }
-        } fail:^(NSError * _Nonnull error) {
-            
-        }];
+        
     }
     
     // 布局

+ 3 - 3
ABtong/ABtong/Common/CommonUI/Util/config.h

@@ -18,7 +18,7 @@ static NSString *WebSocketUrl = @"ws://aiim.my-im.com:9326?";
 #endif
 
 #ifdef DEBUG
-static NSString *httphost = @"http://abt1.my-im.com:8080";
+static NSString *httphost = @"https://abt1.my-im.com";
 #else
 static NSString *httphost = @"http://aiim.my-im.com:8080";
 #endif
@@ -28,7 +28,7 @@ static NSString *httphost = @"http://aiim.my-im.com:8080";
  
 
 //本地数据库文件名称
-static NSString *locateDB = @"AlocateDB.sqlite";
+static NSString *locateDB = @"BlocateDB.sqlite";
 
 //JitsiMeet 服务器
 static NSString *JitsiMeetSV = @"https://rtc2.my-im.com/";
@@ -38,7 +38,7 @@ static NSString *JitsiMeetSV = @"https://rtc2.my-im.com/";
 
 //旧地址 @"https://rtc.my-im.com/"
 
-static NSString *filehttphost = @"http://upload.my-im.com:8080";//生产文件服务器
+static NSString *filehttphost = @"http://upload.my-im.com";//生产文件服务器
 static NSString * privacyPolicy = @"https://download.gobuy99.com/ynszc.html";//隐私政策
 
 

+ 1 - 1
ABtong/ABtong/Common/Defaults/UDManager.h

@@ -16,7 +16,7 @@
 static NSString * _Nonnull gkeytoken = @"dkusertoken";
 static NSString * _Nonnull dkuserloginId = @"dkuserloginId";//用户登录账号
 static NSString * _Nonnull dkuserId = @"dkuserId";//用户ID 对应chatid
-static NSString * _Nonnull dkuserinfo = @"dkuserinfo";
+//static NSString * _Nonnull dkuserinfo = @"dkuserinfo";
 static NSString * _Nonnull dkpushtoken = @"dkpushtoken";
 static NSString * _Nonnull dkvoiptoken = @"dkvoiptoken";
 static NSString * _Nonnull dkagreed = @"dkagreed";

+ 8 - 0
ABtong/ABtong/Common/Network/FriendNetApi.h

@@ -50,6 +50,14 @@
 //举报投诉
 +(void)reportUser:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail;
 
+
+//获取安博通通讯录
++(void)getabtTongxunlus:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail;
+//添加安博通通讯录
++(void)AddTongxunlu:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail;
+//删除安博通通讯录
++(void)deleteTongxunlu:(NSString *_Nullable)friendId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
+
 @end
 
 

+ 14 - 0
ABtong/ABtong/Common/Network/FriendNetApi.m

@@ -89,4 +89,18 @@
     [GBaseNetApi.shareInstance httpPostToken:parameters url:@"/system/user/report" succ:succ fail:fail];
 }
 
+//获取安博通通讯录
++(void)getabtTongxunlus:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail{
+    [GBaseNetApi.shareInstance httpGetToken:parameters url:@"/api/sys/friends/abtList" succ:succ fail:fail];
+}
+//添加安博通通讯录
++(void)AddTongxunlu:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail{
+    [GBaseNetApi.shareInstance httpPostToken:parameters url:@"/api/sys/friends/abtAdd?" succ:succ fail:fail];
+}
+//删除安博通通讯录
++(void)deleteTongxunlu:(NSString *_Nullable)friendId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
+    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/friends/abtDelete?friendId=%@",friendId];
+    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
+}
+
 @end

+ 5 - 4
ABtong/ABtong/Common/Network/GBaseNetApi.m

@@ -243,6 +243,7 @@
     //[manager.requestSerializer setValue:[NSString stringWithFormat:@"multipart/form-data"] forHTTPHeaderField:@"Content-Type"];
     
     NSString *acUrl=[self SplicingFileAddress:@""];
+    NSLog(@"acUrl:%@",acUrl);
     NSURLSessionDataTask *uploadTack;
     // 上传文件,使用multipart/form-data类型(通常用于文件上传)
     uploadTack = [manager POST:acUrl parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
@@ -291,7 +292,7 @@
     //[manager.requestSerializer setValue:[NSString stringWithFormat:@"multipart/form-data"] forHTTPHeaderField:@"Content-Type"];
     
     NSString *acUrl=[self SplicingFileAddress:@""];
-    
+    NSLog(@"acUrl:%@",acUrl);
     // 上传文件,使用multipart/form-data类型(通常用于文件上传)
     [manager POST:acUrl parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
             // 参数名称,服务器用来识别是哪个文件被上传
@@ -502,15 +503,15 @@
     
     NSString *defhttphost = [UDManager.shareInstance getSDManager:nkhttphost];
     
-    NSString *httphost = [NSString stringWithFormat:@"http://%@:8080%@",defhttphost,url];
-    
+    NSString *httphost = [NSString stringWithFormat:@"https://%@%@",defhttphost,url];
+   // https://abt1.my-im.com
     return httphost;
 }
 -(NSString *_Nullable)SplicingFileAddress:(NSString *_Nullable)url{
     
     NSString *defhttphost = filehttphost;//[UDManager.shareInstance getSDManager:nkfilehttphost];
     
-    NSString *acUrl=[NSString stringWithFormat:@"%@%@",defhttphost,@"/common/uploads"];
+    NSString *acUrl=[NSString stringWithFormat:@"%@%@",defhttphost,@"/common/upload"];
     
     
     return acUrl;

+ 8 - 0
ABtong/ABtong/Common/Network/GDBManager.h

@@ -94,4 +94,12 @@ typedef void (^DBSucc)(NSArray * _Nullable array);
 -(void)deleteCallmsg:(NSString *_Nonnull)sid succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail;
 
 
+//通讯录
+-(void)createfirendsTable;
+-(void)insertFirend:(NSDictionary *_Nonnull)firend succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail;
+-(void)deleteFirend:(NSString *_Nonnull)userId succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail;
+//根据类型查询全部用户
+-(void)selectFirendwithKW:(NSString *_Nullable)keyword succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail;
+-(void)selectFirendwithID:(NSString *_Nullable)firendId succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail;
+
 @end

+ 244 - 7
ABtong/ABtong/Common/Network/GDBManager.m

@@ -163,6 +163,23 @@
         NSLog(@"deleatLastreadtimetable:%ld",(long)i);
     }
     
+    
+    randomInt = lowerBound + arc4random() % (upperBound - lowerBound + 1);
+    for (NSInteger i = 0; i<randomInt; i++) {
+        [self createCallmsgTable];
+        [self deleteCallmsgTable];
+        NSLog(@"deleatFirendtable:%ld",(long)i);
+    }
+    
+    randomInt = lowerBound + arc4random() % (upperBound - lowerBound + 1);
+    for (NSInteger i = 0; i<randomInt; i++) {
+        [self createfirendsTable];
+        [self deleatFirendtable];
+        NSLog(@"deleatFirendtable:%ld",(long)i);
+    }
+    
+    
+    
     randomInt = lowerBound + arc4random() % (upperBound - lowerBound + 1);
     for (NSInteger i = 0; i<randomInt; i++) {
         [self deleteDB];
@@ -478,7 +495,7 @@
     vstr=[NSString stringWithFormat:@"%@%@",vstr,chatId];
     vstr=[NSString stringWithFormat:@"%@ %@",vstr,@"ORDER BY timestamp DESC LIMIT 16;"];
     
-//    NSLog(@"vstr:%@",vstr);
+    NSLog(@"vstr:%@",vstr);
     
     FMResultSet *rs = [self.db executeQuery:vstr];
     NSMutableArray *array=[[NSMutableArray alloc] init];
@@ -708,7 +725,7 @@
     vstr=[NSString stringWithFormat:@"%@'%@',",vstr,safeDict[@"loading"]];
     vstr=[NSString stringWithFormat:@"%@'%@')",vstr,safeDict[@"top"]];
     
-//    NSLog(@"vstr:%@",vstr);
+    NSLog(@"vstr:%@",vstr);
     BOOL success = [self.db executeUpdate:vstr];
     if (!success) {
         if(fail){
@@ -874,7 +891,7 @@
 //安博通用户服务器表
 -(void)createlcUserServerTable{
     NSString *sql1=@"create table if not exists lcUserServer";
-    NSString *tablejg = @"(id INTEGER PRIMARY KEY AUTOINCREMENT,userId CHAR,userName CHAR,passWord CHAR,serverName CHAR,serverIP CHAR,serverId CHAR,token CHAR)";
+    NSString *tablejg = @"(id INTEGER PRIMARY KEY AUTOINCREMENT,userId CHAR,userName CHAR,passWord CHAR,serverName CHAR,serverIP CHAR,serverId CHAR,token CHAR,name CHAR,avatar CHAR)";
     NSString *sql = [NSString stringWithFormat:@"%@ %@",sql1,tablejg];
     //NSLog(@"sql:%@",sql);
     BOOL success = [self.db executeUpdate:sql];
@@ -905,7 +922,7 @@
 -(void)insertlcUserServer:(NSDictionary *_Nonnull)msg succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail{
     NSString *vstr = @"INSERT OR REPLACE INTO lcUserServer";
     
-    vstr=[NSString stringWithFormat:@"%@%@",vstr,@" ('userId','userName','passWord','serverName','serverIP','serverId','token') values ("];
+    vstr=[NSString stringWithFormat:@"%@%@",vstr,@" ('userId','userName','passWord','serverName','serverIP','serverId','token','name','avatar') values ("];
     
     vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"userId"]];
     vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"userName"]];
@@ -913,7 +930,9 @@
     vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"serverName"]];
     vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"serverIP"]];
     vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"serverId"]];
-    vstr=[NSString stringWithFormat:@"%@'%@')",vstr,msg[@"token"]];
+    vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"token"]];
+    vstr=[NSString stringWithFormat:@"%@'%@',",vstr,msg[@"name"]?:@""];
+    vstr=[NSString stringWithFormat:@"%@'%@')",vstr,msg[@"avatar"]?:@""];
     
     NSLog(@"vstr:%@",vstr);
     BOOL success = [self.db executeUpdate:vstr];
@@ -948,6 +967,8 @@
             @"serverName":[rs stringForColumn:@"serverName"],
             @"serverIP":[rs stringForColumn:@"serverIP"],
             @"serverId":[rs stringForColumn:@"serverId"],
+            @"name":[rs stringForColumn:@"name"],
+            @"avatar":[rs stringForColumn:@"avatar"],
             @"token":[rs stringForColumn:@"token"],
         };
         [array addObject:chatD];
@@ -973,6 +994,8 @@
             @"serverName":[rs stringForColumn:@"serverName"],
             @"serverIP":[rs stringForColumn:@"serverIP"],
             @"serverId":[rs stringForColumn:@"serverId"],
+            @"name":[rs stringForColumn:@"name"],
+            @"avatar":[rs stringForColumn:@"avatar"],
             @"token":[rs stringForColumn:@"token"],
         };
         [array addObject:chatD];
@@ -1030,7 +1053,7 @@
         
         // 准备SQL语句(使用参数化查询,避免SQL注入)
         NSString *insertSQL = [NSString stringWithFormat:
-                               @"INSERT INTO %@ ('userId','userName','passWord','serverName','serverIP','serverId','token') VALUES (?,?,?,?,?,?,?)",
+                               @"INSERT INTO %@ ('userId','userName','passWord','serverName','serverIP','serverId','token','name','avatar') VALUES (?,?,?,?,?,?,?,?,?)",
                                @"lcUserServer"];
         
         // 执行插入(使用参数化查询)
@@ -1041,7 +1064,9 @@
                         safeDict[@"serverName"],
                         safeDict[@"serverIP"],
                         safeDict[@"serverId"],
-                        safeDict[@"token"]];
+                        safeDict[@"token"],
+                        safeDict[@"name"],
+                        safeDict[@"avatar"]];
         
         if (!success) {
             // 记录失败的消息
@@ -1367,4 +1392,216 @@
 
 
 
+//avatar = "https://aiim.my-im.com/api/profile/upload/avatar.png";
+//deptId = 103;
+//domainId = "<null>";
+//email = "<null>";
+//id = 10000270;
+//mobile = 880002;
+//name = abt08;
+//platformType = "<null>";
+//registrationId = "<null>";
+//sex = "<null>";
+//tgbotAdmin = "<null>";
+//tgbotName = "<null>";
+//tgbotTk = "<null>";
+//username = "<null>";
+//uuid = "<null>";
+//voipTk = "<null>";
+
+//通讯录
+-(void)createfirendsTable{
+    // 创建表语句
+    NSString *userid = [UDManager.shareInstance getSDManager:dkuserId];
+    NSString *sql1=@"create table if not exists Firendslist_";
+    NSString *tablejg = @"(id CHAR PRIMARY KEY,deptId CHAR,mobile CHAR,name CHAR,avatar CHAR,username CHAR)";
+    NSString *sql = [NSString stringWithFormat:@"%@%@ %@",sql1,userid,tablejg];
+    NSLog(@"createFirendslist_ --- sql:%@",sql);
+    BOOL success = [self.db executeUpdate:sql];
+    if (!success) {
+        NSLog(@"创建消息表失败: %@", [self.db lastErrorMessage]);
+        
+    } else {
+        NSLog(@"创建消息表成功");
+        
+    }
+}
+-(void)insertFirend:(NSDictionary *_Nonnull)firend succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail{
+    
+    if (![self.db isOpen]) {
+        return;
+    }
+    
+    // 1. 参数校验
+    if (!firend) {
+        if (fail) fail(@"消息内容不能为空");
+        return;
+    }
+    
+    NSString *userid = [UDManager.shareInstance getSDManager:dkuserId];
+    if (userid.length == 0) {
+        if (fail) fail(@"用户ID获取失败");
+        return;
+    }
+    
+    NSString *tableName = [NSString stringWithFormat:@"Firendslist_%@", userid];
+    NSDictionary *safeDict = [self replaceNullsWithEmptyStringInDictionary:firend];
+    
+    // 2. 处理firendId
+    NSString *firendId = [NSString stringWithFormat:@"%@", safeDict[@"id"]];
+
+    // 3. 开启事务
+    [self.db beginTransaction];
+    BOOL shouldRollback = NO;
+    @try {
+        NSString *deleteSQL = [NSString stringWithFormat:
+                               @"DELETE FROM %@ WHERE id = ?",
+                               tableName];
+        
+        if (![self.db executeUpdate:deleteSQL, firendId]) {
+//                NSLog(@"删除旧数据失败(localtime=%@): %@", localtime, [self.db lastErrorMessage]);
+            // 不终止,继续尝试插入
+        }
+        // 5. 准备插入数据
+        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:safeDict options:0 error:nil];
+        NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+        
+        NSString *insertSQL = [NSString stringWithFormat:
+                               @"INSERT  INTO %@ (id,deptId,mobile,name,avatar,username) VALUES (?,?,?,?,?,?)",
+                               tableName];
+        
+        // 6. 执行插入
+        BOOL success = [self.db executeUpdate:insertSQL,
+                        safeDict[@"id"],
+                        safeDict[@"deptId"],
+                        safeDict[@"mobile"],
+                        safeDict[@"name"],
+                        safeDict[@"avatar"],
+                        safeDict[@"username"]];
+        
+        if (!success) {
+            shouldRollback = YES;
+            NSString *error = [NSString stringWithFormat:@"插入消息失败: %@", [self.db lastErrorMessage]];
+            if (fail) fail(error);
+            
+        } else {
+            [self.db commit];
+            if (succ) succ(nil);
+//            NSLog(@"消息插入成功(ID=%@)", safeDict);
+        }
+    }
+    @catch (NSException *exception) {
+        shouldRollback = YES;
+        NSString *error = [NSString stringWithFormat:@"操作异常: %@", exception.reason];
+        if (fail) fail(error);
+        
+    }
+    @finally {
+        if (shouldRollback) {
+            [self.db rollback];
+        }
+    }
+}
+-(void)deleteFirend:(NSString *_Nonnull)fId succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail{
+    NSString *userid = [UDManager.shareInstance getSDManager:dkuserId];
+    NSString *vstr = @"DELETE FROM Firendslist_";
+    vstr=[NSString stringWithFormat:@"%@%@%@",vstr,userid,@" WHERE id="];
+    vstr=[NSString stringWithFormat:@"%@%@",vstr,fId];
+    BOOL success = [self.db executeUpdate:vstr];
+    if (!success) {
+        NSLog(@"删除消息表失败: %@", [self.db lastErrorMessage]);
+    } else {
+        NSLog(@"删除消息表成功");
+    }
+}
+//根据类型查询全部用户
+-(void)selectFirendwithKW:(NSString *_Nullable)keyword succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail{
+    NSString *userid = [UDManager.shareInstance getSDManager:dkuserId];
+    NSString *vstr = @"select * from Firendslist_";
+    vstr=[NSString stringWithFormat:@"%@%@",vstr,userid];
+    
+    
+    if(keyword.length>0){
+        vstr=[NSString stringWithFormat:@"%@ where name LIKE %@%@%@",vstr,@"'%",keyword,@"%'"];
+    }
+    vstr=[NSString stringWithFormat:@"%@ %@",vstr,@"ORDER BY name ASC LIMIT 16;"];
+    
+    //NSLog(@"vstr:%@",vstr);
+    
+    FMResultSet *rs = [self.db executeQuery:vstr];
+    NSMutableArray *array=[[NSMutableArray alloc] init];
+    while ([rs next]) {
+        //NSLog(@"rs:%@",rs);
+        NSDictionary *chatD=@{
+            @"id":[rs stringForColumn:@"id"]?:@"",
+            @"deptId":[rs stringForColumn:@"deptId"]?:@"",
+            @"mobile":[rs stringForColumn:@"mobile"]?:@"",
+            @"name":[rs stringForColumn:@"name"]?:@"",
+            @"avatar":[rs stringForColumn:@"avatar"]?:@"",
+            @"username":[rs stringForColumn:@"username"]?:@"",
+        };
+        [array addObject:chatD];
+    }
+    [rs close]; // 关闭结果集
+    if(succ){
+        succ(array);
+    }
+}
+
+
+//根据类型查询全部用户
+-(void)selectFirendwithID:(NSString *_Nullable)firendId succ:(DBSucc _Nullable )succ fail:(DBFail _Nullable )fail{
+    NSString *userid = [UDManager.shareInstance getSDManager:dkuserId];
+    NSString *vstr = @"select * from Firendslist_";
+    vstr=[NSString stringWithFormat:@"%@%@",vstr,userid];
+    
+    
+    if(firendId.length>0){
+        vstr=[NSString stringWithFormat:@"%@ where id=%@",vstr,firendId];
+    }
+    vstr=[NSString stringWithFormat:@"%@ %@",vstr,@"ORDER BY name ASC LIMIT 16;"];
+    
+    //NSLog(@"vstr:%@",vstr);
+    
+    FMResultSet *rs = [self.db executeQuery:vstr];
+    NSMutableArray *array=[[NSMutableArray alloc] init];
+    while ([rs next]) {
+        //NSLog(@"rs:%@",rs);
+        NSDictionary *chatD=@{
+            @"id":[rs stringForColumn:@"id"]?:@"",
+            @"deptId":[rs stringForColumn:@"deptId"]?:@"",
+            @"mobile":[rs stringForColumn:@"mobile"]?:@"",
+            @"name":[rs stringForColumn:@"name"]?:@"",
+            @"avatar":[rs stringForColumn:@"avatar"]?:@"",
+            @"username":[rs stringForColumn:@"username"]?:@"",
+        };
+        [array addObject:chatD];
+    }
+    [rs close]; // 关闭结果集
+    if(succ){
+        succ(array);
+    }
+}
+
+
+
+-(void)deleatFirendtable{
+    
+    NSString *userid = [UDManager.shareInstance getSDManager:dkuserId];
+    NSString *sql1=@"DROP TABLE Firendslist_";
+    NSString *sql = [NSString stringWithFormat:@"%@%@",sql1,userid];
+    BOOL success = [self.db executeUpdate:sql];
+    if (!success) {
+        NSLog(@"删除lcChatlasttime_表失败: %@", [self.db lastErrorMessage]);
+        
+    } else {
+        NSLog(@"删除lcChatlasttime_表成功");
+        
+    }
+}
+
+
+
+
+
 @end

+ 4 - 4
ABtong/ABtong/Common/Network/GWebSocket.m

@@ -100,8 +100,8 @@ static NSString *redeady = @"{\"code\":1}";
     }
     self.isFirstload =YES;
 //    [self destoryHeartbeat];
-    NSDictionary *userinfo =[UDManager.shareInstance getDDManager:dkuserinfo];
-    self.userid =userinfo[@"id"];
+    NSDictionary *userinfo =[UDManager.shareInstance getDDManager:nkactuserInfo];
+    self.userid =userinfo[@"userId"];
     
     NSString *token = (NSString *)[UDManager.shareInstance getSDManager:gkeytoken];
     if(_UUID==nil){
@@ -110,9 +110,9 @@ static NSString *redeady = @"{\"code\":1}";
     }
     
 //    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@token=%@&client=mobile&uuid=%@",WebSocketUrl,token,_UUID]];
-    
+    //wss://abt1.my-im.com/wss?token=eyJhbG...
     NSString *WSocketUrl = [UDManager.shareInstance getSDManager:nkhttphost];
-    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"ws://%@:9326?token=%@&client=mobile&uuid=%@",WSocketUrl,token,_UUID]];
+    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"wss://%@/wss?token=%@&client=mobile&uuid=%@",WSocketUrl,token,_UUID]];
     
     //请求
     //NSLog(@"url:%@",url);

+ 0 - 73
ABtong/ABtong/Common/Network/GroupNetApi.h

@@ -1,73 +0,0 @@
-//
-//  GroupNetApi.h
-//  Pods
-//
-//  Created by gan on 2025/3/24.
-//
-
-#ifndef GroupNetApi_h
-#define GroupNetApi_h
-
-
-#endif /* GroupNetApi_h */
-#import "GBaseNetApi.h"
-
-@interface GroupNetApi : NSObject
-
-//新建群组
-+(void)addNewGroup:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-//更新群组信息
-+(void)updateGroup:(NSDictionary *_Nullable)parameters groupId:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-//获取群组信息
-+(void)getGroupInfo:(NSString *_Nullable)groupId  succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-//获取用户加入的群组列表
-+(void)getGroupList:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-//获取群组内用户列表
-+(void)getGroupUserList:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-
-//删除自己的群
-+(void)deleteGroup:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-//退出群
-+(void)exitGroup:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-
-//将用户添加入群
-+(void)addUsertoGroup:(NSDictionary *_Nullable)parameters groupId:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-
-//将用户踢出群
-+(void)getoutUserGroup:(NSString *_Nullable)groupId userId:(NSString *_Nullable)userId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-
-//批量将用户踢出群
-+(void)getoutUsersGroup:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-
-//转让群主
-+(void)transferGroup:(NSString *_Nullable)groupId userId:(NSString *_Nullable)userId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-//上传头像
-+(void)upLoaddataWToken:(NSData *_Nonnull)data fileName:(NSString *_Nullable)fileName succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail;
-
-/**
- * 查询当前待审核的群邀请
- */
-+(void)getshenheList:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-/**
- * 查询当前待审核的群邀请数量
- */
-+(void)waitCheckList:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-//同意加入
-+(void)Checkagree:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-//拒绝加入
-+(void)Checkrefuse:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-///获取群消息列表(/api/sys/messages/queryGroupMessage)
-+(void)getGroupMsgListWithChatId:(NSString * _Nonnull)chatId time:(NSInteger)timestamp pageSize:(NSInteger)size succ:(nullable GSucc)succ fail:(nullable GFail)fail;
-
-@end

+ 0 - 123
ABtong/ABtong/Common/Network/GroupNetApi.m

@@ -1,123 +0,0 @@
-//
-//  GroupNetApi.m
-//  TUIContact
-//
-//  Created by gan on 2025/3/24.
-//
-
-#import <Foundation/Foundation.h>
-#import "GroupNetApi.h"
-
-
-
-@implementation GroupNetApi
-
-
-//新建群组
-+(void)addNewGroup:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    [GBaseNetApi.shareInstance httpPostToken:parameters url:@"/api/sys/groups?" succ:succ fail:fail];
-}
-
-//更新群组信息
-+(void)updateGroup:(NSDictionary *_Nullable)parameters groupId:(NSString *)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@",groupId];
-    [GBaseNetApi.shareInstance httpPatchToken:parameters url:urlstr succ:succ fail:fail];
-}
-
-//获取群组信息
-+(void)getGroupInfo:(NSString *)groupId  succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@",groupId];
-    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
-}
-
-//获取用户加入的群组列表
-+(void)getGroupList:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups"];
-    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
-}
-
-//获取群组内用户列表
-+(void)getGroupUserList:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@/users",groupId];
-    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
-}
-
-
-//删除自己的群
-+(void)deleteGroup:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@",groupId];
-    [GBaseNetApi.shareInstance httpDelToken:nil url:urlstr succ:succ fail:fail];
-}
-
-//退出群
-+(void)exitGroup:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@/exit",groupId];
-    [GBaseNetApi.shareInstance httpDelToken:nil url:urlstr succ:succ fail:fail];
-}
-
-
-//将用户添加入群
-+(void)addUsertoGroup:(NSDictionary *_Nullable)parameters groupId:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/addGroup"];
-    [GBaseNetApi.shareInstance httpPostToken:parameters url:urlstr succ:succ fail:fail];
-}
-
-
-//将用户踢出群
-+(void)getoutUserGroup:(NSString *_Nullable)groupId userId:(NSString *_Nullable)userId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@/users/%@",groupId,userId];
-    [GBaseNetApi.shareInstance httpDelToken:nil url:urlstr succ:succ fail:fail];
-}
-
-
-//批量将用户踢出群
-+(void)getoutUsersGroup:(NSDictionary *_Nullable)parameters succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    
-}
-
-
-//转让群主
-+(void)transferGroup:(NSString *_Nullable)groupId userId:(NSString *_Nullable)userId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groups/%@/transference/%@",groupId,userId];
-    [GBaseNetApi.shareInstance httpPostToken:nil url:urlstr succ:succ fail:fail];
-}
-
-//上传头像
-+(void)upLoaddataWToken:(NSData *_Nonnull)data fileName:(NSString *_Nullable)fileName succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
-    [GBaseNetApi.shareInstance upLoaddataWToken:data fileName:fileName succ:succ fail:fail];
-}
-
-
-/**
- * 查询当前待审核的群邀请
- */
-+(void)getshenheList:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groupInvites?groupId=%@",groupId];
-    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
-}
-/**
- * 查询当前待审核的群邀请数量
- */
-+(void)waitCheckList:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groupInvites/waitCheckList"];
-    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
-}
-
-//同意加入
-+(void)Checkagree:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groupInvites/agree/%@",groupId];
-    [GBaseNetApi.shareInstance httpPostToken:nil url:urlstr succ:succ fail:fail];
-}
-//拒绝加入
-+(void)Checkrefuse:(NSString *_Nullable)groupId succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/groupInvites/refuse/%@",groupId];
-    [GBaseNetApi.shareInstance httpPostToken:nil url:urlstr succ:succ fail:fail];
-}
-
-+(void)getGroupMsgListWithChatId:(NSString * _Nonnull)chatId time:(NSInteger)timestamp pageSize:(NSInteger)size succ:(nullable GSucc)succ fail:(nullable GFail)fail{
-    //http://br1.qihg091ew.com:8080/api/sys/messages/queryGroupMessage?type=1&chatId=1936003432742780929&timestamp=-1&size=20
-    NSString *urlstr=[NSString stringWithFormat:@"/api/sys/messages/queryGroupMessage?type=1&chatId=%@&timestamp=%ld&size=%ld",chatId,timestamp,size];
-    [GBaseNetApi.shareInstance httpGetToken:nil url:urlstr succ:succ fail:fail];
-}
-
-@end

+ 3 - 0
ABtong/ABtong/Common/Network/UserNetApi.h

@@ -60,5 +60,8 @@
 ///更新聊天设置
 +(void)updateChatSetting:(NSDictionary *_Nullable)param succ:(nullable GSucc)succ fail:(nullable GFail)fail;
 
+//上传头像
++(void)upLoaddataWToken:(NSData *_Nonnull)data fileName:(NSString *_Nullable)fileName succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail;
+
 
 @end

+ 5 - 0
ABtong/ABtong/Common/Network/UserNetApi.m

@@ -116,4 +116,9 @@
     [GBaseNetApi.shareInstance httpPutToken:param url:@"/api/sys/setting" succ:succ fail:fail];
 }
 
+//上传头像
++(void)upLoaddataWToken:(NSData *_Nonnull)data fileName:(NSString *_Nullable)fileName succ:(GSucc _Nullable )succ fail:(GFail _Nullable )fail{
+    [GBaseNetApi.shareInstance upLoaddataWToken:data fileName:fileName succ:succ fail:fail];
+}
+
 @end

+ 46 - 44
ABtong/ABtong/Common/Store/ChatListStore.m

@@ -10,7 +10,6 @@
 #import "GDBManager.h"
 #import "ChatNetApi.h"
 #import "UserNetApi.h"
-#import "GroupNetApi.h"
 
 
 @interface ChatListStore()
@@ -48,6 +47,9 @@
             self.chatlist =chats;
             self.toparray =chats;
         }
+        else{
+            self.toparray = @[];
+        }
         [self loadnmData:mark];
     } fail:^(NSString * _Nullable error) {
         [self loadnmData:mark];
@@ -56,7 +58,7 @@
 
 -(void)loadnmData:(BOOL)mark{
     [GDBManager.shareInstance selectLocalchats:@"'false'" succ:^(NSArray * _Nullable array) {
-//        NSLog(@"array:%@",array);
+        NSLog(@"loadnmData:%@",array);
         if(array.count>0){
             array = [self saveArray:array];
             NSMutableOrderedSet *orderedSet = [[NSMutableOrderedSet alloc] initWithArray:array];//去重,顺序不变
@@ -75,6 +77,9 @@
                 [self.delegate ChatListChange:reschats];
             }
         }
+        else{
+            self.nmarray =@[];
+        }
         if(mark){
             [self getnmChatlist];
         }
@@ -192,7 +197,7 @@
 }
 
 -(void)reciveMsg:(NSDictionary *_Nonnull)msg{
-//    NSLog(@"reciveMsg------:%@",msg);
+    NSLog(@"reciveMsg------:%@",msg);
     NSInteger addcount = 1;
     if([msg[@"chatId"] isEqual:self.chatId]){
         addcount=0;
@@ -201,7 +206,7 @@
     NSString *messageType = msg[@"messageType"];
     for (NSDictionary *item in self.chatlist) {
         //NSLog(@"item:%@",item);
-        if([msg[@"chatId"] isEqual:item[@"id"]]){//窗口已经存在
+        if([msg[@"chatId"] isEqualToString:item[@"id"]]){//窗口已经存在
             NSString *newtime =msg[@"timestamp"];
             NSString *dtime =item[@"lastTime"];
             NSString *count = item[@"unreadCount"];
@@ -226,6 +231,7 @@
                         @"top":item[@"top"]?:@"false"
                     };
                     [self updateChat:chatD isreload:YES];
+                    [self updataUserInfo:chatD];
                 }
             }
             else{
@@ -243,6 +249,7 @@
                         @"top":item[@"top"]?:@"false"
                     };
                     [self updateChat:chatD isreload:YES];
+                    [self updataUserInfo:chatD];
                 }
             }
             
@@ -253,7 +260,7 @@
 }
 
 -(void)updateChat:(NSDictionary *)chat isreload:(BOOL)reload{
-//    NSLog(@"1----------updateChat--------------");
+    NSLog(@"1----------updateChat--------------");
     [GDBManager.shareInstance insertLocalchat:chat succ:^(NSArray * _Nullable array) {
         if(self.delegate &&reload){
             [self reloadData:false];
@@ -273,7 +280,7 @@
     }
     NSString *countstr = [NSString stringWithFormat:@"%ld",(long)addcount];
     NSString *lastMsg = [self setLastMsg:msg];
-    if([msg[@"type"] isEqual:@"0"]){//友聊
+    if([msg[@"type"] isEqualToString:@"0"]){//友聊
         [UserNetApi getUserinfo_id:msg[@"chatId"] succ:^(int code, NSDictionary * res) {
             NSDictionary * userinfo=res[@"data"];
             if(userinfo){
@@ -308,42 +315,37 @@
         }];
     }else{//群聊
         NSLog(@"addNewChats----:%@",msg);
-        [GroupNetApi getGroupInfo:msg[@"chatId"] succ:^(int code, NSDictionary * res) {
-            NSLog(@"getGroupInfo:%@",res);
+    }
+}
+
+
+-(void)updataUserInfo:(NSDictionary *)chatDis{
+    NSString *type = chatDis[@"type"];
+    NSString *chatId = chatDis[@"id"];
+    
+    NSString *oldName = chatDis[@"name"];
+    NSString *oldavatar = chatDis[@"avatar"];
+    
+    if([type isEqualToString:@"0"]){//友聊
+        [UserNetApi getUserinfo_id:chatId succ:^(int code, NSDictionary * res) {
             NSDictionary * userinfo=res[@"data"];
             if(userinfo){
-                NSDictionary *chatD=@{
-                    @"id":msg[@"chatId"],
-                    @"name":userinfo[@"name"],
-                    @"avatar":userinfo[@"avatar"],
-                    @"type":msg[@"type"],
-                    @"lastMessage":lastMsg,
-                    @"lastTime":msg[@"timestamp"],
-                    @"unreadCount":countstr,
-                    @"loaded":@"false",
-                    @"loading":@"false",
-                    @"top":@"false"
-                };
-                [self updateChat:chatD isreload:YES];
-            }
-            else{
+                if([oldName isEqualToString:userinfo[@"name"]]&&[oldavatar isEqualToString:userinfo[@"avatar"]]){
+                    return;
+                }else{
+                    NSMutableDictionary *mdic = [chatDis mutableCopy];
+                    [mdic setObject:userinfo[@"name"] forKey:@"name"];
+                    [mdic setObject:userinfo[@"avatar"] forKey:@"avatar"];
+                    [self updateChat:mdic isreload:YES];
+                }
             }
         } fail:^(NSError * _Nonnull error) {
-            NSDictionary *chatD=@{
-                @"id":msg[@"chatId"],
-                @"name":@"loading...",
-                @"avatar":@"avatar",
-                @"type":msg[@"type"],
-                @"lastMessage":lastMsg,
-                @"lastTime":msg[@"timestamp"],
-                @"unreadCount":countstr,
-                @"loaded":@"false",
-                @"loading":@"false",
-                @"top":@"false"
-            };
-            [self updateChat:chatD isreload:YES];
+            
         }];
     }
+    else{
+        
+    }
 }
 
 - (void)deleteChat:(NSDictionary *_Nonnull)chat{
@@ -534,10 +536,10 @@
                     NSString *dtime =oitem[@"lastTime"];
                     if(newtime.longLongValue>=dtime.longLongValue){
                         NSDictionary *chatD=@{
-                            @"id":safeDict[@"id"],
-                            @"name":safeDict[@"name"]?:@"",
-                            @"avatar":safeDict[@"avatar"]?:@"",
-                            @"type":safeDict[@"type"]?:@"",
+                            @"id":oitem[@"id"],
+                            @"name":oitem[@"name"]?:@"",
+                            @"avatar":oitem[@"avatar"]?:@"",
+                            @"type":oitem[@"type"]?:@"",
                             @"lastMessage":safeDict[@"lastMessage"]?:@"",
                             @"lastTime":safeDict[@"lastTime"]?:@"",
                             @"unreadCount":safeDict[@"unreadCount"]?:@"",
@@ -589,10 +591,10 @@
                         NSString *dtime =oitem[@"lastTime"];
                         if(newtime.longLongValue>=dtime.longLongValue){
                             NSDictionary *chatD=@{
-                                @"id":safeDict[@"id"],
-                                @"name":safeDict[@"name"]?:@"",
-                                @"avatar":safeDict[@"avatar"]?:@"",
-                                @"type":safeDict[@"type"]?:@"",
+                                @"id":oitem[@"id"],
+                                @"name":oitem[@"name"]?:@"",
+                                @"avatar":oitem[@"avatar"]?:@"",
+                                @"type":oitem[@"type"]?:@"",
                                 @"lastMessage":safeDict[@"lastMessage"]?:@"",
                                 @"lastTime":safeDict[@"lastTime"]?:@"",
                                 @"unreadCount":safeDict[@"unreadCount"]?:@"",

+ 6 - 31
ABtong/ABtong/Common/Store/ChatsStore.m

@@ -9,7 +9,6 @@
 #import "ChatsStore.h"
 #import "GDBManager.h"
 #import "ChatNetApi.h"
-#import "GroupNetApi.h"
 #import "UDManager.h"
 #import "GWebSocket.h"
 #import "ChatListStore.h"
@@ -112,6 +111,10 @@
 
 -(void)reloadData:(NSString *_Nonnull)chatId type:(NSInteger)type{
     NSLog(@"chatId:%@,%ld",chatId,(long)type);
+    
+    
+    
+    
     [self reloadData:chatId];
     [ChatNetApi getOutLineMsg:chatId type:type succ:^(int code, NSDictionary *res) {
         NSArray *array = res[@"data"];
@@ -119,7 +122,8 @@
         if(array.count>0){
             NSMutableArray *tempArray = [[NSMutableArray alloc] init];
             for (NSDictionary *msg in array) {
-                
+                NSLog(@"self.userid:%@",self.userid);
+                NSLog(@":%@",msg);
                 NSMutableDictionary *mutablemsg = [msg mutableCopy];
                 if([self.userid isEqual:mutablemsg[@"fromId"]]){
                     [mutablemsg setObject:[NSNumber numberWithBool:YES] forKey:@"mine"];
@@ -256,35 +260,6 @@
     }];
 }
 
--(void)getGroupUserList:(NSString *_Nonnull)chatId{
-    [self reloadData:chatId];//先加载本地
-//    NSLog(@"getqunOutLineMsg------------");
-    [GroupNetApi getGroupUserList:chatId succ:^(int code, NSDictionary *res) {
-//        NSLog(@"getqunOutLineMsgres:%@",res);
-        self.groupUserList = res[@"data"];
-//        [self reloadData:self.chatId type:1];
-        [self reloadQunData:chatId type:1];
-    } fail:^(NSError * _Nonnull error) {
-        NSLog(@"getqunOutLineMsgerrer");
-    }];
-}
-
-//获取群组历史记录 先获取群成员列表
--(void)getGroupHistory:(NSString *_Nonnull)groupId type:(NSString *_Nullable)type{
-    
-    if([type isEqualToString:@""]){
-        [GroupNetApi getGroupUserList:groupId succ:^(int code, NSDictionary *res) {
-            //NSLog(@"res:%@",res);
-            self.groupUserList = res[@"data"];
-            [self reloadData:self.chatId];
-        } fail:^(NSError * _Nonnull error) {
-            NSLog(@"errer");
-        }];
-    }
-    else{
-        [self reloadDataWithType:groupId type:type];
-    }
-}
 
 //按消息分类查询本消息
 -(void)reloadDataWithType:(NSString *_Nonnull)chatId type:(NSString *)type{

+ 41 - 0
ABtong/ABtong/Common/Store/FirendStore.h

@@ -0,0 +1,41 @@
+//
+//  FirendStore.h
+//  ABtong
+//
+//  Created by gan on 2025/8/22.
+//
+
+#ifndef FirendStore_h
+#define FirendStore_h
+
+#import <Foundation/Foundation.h>
+#import "ReactiveObjC.h"
+
+
+@protocol FirendStoreDelegate <NSObject>
+@optional
+- (void)FirendChange:(NSArray *_Nullable)msgList type:(NSInteger)typpe;
+@end
+
+
+@interface FirendStore : NSObject
+
++ (FirendStore *_Nonnull)shareInstance;
+@property (nonatomic,weak) id <FirendStoreDelegate> delegate;
+
+@property (nonatomic,strong) NSMutableArray * _Nullable flList;
+
+@property (nonatomic,strong) NSString * _Nullable userid;
+
+
+
+-(void)reciveMsg:(NSDictionary *_Nonnull)msg;
+-(void)reloadData:(NSString *_Nullable)kyeWD;
+
+-(void)deleteAbtFirend:(NSString *_Nullable)firebId;
+
+-(void)updataTongxunlu:(NSString *_Nullable)firendId;
+
+
+@end
+#endif /* FirendStore_h */

+ 123 - 0
ABtong/ABtong/Common/Store/FirendStore.m

@@ -0,0 +1,123 @@
+//
+//  FirendStore.m
+//  ABtong
+//
+//  Created by gan on 2025/8/22.
+//
+
+#import <Foundation/Foundation.h>
+#import "FirendStore.h"
+#import "GDBManager.h"
+#import "UserNetApi.h"
+#import "FriendNetApi.h"
+
+@implementation FirendStore
+
++ (FirendStore *_Nonnull)shareInstance{
+    static id gShareInstance = nil;
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        gShareInstance = [[self alloc] init];
+    });
+    return gShareInstance;
+}
+
+- (instancetype)init {
+    if (self = [super init]) {
+        self.flList = [[NSMutableArray alloc] init];
+    }
+    return self;
+}
+
+
+
+-(void)reciveMsg:(NSDictionary *_Nonnull)msg{
+    NSLog(@"insertFirend:%@",msg);
+    [GDBManager.shareInstance insertFirend:msg succ:^(NSArray * _Nullable array) {
+        //插入数据库成功
+        if(self.delegate){
+            [self.delegate FirendChange:self.flList type:1];
+        }
+    } fail:^(NSString * _Nullable error) {
+        ;
+    }];
+}
+
+
+-(void)reloadData:(NSString *)kyeWD{
+    
+    [GDBManager.shareInstance selectFirendwithKW:kyeWD succ:^(NSArray * _Nullable array) {
+        if(self.delegate){
+            [self.flList removeAllObjects];
+            [self.flList addObjectsFromArray:array];
+            [self.delegate FirendChange:self.flList type:1];
+        }
+    } fail:^(NSString * _Nullable error) {
+        ;
+    }];
+
+}
+
+
+-(void)selectFirend:(NSString *)userid{
+    [GDBManager.shareInstance selectFirendwithKW:userid succ:^(NSArray * _Nullable array) {
+        if(self.delegate){
+            [self.flList removeAllObjects];
+            [self.flList addObjectsFromArray:array];
+            [self.delegate FirendChange:self.flList type:1];
+        }
+    } fail:^(NSString * _Nullable error) {
+        ;
+    }];
+}
+
+-(void)deleteAbtFirend:(NSString *_Nullable)firebId{
+    [GDBManager.shareInstance deleteFirend:firebId succ:^(NSArray * _Nullable array) {
+        
+    } fail:^(NSString * _Nullable error) {
+        
+    }];
+}
+
+
+
+-(void)updataTongxunlu:(NSString *_Nullable)firendId{
+    [GDBManager.shareInstance selectFirendwithID:firendId succ:^(NSArray * _Nullable array) {
+        if(array.count>0){
+            //有数据
+        }
+        else{
+            //没有数据,添加、更新
+            [self chaxunFirendXinxi:firendId];
+        }
+    } fail:^(NSString * _Nullable error) {
+        ;
+    }];
+}
+
+-(void)chaxunFirendXinxi:(NSString *)firend{
+    [UserNetApi getUserinfo_id:firend succ:^(int code, NSDictionary * res) {
+        NSDictionary *friendMsg = res[@"data"];
+        if(friendMsg){
+            [self reciveMsg:friendMsg];
+            NSDictionary *dis = @{
+                @"friendId":friendMsg[@"id"],
+                @"message":@""
+            };
+            
+            [FriendNetApi AddTongxunlu:dis succ:^(int code, NSDictionary * res) {
+                NSLog(@"res:%@",res);
+                
+            } fail:^(NSError * _Nonnull error) {
+                NSLog(@"error:%@",error);
+            }];
+        }
+        
+        
+    } fail:^(NSError * _Nonnull error) {
+        
+    }];
+}
+
+
+@end

+ 14 - 5
ABtong/ABtong/Common/Store/LoginStateManager.m

@@ -89,8 +89,17 @@
                             };
         if(code==200){
             self->_loggedIn = YES;
-            [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
             [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
+            
+            NSDictionary *actuserInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
+            NSMutableDictionary *Dict = [NSMutableDictionary dictionaryWithDictionary:actuserInfo];
+            [Dict setObject:ps[@"id"]?:@"" forKey:@"userId"];
+            [Dict setObject:ps[@"name"]?:@"" forKey:@"name"];
+            [Dict setObject:ps[@"avatar"]?:@"" forKey:@"avatar"];
+            actuserInfo = [Dict copy];
+            [UDManager.shareInstance setDDManager:actuserInfo key:nkactuserInfo];
+            [GDBManager.shareInstance updataUserServer:actuserInfo succ:nil fail:nil];
+            
             !self.checkLoginState ?: self.checkLoginState(YES);
         }
         else{
@@ -167,12 +176,13 @@
                                 };
             if(code==200){
                 self->_loggedIn = YES;
-                [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
                 [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
                 
                 NSDictionary *actuserInfo = [UDManager.shareInstance getDDManager:nkactuserInfo];
                 NSMutableDictionary *Dict = [NSMutableDictionary dictionaryWithDictionary:actuserInfo];
                 [Dict setObject:ps[@"id"]?:@"" forKey:@"userId"];
+                [Dict setObject:ps[@"name"]?:@"" forKey:@"name"];
+                [Dict setObject:ps[@"avatar"]?:@"" forKey:@"avatar"];
                 actuserInfo = [Dict copy];
                 [UDManager.shareInstance setDDManager:actuserInfo key:nkactuserInfo];
                 [GDBManager.shareInstance updataUserServer:actuserInfo succ:nil fail:nil];
@@ -213,7 +223,7 @@
     [[GWebSocket shareInstance] closeWebSocket];
     [UDManager.shareInstance removeUDManager:gkeytoken];
     [UDManager.shareInstance removeUDManager:dkuserloginId];
-    [UDManager.shareInstance removeUDManager:dkuserinfo];
+    [UDManager.shareInstance removeUDManager:nkactuserInfo];
     [UDManager.shareInstance removeUDManager:dkuserId];
     
     [APPLocker.sharedLocker removePasswordWithError:nil];
@@ -275,8 +285,7 @@
 #pragma mark - 私有方法
 
 - (void)showLoginViewController {
-    // 这里实现弹出登录界面的逻辑
-    NSLog(@"需要显示登录界面");
+    // 这里登录界面的
     UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
     GLoginController *login = [board instantiateViewControllerWithIdentifier:@"LoginController"];
     UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:login];

+ 9 - 0
ABtong/ABtong/Localizable.xcstrings

@@ -1371,6 +1371,7 @@
     },
     "EGroupCtr-qunzhuanr" : {
       "comment" : "转让群",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -1394,6 +1395,7 @@
     },
     "EGroupCtr-rqtitle" : {
       "comment" : "入群审核",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -1417,6 +1419,7 @@
     },
     "EGroupCtr-tichuq" : {
       "comment" : "踢出群",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -1440,6 +1443,7 @@
     },
     "EGroupCtr-yaoqingrq" : {
       "comment" : "邀请加入群",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -2419,6 +2423,7 @@
     },
     "NGroupCtr-jinjiahy" : {
       "comment" : "禁加好友",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -2442,6 +2447,7 @@
     },
     "NGroupCtr-kaiqiyaoq" : {
       "comment" : "开启邀请",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -2465,6 +2471,7 @@
     },
     "NGroupCtr-quantijy" : {
       "comment" : "全体禁言",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -2512,6 +2519,7 @@
     },
     "NGroupCtr-ruqunxsh" : {
       "comment" : "入群需审核",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {
@@ -3533,6 +3541,7 @@
     },
     "TabBarItem3" : {
       "comment" : "群組",
+      "extractionState" : "stale",
       "localizations" : {
         "en" : {
           "stringUnit" : {

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor