Commit 81650ebe by zhangyunjie

未读数

parent 53891b8c
...@@ -341,13 +341,24 @@ ...@@ -341,13 +341,24 @@
<action selector="queryChat:" destination="2by-9C-78c" eventType="touchUpInside" id="tyc-6A-ewd"/> <action selector="queryChat:" destination="2by-9C-78c" eventType="touchUpInside" id="tyc-6A-ewd"/>
</connections> </connections>
</button> </button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AFV-63-T6s">
<rect key="frame" x="15" y="160" width="77" height="30"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="设置未读数"/>
<connections>
<action selector="setUnreadNum:" destination="2by-9C-78c" eventType="touchUpInside" id="NYE-kb-5yy"/>
</connections>
</button>
</subviews> </subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints> <constraints>
<constraint firstItem="F7Q-um-fFq" firstAttribute="height" secondItem="hI0-jm-bPD" secondAttribute="height" id="25O-Jc-7Qt"/> <constraint firstItem="F7Q-um-fFq" firstAttribute="height" secondItem="hI0-jm-bPD" secondAttribute="height" id="25O-Jc-7Qt"/>
<constraint firstItem="AOb-iX-raM" firstAttribute="height" secondItem="hI0-jm-bPD" secondAttribute="height" id="4Kb-uG-fJZ"/> <constraint firstItem="AOb-iX-raM" firstAttribute="height" secondItem="hI0-jm-bPD" secondAttribute="height" id="4Kb-uG-fJZ"/>
<constraint firstItem="F7Q-um-fFq" firstAttribute="top" secondItem="IOW-P1-885" secondAttribute="bottom" constant="5" id="8tT-WD-O7J"/> <constraint firstItem="F7Q-um-fFq" firstAttribute="top" secondItem="IOW-P1-885" secondAttribute="bottom" constant="5" id="8tT-WD-O7J"/>
<constraint firstItem="AFV-63-T6s" firstAttribute="top" secondItem="F7Q-um-fFq" secondAttribute="bottom" constant="5" id="Cj8-1B-oQW"/>
<constraint firstItem="F7Q-um-fFq" firstAttribute="leading" secondItem="hI0-jm-bPD" secondAttribute="leading" id="Ho3-Xh-Brc"/> <constraint firstItem="F7Q-um-fFq" firstAttribute="leading" secondItem="hI0-jm-bPD" secondAttribute="leading" id="Ho3-Xh-Brc"/>
<constraint firstItem="AFV-63-T6s" firstAttribute="leading" secondItem="F7Q-um-fFq" secondAttribute="leading" id="Jqz-94-SOG"/>
<constraint firstItem="AFV-63-T6s" firstAttribute="height" secondItem="F7Q-um-fFq" secondAttribute="height" id="PZ2-gg-pNt"/>
<constraint firstItem="hI0-jm-bPD" firstAttribute="leading" secondItem="Lef-sG-R6x" secondAttribute="leading" constant="15" id="SBW-v4-A42"/> <constraint firstItem="hI0-jm-bPD" firstAttribute="leading" secondItem="Lef-sG-R6x" secondAttribute="leading" constant="15" id="SBW-v4-A42"/>
<constraint firstItem="IOW-P1-885" firstAttribute="top" secondItem="AOb-iX-raM" secondAttribute="bottom" constant="5" id="UrS-kL-0Ws"/> <constraint firstItem="IOW-P1-885" firstAttribute="top" secondItem="AOb-iX-raM" secondAttribute="bottom" constant="5" id="UrS-kL-0Ws"/>
<constraint firstItem="AOb-iX-raM" firstAttribute="leading" secondItem="hI0-jm-bPD" secondAttribute="leading" id="Ytd-Ib-44I"/> <constraint firstItem="AOb-iX-raM" firstAttribute="leading" secondItem="hI0-jm-bPD" secondAttribute="leading" id="Ytd-Ib-44I"/>
......
// //
...@@ -38,6 +38,7 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -38,6 +38,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,copy)NSString *lastmessage;//最后一条消息 @property (nonatomic,copy)NSString *lastmessage;//最后一条消息
@property (nonatomic,copy)NSString *lastSendtime;//最后一条消息时间 @property (nonatomic,copy)NSString *lastSendtime;//最后一条消息时间
@property (nonatomic,copy)NSString *tid;//本地的消息Id @property (nonatomic,copy)NSString *tid;//本地的消息Id
@property (nonatomic,assign)NSInteger unread_number;//未读数
@end @end
@interface OffcnIMMsgModel : NSObject @interface OffcnIMMsgModel : NSObject
......
// //
...@@ -87,7 +87,7 @@ static OffcnIMSocketManager *socketManager; ...@@ -87,7 +87,7 @@ static OffcnIMSocketManager *socketManager;
NSMutableDictionary *dic = [NSMutableDictionary dictionary]; NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObjectOnSafe:@"39.102.42.185" forKey:@"server_ip"]; [dic setObjectOnSafe:@"39.102.42.185" forKey:@"server_ip"];
[dic setObjectOnSafe:[NSNumber numberWithInteger:1280] forKey:@"server_port"]; [dic setObjectOnSafe:[NSNumber numberWithInteger:1281] forKey:@"server_port"];
[dic setObjectOnSafe:account_id forKey:@"account_id"]; [dic setObjectOnSafe:account_id forKey:@"account_id"];
[dic setObjectOnSafe:@"offcn_live" forKey:@"app_id"]; [dic setObjectOnSafe:@"offcn_live" forKey:@"app_id"];
[dic setObjectOnSafe:@"ios" forKey:@"device_type"]; [dic setObjectOnSafe:@"ios" forKey:@"device_type"];
...@@ -96,7 +96,7 @@ static OffcnIMSocketManager *socketManager; ...@@ -96,7 +96,7 @@ static OffcnIMSocketManager *socketManager;
NSString *session_id = [NSString stringWithFormat:@"%@%@",KUUIDString,[SDGeneralTool getNowSSSTimeTimestamp]]; NSString *session_id = [NSString stringWithFormat:@"%@%@",KUUIDString,[SDGeneralTool getNowSSSTimeTimestamp]];
[dic setObjectOnSafe:session_id forKey:@"session_id"]; [dic setObjectOnSafe:session_id forKey:@"session_id"];
[dic setObjectOnSafe:@"websocket" forKey:@"connection_type"]; [dic setObjectOnSafe:@"kcp" forKey:@"connection_type"];
[dic setObjectOnSafe:@"disable" forKey:@"tls"]; [dic setObjectOnSafe:@"disable" forKey:@"tls"];
[self connectIMServerWithParam:[dic mj_ZYJJSONString]]; [self connectIMServerWithParam:[dic mj_ZYJJSONString]];
......
// //
...@@ -16,6 +16,7 @@ typedef NS_ENUM(NSInteger, UIClearStyle) { ...@@ -16,6 +16,7 @@ typedef NS_ENUM(NSInteger, UIClearStyle) {
@class OffcnIMBodyModel; @class OffcnIMBodyModel;
typedef void (^getFMDBHistoryMessagesBlock)(NSArray<OffcnIMBodyModel *> *messagesArray); typedef void (^getFMDBHistoryMessagesBlock)(NSArray<OffcnIMBodyModel *> *messagesArray);
typedef void (^getFMDBOneMessageBlock)(OffcnIMBodyModel *model);
typedef void (^callBackIsSuccess)(BOOL isSuccess); typedef void (^callBackIsSuccess)(BOOL isSuccess);
...@@ -42,8 +43,10 @@ typedef void (^callBackIsSuccess)(BOOL isSuccess); ...@@ -42,8 +43,10 @@ typedef void (^callBackIsSuccess)(BOOL isSuccess);
//拉取更新聊天列表 //拉取更新聊天列表
- (void)updateChatlistCacheInfo:(OffcnIMBodyModel *)chatlistModel callback:(callBackIsSuccess)isSucess; - (void)updateChatlistCacheInfo:(OffcnIMBodyModel *)chatlistModel callback:(callBackIsSuccess)isSucess;
//某一条消息更新已读状态 //更新和某个用户所有聊天为已读状态
- (void)updateChatInfoIsRead:(OffcnIMBodyModel *)model callBack:(callBackIsSuccess)isSuccess; - (void)updateChatInfoIsRead:(OffcnIMBodyModel *)model callBack:(callBackIsSuccess)isSuccess;
//更新和某个用户的聊天未读数
- (void)updateChatListUnread_number:(OffcnIMBodyModel *)model callBack:(callBackIsSuccess)isSuccess;
/// 删除个人聊天记录 /// 删除个人聊天记录
/// @param fromUser 发送人ID /// @param fromUser 发送人ID
...@@ -68,6 +71,8 @@ typedef void (^callBackIsSuccess)(BOOL isSuccess); ...@@ -68,6 +71,8 @@ typedef void (^callBackIsSuccess)(BOOL isSuccess);
//查询聊天列表(按时间戳升序排序) //查询聊天列表(按时间戳升序排序)
- (void)getChatListArrayCallback:(getFMDBHistoryMessagesBlock)messagesBack; - (void)getChatListArrayCallback:(getFMDBHistoryMessagesBlock)messagesBack;
//查询聊天列表其中一个会话信息
- (void)getChatListOneMessageWithFromUser:(NSString *)fromUser toUser:(NSString *)toUser callback:(getFMDBOneMessageBlock)messagesBack;
//消息内容 //消息内容
- (NSString *)lastMessage:(OffcnIMBodyModel *)messageModel; - (NSString *)lastMessage:(OffcnIMBodyModel *)messageModel;
......
// //
...@@ -44,7 +44,7 @@ static OffcnIMZYJFMDBHandler *FMDBHandler; ...@@ -44,7 +44,7 @@ static OffcnIMZYJFMDBHandler *FMDBHandler;
_database = getFMDBInstance(); _database = getFMDBInstance();
} }
NSString *creatChatListSqlStr = @"create table chatlist(msg_fromId varchar(100), msg_toId varchar(100),tid varchar(100),session_id varchar(100),msg_id varchar (100),msg_type varchar(10),lastmessage varchar (500),lastSendtime varchar (50),msg_seq varchar(100),primary key(msg_fromId))"; NSString *creatChatListSqlStr = @"create table chatlist(msg_fromId varchar(100), msg_toId varchar(100),tid varchar(100),session_id varchar(100),msg_id varchar (100),msg_type varchar(10),lastmessage varchar (500),lastSendtime varchar (50),msg_seq varchar(100),unread_number integer,primary key(msg_fromId))";
NSString *creatChatInfoSqlStr = @"create table chatinfo(ID integer PRIMARY KEY AUTOINCREMENT,msg_fromId varchar(100),msg_toId varchar(100),tid varchar(100),session_id varchar(100),msg_id varchar (100),version varchar(10),send_time varchar(50),msg_seq varchar(100),msg_scope varchar (10),msg_type varchar(10),msg varchar(500),dur varchar(30),name varchat(500),md5 varchar(500),url varchar (500),thumb_url varchar(500),cover_url varchar(500),ext varchar(30),w varchar (10),h varchar(10),size varchar(10),isSentSuccess integer,bymyself integer,isRead integer)"; NSString *creatChatInfoSqlStr = @"create table chatinfo(ID integer PRIMARY KEY AUTOINCREMENT,msg_fromId varchar(100),msg_toId varchar(100),tid varchar(100),session_id varchar(100),msg_id varchar (100),version varchar(10),send_time varchar(50),msg_seq varchar(100),msg_scope varchar (10),msg_type varchar(10),msg varchar(500),dur varchar(30),name varchat(500),md5 varchar(500),url varchar (500),thumb_url varchar(500),cover_url varchar(500),ext varchar(30),w varchar (10),h varchar(10),size varchar(10),isSentSuccess integer,bymyself integer,isRead integer)";
...@@ -204,16 +204,16 @@ static OffcnIMZYJFMDBHandler *FMDBHandler; ...@@ -204,16 +204,16 @@ static OffcnIMZYJFMDBHandler *FMDBHandler;
BOOL result = NO; BOOL result = NO;
if (tmpDataArray.count) { if (tmpDataArray.count) {
NSString *sqlStr = @"update chatlist set msg_fromId = ?,msg_toId = ?,lastmessage = ?,lastSendtime = ?,msg_seq = ?,session_id = ?,tid = ?,msg_id = ?,msg_type = ? where session_id = ?"; NSString *sqlStr = @"update chatlist set msg_fromId = ?,msg_toId = ?,lastmessage = ?,lastSendtime = ?,msg_seq = ?,session_id = ?,tid = ?,msg_id = ?,msg_type = ?,unread_number = ? where session_id = ?";
NSString *lastmessage = [self lastMessage:chatlistModel]; NSString *lastmessage = [self lastMessage:chatlistModel];
result = [db executeUpdate:sqlStr,chatlistModel.msg_from,chatlistModel.msg_to,lastmessage,chatlistModel.send_time,[NSNumber numberWithInteger:chatlistModel.msg_seq],chatlistModel.session_id,chatlistModel.tid,chatlistModel.msg_id,[NSNumber numberWithInteger:chatlistModel.msg_type],chatlistModel.session_id]; result = [db executeUpdate:sqlStr,chatlistModel.msg_from,chatlistModel.msg_to,lastmessage,chatlistModel.send_time,[NSNumber numberWithInteger:chatlistModel.msg_seq],chatlistModel.session_id,chatlistModel.tid,chatlistModel.msg_id,[NSNumber numberWithInteger:chatlistModel.msg_type],[NSNumber numberWithInteger:chatlistModel.unread_number],chatlistModel.session_id];
//不存在,插库 //不存在,插库
}else{ }else{
NSString *sqlStr = @"insert into chatlist(msg_fromId,msg_toId,tid,session_id,msg_id,msg_type,lastmessage,lastSendtime,msg_seq)values(?,?,?,?,?,?,?,?,?)"; NSString *sqlStr = @"insert into chatlist(msg_fromId,msg_toId,tid,session_id,msg_id,msg_type,lastmessage,lastSendtime,msg_seq,unread_number)values(?,?,?,?,?,?,?,?,?,?)";
NSString *lastmessage = [self lastMessage:chatlistModel]; NSString *lastmessage = [self lastMessage:chatlistModel];
result = [db executeUpdate:sqlStr,chatlistModel.msg_from,chatlistModel.msg_to,chatlistModel.tid,chatlistModel.session_id,chatlistModel.msg_id,[NSNumber numberWithInteger:chatlistModel.msg_type],lastmessage,chatlistModel.send_time,[NSNumber numberWithInteger:chatlistModel.msg_seq]]; result = [db executeUpdate:sqlStr,chatlistModel.msg_from,chatlistModel.msg_to,chatlistModel.tid,chatlistModel.session_id,chatlistModel.msg_id,[NSNumber numberWithInteger:chatlistModel.msg_type],lastmessage,chatlistModel.send_time,[NSNumber numberWithInteger:chatlistModel.msg_seq],[NSNumber numberWithInteger:chatlistModel.unread_number]];
} }
[rs close]; [rs close];
...@@ -224,7 +224,7 @@ static OffcnIMZYJFMDBHandler *FMDBHandler; ...@@ -224,7 +224,7 @@ static OffcnIMZYJFMDBHandler *FMDBHandler;
}]; }];
} }
//某一条消息更新已读状态 //更新和某个用户所有聊天为已读状态
- (void)updateChatInfoIsRead:(OffcnIMBodyModel *)model callBack:(callBackIsSuccess)isSuccess{ - (void)updateChatInfoIsRead:(OffcnIMBodyModel *)model callBack:(callBackIsSuccess)isSuccess{
if (!_database) { if (!_database) {
getFMDBInstance(); getFMDBInstance();
...@@ -232,8 +232,29 @@ static OffcnIMZYJFMDBHandler *FMDBHandler; ...@@ -232,8 +232,29 @@ static OffcnIMZYJFMDBHandler *FMDBHandler;
[_database inDatabase:^(ZYJZYJFMDatabase *db) { [_database inDatabase:^(ZYJZYJFMDatabase *db) {
//插入记录到表中 //插入记录到表中
NSString *sqlStr = @"update chatinfo set isRead = ? where msg_fromId = ? and msg_toId = ? and msg_seq = ?"; NSString *sqlStr = @"update chatinfo set isRead = ? where (msg_fromId =? and msg_toId = ?) or (msg_fromId =? and msg_toId = ?)";
BOOL result = [db executeUpdate:sqlStr,[NSNumber numberWithInteger:model.isRead],model.msg_from,model.msg_to,[NSNumber numberWithInteger:model.msg_seq]]; BOOL result = [db executeUpdate:sqlStr,[NSNumber numberWithInteger:model.isRead],model.msg_from,model.msg_to,model.msg_to,model.msg_from];
if (!result) {
NSLog(@"error when insert into database table");
NSLog(@"%d",db.lastErrorCode);
NSLog(@"%@",db.lastErrorMessage);
}
if (isSuccess) {
isSuccess(result);
}
}];
}
//更新和某个用户的聊天未读数
- (void)updateChatListUnread_number:(OffcnIMBodyModel *)model callBack:(callBackIsSuccess)isSuccess{
if (!_database) {
getFMDBInstance();
}
[_database inDatabase:^(ZYJZYJFMDatabase *db) {
//插入记录到表中
NSString *sqlStr = @"update chatlist set unread_number = ? where (msg_fromId =? and msg_toId = ?) or (msg_fromId =? and msg_toId = ?)";
BOOL result = [db executeUpdate:sqlStr,[NSNumber numberWithInteger:model.unread_number],model.msg_from,model.msg_to,model.msg_to,model.msg_from];
if (!result) { if (!result) {
NSLog(@"error when insert into database table"); NSLog(@"error when insert into database table");
NSLog(@"%d",db.lastErrorCode); NSLog(@"%d",db.lastErrorCode);
...@@ -430,6 +451,7 @@ static OffcnIMZYJFMDBHandler *FMDBHandler; ...@@ -430,6 +451,7 @@ static OffcnIMZYJFMDBHandler *FMDBHandler;
tmpModel.session_id = [rs stringForColumn:@"session_id"]; tmpModel.session_id = [rs stringForColumn:@"session_id"];
tmpModel.msg_id = [rs stringForColumn:@"msg_id"]; tmpModel.msg_id = [rs stringForColumn:@"msg_id"];
tmpModel.msg_seq = [rs longLongIntForColumn:@"msg_seq"]; tmpModel.msg_seq = [rs longLongIntForColumn:@"msg_seq"];
tmpModel.unread_number = [rs longLongIntForColumn:@"unread_number"];
[tmpArray addObject:tmpModel]; [tmpArray addObject:tmpModel];
} }
...@@ -442,6 +464,44 @@ static OffcnIMZYJFMDBHandler *FMDBHandler; ...@@ -442,6 +464,44 @@ static OffcnIMZYJFMDBHandler *FMDBHandler;
}]; }];
} }
//查询聊天列表其中一个会话信息
- (void)getChatListOneMessageWithFromUser:(NSString *)fromUser toUser:(NSString *)toUser callback:(getFMDBOneMessageBlock)messagesBack{
if (!_database) {
getFMDBInstance();
}
NSString * sql = [NSString stringWithFormat:@"SELECT * FROM chatlist where (msg_fromId =? and msg_toId = ?) or (msg_fromId =? and msg_toId = ?)"];
[_database inDatabase:^(ZYJZYJFMDatabase *db) {
ZYJZYJFMResultSet *rs = [db executeQuery:sql,fromUser,toUser,toUser,fromUser];
NSMutableArray *tmpArray = [NSMutableArray array];
while ([rs next]) {
OffcnIMBodyModel *tmpModel = [[OffcnIMBodyModel alloc]init];
tmpModel.msg_from = [rs stringForColumn:@"msg_fromId"];
tmpModel.msg_to = [rs stringForColumn:@"msg_toId"];
tmpModel.msg_type = [rs intForColumn:@"msg_type"];
tmpModel.lastmessage = [rs stringForColumn:@"lastmessage"];
tmpModel.lastSendtime = [rs stringForColumn:@"lastSendtime"];
tmpModel.tid = [rs stringForColumn:@"tid"];
tmpModel.session_id = [rs stringForColumn:@"session_id"];
tmpModel.msg_id = [rs stringForColumn:@"msg_id"];
tmpModel.msg_seq = [rs longLongIntForColumn:@"msg_seq"];
tmpModel.unread_number = [rs longLongIntForColumn:@"unread_number"];
[tmpArray addObject:tmpModel];
}
[rs close];
//回调历史消息记录
if (messagesBack) {
if (tmpArray.count) {
messagesBack(tmpArray.lastObject);
}else{
messagesBack(nil);
}
}
}];
}
//消息内容 //消息内容
- (NSString *)lastMessage:(OffcnIMBodyModel *)messageModel{ - (NSString *)lastMessage:(OffcnIMBodyModel *)messageModel{
NSString *lastMessage = nil; NSString *lastMessage = nil;
......
...@@ -86,5 +86,27 @@ ...@@ -86,5 +86,27 @@
[storageView showView]; [storageView showView];
}]; }];
} }
- (IBAction)setUnreadNum:(UIButton *)sender {
__block OffcnIMBodyModel *IMBodyModel = nil;
[[OffcnIMZYJFMDBHandler sharedInstance] getChatListOneMessageWithFromUser:self.fromId toUser:self.toId callback:^(OffcnIMBodyModel *model) {
IMBodyModel = model;
}];
if (IMBodyModel) {
//存在,更新未读数
OffcnIMBodyModel *BodyModel = [[OffcnIMBodyModel alloc] init];
BodyModel.msg_from = self.fromId;
BodyModel.msg_to = self.toId;
BodyModel.unread_number = IMBodyModel.unread_number+1;
[[OffcnIMZYJFMDBHandler sharedInstance] updateChatListUnread_number:BodyModel callBack:^(BOOL isSuccess) {
}];
}else{
//不存在,先更新聊天列表再更新未读数
}
}
@end @end
// //
...@@ -106,10 +106,15 @@ ...@@ -106,10 +106,15 @@
BodyModel.msg_to = msg_toID; BodyModel.msg_to = msg_toID;
BodyModel.msg_seq = msg_seq; BodyModel.msg_seq = msg_seq;
BodyModel.isRead = 1; BodyModel.isRead = 1;
BodyModel.unread_number = 0;
[[OffcnIMZYJFMDBHandler sharedInstance] updateChatInfoIsRead:BodyModel callBack:^(BOOL isSuccess) { [[OffcnIMZYJFMDBHandler sharedInstance] updateChatInfoIsRead:BodyModel callBack:^(BOOL isSuccess) {
}]; }];
[[OffcnIMZYJFMDBHandler sharedInstance] updateChatListUnread_number:BodyModel callBack:^(BOOL isSuccess) {
}];
finished(YES,baseResponse.responseObject,nil); finished(YES,baseResponse.responseObject,nil);
}else{ }else{
...@@ -204,6 +209,7 @@ ...@@ -204,6 +209,7 @@
BodyModel.session_id = SessionModel.session_id; BodyModel.session_id = SessionModel.session_id;
BodyModel.msg_type = SessionModel.last_msg.msg_type; BodyModel.msg_type = SessionModel.last_msg.msg_type;
BodyModel.send_time = SessionModel.last_msg.send_time; BodyModel.send_time = SessionModel.last_msg.send_time;
BodyModel.unread_number = SessionModel.unread_number;
BodyModel.tid = @""; BodyModel.tid = @"";
BodyModel.msg_id = @""; BodyModel.msg_id = @"";
BodyModel.msg_seq = 0; BodyModel.msg_seq = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment