JXRelayVC.m 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972
  1. //
  2. // JXRelayVC.m
  3. // shiku_im
  4. //
  5. // Created by p on 2017/6/27.
  6. // Copyright © 2017年 Reese. All rights reserved.
  7. //
  8. #import "JXRelayVC.h"
  9. #import "JXChatViewController.h"
  10. #import "JXRoomPool.h"
  11. #import "JXRoomObject.h"
  12. #import "JXCell.h"
  13. #import "addMsgVC.h"
  14. #import "QCheckBox.h"
  15. typedef enum : NSUInteger {
  16. RelayType_msg = 1,
  17. RelayType_myFriend,
  18. RelayType_myGroup,
  19. } RelayType;
  20. @interface JXRelayVC ()<QCheckBoxDelegate>
  21. @property (nonatomic, strong) NSMutableArray *msgArray;
  22. @property (nonatomic, strong) NSMutableArray *myFriendArray;
  23. @property (nonatomic, strong) NSMutableArray *myGroupArray;
  24. @property (nonatomic, assign) RelayType type;
  25. @property (nonatomic, strong) JXRoomObject *chatRoom;
  26. @property (nonatomic, assign) NSInteger selectIndex;
  27. @property (nonatomic, strong) UIButton *doneBtn;
  28. @property (nonatomic, strong) UIButton *cancelBtn;
  29. @property (nonatomic, strong) NSMutableArray *checkBoxs;
  30. @property (nonatomic, strong) NSMutableArray *selectArr;
  31. @end
  32. @implementation JXRelayVC
  33. - (void)viewDidLoad {
  34. [super viewDidLoad];
  35. self.heightHeader = JX_SCREEN_TOP;
  36. self.heightFooter = 0;
  37. self.isGotoBack = YES;
  38. //self.view.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT-JX_SCREEN_BOTTOM);
  39. [self createHeadAndFoot];
  40. self.title = Localized(@"JX_SelectTheSendingObject");
  41. _msgArray = [NSMutableArray array];
  42. _myFriendArray = [NSMutableArray array];
  43. _myGroupArray = [NSMutableArray array];
  44. _checkBoxs = [NSMutableArray array];
  45. _selectArr = [NSMutableArray array];
  46. self.type = RelayType_msg;
  47. [self getLocData];
  48. if (self.isMoreSel) {
  49. self.cancelBtn = [[UIButton alloc] initWithFrame:CGRectMake(15, JX_SCREEN_TOP - 34, 34, 24)];
  50. [self.cancelBtn setTitle:Localized(@"JX_Cencal") forState:UIControlStateNormal];
  51. [self.cancelBtn setTitleColor:THESIMPLESTYLE ? [UIColor blackColor] : [UIColor whiteColor] forState:UIControlStateNormal];
  52. self.cancelBtn.titleLabel.font = [UIFont systemFontOfSize:16.0];
  53. [self.cancelBtn addTarget:self action:@selector(cancelBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  54. self.cancelBtn.hidden = YES;
  55. [self.tableHeader addSubview:self.cancelBtn];
  56. self.doneBtn = [[UIButton alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH - 60-10, JX_SCREEN_TOP - 34, 60, 24)];
  57. [self.doneBtn setTitle:Localized(@"JX_Multiselect") forState:UIControlStateNormal];
  58. [self.doneBtn setTitle:Localized(@"JX_Finish") forState:UIControlStateSelected];
  59. [self.doneBtn setTitleColor:THESIMPLESTYLE ? [UIColor blackColor] : [UIColor whiteColor] forState:UIControlStateNormal];
  60. self.doneBtn.titleLabel.font = [UIFont systemFontOfSize:16.0];
  61. [self.doneBtn addTarget:self action:@selector(doneBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  62. [self.tableHeader addSubview:self.doneBtn];
  63. [self setDoneBtnFrame];
  64. }
  65. }
  66. - (void)setDoneBtnFrame {
  67. CGSize size = [self.doneBtn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:self.doneBtn.titleLabel.font}];
  68. self.doneBtn.frame = CGRectMake(JX_SCREEN_WIDTH-size.width-15, self.doneBtn.frame.origin.y, size.width, self.doneBtn.frame.size.height);
  69. }
  70. - (void)doneBtnAction:(UIButton *)btn {
  71. if (self.cancelBtn.hidden) {
  72. self.gotoBackBtn.hidden = YES;
  73. self.cancelBtn.hidden = NO;
  74. [self.tableView reloadData];
  75. }else {
  76. BOOL flag = NO;
  77. for (NSInteger i = 0; i < _selectArr.count; i ++) {
  78. JXMsgAndUserObject *p = _selectArr[i];
  79. p.user.msgsNew = [NSNumber numberWithInt:0];
  80. [p.user update];
  81. [p.message updateNewMsgsTo0];
  82. if ([p.user.talkTime intValue] > 0) {
  83. memberData *member = [[memberData alloc] init];
  84. member = [member getCardNameById:MY_USER_ID];
  85. if ([member.role intValue] !=2 && [member.role intValue] !=1) {
  86. if (_selectArr.count == 1) {
  87. [g_App showAlert:Localized(@"HAS_BEEN_BANNED")];
  88. return;
  89. }
  90. [JXMyTools showTipView:[NSString stringWithFormat:@"%@被禁言",p.user.userNickname]];
  91. continue;
  92. }
  93. }
  94. for (NSInteger j = 0; j < _relayMsgArray.count; j ++) {
  95. JXMessageObject *msg = _relayMsgArray[j];
  96. [self relay:msg withUserObj:p];
  97. }
  98. if ([p.user.userId isEqualToString:self.chatPerson.userId]) {
  99. flag = YES;
  100. }
  101. }
  102. // [g_notify postNotificationName:kRefreshChatLogNotif object:nil];
  103. [g_server showMsg:Localized(@"JX_SendComplete")];
  104. [self actionQuit];
  105. }
  106. self.doneBtn.selected = !self.doneBtn.selected;
  107. [self setDoneBtnFrame];
  108. }
  109. - (void)cancelBtnAction:(UIButton *)btn {
  110. self.gotoBackBtn.hidden = NO;
  111. self.cancelBtn.hidden = YES;
  112. self.doneBtn.selected = NO;
  113. [_selectArr removeAllObjects];
  114. [self.tableView reloadData];
  115. [self setDoneBtnFrame];
  116. }
  117. - (void) relay:(JXMessageObject *)msg withUserObj:(JXMsgAndUserObject *)userObj{
  118. if (msg.content.length > 0) {
  119. JXMessageObject *msg1 = [[JXMessageObject alloc]init];
  120. msg1 = [msg copy];
  121. msg1.messageId = nil;
  122. msg1.timeSend = [NSDate date];
  123. msg1.fromId = nil;
  124. msg1.fromUserId = MY_USER_ID;
  125. msg1.fromUserName = g_myself.userNickname;
  126. if([userObj.user.roomFlag boolValue]){
  127. msg1.isGroup = YES;
  128. }
  129. else{
  130. msg1.isGroup = NO;
  131. }
  132. msg1.toUserId = userObj.user.userId;
  133. // msg.content = relayMsg.content;
  134. // msg.type = relayMsg.type;
  135. msg1.isSend = [NSNumber numberWithInt:transfer_status_ing];
  136. msg1.isRead = [NSNumber numberWithBool:NO];
  137. msg1.isReadDel = [NSNumber numberWithInt:NO];
  138. NSString *roomJid = nil;
  139. if ([userObj.user.roomFlag boolValue]) {
  140. roomJid = userObj.user.userId;
  141. }
  142. //发往哪里
  143. [msg1 insert:roomJid];
  144. [g_xmpp sendMessage:msg1 roomName:roomJid];//发送消息
  145. if ([userObj.user.userId isEqualToString:self.chatPerson.userId]) {
  146. [self.chatVC showOneMsg:msg1];
  147. }
  148. }
  149. }
  150. - (void) getLocData {
  151. NSMutableArray* p = [[JXMessageObject sharedInstance] fetchRecentChat];
  152. // if (p.count>0 || _page == 0) {
  153. if (p.count>0) {
  154. for(NSInteger i = 0; i < p.count; i ++) {
  155. JXMsgAndUserObject *obj = p[i];
  156. if ([obj.user.userId isEqualToString:FRIEND_CENTER_USERID]) {
  157. continue;
  158. }
  159. if ([obj.user.roomFlag intValue]==1) {
  160. [_msgArray addObject:obj];
  161. }
  162. }
  163. //让数组按时间排序
  164. [self sortArrayWithTime];
  165. // NSMutableArray *tempAArr=[NSMutableArray arrayWithCapacity:0];
  166. // [_msgArray enumerateObjectsUsingBlock:^(JXMsgAndUserObject * obj, NSUInteger idx, BOOL * _Nonnull stop) {
  167. //
  168. // if (obj.user.groupType.length>0) {
  169. // [tempAArr addObject:obj];
  170. // }
  171. // }];
  172. // _msgArray=tempAArr;
  173. [_table reloadData];
  174. self.isShowFooterPull = p.count>=PAGE_SHOW_COUNT;
  175. }
  176. [p removeAllObjects];
  177. NSMutableArray *array = [[JXUserObject sharedInstance] fetchAllFriendsFromLocal];
  178. for(NSInteger i = 0; i < array.count; i ++) {
  179. JXUserObject *user = array[i];
  180. if ([user.userId isEqualToString:FRIEND_CENTER_USERID]) {
  181. continue;
  182. }
  183. JXMsgAndUserObject *obj = [[JXMsgAndUserObject alloc] init];
  184. obj.user = user;
  185. [_myFriendArray addObject:obj];
  186. }
  187. [g_server listHisRoom:0 pageSize:1000 toView:self];
  188. [self.tableView reloadData];
  189. }
  190. //数据(CELL)按时间顺序重新排列
  191. - (void)sortArrayWithTime{
  192. for (int i = 0; i<[_msgArray count]; i++)
  193. {
  194. for (int j=i+1; j<[_msgArray count]; j++)
  195. {
  196. JXMsgAndUserObject * dicta = (JXMsgAndUserObject*) [_msgArray objectAtIndex:i];
  197. NSDate * a = dicta.message.timeSend ;
  198. // NSLog(@"a = %d",[dicta.user.msgsNew intValue]);
  199. JXMsgAndUserObject * dictb = (JXMsgAndUserObject*) [_msgArray objectAtIndex:j];
  200. NSDate * b = dictb.message.timeSend ;
  201. // NSLog(@"b = %d",b);
  202. if ([[a laterDate:b] isEqualToDate:b])
  203. {
  204. // - (NSDate *)earlierDate:(NSDate *)anotherDate;
  205. // 与anotherDate比较,返回较早的那个日期
  206. //
  207. // - (NSDate *)laterDate:(NSDate *)anotherDate;
  208. // 与anotherDate比较,返回较晚的那个日期
  209. // JXMsgAndUserObject * dictc = dicta;
  210. [_msgArray replaceObjectAtIndex:i withObject:dictb];
  211. [_msgArray replaceObjectAtIndex:j withObject:dicta];
  212. }
  213. }
  214. }
  215. }
  216. - (void)didSelectedCheckBox:(QCheckBox *)checkbox checked:(BOOL)checked{
  217. NSMutableArray *array = [NSMutableArray array];
  218. switch (self.type) {
  219. case RelayType_msg:
  220. array = _msgArray;
  221. break;
  222. case RelayType_myFriend:
  223. array = _myFriendArray;
  224. break;
  225. case RelayType_myGroup:
  226. array = _myGroupArray;
  227. break;
  228. default:
  229. break;
  230. }
  231. JXMsgAndUserObject *p;
  232. p =[array objectAtIndex:checkbox.tag % 100000-1];
  233. if(checked){
  234. BOOL flag = NO;
  235. for (NSInteger i = 0; i < _selectArr.count; i ++) {
  236. JXMsgAndUserObject *selUser = _selectArr[i];
  237. if ([selUser.user.userId isEqualToString:p.user.userId]) {
  238. flag = YES;
  239. return;
  240. }
  241. }
  242. [_selectArr addObject:p];
  243. }
  244. else{
  245. for (NSInteger i = 0; i < _selectArr.count; i ++) {
  246. JXMsgAndUserObject *selUser = _selectArr[i];
  247. if ([selUser.user.userId isEqualToString:p.user.userId]) {
  248. [_selectArr removeObject:selUser];
  249. break;
  250. }
  251. }
  252. }
  253. NSString *str =[NSString stringWithFormat:@"%@(%ld)",Localized(@"JX_Finish"),_selectArr.count];
  254. [self.doneBtn setTitle:str forState:UIControlStateSelected];
  255. [self setDoneBtnFrame];
  256. }
  257. #pragma mark ---------tableView协议----------------
  258. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  259. {
  260. if (self.type != RelayType_myGroup) {
  261. if (indexPath.section == 0) {
  262. UITableViewCell *cell=nil;
  263. // NSString* cellName = [NSString stringWithFormat:@"msg_%d_%ld",_refreshCount,(long)indexPath.row];
  264. NSString* cellName = [NSString stringWithFormat:@"tableViewCell"];
  265. cell = [tableView dequeueReusableCellWithIdentifier:cellName];
  266. if (!cell) {
  267. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
  268. }
  269. UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 53.5, JX_SCREEN_WIDTH, LINE_WH)];
  270. line.backgroundColor = THE_LINE_COLOR;
  271. [cell.contentView addSubview:line];
  272. cell.textLabel.font = SYSFONT(15.0);
  273. if (self.type == RelayType_msg) {
  274. cell.textLabel.text = Localized(@"JXRelay_CreateNewChat");
  275. }else if (self.type == RelayType_myFriend) {
  276. cell.textLabel.text = Localized(@"JXRelay_chooseGroup");
  277. }
  278. return cell;
  279. }
  280. }
  281. if (self.type == RelayType_msg && self.isShare && indexPath.row == 0) {
  282. UITableViewCell *cell=nil;
  283. NSString* cellName = [NSString stringWithFormat:@"tableViewCell"];
  284. cell = [tableView dequeueReusableCellWithIdentifier:cellName];
  285. if (!cell) {
  286. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
  287. }
  288. UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 53.5, JX_SCREEN_WIDTH, LINE_WH)];
  289. line.backgroundColor = THE_LINE_COLOR;
  290. [cell.contentView addSubview:line];
  291. cell.textLabel.font = SYSFONT(15.0);
  292. cell.textLabel.text = Localized(@"JX_ShareLifeCircle");
  293. return cell;
  294. }
  295. NSString* cellName = [NSString stringWithFormat:@"relayCell_%d",(int)indexPath.row];
  296. JXCell *relayCell = [tableView dequeueReusableCellWithIdentifier:cellName];
  297. if (!relayCell) {
  298. relayCell = [[JXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
  299. }
  300. JXMsgAndUserObject * obj = nil;
  301. switch (self.type) {
  302. case RelayType_msg:
  303. if (self.isShare) {
  304. obj = (JXMsgAndUserObject*) [_msgArray objectAtIndex:indexPath.row - 1];
  305. }else {
  306. obj = (JXMsgAndUserObject*) [_msgArray objectAtIndex:indexPath.row];
  307. }
  308. break;
  309. case RelayType_myFriend:
  310. obj = (JXMsgAndUserObject*) [_myFriendArray objectAtIndex:indexPath.row];
  311. break;
  312. case RelayType_myGroup:
  313. obj = (JXMsgAndUserObject*) [_myGroupArray objectAtIndex:indexPath.row];
  314. break;
  315. default:
  316. break;
  317. }
  318. relayCell.title = obj.user.userNickname;
  319. // relayCell.subtitle = [NSString stringWithFormat:@"%@",obj.user.userId];
  320. relayCell.userId = [NSString stringWithFormat:@"%@",obj.user.userId];
  321. NSString * roomIdStr = obj.user.roomId;
  322. relayCell.roomId = roomIdStr;
  323. [relayCell headImageViewImageWithUserId:relayCell.userId roomId:roomIdStr];
  324. relayCell.isSmall = YES;
  325. if (self.doneBtn && self.doneBtn.selected) {
  326. QCheckBox* btn = [[QCheckBox alloc] initWithDelegate:self];
  327. btn.frame = CGRectMake(13, 18.5, 22, 22);
  328. btn.tag = (indexPath.section+1) * 100000 + (indexPath.row+1);
  329. [relayCell addSubview:btn];
  330. relayCell.headImageView.frame = CGRectMake(48, relayCell.headImageView.frame.origin.y, relayCell.headImageView.frame.size.width, relayCell.headImageView.frame.size.height);
  331. relayCell.lbTitle.frame = CGRectMake(CGRectGetMaxX(relayCell.headImageView.frame)+14, relayCell.lbTitle.frame.origin.y, relayCell.lbTitle.frame.size.width, relayCell.lbTitle.frame.size.height);
  332. [_checkBoxs addObject:btn];
  333. }else {
  334. for (NSInteger i = 0; i < _checkBoxs.count; i ++) {
  335. QCheckBox *btn = _checkBoxs[i];
  336. [btn removeFromSuperview];
  337. }
  338. relayCell.headImageView.frame = CGRectMake(14, relayCell.headImageView.frame.origin.y, relayCell.headImageView.frame.size.width, relayCell.headImageView.frame.size.height);
  339. relayCell.lbTitle.frame = CGRectMake(CGRectGetMaxX(relayCell.headImageView.frame)+14, relayCell.lbTitle.frame.origin.y, relayCell.lbTitle.frame.size.width, relayCell.lbTitle.frame.size.height);
  340. }
  341. return relayCell;
  342. }
  343. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  344. {
  345. if (self.type == RelayType_myGroup) {
  346. return 1;
  347. }else {
  348. return 2;
  349. }
  350. }
  351. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  352. {
  353. if (self.type == RelayType_myGroup) {
  354. return _myGroupArray.count;
  355. }
  356. if (section == 0) {
  357. return 1;
  358. }else {
  359. switch (self.type) {
  360. case RelayType_msg:
  361. if (self.isShare) {
  362. return _msgArray.count + 1;
  363. }else {
  364. return _msgArray.count;
  365. }
  366. break;
  367. case RelayType_myFriend:
  368. return _myFriendArray.count;
  369. break;
  370. case RelayType_myGroup:
  371. return _myGroupArray.count;
  372. break;
  373. default:
  374. return 0;
  375. break;
  376. }
  377. }
  378. }
  379. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  380. {
  381. return 59;
  382. }
  383. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  384. [tableView deselectRowAtIndexPath:indexPath animated:YES];
  385. if (self.doneBtn.selected) {
  386. // QCheckBox *checkBox = nil;
  387. // for (NSInteger i = 0; i < _checkBoxs.count; i ++) {
  388. // QCheckBox *btn = _checkBoxs[i];
  389. // if (btn.tag / 10000 == indexPath.section && btn.tag % 10000 == indexPath.row) {
  390. // checkBox = btn;
  391. // break;
  392. // }
  393. // }
  394. JXCell *cell = [tableView cellForRowAtIndexPath:indexPath];
  395. QCheckBox *checkBox = [cell viewWithTag:(indexPath.section + 1) * 100000 + (indexPath.row + 1)];
  396. if (checkBox) {
  397. checkBox.selected = !checkBox.selected;
  398. [self didSelectedCheckBox:checkBox checked:checkBox.selected];
  399. return;
  400. }
  401. }
  402. [super tableView:tableView didSelectRowAtIndexPath:indexPath];
  403. if (indexPath.section == 0) {
  404. switch (self.type) {
  405. case RelayType_msg:{
  406. self.type = RelayType_myFriend;
  407. }
  408. break;
  409. case RelayType_myFriend:{
  410. self.type = RelayType_myGroup;
  411. }
  412. break;
  413. case RelayType_myGroup:{
  414. JXMsgAndUserObject *obj = _myGroupArray[indexPath.row];
  415. self.selectIndex = indexPath.row;
  416. [g_server getRoom:obj.user.roomId toView:self];
  417. }
  418. break;
  419. default:
  420. break;
  421. }
  422. [self.tableView reloadData];
  423. }else {
  424. if (self.type == RelayType_msg && self.isShare && indexPath.row == 0) {
  425. JXMessageObject *msg = self.relayMsgArray.lastObject;
  426. NSDictionary * msgDict = [[[SBJsonParser alloc]init]objectWithString:msg.objectId];
  427. addMsgVC* vc = [[addMsgVC alloc] init];
  428. //在发布信息后调用,并使其刷新
  429. vc.block = ^{
  430. // [self scrollToPageUp];
  431. };
  432. vc.shareUr = [msgDict objectForKey:@"url"];
  433. vc.shareTitle = [msgDict objectForKey:@"title"];
  434. vc.shareIcon = [msgDict objectForKey:@"imageUrl"];
  435. vc.dataType = weibo_dataType_share;
  436. vc.delegate = self;
  437. // vc.didSelect = @selector(hideKeyShowAlert);
  438. // [g_window addSubview:vc.view];
  439. [g_navigation pushViewController:vc animated:YES];
  440. vc.view.hidden = NO;
  441. [self actionQuit];
  442. return;
  443. }
  444. NSMutableArray *array = [NSMutableArray array];
  445. switch (self.type) {
  446. case RelayType_msg:
  447. array = _msgArray;
  448. break;
  449. case RelayType_myFriend:
  450. array = _myFriendArray;
  451. break;
  452. case RelayType_myGroup:
  453. array = _myGroupArray;
  454. break;
  455. default:
  456. break;
  457. }
  458. JXMsgAndUserObject *p;
  459. if (self.type == RelayType_msg && self.isShare) {
  460. p = [array objectAtIndex:indexPath.row - 1];
  461. }else {
  462. p =[array objectAtIndex:indexPath.row];
  463. }
  464. p.user.msgsNew = [NSNumber numberWithInt:0];
  465. [p.user update];
  466. [p.message updateNewMsgsTo0];
  467. if ([p.user.roomFlag boolValue]) {
  468. self.selectIndex = indexPath.row;
  469. [g_server getRoom:p.user.roomId toView:self];
  470. if ([self.relayDelegate respondsToSelector:@selector(shareSuccess)]) {
  471. [self.relayDelegate shareSuccess];
  472. }
  473. return;
  474. }
  475. if (self.isCourse) {
  476. if([p.user.roomFlag boolValue]) {
  477. self.selectIndex = indexPath.row;
  478. [g_server getRoom:p.user.roomId toView:self];
  479. }else {
  480. if ([self.relayDelegate respondsToSelector:@selector(relay:MsgAndUserObject:)]) {
  481. [self.relayDelegate relay:self MsgAndUserObject:p];
  482. [self actionQuit];
  483. }
  484. }
  485. return;
  486. }
  487. if ([self.relayDelegate respondsToSelector:@selector(shareSuccess)]) {
  488. [self.relayDelegate shareSuccess];
  489. }
  490. _useObjectP22=p;
  491. [self sendRelayMsg:p];
  492. }
  493. }
  494. - (void)shareMessage:(JXMsgAndUserObject *)p tempUrl:(int)shareType{
  495. JXChatViewC *sendView=[JXChatViewC alloc];
  496. sendView.yunGoldtigerPush=[_yunMoney intValue];
  497. sendView.title = p.user.userNickname;
  498. if([p.user.roomFlag intValue] > 0 || p.user.roomId.length > 0){
  499. if(g_xmpp.isLogined != 1){
  500. // 掉线后点击title重连
  501. [g_xmpp showXmppOfflineAlert];
  502. return;
  503. }
  504. if ([p.user.groupStatus intValue] == 1) {
  505. [g_server showMsg:Localized(@"JX_OutOfTheGroup1")];
  506. return;
  507. }
  508. if ([p.user.groupStatus intValue] == 2) {
  509. [g_server showMsg:Localized(@"JX_DissolutionGroup1")];
  510. return;
  511. }
  512. sendView.roomJid = p.user.userId;
  513. sendView.roomId = p.user.roomId;
  514. sendView.chatRoom = [[JXXMPP sharedInstance].roomPool joinRoom:p.user.userId title:p.user.userNickname lastDate:nil isNew:NO];
  515. if (p.user.roomFlag) {
  516. NSDictionary * groupDict = [p.user toDictionary];
  517. roomData * roomdata = [[roomData alloc] init];
  518. [roomdata getDataFromDict:groupDict];
  519. sendView.room = roomdata;
  520. }
  521. }
  522. sendView.isShare = self.isShare;
  523. sendView.shareSchemes = self.shareSchemes;
  524. sendView.chatPerson = p.user;
  525. sendView = [sendView init];
  526. // [g_App.window addSubview:sendView.view];
  527. sendView.relayMsgArray = _relayMsgArray;
  528. sendView.view.hidden = NO;
  529. [g_navigation pushViewController:sendView animated:YES];
  530. [self actionQuit];
  531. }
  532. - (void)sendRelayMsg:(JXMsgAndUserObject *)p {
  533. _useObjectP=p;
  534. [g_notify postNotificationName:kActionRelayQuitVC object:nil];
  535. if ([_yunMoney intValue]==10) { //运转金
  536. long time = (long)[[NSDate date] timeIntervalSince1970];
  537. time = (time *1000 + g_server.timeDifference);
  538. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  539. NSString *membership=[[NSUserDefaults standardUserDefaults] objectForKey:@"membershipAccount_ID"];
  540. [g_server getUser:salt membershipAccount:membership toView:self];
  541. }else if ([_yunMoney intValue]==20) { //从金管家过来
  542. long time = (long)[[NSDate date] timeIntervalSince1970];
  543. time = (time *1000 + g_server.timeDifference);
  544. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  545. [g_server vipGainCoin:salt andToView:self];
  546. }else if ([_yunMoney intValue]==30) { //从金管家过来
  547. long time = (long)[[NSDate date] timeIntervalSince1970];
  548. time = (time *1000 + g_server.timeDifference);
  549. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  550. // [g_server getMyCoinsss:salt andToView:self];
  551. [g_server gainAllAward:salt andToView:self];
  552. }else if ([_yunMoney intValue]==40) { //从金管家过来
  553. [self shareMessage:p tempUrl:9100];
  554. }else {
  555. [self shareMessage:p tempUrl:0];
  556. }
  557. }
  558. -(void)showChatView:(NSInteger)index{
  559. [_wait stop];
  560. JXMsgAndUserObject *obj = _myGroupArray[index];
  561. if (self.isCourse) {
  562. self.selectIndex = index;
  563. [g_server getRoom:obj.user.roomId toView:self];
  564. return;
  565. }
  566. JXChatViewC *sendView=[JXChatViewC alloc];
  567. sendView.title = obj.user.userNickname;
  568. sendView.roomJid = obj.user.userId;
  569. sendView.roomId = obj.user.roomId;
  570. sendView.chatRoom = _chatRoom;
  571. sendView.chatPerson = obj.user;
  572. sendView = [sendView init];
  573. // [g_App.window addSubview:sendView.view];
  574. [g_navigation pushViewController:sendView animated:YES];
  575. sendView.relayMsgArray =_relayMsgArray;
  576. [self actionQuit];
  577. }
  578. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  579. [_wait hide];
  580. [self stopLoading];
  581. if([aDownload.action isEqualToString:act_reliefReceiveRelief])
  582. {
  583. [_relayMsgArray removeAllObjects];
  584. NSMutableArray *tempArr=[NSMutableArray array];
  585. JXMessageObject *msg=[JXMessageObject new];
  586. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];
  587. msg.fromUserId = MY_USER_ID;
  588. msg.fromUserName = g_server.myself.userNickname;
  589. msg.timeSend = [NSDate date];
  590. msg.tempChat=8100;
  591. msg.content=[NSString stringWithFormat:@"我刚刚领取了%@元转运金,赶紧去领取!===jixin%@",_yunGetMoney==nil?@"1":_yunGetMoney,@"LNNumberScrollAnimatedView"];
  592. [tempArr addObject:msg];
  593. _relayMsgArray = tempArr;
  594. _useObjectP= _useObjectP22;
  595. _useObjectP.message.content=[NSString stringWithFormat:@"我刚刚领取了%@元转运金,赶紧去领取!===jixin%@",_yunGetMoney,@"LNNumberScrollAnimatedView"];
  596. [self shareMessage:_useObjectP tempUrl:0];
  597. }
  598. if([aDownload.action isEqualToString:act_GainUserCoin])
  599. {
  600. // long time = (long)[[NSDate date] timeIntervalSince1970];
  601. // time = (time *1000 + g_server.timeDifference);
  602. // NSString *salt = [NSString stringWithFormat:@"%ld", time];
  603. // [g_server vipGainCoin:salt andToView:self];
  604. [_relayMsgArray removeAllObjects];
  605. NSMutableArray *tempArr=[NSMutableArray array];
  606. JXMessageObject *msg=[JXMessageObject new];
  607. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];
  608. msg.fromUserId = MY_USER_ID;
  609. msg.fromUserName = g_server.myself.userNickname;
  610. msg.timeSend = [NSDate date];
  611. msg.tempChat=7100;
  612. NSString *coinStr=[NSString stringWithFormat:@"%@",dict[@"coinNum"]];
  613. msg.content=[NSString stringWithFormat:@" 我刚刚参与了“金管家”活动 领取了%@ 元彩金,好爽啊! 你还在等什么?点击查看一同 领取!===jixin%@",coinStr,@"JXGoldMangVc"];
  614. [tempArr addObject:msg];
  615. _relayMsgArray = tempArr;
  616. _useObjectP= _useObjectP22;
  617. _useObjectP.message.content=[NSString stringWithFormat:@" 我刚刚参与了“金管家”活动 领取了%@元彩金,好爽啊! 你还在等什么?点击查看一同 领取!===jixin%@",dict[@"coinNum"],@"JXGoldMangVc"];
  618. [self shareMessage:_useObjectP tempUrl:0];
  619. }
  620. if([aDownload.action isEqualToString:act_GainAllAward])
  621. {
  622. [_relayMsgArray removeAllObjects];
  623. NSMutableArray *tempArr=[NSMutableArray array];
  624. JXMessageObject *msg=[JXMessageObject new];
  625. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];
  626. msg.fromUserId = MY_USER_ID;
  627. msg.fromUserName = g_server.myself.userNickname;
  628. msg.timeSend = [NSDate date];
  629. msg.tempChat=6100;
  630. NSString *coinStr=[NSString stringWithFormat:@"%@",dict[@"totalCoin"]];
  631. if ([coinStr intValue]<=0) {
  632. [SVProgressHUD showWithStatus:@"您的周礼金为0元 不能分享"];
  633. [SVProgressHUD dismissWithDelay:1.0];
  634. return;
  635. }
  636. msg.content=[NSString stringWithFormat:@"我刚刚完成每日任务获得了%@元 元礼金,点击立即参与!===jixin%@",coinStr,@"JXApplyViewController"];
  637. [tempArr addObject:msg];
  638. _relayMsgArray = tempArr;
  639. _useObjectP= _useObjectP22;
  640. _useObjectP.message.content=[NSString stringWithFormat:@"我刚刚完成每日任务获得了%@元 元礼金,点击立即参与!===jixin%@",coinStr,@"JXApplyViewController"];
  641. [self shareMessage:_useObjectP tempUrl:0];
  642. }
  643. if([aDownload.action isEqualToString:act_roomListHis] ){
  644. [_myGroupArray removeAllObjects];
  645. for (int i = 0; i < [array1 count]; i++) {
  646. NSDictionary *dict=array1[i];
  647. JXUserObject* user = [[JXUserObject alloc]init];
  648. user.userNickname = [dict objectForKey:@"name"];
  649. user.userId = [dict objectForKey:@"jid"];
  650. user.userDescription = [dict objectForKey:@"desc"];
  651. user.roomId = [dict objectForKey:@"id"];
  652. JXMsgAndUserObject *obj = [[JXMsgAndUserObject alloc] init];
  653. obj.user = user;
  654. [_myGroupArray addObject:obj];
  655. }
  656. }
  657. if( [aDownload.action isEqualToString:act_roomGet] ){
  658. JXUserObject* user = [[JXUserObject alloc]init];
  659. [user getDataFromDict:dict];
  660. NSDictionary * groupDict = [user toDictionary];
  661. roomData * roomdata = [[roomData alloc] init];
  662. [roomdata getDataFromDict:groupDict];
  663. [roomdata getDataFromDict:dict];
  664. memberData *data = [roomdata getMember:g_myself.userId];
  665. if ([user.talkTime longLongValue] > 0 && !([data.role integerValue] == 1 || [data.role integerValue] == 2)) {
  666. [g_App showAlert:Localized(@"HAS_BEEN_BANNED")];
  667. return;
  668. }
  669. if (!roomdata.allowSpeakCourse && !([data.role integerValue] == 1 || [data.role integerValue] == 2)) {
  670. [g_App showAlert:Localized(@"JX_SendLecture")];
  671. return;
  672. }
  673. if (!roomdata.allowSendCard && !([data.role integerValue] == 1 || [data.role integerValue] == 2)) {
  674. [g_App showAlert:Localized(@"JX_DisabledShowCard")];
  675. return;
  676. }
  677. if ([data.role integerValue] == 4) {
  678. [JXMyTools showTipView:@"不能转发到你是隐身人的群组"];
  679. return;
  680. }
  681. NSMutableArray *array = [NSMutableArray array];
  682. switch (self.type) {
  683. case RelayType_msg:
  684. array = _msgArray;
  685. break;
  686. case RelayType_myFriend:
  687. array = _myFriendArray;
  688. break;
  689. case RelayType_myGroup:
  690. array = _myGroupArray;
  691. break;
  692. default:
  693. break;
  694. }
  695. JXMsgAndUserObject *p=[array objectAtIndex:self.selectIndex];
  696. if (self.isCourse) {
  697. if ([data.role integerValue] == 1 || [data.role integerValue] == 2 || roomdata.allowSpeakCourse) {
  698. if ([user.talkTime longLongValue] > 0) {
  699. [g_App showAlert:Localized(@"HAS_BEEN_BANNED")];
  700. return;
  701. }
  702. if ([self.relayDelegate respondsToSelector:@selector(relay:MsgAndUserObject:)]) {
  703. [self.relayDelegate relay:self MsgAndUserObject:p];
  704. [self actionQuit];
  705. }
  706. return;
  707. }
  708. [g_App showAlert:Localized(@"JX_SendLecture")];
  709. }else {
  710. _useObjectP22=p;
  711. [self sendRelayMsg:p];
  712. }
  713. }
  714. }
  715. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  716. [_wait hide];
  717. return show_error;
  718. }
  719. -(int) didServerConnectError:(JXConnection*)aDownload error:(NSError *)error{//error为空时,代表超时
  720. [_wait hide];
  721. return show_error;
  722. }
  723. -(void) didServerConnectStart:(JXConnection*)aDownload{
  724. [_wait start];
  725. }
  726. - (void)actionQuit {
  727. if (self.isShare) {
  728. [self dismissViewControllerAnimated:YES completion:nil];
  729. }
  730. else if (self.isUrl) {
  731. [self.view removeFromSuperview];
  732. }
  733. else {
  734. [super actionQuit];
  735. }
  736. }
  737. - (void)didReceiveMemoryWarning {
  738. [super didReceiveMemoryWarning];
  739. // Dispose of any resources that can be recreated.
  740. }
  741. /*
  742. #pragma mark - Navigation
  743. // In a storyboard-based application, you will often want to do a little preparation before navigation
  744. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  745. // Get the new view controller using [segue destinationViewController].
  746. // Pass the selected object to the new view controller.
  747. }
  748. */
  749. @end