瀏覽代碼

把 xmgmainViewcontroll 转移到 JXcshome里面

曾 伟 5 年之前
父節點
當前提交
37d72d17e0
共有 36 個文件被更改,包括 657 次插入576 次删除
  1. 1 1
      shiku_im.xcodeproj/project.pbxproj
  2. 3 0
      shiku_im/3rd/FMDB/FMDatabase.m
  3. 32 22
      shiku_im/AppDelegate.mm
  4. 3 151
      shiku_im/ClassesNew/MainClass/XMGMainViewController.m
  5. 0 0
      shiku_im/ClassesNew/Register&Login/JXTelAreaListVC.h
  6. 0 0
      shiku_im/ClassesNew/Register&Login/JXTelAreaListVC.m
  7. 0 0
      shiku_im/ClassesNew/Register&Login/forgetPwdVC.h
  8. 0 0
      shiku_im/ClassesNew/Register&Login/forgetPwdVC.m
  9. 0 0
      shiku_im/ClassesNew/Register&Login/inputPhoneVC.h
  10. 0 0
      shiku_im/ClassesNew/Register&Login/inputPhoneVC.m
  11. 0 0
      shiku_im/ClassesNew/Register&Login/inputPwdVC.h
  12. 0 0
      shiku_im/ClassesNew/Register&Login/inputPwdVC.m
  13. 0 0
      shiku_im/ClassesNew/Register&Login/loginVC.h
  14. 5 5
      shiku_im/Register&Login/loginVC.m
  15. 2 0
      shiku_im/ClassesNew/classes/homeVc/JXCsHomeVc.h
  16. 139 62
      shiku_im/ClassesNew/classes/homeVc/JXCsHomeVc.m
  17. 12 2
      shiku_im/ClassesNew/classes/loginmVc/JXMainLoginVc.m
  18. 7 10
      shiku_im/ClassesNew/classes/messageVc/JXGroupViewController.m
  19. 233 230
      shiku_im/ClassesNew/classes/messageVc/JXMsgViewController.m
  20. 3 1
      shiku_im/ClassesNew/classes/myVc/Vc/JXMySettingVc.m
  21. 8 5
      shiku_im/cell/ChatCell/JXMessageCell.m
  22. 19 11
      shiku_im/controller/JXChatViewController.mm
  23. 14 10
      shiku_im/controller/气泡/JLBubbleManager.m
  24. 12 3
      shiku_im/data/roomData.h
  25. 77 24
      shiku_im/data/roomData.m
  26. 3 2
      shiku_im/emojl/JXEmoji.m
  27. 9 1
      shiku_im/model/JXLabelObject.m
  28. 1 1
      shiku_im/model/JXMessageObject.m
  29. 21 4
      shiku_im/model/JXUserBaseObj.m
  30. 3 3
      shiku_im/model/JXUserObject.m
  31. 3 0
      shiku_im/model/JXXMPP.h
  32. 18 16
      shiku_im/model/JXXMPP.m
  33. 6 1
      shiku_im/network/JXServer.h
  34. 18 8
      shiku_im/network/JXServer.m
  35. 1 3
      shiku_im/shiku_im-Info.plist
  36. 4 0
      shiku_im/shiku_im-Prefix.pch

+ 1 - 1
shiku_im.xcodeproj/project.pbxproj

@@ -7035,6 +7035,7 @@
 			children = (
 				9D52CB65245A832B00009803 /* MainClass */,
 				9D52CB6F245A832B00009803 /* classes */,
+				CC04E64D194709DC0075B250 /* Register&Login */,
 				9D52CB82245A832B00009803 /* otherLib */,
 			);
 			path = ClassesNew;
@@ -9465,7 +9466,6 @@
 				CC6E163719794906006ADA8A /* cell */,
 				CC6E165A19794906006ADA8A /* model */,
 				CC30153D1951BABE0059BADA /* blog */,
-				CC04E64D194709DC0075B250 /* Register&Login */,
 				CC87589B19361891007D2DA1 /* Alerts */,
 				CC8758A219361891007D2DA1 /* control */,
 				CCFD207819592D1D00B98494 /* audioRecorder */,

+ 3 - 0
shiku_im/3rd/FMDB/FMDatabase.m

@@ -754,6 +754,9 @@
 
 - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args {
     
+    //NSLog(@"executeUpdate:(NSString*)sq = member_%@ %@",@"queryRoomId" ,sql);
+    
+    
     if (![self databaseExists]) {
         return NO;
     }

+ 32 - 22
shiku_im/AppDelegate.mm

@@ -114,6 +114,7 @@ static  BMKMapManager* _baiduMapManager;
     [Bugly startWithAppId:BUGLY_APP_ID];
     
 
+    [g_default removeObjectForKey:@"logoutUser"];
    // [g_default removeObjectForKey:@"refushMsgHistory"];
     
     // 网络监听
@@ -453,31 +454,37 @@ static  BMKMapManager* _baiduMapManager;
 -(void)showLoginUI{
      //修改的
   
-   //NSString *path =  [[NSBundle mainBundle] pathForResource:@"movie.mp4" ofType:nil];
-    JXMainLoginVc* vc = [JXMainLoginVc alloc];
-    vc.isAutoLogin = YES;
-    vc.isSwitchUser= NO;
-    vc = [vc init];
-    
-//     vc.movieURL = [NSURL fileURLWithPath:path];
-    g_navigation.rootViewController = vc; 
-      /*
-       
-    loginVC* vc = [loginVC alloc];
-    vc.isAutoLogin = YES;
-    vc.isSwitchUser= NO;
-    vc = [vc init];
-    
-    g_navigation.rootViewController = vc;
-    */
-       
+    
+    if (g_server.access_token.length==0||g_server.access_token==nil) {
+            //NSString *path =  [[NSBundle mainBundle] pathForResource:@"movie.mp4" ofType:nil];
+             JXMainLoginVc* vc = [JXMainLoginVc alloc];
+             vc.isAutoLogin = YES;
+             vc.isSwitchUser= NO;
+             vc = [vc init];
+             
+         //     vc.movieURL = [NSURL fileURLWithPath:path];
+             g_navigation.rootViewController = vc;
+    }else{
+        /**/
+            
+         loginVC* vc = [loginVC alloc];
+         vc.isAutoLogin = YES;
+         vc.isSwitchUser= NO;
+         vc = [vc init];
+         
+         g_navigation.rootViewController = vc;
+         
+    }
+
+   
+
+ //  [self.window makeKeyAndVisible];
     
     return;
 
      
-    [self.window addSubview:vc.view];
-    self.window.rootViewController = vc;
-    [self.window makeKeyAndVisible];
+//    [self.window addSubview:vc.view];
+//    self.window.rootViewController = vc;
 //    
 //    _navigation = [[JXNavigation alloc] init];
 //    [g_navigation.subViews removeAllObjects];
@@ -859,7 +866,7 @@ static  BMKMapManager* _baiduMapManager;
     g_xmpp.isCloseStream = YES;
     g_xmpp.isReconnect = NO;
     [g_xmpp logout];
-    
+     [g_server outTime:nil];
 #if TAR_IM
 #ifdef Meeting_Version
     [jxMeeting doTerminate];
@@ -1367,6 +1374,9 @@ static  BMKMapManager* _baiduMapManager;
 
 - (void)copyDbWithUserId:(NSString *)userId {
     // 拷贝文件到share extension 共享存储空间中
+    
+     
+ 
     userId = [userId uppercaseString];
     NSString* t =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
     NSString* copyPath = [NSString stringWithFormat:@"%@/%@.db",t,userId];

+ 3 - 151
shiku_im/ClassesNew/MainClass/XMGMainViewController.m

@@ -8,36 +8,9 @@
 
 #import "XMGMainViewController.h"
  #import "JXMsgViewController.h"
-#import "CYWebAddPointVC.h"
-#import "XMGNavigationViewController.h"
-#import "MJTabBar.h"
 #import "JXXMGMyVc.h"
-#import "JXBigReelVc.h"
 #import "JXWellBeingVc.h"
-#import "JXTabMenuView.h" 
-#import "JXFriendViewController.h"
-#import "AppDelegate.h"
-#import "JXNewFriendViewController.h"
-#import "JXFriendObject.h"
-#import "PSMyViewController.h"
-#ifdef Live_Version
-#import "JXLiveViewController.h"
-#endif
-  
-#import "JXProgressVC.h"
-#import "JXGroupViewController.h"
-#import "OrganizTreeViewController.h"
-#import "JXLabelObject.h"
-#import "JXBlogRemind.h"
-#import "JXRoomPool.h"
-#import "JXDeviceAuthController.h"
- 
-#import "UIColor+Util.h"
-#import "UIColor+XQColor.h" 
-#import "JXBlogRemind.h"
-#import "JXBigReelVc.h"
 #import "JXShowMainView.h"
-#import "JXNewRegisterVc.h"
 
 @interface XMGMainViewController ()
 
@@ -45,44 +18,13 @@
 
 @implementation XMGMainViewController
  
-
-
--(instancetype)init{
-    
-    if (self=[super init]) {
-  
-
-        [g_notify addObserver:self selector:@selector(loginSynchronizeFriends:) name:kXmppClickLoginNotifaction object:nil];
-        [g_notify addObserver:self selector:@selector(appDidEnterForeground) name:kApplicationWillEnterForeground object:nil];
-        [g_notify addObserver:self selector:@selector(getUserInfo:) name:kXMPPMessageUpadteUserInfoNotification object:nil];
-        [g_notify addObserver:self selector:@selector(getRoomSet:) name:kXMPPMessageUpadteGroupNotification object:nil];
-        
-        [g_notify addObserver:self selector:@selector(hasLoginOther:) name:kXMPPLoginOtherNotification object:nil];
-        [g_notify addObserver:self selector:@selector(showDeviceAuth:) name:kDeviceAuthNotification object:nil];
-      
-       
-         
-    }
-    return self;
-}
-
-
-
+ 
 - (void)viewDidLoad {
     [super viewDidLoad];
     [self initViewControllers];
     self.tabBar.backgroundColor = [UIColor whiteColor];
-     
-    
-    
-    // 获取服务器时间
-  
-}
-
-- (void)viewDidAppear:(BOOL)animated {
-    
+        
 }
-
 - (void)didReceiveMemoryWarning {
     [super didReceiveMemoryWarning];
 }
@@ -99,99 +41,9 @@
     
     JXXMGMyVc *controller3 = [[JXXMGMyVc alloc] init];
     controller3.yp_tabItemTitle = @"我";
-      
-    
+       
     self.viewControllers = [NSMutableArray arrayWithObjects:nav1, controller2, controller3, nil];
 }
-
-- (void)appEnterForegroundNotif:(NSNotification *)noti {
-   // [g_server offlineOperation:(g_server.lastOfflineTime *1000 + g_server.timeDifference)/1000 toView:self];
-}
-
-- (void)getUserInfo:(NSNotification *)noti {
-    JXMessageObject *msg = noti.object;
-    [g_server getUser:msg.toUserId toView:self];
-}
-
-- (void)getRoomSet:(NSNotification *)noti {
-    JXMessageObject *msg = noti.object;
-   // [g_server getRoom:msg.toUserId toView:self];
-}
-
--(void)dealloc{
-//    [_psMyviewVC.view release];
-//    [_msgVc.view release];
-    [g_notify removeObserver:self name:kXmppLoginNotifaction object:nil];
-    [g_notify removeObserver:self name:kSystemLoginNotifaction object:nil];
-    [g_notify removeObserver:self name:kXmppClickLoginNotifaction object:nil];
-    [g_notify removeObserver:self name:kXMPPLoginOtherNotification object:nil];
-    [g_notify removeObserver:self name:kApplicationWillEnterForeground object:nil];
-    [g_notify removeObserver:self name:kXMPPMessageUpadteUserInfoNotification object:nil];
-    [g_notify removeObserver:self name:kDeviceAuthNotification object:nil];
-//    [super dealloc];
-}
-
- 
-
-
-- (void)appDidEnterForeground {
-    // 获取服务器时间
-   // [g_server getCurrentTimeToView:self];
-}
-
-- (void)loginSynchronizeFriends:(NSNotification*)notification{
-
-        //判断服务器好友数量是否与本地一致
-//        _friendArray = [g_server.myself fetchAllFriendsOrNotFromLocal];
-        //     og(@"%d -------%ld",[g_server.myself.friendCount intValue] , [_friendArray count]);
-        //    if ([g_server.myself.friendCount intValue] > [_friendArray count] && [g_server.myself.friendCount intValue] >0) {
-        //        [g_App showAlert:Localized(@"JXAlert_SynchFirendOK") delegate:self];
-        if (self.isLoadFriendAndGroup) {
-            [g_server listAttention:0 userId:MY_USER_ID toView:self];
-        }else{
-            
-            [[JXXMPP sharedInstance] performSelector:@selector(login) withObject:nil afterDelay:2];//2秒后执行xmpp登录
-        }
-        
-        [[JXXMPP sharedInstance] performSelector:@selector(login) withObject:nil afterDelay:2];//2秒后执行xmpp登录
-    
-    //    }
-}
-
-- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
-    if (alertView.tag == 10002) {
-        [g_server performSelector:@selector(showLogin) withObject:nil afterDelay:0.5];
-        return;
-    }else if (buttonIndex == 1) {
-        [g_server listAttention:0 userId:MY_USER_ID toView:self];
-    }
-}
- 
--(void)buildTop{
-   
-     
-    
-    ///NSMutableArray *remindArray = [[JXBlogRemind sharedInstance] doFetchUnread];
-     
-     
-}
-
--(void)actionSegment:(UIButton*)sender{
-    //[self doSelected:(int)sender.tag];
-}
  
 
-
--(void)hasLoginOther:(NSNotification *)notifcation{
-    [g_App showAlert:Localized(@"JXXMPP_Other") delegate:self tag:10002 onlyConfirm:YES];
-}
-
-- (void)showDeviceAuth:(NSNotification *)notification{
-    JXMessageObject *msg = notification.object;
-    JXDeviceAuthController *authCon = [[JXDeviceAuthController alloc] initWithMsg:msg];
-    UIViewController *lastVC = (UIViewController *)g_navigation.subViews.lastObject;
-    [lastVC presentViewController:authCon animated:YES completion:nil];
-}
-
-
 @end

shiku_im/Register&Login/JXTelAreaListVC.h → shiku_im/ClassesNew/Register&Login/JXTelAreaListVC.h


shiku_im/Register&Login/JXTelAreaListVC.m → shiku_im/ClassesNew/Register&Login/JXTelAreaListVC.m


shiku_im/Register&Login/forgetPwdVC.h → shiku_im/ClassesNew/Register&Login/forgetPwdVC.h


shiku_im/Register&Login/forgetPwdVC.m → shiku_im/ClassesNew/Register&Login/forgetPwdVC.m


shiku_im/Register&Login/inputPhoneVC.h → shiku_im/ClassesNew/Register&Login/inputPhoneVC.h


shiku_im/Register&Login/inputPhoneVC.m → shiku_im/ClassesNew/Register&Login/inputPhoneVC.m


shiku_im/Register&Login/inputPwdVC.h → shiku_im/ClassesNew/Register&Login/inputPwdVC.h


shiku_im/Register&Login/inputPwdVC.m → shiku_im/ClassesNew/Register&Login/inputPwdVC.m


shiku_im/Register&Login/loginVC.h → shiku_im/ClassesNew/Register&Login/loginVC.h


+ 5 - 5
shiku_im/Register&Login/loginVC.m

@@ -82,9 +82,9 @@
             self.isGotoBack = YES;
         }
        // [g_server getAppResource:@"0" ToView:self];
-        [g_server customerLinkList:self];
+       // [g_server customerLinkList:self];
         // 获取所有气泡
-        [g_server getAllBubbleFontListToView:self];
+        //[g_server getAllBubbleFontListToView:self];
         // 获取所有等级
 //        [g_server getAllGradeListToView:self];
         g_server.isManualLogin = NO;
@@ -510,12 +510,12 @@
          protocolLab2.frame = CGRectMake((JX_SCREEN_WIDTH-proSize2.width)/2, n, proSize2.width, proSize2.height);
          protocolLab2.textColor = HEXCOLOR(0x2A98FF);
          
-         NSDictionary *attribtDic2 = @{NSUnderlineStyleAttributeName: [NSNumber numberWithInteger:NSUnderlineStyleNone]};
-         NSMutableAttributedString *attribtStr2 = [[NSMutableAttributedString alloc]initWithString:protocolStr2 attributes:attribtDic2];
+//         NSDictionary *attribtDic2 = @{NSUnderlineStyleAttributeName: [NSNumber numberWithInteger:NSUnderlineStyleNone]};
+//         NSMutableAttributedString *attribtStr2 = [[NSMutableAttributedString alloc]initWithString:protocolStr2 attributes:attribtDic2];
          //protocolLab2.attributedText = attribtStr2;
          [self.tableBody addSubview:protocolLab2];
          protocolLab2.userInteractionEnabled = YES;
-         UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onForget)];
+//         UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onForget)];
          //[protocolLab2 addGestureRecognizer:tap2];
         
         n = n+HEIGHT+INSETS;

+ 2 - 0
shiku_im/ClassesNew/classes/homeVc/JXCsHomeVc.h

@@ -26,6 +26,8 @@ typedef void(^shuaxinBtn)(UIButton *btn);
 @property (nonatomic,weak) XMGTitleButton *topButton;
 
 
+// 是否调用好友和群组列表接口
+@property (nonatomic, assign) BOOL isLoadFriendAndGroup;
 @end
  
 

+ 139 - 62
shiku_im/ClassesNew/classes/homeVc/JXCsHomeVc.m

@@ -52,16 +52,69 @@
  
 -(instancetype)init{
     if (self=[super init]) {
-    [g_notify addObserver:self selector:@selector(onXmppLoginChanged:) name:kXmppLoginNotifaction object:nil];
+         
+        NSInteger fectfriends = [g_server.myself fetchAllFriends].count;
+        self.isLoadFriendAndGroup = [g_server.myself fetchAllFriends].count < 6;
+       
+        
+       [g_notify addObserver:self selector:@selector(onXmppLoginChanged:) name:kXmppLoginNotifaction object:nil];
         [g_notify  addObserver:self selector:@selector(newMsgCome:) name:kXMPPNewMsgNotifaction object:nil];//收到了一条新消息
         
           [g_notify  addObserver:self selector:@selector(hiddenTipLabel:) name:@"hiddenTip" object:nil];//收到了一条新消息
         
         [g_notify addObserver:self selector:@selector(goBack:) name:@"longGoback" object:nil];
+        
+        [g_notify addObserver:self selector:@selector(loginSynchronizeFriends:) name:kXmppClickLoginNotifaction object:nil];
+        [g_notify addObserver:self selector:@selector(appDidEnterForeground) name:kApplicationWillEnterForeground object:nil];
+        [g_notify addObserver:self selector:@selector(getUserInfo:) name:kXMPPMessageUpadteUserInfoNotification object:nil];
+        [g_notify addObserver:self selector:@selector(getRoomSet:) name:kXMPPMessageUpadteGroupNotification object:nil];
+        [g_notify addObserver:self selector:@selector(onXmppLoginChanged:) name:kXmppLoginNotifaction object:nil];
+        [g_notify addObserver:self selector:@selector(hasLoginOther:) name:kXMPPLoginOtherNotification object:nil];
+         [g_notify addObserver:self selector:@selector(showDeviceAuth:) name:kDeviceAuthNotification object:nil];
     }
     return self;
 }
+ - (void)appDidEnterForeground {
+     // 获取服务器时间
+    [g_server getCurrentTimeToView:self];
+ }
+- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
+    if (alertView.tag == 10002) {
+        [g_server performSelector:@selector(showLogin) withObject:nil afterDelay:0.5];
+        return;
+    }else if (buttonIndex == 1) {
+        [g_server listAttention:0 userId:MY_USER_ID toView:self];
+    }
+}
  
+ 
+- (void)showDeviceAuth:(NSNotification *)notification{
+     JXMessageObject *msg = notification.object;
+     JXDeviceAuthController *authCon = [[JXDeviceAuthController alloc] initWithMsg:msg];
+ //    [self presentViewController:authCon animated:YES completion:nil];
+     UIViewController *lastVC = (UIViewController *)g_navigation.subViews.lastObject;
+     [lastVC presentViewController:authCon animated:YES completion:nil];
+}
+ 
+
+
+-(void)hasLoginOther:(NSNotification *)notifcation{
+    [g_App showAlert:Localized(@"JXXMPP_Other") delegate:self tag:10002 onlyConfirm:YES];
+}
+- (void)appEnterForegroundNotif:(NSNotification *)noti {
+   // [g_server offlineOperation:(g_server.lastOfflineTime *1000 + g_server.timeDifference)/1000 toView:self];
+}
+
+- (void)getUserInfo:(NSNotification *)noti {
+    JXMessageObject *msg = noti.object;
+    [g_server getUser:msg.toUserId toView:self];
+}
+
+- (void)getRoomSet:(NSNotification *)noti {
+    JXMessageObject *msg = noti.object;
+    [g_server getRoom:msg.toUserId toView:self];
+}
+
 
 - (void)hiddenTipLabel:(NSNotification *)note{
     
@@ -83,43 +136,77 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     
-    // 获取服务器时间
-   // [g_server getCurrentTimeToView:self];
-   // [g_server offlineOperation:(g_server.lastOfflineTime *1000 + g_server.timeDifference)/1000 toView:self];
-       //NSLog(@"login_%@",g_server.myself.userId);
-       
-      // [g_server getUser:g_server.myself.userId toView:self];
-        
-     //CGFloat  lastOffLineTime=(g_server.lastOfflineTime *1000 + 0)/1000;
-                  
-    // CGFloat  lastOffLineTime2=(g_server.timeDifference)/1000;
-        
-    [self setupChildViewControllers];
+    //[self loginSynchronizeFriends:nil];
     
-    [self setupNavBar];
     
-    [self setupContentView];
+    if (g_server.loginOfflineTime>0) {
+           [g_server offlineOperation:g_server.loginOfflineTime toView:self];
+    }else{
+         NSTimeInterval interval =  [[NSDate date] timeIntervalSince1970];
+         int intervalll = (int)interval;
+        [g_server offlineOperation:intervalll toView:self];
+        
+    }
+     
+    if (g_server.isManualLogin) {
+        if (self.isLoadFriendAndGroup) {
+            NSArray *array = [[JXLabelObject sharedInstance] fetchAllLabelsFromLocal];
+            if (array.count <= 0) {
+                // 同步标签
+                [g_server friendGroupListToView:self];
+            }
+        }
+    }
     
-    [self setupTitlesView];
+    // 获取服务器时间
+    [g_server getCurrentTimeToView:self];
+    // 获取自己的用户信息
+    [g_server getUser:MY_USER_ID toView:self];
     
    // [self.topButton addTarget:self action:@selector(topBtnClick) forControlEvents:UIControlEventTouchUpInside];
     [g_notify addObserver:self selector:@selector(showAD) name:kLaunchAdShowFinishNotifaction object:nil];
     [g_notify addObserver:self selector:@selector(changeNodeTitle:) name:@"changeNodeTitleNotifaction" object:nil];
+     
+    
     
+          [self setupChildViewControllers];
+          
+          [self setupNavBar];
+          
+          [self setupContentView];
+          
+          [self setupTitlesView];
+          
+   
+}
 
-//    self.contentView.delaysContentTouches=NO;
-//    self.contentView.canCancelContentTouches=NO;
-  
+- (void)loginSynchronizeFriends:(NSNotification*)notification{
+
+        //判断服务器好友数量是否与本地一致
+//        _friendArray = [g_server.myself fetchAllFriendsOrNotFromLocal];
+        //    NSLog(@"%d -------%ld",[g_server.myself.friendCount intValue] , [_friendArray count]);
+        //    if ([g_server.myself.friendCount intValue] > [_friendArray count] && [g_server.myself.friendCount intValue] >0) {
+        //        [g_App showAlert:Localized(@"JXAlert_SynchFirendOK") delegate:self];
+        if (self.isLoadFriendAndGroup) {
+            [g_server listAttention:0 userId:MY_USER_ID toView:self];
+     
+        }else{
+            
+         [[JXXMPP sharedInstance] performSelector:@selector(login) withObject:nil afterDelay:2];//2秒后执行xmpp登录
+        }
+        
+        //[[JXXMPP sharedInstance] performSelector:@selector(login) withObject:nil afterDelay:2];//2秒后执行xmpp登录
+    
+    //    }
 }
- 
+
 
 -(void)onXmppLoginChanged:(NSNumber*)isLogin{
     if([JXXMPP sharedInstance].isLogined == login_status_yes){
         // 获取离线调用接口列表
         //CGFloat  lastOffLineTime=(g_server.lastOfflineTime *1000 + 0)/1000;
         //   CGFloat  lastOffLineTime2=(g_server.timeDifference)/1000;
-           
-    [g_server offlineOperation:(g_server.lastOfflineTime *1000 + g_server.timeDifference)/1000 toView:self];
+      // [g_server offlineOperation:(g_server.lastOfflineTime *1000 + g_server.timeDifference)/1000 toView:self];
         [self onAfterLogin];
     }
      
@@ -131,10 +218,7 @@
 - (void)showAD {
     [JXShowMainView showView];
 }
-
-- (void)dealloc {
-    [g_notify removeObserver:self];
-}
+ 
  
 - (void)setupContentView
 {
@@ -417,9 +501,7 @@
         
      [self addChildViewController:vc]; 
      [self addChildViewController:[XMGMainViewController new]];
-    return;
-     [self setupOneChildViewController:vc];
-     [self setupOneChildViewController:[XMGMainViewController new]];
+  
 }
 
 - (void)setupOneChildViewController:(UIViewController *)type
@@ -485,17 +567,7 @@
 {
      
      int index = scrollView.contentOffset.x / scrollView.frame.size.width;
-//    NSString *msgStr=[g_default objectForKey:@"refushMsgHistoryxxx"];
-//    if (msgStr.length>0) {
-//
-//    }else{
-//
-//        [g_notify postNotificationName:@"refushMsgHistoryxxx" object:nil];
-//
-//        [g_default setObject:@"refushMsgHistoryxxx" forKey:@"refushMsgHistoryxxx"];
-//        [g_default synchronize];
-//    }
-    
+  
      [self titleClick:self.titlesView.subviews[index]];
      [self switchController:index];
    
@@ -520,7 +592,7 @@
 //    }
     
      [self switchController:a];
-  //
+  
     
     
     
@@ -530,13 +602,7 @@
 
 
 -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
-    //更新本地好友
-    if ([aDownload.action isEqualToString:act_UserGet]) {
-           NSString *memberAcc= dict[@"membershipAccount"];
-          [[NSUserDefaults standardUserDefaults] setObject:memberAcc forKey:@"membershipAccount_ID"];
-          [[NSUserDefaults standardUserDefaults] synchronize];
-
-       }
+ 
     
     if ([aDownload.action isEqualToString:act_AttentionList]) {
         JXProgressVC * pv = [JXProgressVC alloc];
@@ -591,10 +657,10 @@
             if ([[dict objectForKey:@"tag"] isEqualToString:@"label"]) {
                 [g_notify postNotificationName:kOfflineOperationUpdateLabelList object:nil];
             }
-            else if ([[dict objectForKey:@"tag"] isEqualToString:@"friend"]) {
+            if ([[dict objectForKey:@"tag"] isEqualToString:@"friend"]) {
                 [g_server getUser:[dict objectForKey:@"friendId"] toView:self];
-            }
-            else if ([[dict objectForKey:@"tag"] isEqualToString:@"room"]) {
+             }
+             if ([[dict objectForKey:@"tag"] isEqualToString:@"room"]) {
                 [g_server getRoom:[dict objectForKey:@"friendId"] toView:self];
             }
         }
@@ -602,16 +668,7 @@
     if ([aDownload.action isEqualToString:act_UserGet]) {
         JXUserObject *user = [[JXUserObject alloc] init];
         [user getDataFromDict:dict];
-         
-        
-        
-        NSString *gradeIndexcc= dict[@"gradeIndex"];
-        [[NSUserDefaults standardUserDefaults] setObject:gradeIndexcc forKey:@"gradeIndexcc"];
-        [[NSUserDefaults standardUserDefaults] synchronize];
-        
-         
-        
-        
+     
         if ([user.userId intValue] == [MY_USER_ID intValue]) {
             [g_server doSaveUser:dict];
              user.bubbleFontId = [dict objectForKey:@"bubbleFontId"];
@@ -659,7 +716,7 @@
             user.topTime = nil;
             
             [user insertRoom];
-           // [g_xmpp.roomPool joinRoom:user.userId title:user.userNickname lastDate:nil isNew:NO];
+           [g_xmpp.roomPool joinRoom:user.userId title:user.userNickname lastDate:nil isNew:NO];
         }else {
             NSDictionary * groupDict = [user toDictionary];
             roomData * roomdata = [[roomData alloc] init];
@@ -689,4 +746,24 @@
     
     return hide_error;
 }
+
+
+-(void)dealloc{
+ 
+    [g_notify removeObserver:self name:kXmppLoginNotifaction object:nil];
+    [g_notify removeObserver:self name:kSystemLoginNotifaction object:nil];
+    [g_notify removeObserver:self name:kXmppClickLoginNotifaction object:nil];
+    [g_notify removeObserver:self name:kXMPPLoginOtherNotification object:nil];
+    [g_notify removeObserver:self name:kApplicationWillEnterForeground object:nil];
+    [g_notify removeObserver:self name:kXMPPMessageUpadteUserInfoNotification object:nil];
+    [g_notify removeObserver:self name:kDeviceAuthNotification object:nil];
+ 
+}
 @end
+
+
+
+
+
+
+

+ 12 - 2
shiku_im/ClassesNew/classes/loginmVc/JXMainLoginVc.m

@@ -120,7 +120,7 @@
                 self.title = Localized(@"JX_SMSLogin");
                 self.isGotoBack = YES;
             }
-           // [g_server getAppResource:@"0" ToView:self];
+           [g_server getAppResource:@"0" ToView:self];
             [g_server customerLinkList:self];
             // 获取所有气泡
             [g_server getAllBubbleFontListToView:self];
@@ -191,8 +191,18 @@
                 });
             if (!_isThirdLogin) {
                 
-                [g_server getSetting:self];
                 
+              NSString *logoutUser = [g_default objectForKey:@"logoutUser"];
+                
+                if (logoutUser.length>0) {
+                       [g_server getSetting:self];
+                
+                
+                }
+
+              
+                
+                [g_default removeObjectForKey:@"logoutUser"];
             }
 
     

+ 7 - 10
shiku_im/ClassesNew/classes/messageVc/JXGroupViewController.m

@@ -719,12 +719,9 @@
 
             {
                 NSDictionary *dictby=[dict objectForKey:@"groupType"];
-
                 user.groupType = [dictby objectForKey:@"typeName"];
-
             }else{
                 user.groupType = @"";
- 
 
             }
  
@@ -754,9 +751,9 @@
         _currentGroupArray = tempArray;
 
         _refreshCount++;
-        [_table reloadData];
-        
-        return;
+//        [_table reloadData];
+//
+//        return;
         if (_selMenu == 0) {
             if (array1.count > 0) {
                 [self getServerData];
@@ -930,14 +927,14 @@
     }
     else{
         
-        [g_server listHisRoom:_page pageSize:1000 toView:self];
+//        [g_server listHisRoom:_page pageSize:1000 toView:self];
         _searchfield.text = @"";
         
-        [self.tableView reloadData];
+//        [self.tableView reloadData];
         
-        self.isShowFooterPull = NO;
+//        self.isShowFooterPull = NO;
         
-        return;
+         
         _myGroupArray = [[JXUserObject sharedInstance] fetchAllRoomsFromLocal];
         [_currentGroupArray removeAllObjects];
         _currentGroupArray = [[NSMutableArray alloc]initWithArray:_myGroupArray] ;

+ 233 - 230
shiku_im/ClassesNew/classes/messageVc/JXMsgViewController.m

@@ -155,7 +155,8 @@
         _indexNums=0;
         _isGetLastMsgList = NO;
        // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-         //  [g_notify  addObserver:self selector:@selector(newFriend:) name:kXMPPNewFriendNotifaction object:nil];
+        //kChatViewDisappear
+           // [g_notify  addObserver:self selector:@selector(newFriend:) name:kXMPPNewFriendNotifaction object:nil];
             
            [g_notify addObserver:self selector:@selector(newRequest:) name:kXMPPNewRequestNotifaction object:nil];
             [g_notify addObserver:self selector:@selector(showAD) name:kLaunchAdShowFinishNotifaction object:nil];
@@ -212,56 +213,63 @@
 - (void)getFriend{
     
     
-     [g_server listAttention:1000 userId:MY_USER_ID toView:self];
+     [g_server listAttention:0 userId:MY_USER_ID toView:self];
    // [g_server listFriend:0 userId:MY_USER_ID toView:self];
  }
 
-//获取所有的群
+#pragma mark ---   获取所有的群
 - (void)getAllChatList {
+   // [g_server listAttention:50 userId:MY_USER_ID toView:self];
 //    [g_server listRoom:_page roomName:nil toView:self];
-    [g_server listHisRoom:_page pageSize:1000 toView:self];
+    [g_server listHisRoom:0 pageSize:1000 toView:self];
 }
  
-//获取所有的料天信息列表
+#pragma mark   -- 获取所有的料天信息列表
 - (void)getLastChatList {
     
     BOOL isFirstSync = [g_default boolForKey:kISFirstGetLastChatList];
     
     long long syncTimeLen;
     
-    
     if (!isFirstSync) {
         //if ([g_myself.chatSyncTimeLen longLongValue] > [g_myself.groupChatSyncTimeLen longLongValue]) {
-            syncTimeLen = [g_myself.chatSyncTimeLen longLongValue];
+            syncTimeLen =[g_myself.chatSyncTimeLen longLongValue];
         //}else {
             //syncTimeLen = [g_myself.groupChatSyncTimeLen longLongValue];
         //}
-       syncTimeLen = syncTimeLen * 24 * 3600 * 1000;
-//        syncTimeLen = [[NSDate date] timeIntervalSince1970] * 1000.0 - m;
-        // 同步 永久 syncTime == 0
-        if ([g_myself.chatSyncTimeLen longLongValue] == 0 || [g_myself.chatSyncTimeLen longLongValue] == -1) {
-            syncTimeLen = 0;
-        }
-        // [g_default setBool:YES forKey:kISFirstGetLastChatList];
+        NSDate *datenow = [NSDate date];
+        long long  timeSp = (long)([datenow timeIntervalSince1970]*1000);
+        syncTimeLen =  syncTimeLen * 24 * 3600 * 1000;
+        syncTimeLen=timeSp-syncTimeLen;
         
+        //syncTimeLen = [[NSDate date] timeIntervalSince1970] * 1000.0 - m;
+        // 同步 永久 syncTime == 0
+      if ([g_myself.chatSyncTimeLen longLongValue] == 0 || [g_myself.chatSyncTimeLen longLongValue] == -1) {
+            
+          syncTimeLen = 0;
+
+         NSLog(@"最后一次离线时间 - 2 :%f",g_server.lastOfflineTime);
+      }
+     
     }else {
-      syncTimeLen = g_server.lastOfflineTime * 1000.0;
+         
+       syncTimeLen =g_server.lastOfflineTime * 1000.0;
 
       // syncTimeLen =604800000;
         NSLog(@"最后一次离线时间:%f",g_server.lastOfflineTime);
     }
     // 不同步 batchJoinMucChat();
-
-    if ([g_myself.chatSyncTimeLen longLongValue] == -2) {
- 
-        [g_xmpp.roomPool createAll];
- 
-    }else {
-        
-      
+    //NSTimeInterval interval = syncTimeLen;
+    //NSInteger time = round(syncTimeLen);
+    
+//    if ([g_myself.chatSyncTimeLen longLongValue] == -2) {
+//
+//        [g_xmpp.roomPool createAll];
+//
+//    }else {
+         
         [g_server getLastChatListStartTime:[NSNumber numberWithLong:syncTimeLen] toView:self];
 
-    }
     
 }
 
@@ -270,8 +278,8 @@
 //刷新数据
 - (void)viewDidAppear:(BOOL)animated{
     [super viewDidAppear:animated];
-   
-    [g_server getCurrentTimeToView:self];
+    
+      
     if(g_xmpp.isLogined != 1){
         // 掉线后点击title重连
         // 判断XMPP是否在线  不在线重连
@@ -342,8 +350,9 @@
     self.view.backgroundColor=kRGBColor250;
     [self customView];
     [self navGuese];
-     
-    [self getLastChatList];
+    
+    [self getServerData];
+  
 
     upOrDown = 0;
     
@@ -352,9 +361,10 @@
     if (msgStr.length>0) {
 
     }else{
-
-         [self getAllChatList];
-         [self getFriend];
+       [self getLastChatList];
+        [g_server listAttention:0 userId:MY_USER_ID toView:self];
+       [self getAllChatList];
+         //[self getFriend];
         
         [g_default setObject:@"refushMsgHistoryxxx" forKey:@"refushMsgHistoryxxx"];
         [g_default synchronize];
@@ -642,20 +652,19 @@
 
 // 更改备注名
 - (void)friendRemarkNotif:(NSNotification *)notif {
+     
+//    _array = [[JXMessageObject sharedInstance] fetchRecentChat];
+//    [_table reloadData];
+    JXUserObject *user = notif.object;
     
-//    [self getLastChatList];
-    _array = [[JXMessageObject sharedInstance] fetchRecentChat];
-    [_table reloadData];
-//    JXUserObject *user = notif.object;
-    
-//    for (int i = 0; i < _array.count; i ++) {
-//        JXMsgAndUserObject *obj = _array[i];
-//        if ([obj.user.userId isEqualToString:user.userId]) {
-//            obj.user.remarkName = user.remarkName;
-////            [_table reloadRow:i section:0];
-//            break;
-//        }
-//    }
+    for (int i = 0; i < _array.count; i ++) {
+        JXMsgAndUserObject *obj = _array[i];
+        if ([obj.user.userId isEqualToString:user.userId]) {
+            obj.user.remarkName = user.remarkName;
+            [_table reloadRow:i section:0];
+            break;
+        }
+    }
 }
 
 // 消息撤回
@@ -950,7 +959,6 @@
 
         NSTimeInterval timeSend =[obj.message.timeSend timeIntervalSince1970];
         NSTimeInterval currentTime =[[NSDate date] timeIntervalSince1970];
-        
         JXMessageObject *userx=obj.message;
       //NSLog(@"obj.user.userNickname    %@ === userx.content %@",obj.user.userNickname,userx.content);
         
@@ -1159,12 +1167,7 @@
 
 
 
-/**现实新朋友的角标*/
-- (void) showNewMsgCount:(NSInteger)friendNewMsgNum {
- 
-    _strCount=[NSString stringWithFormat:@"%zd",friendNewMsgNum];
  
-}
 
 - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
     _reciveNewMessage2222=100;
@@ -1183,15 +1186,14 @@
 {
     
     // 判断是否为加好友或者删除好友
-      JXFriendObject * friend = (JXFriendObject*) notifacation.object;
+      //JXFriendObject * friend = (JXFriendObject*) notifacation.object;
     
     //self.countTipL.hidden=NO;
     JXMessageObject *msg = notifacation.object;
     NSNumber *bodyType = msg.type;
     
-    if (bodyType.intValue == kRoomRemind_DelMember || bodyType.intValue == kRoomRemind_AddMember) { //|| bodyType.intValue == 1 
-       
-       [self getFriend];
+    if (bodyType.intValue == kRoomRemind_DelMember || bodyType.intValue == kRoomRemind_AddMember) { //|| bodyType.intValue ==
+        [self getFriend];
     }
     
     if ([msg.fromUserId isEqualToString:@"10000"]) {
@@ -1432,7 +1434,7 @@
 
     //NSLog(@"群聊-单聊 消息 --- %@",[msg mj_keyValues]);
     
-    _array;
+    //_array;
      [self doRefresh:msg showNumber:showNumber];
     msg = nil;
 }
@@ -1468,7 +1470,7 @@
 
 -(void)newRequest:(NSNotification *)notifacation
 {
-     //[g_server listAttention:0 userId:MY_USER_ID toView:self];
+   
     JXFriendObject * friend = (JXFriendObject*) notifacation.object;
      
     if (friend.status.intValue==2) {
@@ -1599,13 +1601,11 @@
         newobj = nil;
     }
     
-    [self getTotalNewMsgCount];
     
-    if(msg.isMySend || !showNumber || [oldobj.user.offlineNoPushMsg intValue] == 1){
+    if(msg.isMySend || !showNumber || [oldobj.user.offlineNoPushMsg intValue] == 1)
         return;
-    }else{
-       
-    }
+    else
+   [self getTotalNewMsgCount];
       
 
      // [_table reloadData];
@@ -1653,9 +1653,9 @@
     
      
     
-//    [self getTotalNewMsgCount];
+    [self getTotalNewMsgCount];
     
-    //[p removeAllObjects];
+    [p removeAllObjects];
     
       
     
@@ -1718,12 +1718,10 @@
 {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
-    
-    NSLog(@"didselectRowAtIndexPath %@",[[[[self superclass] superclass] superclass] class]);
-
+ 
       [g_notify postNotificationName:@"hiddenTip" object:nil];
     
-    //[self doneBtnAction:self.doneBtn];
+      [self doneBtnAction:self.doneBtn];
     
     JXCell* cell = (JXCell*)[tableView cellForRowAtIndexPath:indexPath];
      
@@ -1823,13 +1821,10 @@
         
     }
     
-        
     NSArray *fromArr=[p.message.fromId componentsSeparatedByString:@"/"];
-    
-    if ([[fromArr lastObject] intValue]==1||[p.user.status intValue]!=2) {
-         
-        sendView.useInfoTempChat=11;
-    }
+     if ([p.message.type intValue]== kWCChatTypeChat &&[[fromArr lastObject] intValue]==1&[p.user.status intValue]!=2) {
+          sendView.useInfoTempChat=11;
+     }
    /* else{
         
         if (fromArr==nil) {
@@ -2400,7 +2395,7 @@
 - (void)chatViewDisappear:(NSNotification *)notif{
 //    [_table reloadData];
 //    [self getTotalNewMsgCount];
-   // [self getServerData];
+    [self getServerData];
 }
 
 -(void)logoutNotifi:(NSNotification *)notif{
@@ -2443,15 +2438,11 @@
         NSString *gradeIndexcc= dict[@"gradeIndex"];
         [[NSUserDefaults standardUserDefaults] setObject:gradeIndexcc forKey:@"gradeIndexcc"];
         [[NSUserDefaults standardUserDefaults] synchronize];
-             self.titleLb.text = [NSString stringWithFormat:@"我的即信号:%@",memberAcc];
-        
+             self.titleLb.text = [NSString stringWithFormat:@"我的即信号:%@",memberAcc]; 
         JXUserObject* user = [[JXUserObject alloc]init];
-        
-        // _titleLb.text=[NSString stringWithFormat:@"我的即信号%@",g_server.myself.userId];
-        
         [user getDataFromDict:dict];
         [user updateUserType];
-        [g_notify postNotificationName:kFriendListRefresh object:nil];
+        //[g_notify postNotificationName:kFriendListRefresh object:nil];
         
         //        JXUserInfoVC* vc = [JXUserInfoVC alloc];
         //        vc.user       = user;
@@ -2470,11 +2461,11 @@
             pv.dbFriends = (long)[_array count] - 1;
             pv.dataArray = array1;
             pv = [pv init];
-            
-            //访问DB获取好友消息列表
-          //  NSMutableArray* p = [[JXMessageObject sharedInstance] fetchRecentChat];
-          [self getServerData];
-          // [self getLastChatList];
+            //if (array1.count > 300) {
+            ///  [g_navigation pushViewController:pv animated:YES];
+            // }
+            //        [self.view addSubview:pv.view];
+            //访问DB获取好友消息列表 
  
         }
      
@@ -2630,6 +2621,7 @@
         //  [[JXXMPP sharedInstance].roomPool joinRoom:tempDict[@"jid"] title:tempDict[@"name"] lastDate:nil isNew:NO];
         // 如果最近一条信息接口没有获取到,就更新
      
+        
         /*-------------------*/
         for (int i = 0; i < [array1 count]; i++) {
             NSDictionary *dict=array1[i];
@@ -2655,15 +2647,11 @@
             user.isNeedVerify = [dict objectForKey:@"isNeedVerify"];
           /**/
             
-            if (![dict objectForKey:@"member"]) {
-                user.groupStatus = [NSNumber numberWithInt:1];
-                [user updateGroupInvalid];
-            }
-            if (![dict objectForKey:@"jid"]) {
-               
-                user.groupStatus = [NSNumber numberWithInt:2];
-                [user updateGroupInvalid];
+            if ([user.groupStatus intValue]==1||[user.groupStatus intValue]==2) {
+                 return;
             }
+            
+           // NSLog(@"user.groupStatus intValue = %d",[user.groupStatus intValue]);
            
             if([[dict allKeys] containsObject:@"groupType"]) {
                 NSDictionary *dictby=[dict objectForKey:@"groupType"];
@@ -2688,72 +2676,81 @@
                     [[JXXMPP sharedInstance].roomPool joinRoom:user.userId title:user.userNickname lastDate:nil isNew:YES];
                 }
                 
-                NSLog(@"%@",_room.roomId);
+                //NSLog(@"%@",_room.roomId);
                 
                 if (![user haveTheUser]){
                     [user insertRoom];
                     
                 }else {
                     [user updateUserNickname];
-                    //                              [user update];
+                    //    [user update];
                     // 只更新groupType
                     [user updateGroupType];
-                    [user updateRoomId];
+                    // [user updateRoomId];
                 }
             }
-             
+//                         if (![dict objectForKey:@"member"]) {
+//             //                user.groupStatus = [NSNumber numberWithInt:1];
+//                             //[user updateGroupInvalid];
+//                             return;
+//                         }
+//                         if (![dict objectForKey:@"jid"]) {
+//
+//             //                user.groupStatus = [NSNumber numberWithInt:2];
+//             //                [user updateGroupInvalid];
+//                               return;
+//                         }
             
             //                        [tempArray addObject:user];
         } //群头衔的设置
- 
-    
-        if ([[dict objectForKey:@"jid"] intValue] > 0 && !_isGetLastMsgList) {
-            // 获取最近一条记录
-            NSArray *arr = [[JXMessageObject sharedInstance] fetchMessageListWithUser:[dict objectForKey:@"jid"] byAllNum:0 pageCount:20 startTime:[NSDate dateWithTimeIntervalSince1970:0]];
-            
-            // 去除
-            JXMessageObject *lastMsg = arr.lastObject;
-            if (!lastMsg) {
-                lastMsg = arr.firstObject;
-            }
-            JXUserObject *user = [[JXUserObject sharedInstance] getUserById:dict[@"jid"]];
-            NSMutableDictionary *taskDic = [NSMutableDictionary dictionary];
-            [taskDic setObject:[dict objectForKey:@"jid"] forKey:@"userId"];
-            [taskDic setObject:[NSDate dateWithTimeIntervalSince1970:[dict[@"timeSend"] longLongValue]] forKey:@"lastTime"];
-            if (lastMsg) {
-                [taskDic setObject:lastMsg.timeSend forKey:@"startTime"];
-                if (lastMsg.messageId) {
-                    [taskDic setObject:lastMsg.messageId forKey:@"startMsgId"];
-                }
-            }
-            if (user.roomId) {
-                [taskDic setObject:user.roomId forKey:@"roomId"];
-            }
-            if ([g_myself.chatSyncTimeLen longLongValue] != -2) {
-                
-                [self createSynTask:taskDic];
-                
-                [_taskArray addObject:taskDic];
-            }
-            
-            long value = (long)([lastMsg.timeSend timeIntervalSince1970]*1000);
-            if (!lastMsg) {
-                // 没有最后一条消息的记录就拉取一周前的数据
-                value = (long)(g_server.lastOfflineTime*1000);//-(7*24*3600*1000);
-            }
-            
-            NSString *listStr = [NSString stringWithFormat:@"%@,%ld",dict[@"jid"],value];
-            [listArr addObject:listStr];
-        }
-        if (listArr.count > 0) {
-            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-                // 如果最近一条信息接口没有获取到,批量拉取消息
-                if (!_isGetLastMsgList) {
-                    [g_xmpp pullBatchGroupMessageReqWithJidListArray:listArr];
-                }
-            });
-        }
-        [_table reloadData];
+  
+           if ([[dict objectForKey:@"jid"] intValue] > 0 && !_isGetLastMsgList) {
+               // 获取最近一条记录
+               NSArray *arr = [[JXMessageObject sharedInstance] fetchMessageListWithUser:[dict objectForKey:@"jid"] byAllNum:0 pageCount:20 startTime:[NSDate dateWithTimeIntervalSince1970:0]];
+               
+               // 去除
+               JXMessageObject *lastMsg = arr.lastObject;
+               if (!lastMsg) {
+                   lastMsg = arr.firstObject;
+               }
+               JXUserObject *user = [[JXUserObject sharedInstance] getUserById:dict[@"jid"]];
+               NSMutableDictionary *taskDic = [NSMutableDictionary dictionary];
+               [taskDic setObject:[dict objectForKey:@"jid"] forKey:@"userId"];
+               [taskDic setObject:[NSDate dateWithTimeIntervalSince1970:[dict[@"timeSend"] longLongValue]] forKey:@"lastTime"];
+               if (lastMsg) {
+                   [taskDic setObject:lastMsg.timeSend forKey:@"startTime"];
+                   if (lastMsg.messageId) {
+                       [taskDic setObject:lastMsg.messageId forKey:@"startMsgId"];
+                   }
+               }
+               if (user.roomId) {
+                   [taskDic setObject:user.roomId forKey:@"roomId"];
+               }
+               if ([g_myself.chatSyncTimeLen longLongValue] != -2) {
+                   
+                   [self createSynTask:taskDic];
+                   
+                   [_taskArray addObject:taskDic];
+               }
+               
+               long value = (long)([lastMsg.timeSend timeIntervalSince1970]*1000);
+               if (!lastMsg) {
+                   // 没有最后一条消息的记录就拉取一周前的数据
+                   value = (long)(g_server.lastOfflineTime*1000);//-(7*24*3600*1000);
+               }
+               
+               NSString *listStr = [NSString stringWithFormat:@"%@,%ld",dict[@"jid"],value];
+               [listArr addObject:listStr];
+           }
+           if (listArr.count > 0) {
+               dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+                   // 如果最近一条信息接口没有获取到,批量拉取消息
+                   if (!_isGetLastMsgList) {
+                       [g_xmpp pullBatchGroupMessageReqWithJidListArray:listArr];
+                   }
+               });
+           }
+        
     }
     
 #pragma mark --- 获取最后个人消息列表 act_tigaseGetLastChatList
@@ -2762,82 +2759,24 @@
         [self.header endRefreshing];
         _isGetLastMsgList = YES;
         [g_default setBool:YES forKey:kISFirstGetLastChatList];
+   
         if ([g_myself.chatSyncTimeLen longLongValue] != -2) {
-            
-            if (array1.count==0) {
-            }else{
-                [[JXUserObject sharedInstance] updateUserLastChatList:array1];
+            [[JXUserObject sharedInstance] updateUserLastChatList:array1];
+            if (array1.count > 0) {
+                [self getServerData];
             }
-
-            [self getServerData];
-           
-        }
-        
-        //[array1 enumerateObjectsUsingBlock:^(NSDictionary  * obj, NSUInteger idx, BOOL * _Nonnull stop) {
-           //  NSLog(@"---- 个人信息列表 xxxxx%@ %@",[obj objectForKey:@"toUserName"] , [obj objectForKey:@"fromUserName"] );  }];
+         }
+        if ([g_myself.chatSyncTimeLen longLongValue]== -2) {
+               [_taskArray removeAllObjects];
+               // 获取到群组本地最后一条消息
+               [self getAllChatList];
+             
+         }
         
-        [_taskArray removeAllObjects];
-        NSMutableArray *listArr = [NSMutableArray array];
-        // 获取到群组本地最后一条消息
-        for (NSInteger i = 0; i < array1.count; i ++) {
-            NSDictionary *dict = array1[i];
-            if ([[dict objectForKey:@"isRoom"] intValue] == 1) {
-                // 获取最近一条记录
-                NSArray *arr = [[JXMessageObject sharedInstance] fetchMessageListWithUser:[dict objectForKey:@"jid"] byAllNum:0 pageCount:20 startTime:[NSDate dateWithTimeIntervalSince1970:0]];
-                // 去除
-                JXMessageObject *lastMsg = arr.lastObject;
-//                lastMsg.content
-//                for (NSInteger i = arr.count - 1; i > 0; i --) {
-//                    JXMessageObject *firstMsg = arr[i];
-//                    if ([firstMsg.type integerValue] != kWCMessageTypeRemind) {
-//                        lastMsg = firstMsg;
-//                        break;
-//                    }
-//                }
-                if (!lastMsg) {
-//                    continue;
-                    lastMsg = arr.firstObject;
-                }
-                JXUserObject *user = [[JXUserObject sharedInstance] getUserById:dict[@"jid"]];
-                NSMutableDictionary *taskDic = [NSMutableDictionary dictionary];
-                [taskDic setObject:[dict objectForKey:@"jid"] forKey:@"userId"];
-                [taskDic setObject:[NSDate dateWithTimeIntervalSince1970:[dict[@"timeSend"] longLongValue]] forKey:@"lastTime"];
-                if (lastMsg) {
-                    [taskDic setObject:lastMsg.timeSend forKey:@"startTime"];
-                    if (lastMsg.messageId) {
-                        [taskDic setObject:lastMsg.messageId forKey:@"startMsgId"];
-                    }
-                }
-                if (user.roomId) {
-                    [taskDic setObject:user.roomId forKey:@"roomId"];
-                }
-                if ([g_myself.chatSyncTimeLen longLongValue] != -2) {
-                    
-                    [self createSynTask:taskDic];
-                    
-                    [_taskArray addObject:taskDic];
-                }
-                
-                long value = (long)([lastMsg.timeSend timeIntervalSince1970]*1000);
-                if (!lastMsg) {
-                    // 没有最后一条消息的记录就拉取一周前的数据
-                    value = (long)(g_server.lastOfflineTime*1000);//-(7*24*3600*1000);
-                }
-                
-                NSString *listStr = [NSString stringWithFormat:@"%@,%ld",dict[@"jid"],value];
-                [listArr addObject:listStr];
-            }
-            
-        }
+          [_taskArray removeAllObjects];
+          [self act_tigaseGetLastChatListMsg:array1];
         
-        if (listArr.count > 0) {
-            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-                [g_xmpp pullBatchGroupMessageReqWithJidListArray:listArr];
-            });
-        }
-       // [self getAllChatList];
-      //  [self getFriend];
-      //  [g_xmpp.roomPool createAll];
+   
     }
     
     if ([aDownload.action isEqualToString:act_customerLinkList]) {
@@ -2937,7 +2876,67 @@
     }
 }
 
+// 获取到群组本地最后一条消息
+- (void)act_tigaseGetLastChatListMsg:(NSArray *)array1{
 
+    NSMutableArray *listArr = [NSMutableArray array];
+    for (NSInteger i = 0; i < array1.count; i ++) {
+            NSDictionary *dict = array1[i];
+            if ([[dict objectForKey:@"isRoom"] intValue] == 1) {
+                // 获取最近一条记录
+                NSArray *arr = [[JXMessageObject sharedInstance] fetchMessageListWithUser:[dict objectForKey:@"jid"] byAllNum:0 pageCount:20 startTime:[NSDate dateWithTimeIntervalSince1970:0]];
+                JXMessageObject *lastMsg = arr.lastObject;
+                //                for (NSInteger i = arr.count - 1; i > 0; i --) {
+                //                    JXMessageObject *firstMsg = arr[i];
+                //                    if ([firstMsg.type integerValue] != kWCMessageTypeRemind) {
+                //                        lastMsg = firstMsg;
+                //                        break;
+                //                    }
+                //                }
+                if (!lastMsg) {
+                    //                    continue;
+                    lastMsg = arr.firstObject;
+                }
+                JXUserObject *user = [[JXUserObject sharedInstance] getUserById:dict[@"jid"]];
+                NSMutableDictionary *taskDic = [NSMutableDictionary dictionary];
+                [taskDic setObject:[dict objectForKey:@"jid"] forKey:@"userId"];
+                [taskDic setObject:[NSDate dateWithTimeIntervalSince1970:[dict[@"timeSend"] longLongValue]] forKey:@"lastTime"];
+                if (lastMsg) {
+                    [taskDic setObject:lastMsg.timeSend forKey:@"startTime"];
+                    if (lastMsg.messageId) {
+                        [taskDic setObject:lastMsg.messageId forKey:@"startMsgId"];
+                    }
+                }
+                if (user.roomId) {
+                    [taskDic setObject:user.roomId forKey:@"roomId"];
+                }
+                if ([g_myself.chatSyncTimeLen longLongValue] != -2) {
+                    
+                    [self createSynTask:taskDic];
+                    
+                    [_taskArray addObject:taskDic];
+                }
+                
+                long value = (long)([lastMsg.timeSend timeIntervalSince1970]*1000);
+                if (!lastMsg) {
+                    value = (long)(g_server.lastOfflineTime*1000);
+                }
+                
+                NSString *listStr = [NSString stringWithFormat:@"%@,%ld",dict[@"jid"],value];
+                [listArr addObject:listStr];
+            }
+            
+        }
+        
+        if (listArr.count > 0) {
+            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+                [g_xmpp pullBatchGroupMessageReqWithJidListArray:listArr];
+            });
+        }
+        
+    
+    
+}
 -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
     [_wait hide];
     
@@ -2945,14 +2944,14 @@
         _isGetLastMsgList = NO;
         [self.header endRefreshing];
         [self getAllChatList];
-        [self getAllChatList];
         //[self getFriend];
-//        [g_xmpp.roomPool createAll];
+       // [g_xmpp.roomPool createAll];
     }
-        if ([aDownload.action isEqualToString:act_getGroupOneType]) {
-            [_table reloadData];
-        }
- 
+     if ([aDownload.action isEqualToString:act_getGroupOneType]) {
+            
+      
+     }
+      
 //    if (![aDownload.action isEqualToString:act_userChangeMsgNum] && ![aDownload.action isEqualToString:act_tigaseGetLastChatList]) {
 //        return show_error;
 //    }
@@ -2969,12 +2968,11 @@
     */
     if ([aDownload.action isEqualToString:act_tigaseGetLastChatList]) {
          
-        [self getAllChatList];
         return show_error;
     }
     if ([aDownload.action isEqualToString:act_roomListHis]) {
-         
-        [g_server listHisRoom:_page pageSize:1000 toView:self];
+
+         [self getAllChatList];
       
     }
     return hide_error;
@@ -3083,9 +3081,7 @@
     }
 
     if([p.type intValue] == kRoomRemind_AddMember){
-        
-//        [self getAllChatList];
-        
+  
        if([p.toUserId isEqualToString:MY_USER_ID] || IS_OTHER_DEVICE(p.toUserId)){
             if(![g_xmpp.roomPool getRoom:p.objectId]){
                 JXUserObject* user = [[JXUserObject alloc]init];
@@ -3554,3 +3550,10 @@
  
 
 @end
+
+
+
+
+
+
+

+ 3 - 1
shiku_im/ClassesNew/classes/myVc/Vc/JXMySettingVc.m

@@ -129,7 +129,7 @@
                  [g_default synchronize];
            }
     
-    return;
+  return;
    // [g_server changeFriendSetting:nil allowAtt:nil allowGreet:nil key:@"isVibration" value:g_myself.isVibration toView:self];
     // 本地
     [g_default setBool:YES forKey:kLongComePushIsFirstSetUp];
@@ -325,6 +325,8 @@
 //            [g_default setObject:nil forKey:kMY_USER_TOKEN];
 //            g_server.access_token = nil;
             
+            [g_default setObject:@"logoutUser" forKey:@"logoutUser"];
+            [g_default synchronize];
             
             self.reLogin = NO;
             [self relogin];

+ 8 - 5
shiku_im/cell/ChatCell/JXMessageCell.m

@@ -6,7 +6,6 @@
 //  Copyright © 2016年 Reese. All rights reserved.
 //
 
-static CGFloat kuangkkHHH;
 
 #import "JXMessageCell.h"
 #import "emojiViewController.h"
@@ -21,7 +20,7 @@ static CGFloat kuangkkHHH;
 - (void)awakeFromNib {
     [super awakeFromNib];
 //    self.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, 55);
-    kuangkkHHH=0;
+   
 }
 
 - (void)dealloc {
@@ -172,10 +171,12 @@ static CGFloat kuangkkHHH;
     }
     [self creatBubbleBg];
 }
+
+static CGFloat kuangkkHHH;
 -(void)creatBubbleBg{
     CGSize textSize = _messageConent.frame.size;
        int n =  textSize.width;
- if ([_messageConent.text containsString:@"--【"]) {
+ if ([_messageConent.text containsString:@"----------【"]) {
       kuangkkHHH=65.0;
   } //聊天长度反正就是算错了,强行改
     int inset = 3;
@@ -232,8 +233,10 @@ static CGFloat kuangkkHHH;
     if ([msg.chatMsgHeight floatValue] > 1) {
         
         if ([msg.content containsString:@"--------------------------------------------------"]) {
-             kuangkkHHH=65.0;
-         }
+          
+            kuangkkHHH=65.0;
+        
+        }
          
         CGFloat chatMsgHeight = [msg.chatMsgHeight floatValue]+kuangkkHHH;
              

+ 19 - 11
shiku_im/controller/JXChatViewController.mm

@@ -682,7 +682,7 @@
 //    [g_server getFaceList:@"0" View:self];
     [g_server getFaceListByGradeToView:self];
 //    JXUserObject *user = [[JXUserObject sharedInstance] getUserById:];
-    [g_server roomMemberGetMemberListByPageWithRoomId:self.roomId joinTime:0 toView:self];
+    [g_server roomMemberGetMemberListByPageWithRoomId:roomId joinTime:0 toView:self];
     [g_server getbubbleFontByUserId:nil ToView:self];
 }
 
@@ -901,7 +901,7 @@
 {
     [super viewDidLoad];
     [self getEmojsData];
-    [g_notify addObserver:self selector:@selector(getEmojsData) name:kEmojiRefresh object:nil];
+   // [g_notify addObserver:self selector:@selector(getEmojsData) name:kEmojiRefresh object:nil];
  
 
    [g_notify postNotificationName:@"tabbarFrame" object:nil userInfo:@{@"title":@"0"}];
@@ -1668,7 +1668,8 @@ NSMutableArray* temp = [[NSMutableArray alloc]init];
         btn1.hidden = YES;
     }
     
-    /*
+    /**/
+    
     if (self.isGroupMessages) {
         self.isShowHeaderPull = NO;
         UIView *friendNamesView = [[UIView alloc] initWithFrame:CGRectMake(0, self.tableView.frame.origin.y, JX_SCREEN_WIDTH, 0)];
@@ -1720,7 +1721,6 @@ NSMutableArray* temp = [[NSMutableArray alloc]init];
         friendNamesView.frame = CGRectMake(friendNamesView.frame.origin.x, friendNamesView.frame.origin.y, friendNamesView.frame.size.width, scrollView.frame.origin.y + scrollView.frame.size.height + 15);
         NSLog(@"%@", friendNamesView);
     }
-    */
     
      if (self.isGroupMessages) {
             self.isShowHeaderPull = NO;
@@ -7540,13 +7540,18 @@ NSMutableArray* temp = [[NSMutableArray alloc]init];
 //        self.user.joinTime = [NSDate dateWithTimeIntervalSince1970:[lastDict[@"createTime"] longValue]];
 //        [self.user updateJoinTime];
 //          _dataArrGetGroundPersonArr=[array1 mutableCopy];
-         
+
+        // memberData* optionChat = [[memberData alloc] init];
+       // [optionChat checkTableChatViewCreatedInDb:_room.roomId];
+        
         for (NSDictionary *member in array1) {
             memberData* option = [[memberData alloc] init];
              [option getDataFromDict:member];
-             option.roomId = self.room.roomId;
-             [option insertChatView];
+            option.roomId = _room.roomId;
+             [option insert];
         }
+        
+        
 //        [self refresh:nil];
     }
     if ([aDownload.action isEqualToString:act_roomActivityRecord]) {
@@ -8232,21 +8237,24 @@ NSMutableArray* temp = [[NSMutableArray alloc]init];
                 self.room.curCount = [[dict objectForKey:@"userSize"] intValue];
                 self.room.maxCount = [[dict objectForKey:@"maxUserSize"] intValue];
 
+                /*
                 if (self.chatRoom.roomJid.length > 0) {
                     NSString *noticeStr = [(NSDictionary *)[dict objectForKey:@"notice"] objectForKey:@"text"];
                     NSString *noticeTime = [(NSDictionary *)[dict objectForKey:@"notice"] objectForKey:@"time"];
-                    [self setupNoticeWithContent:noticeStr time:noticeTime];
+                   [self setupNoticeWithContent:noticeStr time:noticeTime];
                     if(noticeStr){
-//                        [self showLatestBroadcastTitle:@"最新公告" message:noticeStr];
+                       // [self showLatestBroadcastTitle:@"最新公告" message:noticeStr];
                     }
                 }
+                 */
                 
+                // [[[memberData alloc] init] checkTableChatViewCreatedInDb:self.roomId];
                 // 保存自己
                 NSDictionary* p = [dict objectForKey:@"member"];
                 memberData* option = [[memberData alloc] init];
                 [option getDataFromDict:p];
-                option.roomId = self.roomId;
-               [option insert];
+                option.roomId = roomId;
+                [option insert];
                 
                 // 保存群主和管理员
                 NSMutableArray *memb = [NSMutableArray array];

+ 14 - 10
shiku_im/controller/气泡/JLBubbleManager.m

@@ -72,25 +72,29 @@ static JLBubbleManager *_manager;
     [self checkGradeTableCreatedInDb:db];
     // self.gradeIndex, self.avatarUrl, self.id, self.name, self.rankUrl, self.grade
     NSString* sql = [NSString stringWithFormat:@"update grade set avatarUrl=?,name=?,rankUrl=?,grade=? where gradeIndex=?"];
-    BOOL worked = [db executeUpdate:sql,self.avatarUrl, self.name, self.rankUrl, self.grade,self.gradeIndex];
+    BOOL worked = [db executeUpdate:sql,_avatarUrl,_name, _rankUrl, _grade,_gradeIndex];
+    
+    if (!worked) {
+     
+       NSLog(@"update grade set avatarUrl=?,name=?,rankUrl=? 。。 error = %@", [db lastErrorMessage]);
+    }
     return worked;
 }
 
 - (BOOL)insertGradeTable {
     FMDatabase* db = [self openResouceDb];
     [self checkGradeTableCreatedInDb:db];
+ /// 修改了修改了
+//    NSString* sql= [NSString stringWithFormat:@"select * from grade where gradeIndex=%@",self.gradeIndex];
+//    FMResultSet *rs=[db executeQuery:sql];
+//    while ([rs next]) {
+//        //不重复保存
+//        return NO;
+//    }
      
-//
-//       NSString* sql= [NSString stringWithFormat:@"select gradeIndex from grade where gradeIndex=%@",self.gradeIndex];
-//          FMResultSet *rs=[db executeQuery:sql];
-//
-//          while ([rs next]) {
-//              //不重复保存
-//              return NO;
-//          }
     
      NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO 'grade' ('gradeIndex', 'avatarUrl', 'name', 'rankUrl', 'grade') VALUES (?,?,?,?,?);"];
-    BOOL worked = [db executeUpdate:insertStr,self.gradeIndex, self.avatarUrl, self.name, self.rankUrl, self.grade];
+    BOOL worked = [db executeUpdate:insertStr,_gradeIndex, self.avatarUrl, self.name, self.rankUrl, _grade];
      
     if (!worked) {
        worked = [self updateGradeTable];

+ 12 - 3
shiku_im/data/roomData.h

@@ -84,9 +84,14 @@
 
 @end
 
-@interface memberData : NSObject{
-    
-}
+@interface memberData : NSObject{ }
+/*
+@property(nonatomic,copy) NSString *openTopChatTime;
+@property(nonatomic,copy) NSString *integralNumber;
+@property(nonatomic,copy) NSString *modifyTime;
+@property(nonatomic,copy) NSString *loginTime;
+*/
+
 @property(nonatomic,assign) NSTimeInterval createTime;//建立时间
 @property(nonatomic,assign) NSTimeInterval updateTime;//修改时间
 @property(nonatomic,assign) NSTimeInterval active;//最后一次互动时间
@@ -122,6 +127,10 @@
 
 -(BOOL)checkTableCreatedInDb:(NSString *)queryRoomId;
 
+
+-(BOOL)checkTableChatViewCreatedInDb:(NSString *)queryRoomId;
+
+
 +(NSArray <memberData *>*)getSelfMember:(NSString *)queryRoomId;
 
 -(BOOL)insert;

+ 77 - 24
shiku_im/data/roomData.m

@@ -339,6 +339,17 @@
     return worked;
 }
 
+-(BOOL)checkTableChatViewCreatedInDb:(NSString *)queryRoomId{
+    NSString* myUserId = MY_USER_ID;
+     FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
+    
+     NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' ('userId' INTEGER PRIMARY KEY NOT NULL  UNIQUE , 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR)",queryRoomId];
+    // NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' (id integer PRIMARY KEY AUTOINCREMENT,'userId' INTEGER PRIMARY KEY , 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR)",queryRoomId];
+     
+     BOOL worked = [db executeUpdate:createStr];
+     return worked;
+     
+}
 - (void)insertArray:(NSArray *)dataArray withTransaction:(BOOL)useTransaction{
     if (!self.userId) {
         return;
@@ -351,7 +362,16 @@
         BOOL isRollBack = NO;
         @try {
             for (NSInteger i = 0; i < dataArray.count; i++) {
+            //修改了增加了 查询
                 memberData *memberData = dataArray[i];
+//                NSString * sqlSelect = [NSString stringWithFormat:@"select * from member_%@  where userId = %ld",memberData.roomId,memberData.userId];
+//                FMResultSet *rsSelect =  [db executeQuery:sqlSelect];
+//                
+//                if (rsSelect.next) {
+//                    
+//                    return;
+//                }
+                
                 NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO member_%@ (roomId,userId,userName,cardName,role,createTime,remarkName) VALUES (?,?,?,?,?,?,?)",memberData.roomId];
                 BOOL worked = [db executeUpdate:insertStr,memberData.roomId,[NSNumber numberWithLong:memberData.userId],memberData.userNickName,memberData.userNickName,memberData.role,[NSNumber numberWithLongLong:memberData.createTime],memberData.lordRemarkName];
                 if (!worked) {
@@ -506,6 +526,20 @@
     
 }
 
+#pragma mark -数据库
+-(BOOL)checkTableChatViewCreatedInDb:(NSString *)queryRoomId{
+    
+    NSString* myUserId = MY_USER_ID;
+      FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
+     NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' ('userId' INTEGER PRIMARY KEY NOT NULL  UNIQUE , 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER,'onlinestate' VARCHAR, 'grade' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR, 'bubbleFontId' VARCHAR, 'gradeIndex' VARCHAR)",queryRoomId];
+      
+    
+    //  NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' (id integer PRIMARY KEY AUTOINCREMENT,'userId', 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER,'onlinestate' VARCHAR, 'grade' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR, 'bubbleFontId' VARCHAR, 'gradeIndex' VARCHAR)",queryRoomId];
+      
+      BOOL worked = [db executeUpdate:createStr];
+      return worked;
+    
+}
 
 #pragma mark -数据库
 -(BOOL)checkTableCreatedInDb:(NSString *)queryRoomId{
@@ -513,8 +547,8 @@
     FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
    NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' ('userId' INTEGER PRIMARY KEY NOT NULL  UNIQUE , 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER,'onlinestate' VARCHAR, 'grade' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR, 'bubbleFontId' VARCHAR, 'gradeIndex' VARCHAR)",queryRoomId];
     
-  
-  //  NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' (id integer PRIMARY KEY AUTOINCREMENT,'userId', 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER,'onlinestate' VARCHAR, 'grade' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR, 'bubbleFontId' VARCHAR, 'gradeIndex' VARCHAR)",queryRoomId];
+    
+ //  NSString *createStr=[NSString stringWithFormat:@"CREATE  TABLE IF NOT EXISTS 'member_%@' (, 'roomId' VARCHAR,'userId', 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER,'onlinestate' VARCHAR, 'grade' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR, 'bubbleFontId' VARCHAR, 'gradeIndex' VARCHAR)",queryRoomId];
     
     BOOL worked = [db executeUpdate:createStr];
     return worked;
@@ -525,32 +559,58 @@
     return [[[memberData alloc] init] doFetch:sql roomId:queryRoomId];
 }
 
+    /*2.创表
+     NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"student.sqlite"];
+     // 1.创建数据库队列
+     FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:filename];
+    [queue inDatabase:^(FMDatabase *db) {
+        NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO member_%@ (roomId,userId,userName,cardName,role,onlinestate,grade,createTime,remarkName,bubbleFontId,gradeIndex) VALUES (?,?,?,?,?,?,?,?,?,?,?)",_roomId];
+        
+        
+        
+        BOOL result = [db executeUpdate:@"CREATE  TABLE IF NOT EXISTS 'member_222%@' ('userId' INTEGER PRIMARY KEY NOT NULL  UNIQUE , 'roomId' VARCHAR, 'userName' VARCHAR, 'cardName' VARCHAR, 'role' INTEGER,'onlinestate' VARCHAR, 'grade' INTEGER, 'createTime' VARCHAR, 'remarkName' VARCHAR, 'bubbleFontId' VARCHAR, 'gradeIndex' VARCHAR)",_roomId];
+        
+        if (result) {
+            NSLog(@"创表成功");
+        } else {
+            NSLog(@"创表失败");
+        }
+    }];
+
+[queue inDatabase:^(FMDatabase *db) {
+      for (int i = 0; i<440; i++) {
+          NSString *name = [NSString stringWithFormat:@"rose-%d", arc4random() % 1000];
+          NSNumber *age = @(arc4random() % 100 + 1);
+          NSNumber *sex = @(33);
+          NSString *heightUser = @"身高";
+          NSString *weightUser = @"体重";
+          NSString *pangUser = @"胖胖";
+          [db executeUpdate:@"insert into t_student (name, age,sex,heightUser,weightUser,pangUser) values (?, ?,?,?,?,?);", name, age,sex,heightUser,weightUser,pangUser];
+      }
+  }];
+    */
 -(BOOL)insertChatView{
     if (!self.userId) {
         return NO;
     }
     NSString* myUserId = MY_USER_ID;
     
+ 
     FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
-//    NSString* sql= [NSString stringWithFormat:@"select userId from member_%@ where userId=%ld",self.roomId,userId];
-//    FMResultSet *rs=[db executeQuery:sql,[NSNumber numberWithLong:self.userId]];
-//    while ([rs next]) {
-//        //不重复保存
-//        return NO;
-//    }
-    //BOOL temp =
-    [self checkTableCreatedInDb:self.roomId];
-    
-   // NSLog(@"_roomId:::1 %@ --%ld--%@---currentThread%@",_roomId,userId, temp == YES?@"YES":@"NO", [NSThread currentThread]);
-    
+ // 0.获得沙盒中的数据库文件名
+     
     if([self.role integerValue] == 0){
         self.role = [NSNumber numberWithInteger:3];
     }
-  
+
+  //'userId' INTEGER PRIMARY KEY NOT NULL  UNIQUE , 'roomId' VARCHAR,
     NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO member_%@ (roomId,userId,userName,cardName,role,onlinestate,grade,createTime,remarkName,bubbleFontId,gradeIndex) VALUES (?,?,?,?,?,?,?,?,?,?,?)",_roomId];
-    BOOL worked = [db executeUpdate:insertStr,_roomId,[NSNumber numberWithLong:userId],self.userNickName,self.userNickName,self.role,self.onlinestate,self.grade,[NSNumber numberWithLongLong:self.createTime],self.lordRemarkName,self.bubbleFontId,self.gradeIndex];
+    BOOL worked = [db executeUpdate:insertStr,_roomId,[NSNumber numberWithLong:userId],userNickName,userNickName,self.role,self.onlinestate,self.grade,[NSNumber numberWithLongLong:self.createTime],self.lordRemarkName,self.bubbleFontId,self.gradeIndex];
+   
+     
+    
     if (!worked) {
-        [self update];
+       [self update];
     }
     db = nil;
     return worked;
@@ -565,18 +625,11 @@
     FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
     [self checkTableCreatedInDb:self.roomId];
     
-    //NSLog(@"_roomId::: 0 %@ --%ld",_roomId,userId);
-//    NSString* sql= [NSString stringWithFormat:@"select userId from member_%@ where userId=%ld",self.roomId,userId];// or grade=%@,self.gradeIndex];
-//    FMResultSet *rs=[db executeQuery:sql,[NSNumber numberWithLong:self.userId]];
-//    while ([rs next]) {
-//        //不重复保存
-//        return NO;
-//    }
+ 
     if([self.role integerValue] == 0){
         self.role = [NSNumber numberWithInteger:3];
     }
 
-  
     NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO member_%@ (roomId,userId,userName,cardName,role,onlinestate,grade,createTime,remarkName,bubbleFontId,gradeIndex) VALUES (?,?,?,?,?,?,?,?,?,?,?)",_roomId];
     BOOL worked = [db executeUpdate:insertStr,_roomId,[NSNumber numberWithLong:userId],self.userNickName,self.userNickName,self.role,self.onlinestate,self.grade,[NSNumber numberWithLongLong:self.createTime],self.lordRemarkName,self.bubbleFontId,self.gradeIndex];
     if (!worked) {

+ 3 - 2
shiku_im/emojl/JXEmoji.m

@@ -187,7 +187,8 @@ static NSMutableArray *shortNameArrayE;
     
 }
 */
-
+ 
+   
 //判断是否含有表情
 - (BOOL)isContainsEmoji:(NSString *)string {
     __block BOOL isEomji = NO;
@@ -655,7 +656,7 @@ static NSMutableArray *shortNameArrayE;
 - (void)setText:(NSString *)text {
     int faceIndex = 0;
     [data removeAllObjects];
-    
+    text=[ text stringByReplacingOccurrencesOfString:@"\r" withString:@""];
     [self getImageRange:text array:data];
     NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] init];
     for (int i=0;i<[data count];i++) {

+ 9 - 1
shiku_im/model/JXLabelObject.m

@@ -228,6 +228,11 @@ static JXLabelObject *sharedLabel;
     [self checkGradeTableCreatedInDb:db];
     NSString* sql = [NSString stringWithFormat:@"update grade set data=? where gradeIndex=?"];
     BOOL worked = [db executeUpdate:sql,self.data,self.gradeIndex];
+    
+    if (!worked) {
+
+         NSLog(@"update grade set data=? error = %@", [db lastErrorMessage]);
+    }
     return worked;
 }
 
@@ -240,9 +245,12 @@ static JXLabelObject *sharedLabel;
      BOOL worked = [db executeUpdate:insertStr,self.gradeIndex,self.data];
     
     if (!worked) {
+        //在这打印bai错误日志
+        NSLog(@"INSERT INTO 'grade' error = %@", [db lastErrorMessage]);
+        
         [self updateGradeTable];
     }
-    
+   
     return worked;
 }
 

+ 1 - 1
shiku_im/model/JXMessageObject.m

@@ -1872,7 +1872,7 @@ static JXMessageObject *shared;
         
 //        NSLog(@"%@", self.toUserId);
         JXUserObject *user;
-        if ([self.toUserId isEqualToString:MY_USER_ID]) {
+        if ([toUserId isEqualToString:MY_USER_ID]) {
             // 单聊
            user = [[JXUserObject sharedInstance] getUserById: self.fromUserId];
         }else {

File diff suppressed because it is too large
+ 21 - 4
shiku_im/model/JXUserBaseObj.m


+ 3 - 3
shiku_im/model/JXUserObject.m

@@ -383,13 +383,13 @@ static JXUserObject *sharedUser;
     while ([rs next]) {
         JXUserObject *user=[[JXUserObject alloc] init];
         [super userFromDataset:user rs:rs];
-//        [self userFromDataset:rs];
+        //[self userFromDataset:rs];
         [resultArr addObject:user];
-//        [user release];
+ 
     }
     [rs close];
     if([resultArr count]==0){
-//        [resultArr release];
+ 
         resultArr = nil;
     }
     return resultArr;

+ 3 - 0
shiku_im/model/JXXMPP.h

@@ -170,3 +170,6 @@ enum kWCCommandType {
 
 
 @end
+
+
+ 

+ 18 - 16
shiku_im/model/JXXMPP.m

@@ -14,6 +14,8 @@
 #import "SBJsonWriter.h"
 #import "AppDelegate.h"
 #import "FMDatabase.h"
+#import "FMDatabaseQueue.h"
+#import "FMDatabasePool.h"
 #import "emojiViewController.h"
 #import "JXRoomPool.h"
 #import "JXMainViewController.h"
@@ -335,10 +337,8 @@ static int i=0;
         [self receiptTimerAction:nil];
     }
     
-    //NSLog(@"msg.fromUserName %@ == %@",msg.fromUserName,msg.toUserName);
     
     // [self sendMessageReceipt:msg];
-    
     // 如收到自己发的群聊消息 判定为群聊回执
     if (msg.chatType == 2 && [msg.fromId containsString:[NSString stringWithFormat:@"%@/%@",g_myself.userId,SameResource]]) {
         
@@ -518,18 +518,18 @@ static int i=0;
             }
              
             if ([msg.fromUserName isKindOfClass:[NSString class]]) {
-                
+                //||[tempMsg isEqualToString:@"android"]||[tempMsg isEqualToString:@"pc"]||[tempMsg isEqualToString:@"mac"]
                 NSArray *fromIdArr=[msg.fromId componentsSeparatedByString:@"/"];
                 NSString *tempMsg=[fromIdArr lastObject];
+                if ([tempMsg isEqualToString:@"1"] && type == kWCChatTypeChat) {
+
+                         [self saveFromUser:msg];
+                  }
+                if(([msg.fromUserName length]>0 && type == kWCChatTypeChat && ![msg.fromUserId isEqualToString:MY_USER_ID])){//保存陌生人信息:
+
+                      [self saveFromUser:msg];
                     
-                if(([msg.fromUserName length]>0 && type == kWCChatTypeChat && ![msg.fromUserId isEqualToString:MY_USER_ID])||[tempMsg isEqualToString:@"1"]||[tempMsg isEqualToString:@"android"]||[tempMsg isEqualToString:@"pc"]||[tempMsg isEqualToString:@"mac"]){//保存陌生人信息:
-                  
-                    
-                    [self saveFromUser:msg];
-                
-                
-                
-                
+                 
                 }
             }
             
@@ -1002,6 +1002,9 @@ static int i=0;
     }
     
 }
+ 
+
+
 
 - (FMDatabase*)openUserDb:(NSString*)userId{
     userId = [userId uppercaseString];
@@ -1062,10 +1065,9 @@ static int i=0;
     JXUserObject *user=[[JXUserObject alloc]init];
     user.userId = msg.fromUserId;
     NSArray *fromIdArr=[msg.fromId componentsSeparatedByString:@"/"];
-       int type = msg.chatType;
+       
     NSString *tempMsg=[fromIdArr lastObject];
-    if ([tempMsg isEqualToString:@"1"]||[tempMsg isEqualToString:@"android"]||[tempMsg isEqualToString:@"pc"]||[tempMsg isEqualToString:@"mac"]||[tempMsg isEqualToString:@"Server"]||
- ([msg.fromUserName length]>0 && type == kWCChatTypeChat && ![msg.fromUserId isEqualToString:MY_USER_ID])) {
+    if ([tempMsg isEqualToString:@"1"] && msg.chatType==1) {
         user.userNickname = msg.fromUserName;
         user.userDescription = msg.fromUserName;
         [user insert];
@@ -1075,7 +1077,7 @@ static int i=0;
         user.userDescription = msg.fromUserName;
         [user insert];
     }
-//    [user release];
+ 
 }
 #pragma mark-----阅后即焚删除本地数据
 - (void)readDelete:(NSNotification *)notification{
@@ -1096,7 +1098,7 @@ static int i=0;
     //    }
     
     if (g_xmpp.lastMsgTime > 0.7) {
-       // NSLog(@"刷新聊天记录:%f",g_xmpp.lastMsgTime);
+       //NSLog(@"刷新聊天记录:%f",g_xmpp.lastMsgTime);
         [[NSOperationQueue mainQueue] addOperationWithBlock:^{
             
             [g_notify postNotificationName:kXMPPAllMsgNotifaction object:nil userInfo:nil];

+ 6 - 1
shiku_im/network/JXServer.h

@@ -1221,8 +1221,13 @@ verifyCode:(NSString *)verifyCode
 @property(assign) BOOL isLoginWeibo;
 @property(assign) BOOL isLogin;
 @property(assign) BOOL isManualLogin;       // 是否是手动登录
-@property(assign) NSTimeInterval lastOfflineTime;
+@property(assign,nonatomic) NSTimeInterval lastOfflineTime;
 
+//@property(copy,nonatomic) NSString *loginOfflineTime; //登陆时间就是离线时间 里面字段可以获取
+
+@property(assign,nonatomic) NSTimeInterval  loginOfflineTime;
+
+@property(assign,nonatomic) NSTimeInterval  loginTime;
 @property(nonatomic,strong) NSString* openId;
 @property (nonatomic, assign) NSInteger thirdType;
 

+ 18 - 8
shiku_im/network/JXServer.m

@@ -45,8 +45,7 @@
 @synthesize user_type;
 @synthesize myself;
 @synthesize access_token;
-@synthesize isLogin;
-@synthesize lastOfflineTime;
+@synthesize isLogin; 
 
 -(id)init{
     self = [super init];
@@ -203,13 +202,13 @@
             [self doError:task dict:resultObject resultMsg:string errorMsg:error];
         }else{
 //            NSLog(@"%@成功:%@",task.action,string);
-//|| [task.action isEqualToString:act_Config]
-            if ([task.action isEqualToString:act_getCurrentTime]) {
+//||
+            if ([task.action isEqualToString:act_Config]||[task.action isEqualToString:act_getCurrentTime]) {
                 // 获取服务器时间,然后对比当前客户端时间
                 // 两个接口调用,防止单个接口出现空值
                 if ([[(NSDictionary *)resultObject objectForKey:@"currentTime"] doubleValue] > 0) {
                     self.serverCurrentTime = [[(NSDictionary *)resultObject objectForKey:@"currentTime"] doubleValue];
-                    NSTimeInterval plusTime = self.serverCurrentTime;//-([[NSDate date] timeIntervalSince1970] *1000);
+                    NSTimeInterval plusTime = self.serverCurrentTime-([[NSDate date] timeIntervalSince1970] *1000);
                     //NSTimeInterval plusTime = self.serverCurrentTime;
                     
                    // [g_App showAlert:[NSString stringWithFormat:@"%f",plusTime]];
@@ -986,6 +985,9 @@
 }
 
 -(void)doLoginOK:(NSDictionary*)dict user:(JXUserObject*)user{
+     
+
+    NSLog(@"登陆时间: %@",dict);
     
     g_securityUtil = [[JXSecurityUtil alloc] init];
 #ifdef IS_MsgEncrypt
@@ -1255,6 +1257,13 @@
             self.lastOfflineTime = lastOfflineTime;
         }else {
             self.lastOfflineTime = [[(NSDictionary *)[dict objectForKey:@"login"] objectForKey:@"offlineTime"] longLongValue];
+            
+            self.loginOfflineTime = [[(NSDictionary *)[dict objectForKey:@"login"] objectForKey:@"offlineTime"] longLongValue];
+            
+            self.loginTime = [[(NSDictionary *)[dict objectForKey:@"login"] objectForKey:@"loginTime"] longLongValue];
+            
+            NSLog(@"loginOfflineTime:%f",self.loginOfflineTime);
+            
         }
         //        NSDate * da = [NSDate dateWithTimeIntervalSince1970:self.lastOfflineTime];
         //        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
@@ -1667,10 +1676,11 @@
 //  获取首页的最近一条的聊天记录列表
 - (void)getLastChatListStartTime:(NSNumber *)startTime toView:(id)toView {
     JXConnection* p = [self addTask:act_tigaseGetLastChatList param:nil toView:toView];
-    NSTimeInterval endTime = [[NSDate date] timeIntervalSince1970] * 1000;
+    NSTimeInterval endTime =[[NSDate date] timeIntervalSince1970] * 1000;
+     
     [p setPostValue:startTime forKey:@"startTime"];
-//    [p setPostValue:[NSString stringWithFormat:@"%f",endTime] forKey:@"endTime"];
-//     [p setPostValue:[NSNumber numberWithLong:endTime] forKey:@"endTime"];
+   // [p setPostValue:[NSString stringWithFormat:@"%f",endTime] forKey:@"endTime"];
+ // [p setPostValue:[NSNumber numberWithLong:endTime] forKey:@"endTime"];
     [p setPostValue:access_token forKey:@"access_token"];
     [p go];
 }

+ 1 - 3
shiku_im/shiku_im-Info.plist

@@ -67,7 +67,7 @@
 		<dict/>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>20200730</string>
+	<string>20200801</string>
 	<key>LSApplicationCategoryType</key>
 	<string></string>
 	<key>LSApplicationQueriesSchemes</key>
@@ -123,8 +123,6 @@
 	<string>允许应用程序在您使用该应用程序时访问您的日历吗?</string>
 	<key>NSCameraUsageDescription</key>
 	<string>允许应用程序在您使用该应用程序时访问您的相机吗?</string>
-	<key>NSContactsUsageDescription</key>
-	<string>允许上传通讯录数据到服务器,以便发现共同使用此APP的好友</string>
 	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
 	<string></string>
 	<key>NSLocationAlwaysUsageDescription</key>

+ 4 - 0
shiku_im/shiku_im-Prefix.pch

@@ -143,6 +143,10 @@
 #define kLastOfflineTime  [NSString stringWithFormat:@"lastOfflineTime_%@",g_myself.userId]   // 离线时间
 #define kTHIRD_LOGIN_AUTO   @"thirdLoginAuto"   // 当前是否是第三方登录
 
+// 登陆接口返回的时间
+#define kLastOfflineLoginTime  [NSString stringWithFormat:@"kLastOfflineLoginTime_%@",g_myself.userId]
+
+
 #define kXMPPLivePraiseRemindNotification @"kXMPPLivePraiseRemindNotification"  // 直播爱心
 #define kXMPPLiveGiftRemindNotification @"kXMPPLiveGiftRemindNotification"  // 直播礼物
 #define kXMPPLiveBarrageRemindNotification @"kXMPPLiveBarrageRemindNotification"  // 直播弹幕