JXBlogRemind.m 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. //
  2. // JXBlogRemind.m
  3. // shiku_im
  4. //
  5. // Created by p on 2017/7/3.
  6. // Copyright © 2017年 Reese. All rights reserved.
  7. //
  8. #import "JXBlogRemind.h"
  9. #import "FMDatabase.h"
  10. #import "FMResultSet.h"
  11. @implementation JXBlogRemind
  12. static JXBlogRemind *shared;
  13. +(JXBlogRemind*)sharedInstance{
  14. static dispatch_once_t onceToken;
  15. dispatch_once(&onceToken, ^{
  16. shared=[[JXBlogRemind alloc] init];
  17. });
  18. return shared;
  19. }
  20. -(id)init{
  21. self = [super init];
  22. if(self){
  23. _tableName = @"remind_blog";
  24. }
  25. return self;
  26. }
  27. -(BOOL)insertObj {
  28. NSString* myUserId = MY_USER_ID;
  29. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  30. [self checkTableCreatedInDb:db];
  31. // 取消点赞不存,重置点赞状态
  32. if (self.type == kWCMessageTypeWeiboCancelPraise) {
  33. _isRead = YES;
  34. // 更新点赞消息的内容
  35. [self updateOneMsgUnreadWithType:kWCMessageTypeWeiboPraise];
  36. return NO;
  37. }
  38. //点赞去重
  39. if (self.type == kWCMessageTypeWeiboPraise) {
  40. NSString *existStr = [NSString stringWithFormat:@"select * from %@ where objectId = '%@' and fromUserId = '%@' and type = %@", _tableName, self.objectId, self.fromUserId, [NSNumber numberWithInt:self.type]];
  41. BOOL isExist = NO;
  42. FMResultSet *rs = [db executeQuery:existStr];
  43. while ([rs next]) {
  44. isExist = YES;
  45. break;
  46. }
  47. if (isExist) {
  48. if (self.type == kWCMessageTypeWeiboPraise) {
  49. _isRead = NO;
  50. [self updateOneMsgUnreadWithType:self.type];
  51. }
  52. return NO;
  53. }
  54. }
  55. // 评论去重
  56. if (self.type == kWCMessageTypeWeiboComment || self.type == kWCMessageTypeWeiboRemind) {
  57. NSString *existStr = [NSString stringWithFormat:@"select * from %@ where messageId = '%@' and type = %@", _tableName, self.messageId, [NSNumber numberWithInt:self.type]];
  58. BOOL isExist = NO;
  59. FMResultSet *rs = [db executeQuery:existStr];
  60. while ([rs next]) {
  61. isExist = YES;
  62. break;
  63. }
  64. if (isExist) {
  65. return NO;
  66. }
  67. }
  68. NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO '%@' ('objectId','fromUserId','fromUserName','messageId','url','toUserId','toUserName','content','type','msgType','timeSend','isRead') VALUES (?,?,?,?,?,?,?,?,?,?,?,?)",_tableName];
  69. BOOL worked = [db executeUpdate:insertStr,self.objectId,self.fromUserId,self.fromUserName,self.messageId,self.url,self.toUserId,self.toUserName,self.content,[NSNumber numberWithInt:self.type],[NSNumber numberWithInt:self.msgType],self.timeSend,[NSNumber numberWithBool:_isRead]];
  70. // FMDBQuickCheck(worked);
  71. if(!worked)
  72. worked = [self updateObj];
  73. return worked;
  74. }
  75. -(BOOL)deleteAllMsg{
  76. NSString* myUserId = MY_USER_ID;
  77. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  78. [self checkTableCreatedInDb:db];
  79. BOOL worked=[db executeUpdate:[NSString stringWithFormat:@"delete from %@",_tableName]];
  80. return worked;
  81. }
  82. -(BOOL)updateObj {
  83. return YES;
  84. }
  85. // 查询所有消息
  86. -(NSMutableArray*)doFetch
  87. {
  88. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  89. NSString *sql = [NSString stringWithFormat:@"select * from %@", _tableName];
  90. NSString* myUserId = MY_USER_ID;
  91. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  92. [self checkTableCreatedInDb:db];
  93. FMResultSet *rs=[db executeQuery:sql];
  94. while ([rs next]) {
  95. JXBlogRemind *obj=[[JXBlogRemind alloc] init];
  96. [self fromDataset:obj rs:rs];
  97. [resultArr addObject:obj];
  98. }
  99. [rs close];
  100. NSMutableArray *array = [NSMutableArray array];
  101. for(NSInteger i=resultArr.count - 1; i>=0;i--){
  102. [array addObject:[resultArr objectAtIndex:i]];
  103. }
  104. return array;
  105. }
  106. // 查询未读消息
  107. -(NSMutableArray *)doFetchUnread {
  108. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  109. NSString *sql = [NSString stringWithFormat:@"select * from %@ where isRead = 0", _tableName];
  110. NSString* myUserId = MY_USER_ID;
  111. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  112. [self checkTableCreatedInDb:db];
  113. FMResultSet *rs=[db executeQuery:sql];
  114. while ([rs next]) {
  115. JXBlogRemind *obj=[[JXBlogRemind alloc] init];
  116. [self fromDataset:obj rs:rs];
  117. [resultArr addObject:obj];
  118. }
  119. [rs close];
  120. NSMutableArray *array = [NSMutableArray array];
  121. for(NSInteger i=resultArr.count - 1; i>=0;i--){
  122. [array addObject:[resultArr objectAtIndex:i]];
  123. }
  124. return array;
  125. }
  126. // 将未读消息设置为已读
  127. - (BOOL)updateUnread {
  128. NSString *sql = [NSString stringWithFormat:@"update %@ set isRead = ? where isRead = 0", _tableName];
  129. NSString* myUserId = MY_USER_ID;
  130. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  131. [self checkTableCreatedInDb:db];
  132. BOOL worked = [db executeUpdate:sql,[NSNumber numberWithBool:YES]];
  133. return worked;
  134. }
  135. // 将某条消息设置为已读/未读
  136. - (BOOL)updateOneMsgUnreadWithType:(int)type {
  137. NSString *sql = [NSString stringWithFormat:@"update %@ set isRead = ? where fromUserId = ? and objectId = ? and type = ?", _tableName];
  138. NSString* myUserId = MY_USER_ID;
  139. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  140. [self checkTableCreatedInDb:db];
  141. BOOL worked = [db executeUpdate:sql,[NSNumber numberWithBool:self.isRead],self.fromUserId,self.objectId,[NSNumber numberWithInt:type]];
  142. return worked;
  143. }
  144. -(BOOL)checkTableCreatedInDb:(FMDatabase *)db
  145. {
  146. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('objectId' VARCHAR ,'fromUserId' VARCHAR , 'fromUserName' VARCHAR, 'messageId' VARCHAR ,'url' VARCHAR ,'toUserId' VARCHAR ,'toUserName' VARCHAR ,'content' VARCHAR ,'type' INTEGER ,'msgType' INTEGER ,'timeSend' DATETIME ,'isRead' INTEGER)",_tableName];
  147. BOOL worked = [db executeUpdate:createStr];
  148. // FMDBQuickCheck(worked);
  149. return worked;
  150. }
  151. -(void)fromObject:(JXMessageObject*)message{
  152. self.fromUserId=message.fromUserId;
  153. self.fromUserName=message.fromUserName;
  154. self.type = [message.type intValue];
  155. NSString *objId = message.objectId;
  156. NSArray *arr = [objId componentsSeparatedByString:@","];
  157. self.objectId = arr.firstObject;
  158. self.messageId = message.messageId;
  159. self.msgType = [arr[1] intValue];
  160. self.url = arr.lastObject;
  161. self.toUserId = message.toUserId;
  162. self.toUserName = message.toUserName;
  163. self.content = message.content;
  164. self.timeSend = message.timeSend;
  165. self.isRead = NO;
  166. }
  167. -(void)fromDataset:(JXBlogRemind*)obj rs:(FMResultSet*)rs {
  168. obj.objectId = [rs stringForColumn:@"objectId"];
  169. obj.fromUserId=[rs stringForColumn:@"fromUserId"];
  170. obj.fromUserName=[rs stringForColumn:@"fromUserName"];
  171. obj.type = [rs intForColumn:@"type"];
  172. obj.messageId = [rs stringForColumn:@"messageId"];
  173. obj.msgType = [rs intForColumn:@"msgType"];
  174. obj.url = [rs stringForColumn:@"url"];
  175. obj.toUserId = [rs stringForColumn:@"toUserId"];
  176. obj.toUserName = [rs stringForColumn:@"toUserName"];
  177. obj.content = [rs stringForColumn:@"content"];
  178. obj.timeSend = [rs dateForColumn:@"timeSend"];
  179. obj.isRead = [rs boolForColumn:@"isRead"];
  180. }
  181. @end