JXFriendObject.m 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  1. //
  2. // JXFriendObject.m
  3. //
  4. // Created by Reese on 13-8-11.
  5. // Copyright (c) 2013年 Reese. All rights reserved.
  6. //
  7. #import "JXFriendObject.h"
  8. #import "FMDatabase.h"
  9. #import "FMResultSet.h"
  10. #import "AppDelegate.h"
  11. #import "SBJsonParser.h"
  12. #import "SaveOrReadArr.h"
  13. @interface JXFriendObject ()
  14. @property (nonatomic, assign) BOOL isNewFriend;
  15. @property (nonatomic,strong) NSTimer *timerFriend;
  16. @end
  17. @implementation JXFriendObject
  18. static JXFriendObject *sharedUser;
  19. +(JXFriendObject*)sharedInstance{
  20. static dispatch_once_t onceToken;
  21. dispatch_once(&onceToken, ^{
  22. sharedUser=[[JXFriendObject alloc]init];
  23. });
  24. return sharedUser;
  25. }
  26. -(id)init{
  27. self = [super init];
  28. if(self){
  29. // _timerFriend=[NSTimer timerWithTimeInterval:1 target:self selector:@selector(resultShow) userInfo:@"11" repeats:YES];
  30. // [[NSRunLoop mainRunLoop] addTimer:_timerFriend forMode:NSRunLoopCommonModes];
  31. _tableName = @"newFriend";
  32. }
  33. return self;
  34. }
  35. - (void)resultShow{
  36. }
  37. -(void)dealloc{
  38. NSLog(@"JXFriendObject.dealloc");
  39. // [super dealloc];
  40. }
  41. -(BOOL)insert{
  42. self.roomFlag = [NSNumber numberWithInt:0];
  43. self.companyId = [NSNumber numberWithInt:0];
  44. self.offlineNoPushMsg = [NSNumber numberWithInt:0];
  45. self.talkTime = [NSNumber numberWithLong:0];
  46. return [super insert];
  47. }
  48. - (BOOL)update {
  49. if (!self.content || self.content.length <= 0) {
  50. self.content = [self getLastContent:self.userId];
  51. }
  52. return [super update];
  53. }
  54. -(JXFriendObject*)userFromDictionary:(NSDictionary*)aDic
  55. {
  56. JXFriendObject* user = [[JXFriendObject alloc]init];
  57. [super userFromDictionary:user dict:aDic];
  58. return user;
  59. }
  60. -(NSMutableArray*)fetchAllFriendsFromLocal
  61. {
  62. NSString* sql = @"select a.*,b.status as trueStatus from newfriend as a LEFT JOIN friend as b on a.userId=b.userId order by a.timeCreate desc";
  63. return [self doFetch:sql];
  64. }
  65. -(NSMutableArray*)doFetch:(NSString*)sql
  66. {
  67. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  68. NSString* myUserId = MY_USER_ID;
  69. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  70. [super checkTableCreatedInDb:db];
  71. FMResultSet *rs=[db executeQuery:sql];
  72. while ([rs next]) {
  73. JXFriendObject *user=[[JXFriendObject alloc] init];
  74. [super userFromDataset:user rs:rs];
  75. [resultArr addObject:user];
  76. // [user release];
  77. }
  78. [rs close];
  79. if([resultArr count]==0){
  80. // [resultArr release];
  81. resultArr = nil;
  82. }
  83. return resultArr;
  84. }
  85. -(void)notifyNewRequest{
  86. //发送全局通知
  87. [g_notify postNotificationName:kXMPPNewRequestNotifaction object:self userInfo:nil];
  88. }
  89. -(void)doSaveUser{
  90. // [self update];
  91. JXUserObject* user = [[JXUserObject alloc]init];
  92. [user loadFromObject:self];
  93. user.status = self.status;
  94. user.msgsNew = [NSNumber numberWithInt:0];
  95. user.content = nil;//很重要,必须有
  96. if([user haveTheUser]) {
  97. JXUserObject *oldUser = [[JXUserObject sharedInstance] getUserById:user.userId];
  98. user.userType = oldUser.userType;
  99. [user update];
  100. }
  101. else{
  102. [user insert];
  103. [user notifyNewFriend];
  104. }
  105. // [user release];
  106. }
  107. //- (void)doSaveAddressBook{
  108. // NSDictionary *dict = (NSDictionary *)self.content;
  109. // JXAddressBook *addressBook = [[JXAddressBook alloc] init];
  110. // addressBook.toUserId = [NSString stringWithFormat:@"%@",dict[@"toUserId"]];
  111. // addressBook.toUserName = dict[@"toUserName"];
  112. // addressBook.toTelephone = dict[@"toTelephone"];
  113. // addressBook.telephone = dict[@"telephone"];
  114. // addressBook.registerEd = dict[@"registerEd"];
  115. // addressBook.registerTime = [NSDate dateWithTimeIntervalSince1970:[dict[@"registerTime"] longLongValue]];
  116. // addressBook.isRead = [NSNumber numberWithBool:0];
  117. // [addressBook insert];
  118. //}
  119. -(void)doDelUser{
  120. self.status = [NSNumber numberWithInt:friend_status_none];
  121. [self update];
  122. [JXUserObject deleteUserAndMsg:self.userId];
  123. }
  124. -(NSString*)doMsgForNewUser{
  125. NSString* s;
  126. JXMessageObject* p = [[JXMessageObject alloc] init];
  127. if([self.isMySend boolValue]){
  128. p.fromUserId = MY_USER_ID;
  129. p.fromUserName = g_server.myself.userNickname;
  130. p.toUserId = self.userId;
  131. s = Localized(@"JXFriendObject_ChatNow");
  132. p.isMySend = YES;
  133. }else{
  134. p.fromUserId = self.userId;
  135. p.fromUserName = self.userNickname;
  136. p.toUserId = MY_USER_ID;
  137. s = Localized(@"JXFriendObject_StartChat");
  138. p.isMySend = NO;
  139. }
  140. if ([self.type intValue] == XMPP_TYPE_FRIEND) {
  141. p.fromUserId = self.userId;
  142. p.toUserId = MY_USER_ID;
  143. if ([self.isMySend boolValue]) {
  144. p.fromUserId = MY_USER_ID;
  145. p.toUserId = self.userId;
  146. }
  147. s = Localized(@"JXFriendObject_AddedFriend");
  148. }
  149. JXUserObject *serverUser = [[JXUserObject sharedInstance] getUserById:self.userId];
  150. if ([serverUser.userType intValue] == 2) {
  151. s = @" ";
  152. }else {
  153. p.content = s;
  154. p.type = [NSNumber numberWithInt:kWCMessageTypeText];
  155. p.isSend = [NSNumber numberWithInt:transfer_status_yes];
  156. p.isRead = [NSNumber numberWithInt:1];
  157. p.timeSend = [NSDate date];
  158. [p insert:nil];
  159. [p notifyNewMsg];
  160. }
  161. JXUserObject *user = [[JXUserObject alloc] init];
  162. user.userId = self.userId;
  163. user.userNickname = self.userNickname;
  164. user.content = s;
  165. [user insert];
  166. return s;
  167. }
  168. -(void)onSendRequest{
  169. if(![self.isMySend boolValue])
  170. return;
  171. NSNumber* tempStatus=nil;
  172. JXUserObject* user = [[JXUserObject sharedInstance] getUserById:self.userId];
  173. if(user)
  174. tempStatus = user.status;//先记住之前的关系
  175. switch ([self.type intValue]) {
  176. case XMPP_TYPE_SAYHELLO:
  177. if([tempStatus intValue]<=friend_status_none){
  178. self.status = [NSNumber numberWithInt:friend_status_see];
  179. [self doSaveUser];
  180. }
  181. break;
  182. case XMPP_TYPE_PASS:
  183. case XMPP_TYPE_CONTACTFRIEND:
  184. self.status = [NSNumber numberWithInt:friend_status_friend];
  185. [self doSaveUser];
  186. [self doMsgForNewUser];
  187. [g_notify postNotificationName:kFriendPassNotif object:self];
  188. break;
  189. case XMPP_TYPE_FEEDBACK:
  190. break;
  191. case XMPP_TYPE_NEWSEE:
  192. if([tempStatus intValue]<=friend_status_none){//新关注他人时,除非关系小于0,否则都用原来的关系,有可能已为2
  193. self.status = [NSNumber numberWithInt:friend_status_see];
  194. [self doSaveUser];
  195. }
  196. break;
  197. case XMPP_TYPE_DELSEE://删除关注
  198. [self doDelUser];
  199. break;
  200. case XMPP_TYPE_SEVERDELFRIEND:
  201. case XMPP_TYPE_DELALL:
  202. [self doDelUser];
  203. break;
  204. case XMPP_TYPE_SEVERDEL:
  205. [self doDelUser];
  206. break;
  207. case XMPP_TYPE_SEVERBLACK:
  208. case XMPP_TYPE_BLACK:
  209. self.status = [NSNumber numberWithInt:friend_status_black];
  210. [self doSaveUser];//建立黑名单
  211. [self notifyDelFriend];
  212. break;
  213. case XMPP_TYPE_SEVERNOBLACK:
  214. case XMPP_TYPE_NOBLACK:
  215. self.status = [NSNumber numberWithInt:friend_status_friend];
  216. [self doSaveUser];//取消黑名单
  217. [self doMsgForNewUser];
  218. break;
  219. case XMPP_TYPE_FRIEND:
  220. self.status = [NSNumber numberWithInt:friend_status_friend];
  221. // 加好友无法获取userType,此处调个接口
  222. [g_server getUser:self.userId toView:self];
  223. break;
  224. default:
  225. break;
  226. }
  227. // [user release];
  228. }
  229. -(void)onReceiveRequest{
  230. if([self.isMySend boolValue])
  231. return;
  232. NSNumber* tempStatus=nil;
  233. JXUserObject* user = [[JXUserObject sharedInstance] getUserById:self.userId];
  234. if(user)
  235. tempStatus = user.status;//先记住之前的关系
  236. // if([tempStatus intValue]<friend_status_none){//来者是我的黑名单时,直接忽略
  237. //// [user release];
  238. // return;
  239. // }
  240. switch ([self.type intValue]) {
  241. case XMPP_TYPE_SAYHELLO:
  242. {
  243. NSMutableArray *tempAArr= [SaveOrReadArr initNSKeyedFriendUnarchiver];
  244. if (tempAArr.count>0) {
  245. [tempAArr enumerateObjectsUsingBlock:^(JXUserObject * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  246. if ([obj.userId isEqualToString:user.userId]) {
  247. }else{
  248. NSMutableArray *arrxx=[[NSMutableArray alloc]initWithArray:[SaveOrReadArr initNSKeyedFriendUnarchiver]];
  249. //本地存储
  250. [arrxx addObject:user];
  251. [SaveOrReadArr initSerializationFriendArray:arrxx];
  252. }
  253. }];
  254. }else{
  255. NSMutableArray *arrxx=[[NSMutableArray alloc]initWithArray:[SaveOrReadArr initNSKeyedFriendUnarchiver]];
  256. //本地存储
  257. [arrxx addObject:user];
  258. [SaveOrReadArr initSerializationTempFriend:arrxx];
  259. }
  260. [g_notify postNotificationName:@"newFriend" object:nil userInfo:@{@"use":user}];
  261. }
  262. break;
  263. case XMPP_TYPE_PASS:
  264. case XMPP_TYPE_CONTACTFRIEND:
  265. self.status = [NSNumber numberWithInt:friend_status_friend];
  266. [self doSaveUser];
  267. [self doMsgForNewUser];
  268. [g_notify postNotificationName:kFriendPassNotif object:self];
  269. break;
  270. case XMPP_TYPE_FEEDBACK:
  271. break;
  272. case XMPP_TYPE_NEWSEE:
  273. if([tempStatus intValue]==friend_status_see){//如果原来已关注,则升级为互粉
  274. self.status = [NSNumber numberWithInt:friend_status_friend];
  275. [self doSaveUser];
  276. }
  277. break;
  278. case XMPP_TYPE_DELSEE:
  279. if([tempStatus intValue]==friend_status_friend){//如果原来已关注,则降级为单方
  280. self.status = [NSNumber numberWithInt:friend_status_see];
  281. [self doSaveUser];
  282. }
  283. break;
  284. case XMPP_TYPE_SEVERDELFRIEND:
  285. case XMPP_TYPE_DELALL:
  286. [self doDelUser];
  287. break;
  288. case XMPP_TYPE_SEVERDEL:
  289. [self doDelUser];
  290. break;
  291. case XMPP_TYPE_SEVERBLACK:
  292. case XMPP_TYPE_BLACK:
  293. self.status = [NSNumber numberWithInt:friend_status_hisBlack];
  294. [self doSaveUser];//建立黑名单
  295. [self notifyDelFriend];
  296. break;
  297. case XMPP_TYPE_SEVERNOBLACK:
  298. case XMPP_TYPE_NOBLACK:
  299. self.status = [NSNumber numberWithInt:friend_status_friend];
  300. [self doSaveUser];
  301. [self doMsgForNewUser];
  302. break;
  303. case XMPP_TYPE_FRIEND:
  304. self.status = [NSNumber numberWithInt:friend_status_friend];
  305. [self doSaveUser];
  306. [self doMsgForNewUser];
  307. break;
  308. // case XMPP_TYPE_CONTACTREGISTER:
  309. // [self doSaveAddressBook];
  310. // [g_notify postNotificationName:kRefreshAddressBookNotif object:nil];
  311. // break;
  312. default:
  313. break;
  314. }
  315. // [user release];
  316. }
  317. -(void)loadFromMessageObj:(JXMessageObject*)msg{
  318. self.type = msg.type;
  319. self.content = msg.content;
  320. self.timeSend = msg.timeSend;
  321. self.isMySend = [NSNumber numberWithBool:msg.isMySend];
  322. if([self.isMySend boolValue]){
  323. self.userId = msg.toUserId;
  324. self.userNickname = msg.toUserName;
  325. }else{
  326. self.userId = msg.fromUserId;
  327. self.userNickname = msg.fromUserName;
  328. }
  329. if ([msg.type integerValue] == XMPP_TYPE_SEVERDEL) {
  330. self.userId = [NSString stringWithFormat:@"%@",msg.objectId];
  331. NSString *name = [JXUserObject getUserNameWithUserId:self.userId];
  332. if (name && name.length > 0) {
  333. self.userNickname = name;
  334. }
  335. }
  336. if ([msg.type integerValue] == XMPP_TYPE_SEVERBLACK || [msg.type integerValue] == XMPP_TYPE_SEVERNOBLACK || [msg.type integerValue] == XMPP_TYPE_SEVERDELFRIEND) {
  337. SBJsonParser * resultParser = [[SBJsonParser alloc] init] ;
  338. NSDictionary *resultObject = [resultParser objectWithString:msg.objectId];
  339. if ([resultObject[@"toUserId"] isEqualToString:MY_USER_ID]) {
  340. self.userId = resultObject[@"fromUserId"];
  341. self.userNickname = resultObject[@"fromUserName"];
  342. self.isMySend = [NSNumber numberWithBool:NO];
  343. }else {
  344. self.userNickname = resultObject[@"toUserName"];
  345. self.userId = resultObject[@"toUserId"];
  346. self.isMySend = [NSNumber numberWithBool:YES];
  347. }
  348. }
  349. JXFriendObject *user = [self selectUser:self.userId];
  350. self.status = user.status;
  351. self.msgsNew = user.msgsNew;
  352. if (user.userNickname.length > 0) {
  353. self.userNickname = user.userNickname;
  354. }
  355. [self insert];
  356. }
  357. -(void)doWriteDb{
  358. if([self.isMySend boolValue])
  359. [self onSendRequest];
  360. else
  361. [self onReceiveRequest];
  362. }
  363. -(NSString*)getLastContent:(NSString *)userId{
  364. NSString* myUserId = MY_USER_ID;
  365. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  366. [self checkTableCreatedInDb:db];
  367. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  368. JXFriendObject *user=[[JXFriendObject alloc] init];
  369. while ([rs next]) {
  370. [super userFromDataset:user rs:rs];
  371. }
  372. [rs close];
  373. return user.content;
  374. }
  375. // 查找user
  376. - (JXFriendObject *)selectUser:(NSString *)userId {
  377. NSString* myUserId = MY_USER_ID;
  378. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  379. [self checkTableCreatedInDb:db];
  380. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  381. JXFriendObject *user=[[JXFriendObject alloc] init];
  382. while ([rs next]) {
  383. [super userFromDataset:user rs:rs];
  384. // [user release];
  385. }
  386. [rs close];
  387. return user;
  388. }
  389. -(JXFriendObject*)getFriendById:(NSString*)userId {
  390. NSString* myUserId = MY_USER_ID;
  391. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  392. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  393. if ([rs next]) {
  394. JXFriendObject *friend=[[JXFriendObject alloc]init];
  395. [super userFromDataset:friend rs:rs];
  396. [rs close];
  397. return friend;
  398. };
  399. return nil;
  400. }
  401. // 更新新消息
  402. - (BOOL)updateNewMsgUserId:(NSString *)userId num:(int)num {
  403. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:MY_USER_ID];
  404. [self checkTableCreatedInDb:db];
  405. NSString *sql = [NSString stringWithFormat:@"update %@ set newMsgs=? where userId=?",_tableName];
  406. BOOL worked=[db executeUpdate:sql,[NSNumber numberWithInt:num],userId];
  407. return worked;
  408. }
  409. // 更新新朋友列表最后一条消息
  410. - (void)updateNewFriendLastContent {
  411. self.isNewFriend = YES;
  412. [g_server getUser:self.userId toView:self];
  413. }
  414. - (BOOL)updateLastContent:(NSString *)s userId:(NSString *)userId {
  415. NSString* myUserId = MY_USER_ID;
  416. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  417. NSString *sql = [NSString stringWithFormat:@"update %@ set content=? where userId=?",_tableName];
  418. BOOL worked=[db executeUpdate:sql,s,userId];
  419. return worked;
  420. }
  421. -(NSString*)getUserNameWithUserId:(NSString*)userId{
  422. if(userId==nil)
  423. return nil;
  424. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:MY_USER_ID];
  425. //获取用户名
  426. NSString* sql= [NSString stringWithFormat:@"select userNickname from %@ where userId=%@",_tableName,userId];
  427. FMResultSet *rs=[db executeQuery:sql];
  428. if([rs next]) {
  429. NSString* s = [rs objectForColumnName:@"userNickname"];
  430. return s;
  431. }
  432. return nil;
  433. }
  434. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  435. if([aDownload.action isEqualToString:act_UserGet]){
  436. JXUserObject *user = [[JXUserObject alloc] init];
  437. [user getDataFromDict:dict];
  438. if (self.isNewFriend) {
  439. self.isNewFriend = NO;
  440. NSString* s = self.content;
  441. int n = [self.type intValue];
  442. if([self.isMySend boolValue]){
  443. switch (n) {
  444. case XMPP_TYPE_SAYHELLO:
  445. s= Localized(@"JXFriendObject_WaitPass");
  446. break;
  447. case XMPP_TYPE_PASS:
  448. s = Localized(@"JXFriendObject_Passed");
  449. break;
  450. case XMPP_TYPE_FEEDBACK:
  451. s = self.content;
  452. break;
  453. case XMPP_TYPE_NEWSEE:
  454. s = Localized(@"JXFriendObject_Followed");
  455. break;
  456. case XMPP_TYPE_DELSEE:
  457. s = Localized(@"JXFriendObject_CencalFollowed");
  458. break;
  459. case XMPP_TYPE_SEVERDELFRIEND:
  460. case XMPP_TYPE_DELALL:
  461. if ([user.userType intValue] == 2) {
  462. s = [NSString stringWithFormat:@"已取消关注公众号 %@",self.userNickname];
  463. }else {
  464. s = [NSString stringWithFormat:@"%@ %@",Localized(@"JXAlert_DeleteFirend"),self.userNickname];
  465. }
  466. break;
  467. case XMPP_TYPE_SEVERDEL:
  468. s = self.content;
  469. break;
  470. case XMPP_TYPE_SEVERBLACK:
  471. case XMPP_TYPE_BLACK:
  472. s = [NSString stringWithFormat:@"%@ %@",Localized(@"JXFriendObject_AddedBlackList"),self.userNickname];
  473. break;
  474. case XMPP_TYPE_SEVERNOBLACK:
  475. case XMPP_TYPE_NOBLACK: {
  476. if (self.isMySend) {
  477. s = [NSString stringWithFormat:@"我%@",Localized(@"JXFriendObject_NoBlack")];
  478. }else {
  479. s = [NSString stringWithFormat:@"%@ %@",MY_USER_NAME,Localized(@"JXFriendObject_NoBlack")];
  480. }
  481. }
  482. break;
  483. case XMPP_TYPE_FRIEND: {
  484. if ([user.userType intValue] == 2) {
  485. s = @"已关注公众号";
  486. }else {
  487. s = Localized(@"JXFriendObject_AddedFriend");
  488. }
  489. }
  490. break;
  491. case XMPP_TYPE_CONTACTFRIEND:
  492. s = Localized(@"JX_FriendsViaMobileContacts");
  493. break;
  494. default:
  495. break;
  496. }
  497. }else{
  498. switch (n) {
  499. case XMPP_TYPE_SAYHELLO:
  500. s = self.content;
  501. break;
  502. case XMPP_TYPE_PASS:
  503. s = Localized(@"JXFriendObject_PassGo");
  504. break;
  505. case XMPP_TYPE_FEEDBACK:
  506. s = self.content;
  507. break;
  508. case XMPP_TYPE_NEWSEE:
  509. s = Localized(@"JXFriendObject_FollowYour");
  510. break;
  511. case XMPP_TYPE_DELSEE:
  512. s = Localized(@"JXFriendObject_CancelFollow");
  513. break;
  514. case XMPP_TYPE_SEVERDELFRIEND:
  515. case XMPP_TYPE_DELALL:
  516. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_Deleted")];
  517. break;
  518. case XMPP_TYPE_SEVERDEL:
  519. s = self.content;
  520. break;
  521. case XMPP_TYPE_RECOMMEND:
  522. s = Localized(@"JXFriendObject_RecomYou");
  523. break;
  524. case XMPP_TYPE_SEVERBLACK:
  525. case XMPP_TYPE_BLACK:
  526. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_PulledBlack")];
  527. break;
  528. case XMPP_TYPE_SEVERNOBLACK:
  529. case XMPP_TYPE_NOBLACK:
  530. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_NoBlack")];
  531. break;
  532. case XMPP_TYPE_FRIEND:
  533. s = Localized(@"JXFriendObject_BeAddFriend");
  534. break;
  535. case XMPP_TYPE_CONTACTFRIEND:
  536. s = Localized(@"JX_FriendsViaMobileContacts");
  537. break;
  538. default:
  539. break;
  540. }
  541. }
  542. // 更新最后一条消息
  543. [self updateLastContent:s userId:user.userId];
  544. [self notifyNewRequest];
  545. return;
  546. }
  547. if (![user haveTheUser]) {
  548. [user insert];
  549. }else {
  550. [user update];
  551. }
  552. [self doSaveUser];
  553. [self doMsgForNewUser];
  554. [g_notify postNotificationName:kFriendPassNotif object:self];
  555. // [g_notify postNotificationName:@"newFriend" object:nil userInfo:@{@"use":user}];
  556. }
  557. }
  558. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  559. return hide_error;
  560. }
  561. -(int) didServerConnectError:(JXConnection*)aDownload error:(NSError *)error{//error为空时,代表超时
  562. return hide_error;
  563. }
  564. -(void) didServerConnectStart:(JXConnection*)aDownload{
  565. }
  566. @end