JXFriendObject.m 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  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. {
  265. NSLog(@"验证通过 %@",user);
  266. }
  267. case XMPP_TYPE_CONTACTFRIEND:
  268. self.status = [NSNumber numberWithInt:friend_status_friend];
  269. [self doSaveUser];
  270. [self doMsgForNewUser];
  271. [g_notify postNotificationName:kFriendPassNotif object:self];
  272. break;
  273. case XMPP_TYPE_FEEDBACK:
  274. break;
  275. case XMPP_TYPE_NEWSEE:
  276. if([tempStatus intValue]==friend_status_see){//如果原来已关注,则升级为互粉
  277. self.status = [NSNumber numberWithInt:friend_status_friend];
  278. [self doSaveUser];
  279. }
  280. break;
  281. case XMPP_TYPE_DELSEE:
  282. if([tempStatus intValue]==friend_status_friend){//如果原来已关注,则降级为单方
  283. self.status = [NSNumber numberWithInt:friend_status_see];
  284. [self doSaveUser];
  285. }
  286. break;
  287. case XMPP_TYPE_SEVERDELFRIEND:
  288. case XMPP_TYPE_DELALL:
  289. [self doDelUser];
  290. break;
  291. case XMPP_TYPE_SEVERDEL:
  292. [self doDelUser];
  293. break;
  294. case XMPP_TYPE_SEVERBLACK:
  295. case XMPP_TYPE_BLACK:
  296. self.status = [NSNumber numberWithInt:friend_status_hisBlack];
  297. [self doSaveUser];//建立黑名单
  298. [self notifyDelFriend];
  299. break;
  300. case XMPP_TYPE_SEVERNOBLACK:
  301. case XMPP_TYPE_NOBLACK:
  302. self.status = [NSNumber numberWithInt:friend_status_friend];
  303. [self doSaveUser];
  304. [self doMsgForNewUser];
  305. break;
  306. case XMPP_TYPE_FRIEND:
  307. self.status = [NSNumber numberWithInt:friend_status_friend];
  308. [self doSaveUser];
  309. [self doMsgForNewUser];
  310. break;
  311. // case XMPP_TYPE_CONTACTREGISTER:
  312. // [self doSaveAddressBook];
  313. // [g_notify postNotificationName:kRefreshAddressBookNotif object:nil];
  314. // break;
  315. default:
  316. break;
  317. }
  318. // [user release];
  319. }
  320. -(void)loadFromMessageObj:(JXMessageObject*)msg{
  321. self.type = msg.type;
  322. self.content = msg.content;
  323. self.timeSend = msg.timeSend;
  324. self.isMySend = [NSNumber numberWithBool:msg.isMySend];
  325. if([self.isMySend boolValue]){
  326. self.userId = msg.toUserId;
  327. self.userNickname = msg.toUserName;
  328. }else{
  329. self.userId = msg.fromUserId;
  330. self.userNickname = msg.fromUserName;
  331. }
  332. if ([msg.type integerValue] == XMPP_TYPE_SEVERDEL) {
  333. self.userId = [NSString stringWithFormat:@"%@",msg.objectId];
  334. NSString *name = [JXUserObject getUserNameWithUserId:self.userId];
  335. if (name && name.length > 0) {
  336. self.userNickname = name;
  337. }
  338. }
  339. if ([msg.type integerValue] == XMPP_TYPE_SEVERBLACK || [msg.type integerValue] == XMPP_TYPE_SEVERNOBLACK || [msg.type integerValue] == XMPP_TYPE_SEVERDELFRIEND) {
  340. SBJsonParser * resultParser = [[SBJsonParser alloc] init] ;
  341. NSDictionary *resultObject = [resultParser objectWithString:msg.objectId];
  342. if ([resultObject[@"toUserId"] isEqualToString:MY_USER_ID]) {
  343. self.userId = resultObject[@"fromUserId"];
  344. self.userNickname = resultObject[@"fromUserName"];
  345. self.isMySend = [NSNumber numberWithBool:NO];
  346. }else {
  347. self.userNickname = resultObject[@"toUserName"];
  348. self.userId = resultObject[@"toUserId"];
  349. self.isMySend = [NSNumber numberWithBool:YES];
  350. }
  351. }
  352. JXFriendObject *user = [self selectUser:self.userId];
  353. self.status = user.status;
  354. self.msgsNew = user.msgsNew;
  355. if (user.userNickname.length > 0) {
  356. self.userNickname = user.userNickname;
  357. }
  358. [self insert];
  359. }
  360. -(void)doWriteDb{
  361. if([self.isMySend boolValue])
  362. [self onSendRequest];
  363. else
  364. [self onReceiveRequest];
  365. }
  366. -(NSString*)getLastContent:(NSString *)userId{
  367. NSString* myUserId = MY_USER_ID;
  368. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  369. [self checkTableCreatedInDb:db];
  370. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  371. JXFriendObject *user=[[JXFriendObject alloc] init];
  372. while ([rs next]) {
  373. [super userFromDataset:user rs:rs];
  374. }
  375. [rs close];
  376. return user.content;
  377. }
  378. // 查找user
  379. - (JXFriendObject *)selectUser:(NSString *)userId {
  380. NSString* myUserId = MY_USER_ID;
  381. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  382. [self checkTableCreatedInDb:db];
  383. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  384. JXFriendObject *user=[[JXFriendObject alloc] init];
  385. while ([rs next]) {
  386. [super userFromDataset:user rs:rs];
  387. // [user release];
  388. }
  389. [rs close];
  390. return user;
  391. }
  392. -(JXFriendObject*)getFriendById:(NSString*)userId {
  393. NSString* myUserId = MY_USER_ID;
  394. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  395. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  396. if ([rs next]) {
  397. JXFriendObject *friend=[[JXFriendObject alloc]init];
  398. [super userFromDataset:friend rs:rs];
  399. [rs close];
  400. return friend;
  401. };
  402. return nil;
  403. }
  404. // 更新新消息
  405. - (BOOL)updateNewMsgUserId:(NSString *)userId num:(int)num {
  406. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:MY_USER_ID];
  407. [self checkTableCreatedInDb:db];
  408. NSString *sql = [NSString stringWithFormat:@"update %@ set newMsgs=? where userId=?",_tableName];
  409. BOOL worked=[db executeUpdate:sql,[NSNumber numberWithInt:num],userId];
  410. return worked;
  411. }
  412. // 更新新朋友列表最后一条消息
  413. - (void)updateNewFriendLastContent {
  414. self.isNewFriend = YES;
  415. [g_server getUser:self.userId toView:self];
  416. }
  417. - (BOOL)updateLastContent:(NSString *)s userId:(NSString *)userId {
  418. NSString* myUserId = MY_USER_ID;
  419. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  420. NSString *sql = [NSString stringWithFormat:@"update %@ set content=? where userId=?",_tableName];
  421. BOOL worked=[db executeUpdate:sql,s,userId];
  422. return worked;
  423. }
  424. -(NSString*)getUserNameWithUserId:(NSString*)userId{
  425. if(userId==nil)
  426. return nil;
  427. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:MY_USER_ID];
  428. //获取用户名
  429. NSString* sql= [NSString stringWithFormat:@"select userNickname from %@ where userId=%@",_tableName,userId];
  430. FMResultSet *rs=[db executeQuery:sql];
  431. if([rs next]) {
  432. NSString* s = [rs objectForColumnName:@"userNickname"];
  433. return s;
  434. }
  435. return nil;
  436. }
  437. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  438. if([aDownload.action isEqualToString:act_UserGet]){
  439. JXUserObject *user = [[JXUserObject alloc] init];
  440. [user getDataFromDict:dict];
  441. if (self.isNewFriend) {
  442. self.isNewFriend = NO;
  443. NSString* s = self.content;
  444. int n = [self.type intValue];
  445. if([self.isMySend boolValue]){
  446. switch (n) {
  447. case XMPP_TYPE_SAYHELLO:
  448. s= Localized(@"JXFriendObject_WaitPass");
  449. break;
  450. case XMPP_TYPE_PASS:
  451. s = Localized(@"JXFriendObject_Passed");
  452. break;
  453. case XMPP_TYPE_FEEDBACK:
  454. s = self.content;
  455. break;
  456. case XMPP_TYPE_NEWSEE:
  457. s = Localized(@"JXFriendObject_Followed");
  458. break;
  459. case XMPP_TYPE_DELSEE:
  460. s = Localized(@"JXFriendObject_CencalFollowed");
  461. break;
  462. case XMPP_TYPE_SEVERDELFRIEND:
  463. case XMPP_TYPE_DELALL:
  464. if ([user.userType intValue] == 2) {
  465. s = [NSString stringWithFormat:@"已取消关注公众号 %@",self.userNickname];
  466. }else {
  467. s = [NSString stringWithFormat:@"%@ %@",Localized(@"JXAlert_DeleteFirend"),self.userNickname];
  468. }
  469. break;
  470. case XMPP_TYPE_SEVERDEL:
  471. s = self.content;
  472. break;
  473. case XMPP_TYPE_SEVERBLACK:
  474. case XMPP_TYPE_BLACK:
  475. s = [NSString stringWithFormat:@"%@ %@",Localized(@"JXFriendObject_AddedBlackList"),self.userNickname];
  476. break;
  477. case XMPP_TYPE_SEVERNOBLACK:
  478. case XMPP_TYPE_NOBLACK: {
  479. if (self.isMySend) {
  480. s = [NSString stringWithFormat:@"我%@",Localized(@"JXFriendObject_NoBlack")];
  481. }else {
  482. s = [NSString stringWithFormat:@"%@ %@",MY_USER_NAME,Localized(@"JXFriendObject_NoBlack")];
  483. }
  484. }
  485. break;
  486. case XMPP_TYPE_FRIEND: {
  487. if ([user.userType intValue] == 2) {
  488. s = @"已关注公众号";
  489. }else {
  490. s = Localized(@"JXFriendObject_AddedFriend");
  491. }
  492. }
  493. break;
  494. case XMPP_TYPE_CONTACTFRIEND:
  495. s = Localized(@"JX_FriendsViaMobileContacts");
  496. break;
  497. default:
  498. break;
  499. }
  500. }else{
  501. switch (n) {
  502. case XMPP_TYPE_SAYHELLO:
  503. s = self.content;
  504. break;
  505. case XMPP_TYPE_PASS:
  506. s = Localized(@"JXFriendObject_PassGo");
  507. break;
  508. case XMPP_TYPE_FEEDBACK:
  509. s = self.content;
  510. break;
  511. case XMPP_TYPE_NEWSEE:
  512. s = Localized(@"JXFriendObject_FollowYour");
  513. break;
  514. case XMPP_TYPE_DELSEE:
  515. s = Localized(@"JXFriendObject_CancelFollow");
  516. break;
  517. case XMPP_TYPE_SEVERDELFRIEND:
  518. case XMPP_TYPE_DELALL:
  519. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_Deleted")];
  520. break;
  521. case XMPP_TYPE_SEVERDEL:
  522. s = self.content;
  523. break;
  524. case XMPP_TYPE_RECOMMEND:
  525. s = Localized(@"JXFriendObject_RecomYou");
  526. break;
  527. case XMPP_TYPE_SEVERBLACK:
  528. case XMPP_TYPE_BLACK:
  529. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_PulledBlack")];
  530. break;
  531. case XMPP_TYPE_SEVERNOBLACK:
  532. case XMPP_TYPE_NOBLACK:
  533. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_NoBlack")];
  534. break;
  535. case XMPP_TYPE_FRIEND:
  536. s = Localized(@"JXFriendObject_BeAddFriend");
  537. break;
  538. case XMPP_TYPE_CONTACTFRIEND:
  539. s = Localized(@"JX_FriendsViaMobileContacts");
  540. break;
  541. default:
  542. break;
  543. }
  544. }
  545. // 更新最后一条消息
  546. [self updateLastContent:s userId:user.userId];
  547. [self notifyNewRequest];
  548. return;
  549. }
  550. if (![user haveTheUser]) {
  551. [user insert];
  552. }else {
  553. [user update];
  554. }
  555. [self doSaveUser];
  556. [self doMsgForNewUser];
  557. [g_notify postNotificationName:kFriendPassNotif object:self];
  558. // [g_notify postNotificationName:@"newFriend" object:nil userInfo:@{@"use":user}];
  559. }
  560. }
  561. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  562. return hide_error;
  563. }
  564. -(int) didServerConnectError:(JXConnection*)aDownload error:(NSError *)error{//error为空时,代表超时
  565. return hide_error;
  566. }
  567. -(void) didServerConnectStart:(JXConnection*)aDownload{
  568. }
  569. @end