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. NSString* sql = [NSString stringWithFormat:@"select content from groupAnnouncement"];
  74. // NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  75. NSString* myUserId = MY_USER_ID;
  76. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  77. [self checkTableCreatedInDb:db];
  78. NSString *content;
  79. FMResultSet *rs=[db executeQuery:sql];
  80. while ([rs next]) {
  81. // JXLabelObject *label=[[JXLabelObject alloc] init];
  82. // [self groupAnnouncementFromDataset:label rs:rs];
  83. // [resultArr addObject:label];
  84. content = [rs stringForColumn:@"content"];
  85. return content;
  86. }
  87. [rs close];
  88. return nil;
  89. }
  90. - (NSString *)fetchGroupAnnouncementSelectItemFromLocal {
  91. // NSString* sql = [NSString stringWithFormat:@"select selectItem from groupAnnouncement where roomJid = '%@'", self.roomJid];
  92. NSString* sql = [NSString stringWithFormat:@"select selectItem from groupAnnouncement"];
  93. // NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  94. NSString* myUserId = MY_USER_ID;
  95. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  96. [self checkTableCreatedInDb:db];
  97. NSString *selectItem;
  98. FMResultSet *rs=[db executeQuery:sql];
  99. while ([rs next]) {
  100. // JXLabelObject *label=[[JXLabelObject alloc] init];
  101. // [self groupAnnouncementFromDataset:label rs:rs];
  102. // [resultArr addObject:label];
  103. selectItem = [rs stringForColumn:@"selectItem"];
  104. return selectItem;
  105. }
  106. [rs close];
  107. return nil;
  108. }
  109. - (BOOL)checkGroupAnnouncementRoomJid {
  110. NSString* sql = [NSString stringWithFormat:@"SELECT * FROM groupAnnouncement WHERE roomJid = '%@'", self.roomJid];
  111. NSString* myUserId = MY_USER_ID;
  112. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  113. [self checkTableCreatedInDb:db];
  114. FMResultSet *rs=[db executeQuery:sql];
  115. while ([rs next]) {
  116. return YES; // 那就直接返回,即不执行插入操作
  117. }
  118. [rs close];
  119. return NO;
  120. }
  121. // 创建表头公告表
  122. - (BOOL)checkGroupAnnouncementTableCreatedInDb:(FMDatabase *)db {
  123. 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)"];
  124. BOOL worked = [db executeUpdate:createStr];
  125. return worked;
  126. }
  127. - (BOOL)updateRecordGroupAnnouncement {
  128. NSString* myUserId = MY_USER_ID;
  129. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  130. [self checkGroupAnnouncementTableCreatedInDb:db];
  131. NSString* sql = [NSString stringWithFormat:@"update groupAnnouncement set userId=?,roomJid=?,content=?,creatTime=?,type=?,roomName=?,sendUserId=?,typeName=? where roomJid=?"];
  132. BOOL worked = [db executeUpdate:sql,self.userId,self.roomJid,self.content,self.creatTime,self.type,self.roomName,self.sendUserId,self.typeName, self.roomJid];
  133. return worked;
  134. }
  135. - (BOOL)updateRecordGroupAnnouncementSelectItem {
  136. NSString* myUserId = MY_USER_ID;
  137. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  138. [self checkGroupAnnouncementTableCreatedInDb:db];
  139. NSString* sql = [NSString stringWithFormat:@"update groupAnnouncement set selectItem=? where roomJid=?"];
  140. BOOL worked = [db executeUpdate:sql,self.selectItem, self.roomJid];
  141. return worked;
  142. }
  143. - (BOOL)insertRecordGroupAnnouncement {
  144. NSString* myUserId = MY_USER_ID;
  145. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  146. [self checkGroupAnnouncementTableCreatedInDb:db];
  147. NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO 'groupAnnouncement' ('userId','roomJid','content','creatTime','type','roomName','sendUserId','typeName') VALUES (?,?,?,?,?,?,?,?)"];
  148. BOOL worked = [db executeUpdate:insertStr,self.userId,self.roomJid,self.content,self.creatTime,self.type,self.roomName,self.sendUserId,self.typeName];
  149. return worked;
  150. }
  151. - (NSDate *)fetchGradeFromLocal {
  152. NSString* sql = [NSString stringWithFormat:@"select data from grade where gradeIndex = '%d'", self.gradeIndex];
  153. // NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  154. NSString* myUserId = MY_USER_ID;
  155. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  156. [self checkTableCreatedInDb:db];
  157. FMResultSet *rs=[db executeQuery:sql];
  158. while ([rs next]) {
  159. id data = [rs objectForColumnName:@"data"];
  160. return data;
  161. }
  162. [rs close];
  163. return nil;
  164. }
  165. // 创建所有VIP表
  166. - (BOOL)checkGradeTableCreatedInDb:(FMDatabase *)db {
  167. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS 'grade' ('gradeIndex' integer PRIMARY KEY NOT NULL UNIQUE, data blob)"];
  168. BOOL worked = [db executeUpdate:createStr];
  169. return worked;
  170. }
  171. // 更新VIP表
  172. - (BOOL)updateGradeTable {
  173. NSString* myUserId = MY_USER_ID;
  174. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  175. [self checkGradeTableCreatedInDb:db];
  176. NSString* sql = [NSString stringWithFormat:@"update grade set data=? where gradeIndex=?"];
  177. BOOL worked = [db executeUpdate:sql,self.data,self.gradeIndex];
  178. return worked;
  179. }
  180. - (BOOL)insertGradeTable {
  181. NSString* myUserId = MY_USER_ID;
  182. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  183. [self checkGradeTableCreatedInDb:db];
  184. NSString *insertStr = [NSString stringWithFormat:@"INSERT INTO 'grade' ('gradeIndex','data') VALUES (?,?)"];
  185. BOOL worked = [db executeUpdate:insertStr,self.gradeIndex,self.data];
  186. if (!worked) {
  187. [self updateGradeTable];
  188. }
  189. return worked;
  190. }
  191. -(BOOL)checkTableCreatedInDb:(FMDatabase *)db
  192. {
  193. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('groupId' VARCHAR PRIMARY KEY NOT NULL UNIQUE , 'userId' VARCHAR, 'groupName' VARCHAR, 'userIdList' VARCHAR)",_tableName];
  194. BOOL worked = [db executeUpdate:createStr];
  195. return worked;
  196. }
  197. -(void)labelFromDataset:(JXLabelObject*)obj rs:(FMResultSet*)rs{
  198. obj.userId=[rs stringForColumn:@"userId"];
  199. obj.groupId=[rs stringForColumn:@"groupId"];
  200. obj.groupName=[rs stringForColumn:@"groupName"];
  201. obj.userIdList=[rs stringForColumn:@"userIdList"];
  202. }
  203. -(void)recordsFromDataset:(JXLabelObject*)obj rs:(FMResultSet*)rs{
  204. obj.userId=[rs stringForColumn:@"userId"];
  205. obj.userIds=[rs stringForColumn:@"userIds"];
  206. obj.text1=[rs stringForColumn:@"text1"];
  207. obj.text2=[rs stringForColumn:@"text2"];
  208. obj.userNames=[rs stringForColumn:@"userNames"];
  209. obj.userNamesWithGroup=[rs stringForColumn:@"userNamesWithGroup"];
  210. obj.message=[rs stringForColumn:@"message"];
  211. obj.sendTime=[rs stringForColumn:@"sendTime"];
  212. obj.userNmaesWithFriend=[rs stringForColumn:@"userNmaesWithFriend"];
  213. }
  214. -(void)groupAnnouncementFromDataset:(JXLabelObject*)obj rs:(FMResultSet*)rs{
  215. // self.userId,self.roomJid,self.content,self.creatTime,self.type,self.roomName,self.sendUserId,self.typeName
  216. obj.userId=[rs stringForColumn:@"userId"];
  217. obj.roomJid=[rs stringForColumn:@"roomJid"];
  218. obj.content=[rs stringForColumn:@"content"];
  219. obj.creatTime=[rs stringForColumn:@"creatTime"];
  220. obj.type=[rs stringForColumn:@"type"];
  221. obj.roomName=[rs stringForColumn:@"roomName"];
  222. obj.sendUserId=[rs stringForColumn:@"sendUserId"];
  223. obj.typeName=[rs stringForColumn:@"typeName"];
  224. }
  225. //数据库增删改查
  226. -(BOOL)insert {
  227. NSString* myUserId = MY_USER_ID;
  228. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  229. [self checkTableCreatedInDb:db];
  230. NSString *insertStr=[NSString stringWithFormat:@"INSERT INTO '%@' ('groupId','userId','groupName','userIdList') VALUES (?,?,?,?)",_tableName];
  231. BOOL worked = [db executeUpdate:insertStr,self.groupId,self.userId,self.groupName,self.userIdList];
  232. if(!worked)
  233. worked = [self update];
  234. return worked;
  235. }
  236. -(BOOL)delete {
  237. NSString* myUserId = MY_USER_ID;
  238. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  239. [self checkTableCreatedInDb:db];
  240. NSString *sql = [NSString stringWithFormat:@"delete from %@ where groupId=?",_tableName];
  241. BOOL worked=[db executeUpdate:sql,self.groupId];
  242. return worked;
  243. }
  244. -(BOOL)update {
  245. NSString* myUserId = MY_USER_ID;
  246. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  247. [self checkTableCreatedInDb:db];
  248. NSString* sql = [NSString stringWithFormat:@"update %@ set userId=?,groupName=?,userIdList=? where groupId=?",_tableName];
  249. BOOL worked = [db executeUpdate:sql,self.userId,self.groupName,self.userIdList,self.groupId];
  250. return worked;
  251. }
  252. // 获取用户的所有标签
  253. - (NSMutableArray *)fetchLabelsWithUserId:(NSString *)userId {
  254. NSString* sql = [NSString stringWithFormat:@"select * from label where userIdList like '%%%@%%'", userId];
  255. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  256. NSString* myUserId = MY_USER_ID;
  257. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  258. [self checkTableCreatedInDb:db];
  259. FMResultSet *rs=[db executeQuery:sql];
  260. while ([rs next]) {
  261. JXLabelObject *label=[[JXLabelObject alloc] init];
  262. [self labelFromDataset:label rs:rs];
  263. [resultArr addObject:label];
  264. }
  265. [rs close];
  266. return resultArr;
  267. }
  268. @end