JXLabelObject.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. //
  2. // JXLabelObject.m
  3. // shiku_im
  4. //
  5. // Created by p on 2018/6/21.
  6. // Copyright © 2018年 Reese. All rights reserved.
  7. //
  8. #import "JXLabelObject.h"
  9. #import "FMDatabase.h"
  10. #import "FMResultSet.h"
  11. @implementation JXLabelObject
  12. static JXLabelObject *sharedLabel;
  13. +(JXLabelObject*)sharedInstance{
  14. static dispatch_once_t onceToken;
  15. dispatch_once(&onceToken, ^{
  16. sharedLabel=[[JXLabelObject alloc]init];
  17. });
  18. return sharedLabel;
  19. }
  20. -(id)init{
  21. self = [super init];
  22. if(self){
  23. _tableName = @"label";
  24. }
  25. return self;
  26. }
  27. // 获取所有标签
  28. -(NSMutableArray*)fetchAllLabelsFromLocal {
  29. NSString* sql = @"select * from label";
  30. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  31. NSString* myUserId = MY_USER_ID;
  32. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  33. [self checkTableCreatedInDb:db];
  34. FMResultSet *rs=[db executeQuery:sql];
  35. while ([rs next]) {
  36. JXLabelObject *label=[[JXLabelObject alloc] init];
  37. [self labelFromDataset:label rs:rs];
  38. [resultArr addObject:label];
  39. }
  40. [rs close];
  41. return resultArr;
  42. }
  43. - (NSMutableArray *)fetchAllRecordsFromLocal {
  44. NSString* sql = @"select * from groupHelperRecord order by id desc";
  45. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  46. NSString* myUserId = MY_USER_ID;
  47. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  48. [self checkTableCreatedInDb:db];
  49. FMResultSet *rs=[db executeQuery:sql];
  50. while ([rs next]) {
  51. JXLabelObject *label=[[JXLabelObject alloc] init];
  52. [self recordsFromDataset:label rs:rs];
  53. [resultArr addObject:label];
  54. }
  55. [rs close];
  56. return resultArr;
  57. }
  58. - (BOOL)checkGroupHelperRecordTableCreatedInDb:(FMDatabase *)db {
  59. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS 'groupHelperRecord' ('id' INTEGER PRIMARY KEY, 'userId' VARCHAR, 'userIds' VARCHAR, 'text1' VARCHAR,'text2' VARCHAR,'userNames' VARCHAR, 'userNamesWithGroup' VARCHAR, 'message' VARCHAR, 'sendTime' varchar, 'userNmaesWithFriend' varchar)"];
  60. BOOL worked = [db executeUpdate:createStr];
  61. return worked;
  62. }
  63. -(BOOL)insertRecord {
  64. NSString* myUserId = MY_USER_ID;
  65. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  66. [self checkGroupHelperRecordTableCreatedInDb:db];
  67. NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO 'groupHelperRecord' ('userId','userIds','text1','text2','userNames','userNamesWithGroup','message','sendTime','userNmaesWithFriend') VALUES (?,?,?,?,?,?,?,?,?)"];
  68. BOOL worked = [db executeUpdate:insertStr,self.userId,self.userIds,self.text1,self.text2,self.userNames,self.userNamesWithGroup,self.message,self.sendTime,self.userNmaesWithFriend];
  69. return worked;
  70. }
  71. - (NSString *)fetchAllGroupAnnouncementFromLocal {
  72. NSString* sql = [NSString stringWithFormat:@"select content from groupAnnouncement where roomJid = '%@'", self.roomJid];
  73. // NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  74. NSString* myUserId = MY_USER_ID;
  75. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  76. [self checkTableCreatedInDb:db];
  77. NSString *content;
  78. FMResultSet *rs=[db executeQuery:sql];
  79. while ([rs next]) {
  80. // JXLabelObject *label=[[JXLabelObject alloc] init];
  81. // [self groupAnnouncementFromDataset:label rs:rs];
  82. // [resultArr addObject:label];
  83. content = [rs stringForColumn:@"content"];
  84. return content;
  85. }
  86. [rs close];
  87. return nil;
  88. }
  89. - (NSString *)fetchGroupAnnouncementSelectItemFromLocal {
  90. NSString* sql = [NSString stringWithFormat:@"select selectItem from groupAnnouncement where roomJid = '%@'", self.roomJid];
  91. // NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  92. NSString* myUserId = MY_USER_ID;
  93. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  94. [self checkTableCreatedInDb:db];
  95. NSString *selectItem;
  96. FMResultSet *rs=[db executeQuery:sql];
  97. while ([rs next]) {
  98. // JXLabelObject *label=[[JXLabelObject alloc] init];
  99. // [self groupAnnouncementFromDataset:label rs:rs];
  100. // [resultArr addObject:label];
  101. selectItem = [rs stringForColumn:@"selectItem"];
  102. return selectItem;
  103. }
  104. [rs close];
  105. return nil;
  106. }
  107. - (BOOL)checkGroupAnnouncementRoomJid {
  108. NSString* sql = [NSString stringWithFormat:@"SELECT * FROM groupAnnouncement WHERE roomJid = '%@'", self.roomJid];
  109. NSString* myUserId = MY_USER_ID;
  110. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  111. [self checkTableCreatedInDb:db];
  112. FMResultSet *rs=[db executeQuery:sql];
  113. while ([rs next]) {
  114. return YES; // 那就直接返回,即不执行插入操作
  115. }
  116. [rs close];
  117. return NO;
  118. }
  119. // 创建表头公告表
  120. - (BOOL)checkGroupAnnouncementTableCreatedInDb:(FMDatabase *)db {
  121. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS 'groupAnnouncement' ('id' INTEGER PRIMARY KEY, 'userId' VARCHAR, 'roomJid' VARCHAR, 'content' VARCHAR,'creatTime' VARCHAR,'type' VARCHAR, 'roomName' VARCHAR, 'sendUserId' VARCHAR, 'typeName' varchar, 'selectItem' varchar)"];
  122. BOOL worked = [db executeUpdate:createStr];
  123. return worked;
  124. }
  125. - (BOOL)updateRecordGroupAnnouncement {
  126. NSString* myUserId = MY_USER_ID;
  127. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  128. [self checkGroupAnnouncementTableCreatedInDb:db];
  129. NSString* sql = [NSString stringWithFormat:@"update groupAnnouncement set userId=?,roomJid=?,content=?,creatTime=?,type=?,roomName=?,sendUserId=?,typeName=? where roomJid=?"];
  130. BOOL worked = [db executeUpdate:sql,self.userId,self.roomJid,self.content,self.creatTime,self.type,self.roomName,self.sendUserId,self.typeName, self.roomJid];
  131. return worked;
  132. }
  133. - (BOOL)updateRecordGroupAnnouncementSelectItem {
  134. NSString* myUserId = MY_USER_ID;
  135. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  136. [self checkGroupAnnouncementTableCreatedInDb:db];
  137. NSString* sql = [NSString stringWithFormat:@"update groupAnnouncement set selectItem=? where roomJid=?"];
  138. BOOL worked = [db executeUpdate:sql,self.selectItem, self.roomJid];
  139. return worked;
  140. }
  141. - (BOOL)insertRecordGroupAnnouncement {
  142. NSString* myUserId = MY_USER_ID;
  143. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  144. [self checkGroupAnnouncementTableCreatedInDb:db];
  145. NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO 'groupAnnouncement' ('userId','roomJid','content','creatTime','type','roomName','sendUserId','typeName') VALUES (?,?,?,?,?,?,?,?)"];
  146. BOOL worked = [db executeUpdate:insertStr,self.userId,self.roomJid,self.content,self.creatTime,self.type,self.roomName,self.sendUserId,self.typeName];
  147. return worked;
  148. }
  149. - (NSDate *)fetchGradeFromLocal {
  150. NSString* sql = [NSString stringWithFormat:@"select data from grade where gradeIndex = '%d'", self.gradeIndex];
  151. // NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  152. NSString* myUserId = MY_USER_ID;
  153. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  154. [self checkTableCreatedInDb:db];
  155. FMResultSet *rs=[db executeQuery:sql];
  156. while ([rs next]) {
  157. id data = [rs objectForColumnName:@"data"];
  158. return data;
  159. }
  160. [rs close];
  161. return nil;
  162. }
  163. // 创建所有VIP表
  164. - (BOOL)checkGradeTableCreatedInDb:(FMDatabase *)db {
  165. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS 'grade' ('gradeIndex' integer PRIMARY KEY NOT NULL UNIQUE, data blob)"];
  166. BOOL worked = [db executeUpdate:createStr];
  167. return worked;
  168. }
  169. // 更新VIP表
  170. - (BOOL)updateGradeTable {
  171. NSString* myUserId = MY_USER_ID;
  172. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  173. [self checkGradeTableCreatedInDb:db];
  174. NSString* sql = [NSString stringWithFormat:@"update grade set data=? where gradeIndex=?"];
  175. BOOL worked = [db executeUpdate:sql,self.data,self.gradeIndex];
  176. return worked;
  177. }
  178. - (BOOL)insertGradeTable {
  179. NSString* myUserId = MY_USER_ID;
  180. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  181. [self checkGradeTableCreatedInDb:db];
  182. NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO 'grade' ('gradeIndex','data') VALUES (?,?)"];
  183. BOOL worked = [db executeUpdate:insertStr,self.gradeIndex,self.data];
  184. if (!worked) {
  185. [self updateGradeTable];
  186. }
  187. return worked;
  188. }
  189. -(BOOL)checkTableCreatedInDb:(FMDatabase *)db
  190. {
  191. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('groupId' VARCHAR PRIMARY KEY NOT NULL UNIQUE , 'userId' VARCHAR, 'groupName' VARCHAR, 'userIdList' VARCHAR)",_tableName];
  192. BOOL worked = [db executeUpdate:createStr];
  193. return worked;
  194. }
  195. -(void)labelFromDataset:(JXLabelObject*)obj rs:(FMResultSet*)rs{
  196. obj.userId=[rs stringForColumn:@"userId"];
  197. obj.groupId=[rs stringForColumn:@"groupId"];
  198. obj.groupName=[rs stringForColumn:@"groupName"];
  199. obj.userIdList=[rs stringForColumn:@"userIdList"];
  200. }
  201. -(void)recordsFromDataset:(JXLabelObject*)obj rs:(FMResultSet*)rs{
  202. obj.userId=[rs stringForColumn:@"userId"];
  203. obj.userIds=[rs stringForColumn:@"userIds"];
  204. obj.text1=[rs stringForColumn:@"text1"];
  205. obj.text2=[rs stringForColumn:@"text2"];
  206. obj.userNames=[rs stringForColumn:@"userNames"];
  207. obj.userNamesWithGroup=[rs stringForColumn:@"userNamesWithGroup"];
  208. obj.message=[rs stringForColumn:@"message"];
  209. obj.sendTime=[rs stringForColumn:@"sendTime"];
  210. obj.userNmaesWithFriend=[rs stringForColumn:@"userNmaesWithFriend"];
  211. }
  212. -(void)groupAnnouncementFromDataset:(JXLabelObject*)obj rs:(FMResultSet*)rs{
  213. // self.userId,self.roomJid,self.content,self.creatTime,self.type,self.roomName,self.sendUserId,self.typeName
  214. obj.userId=[rs stringForColumn:@"userId"];
  215. obj.roomJid=[rs stringForColumn:@"roomJid"];
  216. obj.content=[rs stringForColumn:@"content"];
  217. obj.creatTime=[rs stringForColumn:@"creatTime"];
  218. obj.type=[rs stringForColumn:@"type"];
  219. obj.roomName=[rs stringForColumn:@"roomName"];
  220. obj.sendUserId=[rs stringForColumn:@"sendUserId"];
  221. obj.typeName=[rs stringForColumn:@"typeName"];
  222. }
  223. //数据库增删改查
  224. -(BOOL)insert {
  225. NSString* myUserId = MY_USER_ID;
  226. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  227. [self checkTableCreatedInDb:db];
  228. NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO '%@' ('groupId','userId','groupName','userIdList') VALUES (?,?,?,?)",_tableName];
  229. BOOL worked = [db executeUpdate:insertStr,self.groupId,self.userId,self.groupName,self.userIdList];
  230. if(!worked)
  231. worked = [self update];
  232. return worked;
  233. }
  234. -(BOOL)delete {
  235. NSString* myUserId = MY_USER_ID;
  236. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  237. [self checkTableCreatedInDb:db];
  238. NSString *sql = [NSString stringWithFormat:@"delete from %@ where groupId=?",_tableName];
  239. BOOL worked=[db executeUpdate:sql,self.groupId];
  240. return worked;
  241. }
  242. -(BOOL)update {
  243. NSString* myUserId = MY_USER_ID;
  244. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  245. [self checkTableCreatedInDb:db];
  246. NSString* sql = [NSString stringWithFormat:@"update %@ set userId=?,groupName=?,userIdList=? where groupId=?",_tableName];
  247. BOOL worked = [db executeUpdate:sql,self.userId,self.groupName,self.userIdList,self.groupId];
  248. return worked;
  249. }
  250. // 获取用户的所有标签
  251. - (NSMutableArray *)fetchLabelsWithUserId:(NSString *)userId {
  252. NSString* sql = [NSString stringWithFormat:@"select * from label where userIdList like '%%%@%%'", userId];
  253. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  254. NSString* myUserId = MY_USER_ID;
  255. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  256. [self checkTableCreatedInDb:db];
  257. FMResultSet *rs=[db executeQuery:sql];
  258. while ([rs next]) {
  259. JXLabelObject *label=[[JXLabelObject alloc] init];
  260. [self labelFromDataset:label rs:rs];
  261. [resultArr addObject:label];
  262. }
  263. [rs close];
  264. return resultArr;
  265. }
  266. @end