//
// NewFriendsDBModel.h
// HengTaiXinGolf
//
// Created by 欧阳荣 on 16/7/7.
// Copyright © 2016年 HengTaiXinGolf. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "FMDB.h"
#import "NewFriendModel.h"
@interface NewFriendsDBModel : NSObject
@property (nonatomic,strong) FMDatabase * dataBaseNew;
+(NewFriendsDBModel *) sharedInstance;
-(void)openDatabaseWithMemberId:(NSString *)memberId;
-(NSMutableDictionary*)loadAllNewFriendModel;
-(BOOL)addNewFriendsModel:(NewFriendModel *)model;
-(NSInteger)addAllNewFriendsModel:(NSArray *)NewArr;
-(void)updateNewFriendsModel:(NewFriendModel *)model;
-(void)updateAddWayState:(int)state ofMemberId:(NSString *)memberId;
//删除好友请求
-(void)deleteNewFriendModel:(NSString *)memberId;
//- (void)deleteSession:(NSString*)sessionId;
// 查询本地数据库排序好的
-(NSArray *)getAllModelOrderArr;
@end
//
// NewFriendsDBModel.m
// HengTaiXinGolf
//
// Created by 欧阳荣 on 16/7/7.
// Copyright © 2016年 HengTaiXinGolf. All rights reserved.
//
#import "NewFriendsDBModel.h"
#define NEWFRIENDSDB @"NewFriendsDB"
@implementation NewFriendsDBModel
+(NewFriendsDBModel *)sharedInstance{
static NewFriendsDBModel * newFriDBManager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
newFriDBManager = [[NewFriendsDBModel alloc]init];
});
return newFriDBManager;
}
#pragma mark -------------根据不同的memberId来创建不同的数据库表---------------------
-(void)openDatabaseWithMemberId:(NSString *)memberId{
if (memberId.length == 0) {
return;
}
// Documents 路径
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
// memberID md5
const char * cStr = [memberId UTF8String];
unsigned char result[16];
CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
NSString* MD5 = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],result[8], result[9], result[10], result[11],result[12], result[13], result[14], result[15]];
//md5 加密数据库文件路径
NSString * documentsDirectory = [[paths objectAtIndex:0]stringByAppendingPathComponent:MD5];
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isDir = FALSE;
BOOL isDirExist = [fileManager fileExistsAtPath:documentsDirectory isDirectory:&isDir];
//判断路径是否存在,不存在就创建 ---- 都是YES 啊
if (!(isDirExist && isDir)) {
BOOL bCreateDir = [fileManager createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:nil];
if (!bCreateDir) {
NSLog(@"创建数据库路径失败");
}
DSLog(@"创建数据库路径成功:%@",documentsDirectory);
}
NSString * dbPath = [documentsDirectory stringByAppendingPathComponent:@"NewFriendsDBModel.db"];
if (self.dataBaseNew) {
[self.dataBaseNew close];
self.dataBaseNew = nil;
}
self.dataBaseNew = [FMDatabase databaseWithPath:dbPath];
[self.dataBaseNew open];
[self NewFriendsDBTableCreate];
}
#pragma mark 在表中创建 NewFriendsDB 字段 保存新的好友请求信息
- (void)NewFriendsDBTableCreate {
[self createTable:@"NewFriendsDB" sql:@"CREATE table NewFriendsDB (memberId TEXT NOT NULL PRIMARY KEY UNIQUE ON CONFLICT REPLACE, regdate TEXT,memberNick TEXT,memberNickImg TEXT,memberMobile TEXT,addWay INTEGER,isRead INTEGER,requestMessage TEXT,fNo INTEGER)"];
}
// 创建表
- (void) createTable:(NSString*)tableName sql:(NSString *)createSql {
BOOL isExist = [self.dataBaseNew tableExists:tableName];
if (!isExist) {
[self.dataBaseNew executeUpdate:createSql];
}
}
//intForColumn:
//longForColumn:
//longLongIntForColumn:
//boolForColumn:
//doubleForColumn:
//stringForColumn:
//dateForColumn:
//dataForColumn:
//dataNoCopyForColumn:
//UTF8StringForColumnIndex:
//objectForColumn:
- (NSMutableDictionary *)loadAllNewFriendModel {
NSMutableDictionary * sessionDictionay = [NSMutableDictionary dictionary];
FMResultSet *rs = [self.dataBaseNew executeQuery:@"SELECT memberId, regdate, memberNick, memberNickImg, memberMobile, addWay,isRead, requestMessage ,fNo FROM NewFriendsDB"];//ORDER BY regdate DESC
while ([rs next]) {
NSString * memberId = [rs stringForColumnIndex:0];
if (memberId.length>0) {
NewFriendModel* session = [[NewFriendModel alloc] init];
int columnIndex = 0;
session.memberId = [rs stringForColumnIndex:columnIndex]; columnIndex++;
session.regdate = [rs stringForColumnIndex:columnIndex]; columnIndex++;
// session.regdate = [rs dateForColumnIndex:columnIndex]; columnIndex ++;
session.memberNick = [rs stringForColumnIndex:columnIndex]; columnIndex++;
session.memberNickImg = [rs stringForColumnIndex:columnIndex]; columnIndex++;
session.memberMobile = [rs stringForColumnIndex:columnIndex]; columnIndex++;
session.addWay = [rs intForColumnIndex:columnIndex]; columnIndex++;
session.isRead = [rs intForColumnIndex:columnIndex]; columnIndex++;
session.requestMessage = [rs stringForColumnIndex:columnIndex]; columnIndex++;
session.fNo = [rs intForColumnIndex:columnIndex]; columnIndex++;
[sessionDictionay setObject:session forKey:memberId];
// [self updateMessageStateFailedAndSessionId:sessionid];
}
}
[rs close];
return sessionDictionay;
}
-(NSArray*)getAllModelArr{
NSDictionary * _allNewFriDict = nil;
if (!_allNewFriDict){
_allNewFriDict = [self loadAllNewFriendModel];
}
return [_allNewFriDict.allValues sortedArrayUsingComparator:
^(NewFriendModel *obj1, NewFriendModel* obj2){
NSComparisonResult result = [obj1.regdate compare:obj2.regdate];
// NSLog(@"date1 : %@, date2 : %@", oneDay, anotherDay);
return result;
}];
}
-(NSArray *)getAllModelOrderArr{
NSArray * newFriendArr1 = [self getAllModelArr];
NSArray * newFriendArr2 = [NSArray array];
newFriendArr2 = [[newFriendArr1 reverseObjectEnumerator] allObjects];
return newFriendArr2;
}
-(BOOL)addNewFriendsModel:(NewFriendModel *)model{
return [self.dataBaseNew executeUpdate:@"INSERT INTO NewFriendsDB(memberId, regdate, memberNick, memberNickImg, memberMobile, addWay,isRead,requestMessage,fNo) VALUES(?,?,?,?,?,?,?,?,?)",model.memberId,model.regdate,model.memberNick,model.memberNickImg,model.memberMobile,@(model.addWay),@(model.isRead),model.requestMessage,@(model.fNo)];
}
#pragma mark 把好友请求列表都添加进去
-(NSInteger)addAllNewFriendsModel:(NSArray *)NewArr{
NSInteger i = 0 ;
for (NewFriendModel * model in NewArr) {
if ([self addNewFriendsModel:model]) {
i ++;
}
}
return i ;
}
-(void)updateNewFriendsModel:(NewFriendModel *)model{
BOOL UPDATE = NO;
UPDATE = [self.dataBaseNew executeUpdate:@"INSERT INTO NewFriendsDB(memberId, regdate, memberNick, memberNickImg, memberMobile, addWay,isRead,requestMessage,fNo) VALUES(?,?,?,?,?,?,?,?,?)",model.memberId,model.regdate,model.memberNick,model.memberNickImg,model.memberMobile,@(model.addWay),@(model.isRead),model.requestMessage,@(model.fNo)];
if (UPDATE) {
DSLog(@"新的好友请求数据更新成功");
}
}
-(void)updateAddWayState:(int)state ofMemberId:(NSString *)memberId{
BOOL UpdateAddWay = NO;
NSString *updateSql = [NSString stringWithFormat:
@"UPDATE '%@' SET addWay = %d WHERE memberId = '%@'",
NEWFRIENDSDB,state,memberId];
// UpdateAddWay = [self.dataBaseNew executeUpdate:@"UPDATE NewFriendsDB SET addWay = %d WHERE memberId = '%@'",state,memberId];
UpdateAddWay = [self.dataBaseNew executeUpdate:updateSql];
if (UpdateAddWay) {
DSLog(@" -- UpdateAddWay 更新成功");
}
}
-(void)deleteNewFriendModel:(NSString *)memberId{
BOOL UPDATE = NO;
UPDATE = [self.dataBaseNew executeUpdate:@"DELETE FROM NewFriendsDB WHERE memberId = ?",memberId]
;
if (UPDATE) {
// DSLog(@" 删除 拒绝 新的好友请求数据更新成功");
}
}
@end