IndexViewController.m 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916
  1. //
  2. // IndexViewController.m
  3. // TheoryNetwork
  4. //
  5. // Created by tederen on 2019/9/20.
  6. // Copyright © 2019 tederen. All rights reserved.
  7. //
  8. //#import "DrawerView.h"
  9. #import "IndexViewController.h"
  10. #import "SurfaceSearchView.h"
  11. #import "ChannelModel.h"
  12. #import "HomeSearchController.h"
  13. #import "AddChannelController.h"
  14. #import "HttpManager.h"
  15. #import "HomeDetailController.h"
  16. #import "APIPOPOPO.h"
  17. #import "MyApprovalPageDetail.h"
  18. #import "MailListDetailVC.h"
  19. #import "NavigationController.h"
  20. #import "UIAlertController+TapGesAlertController.h"
  21. #import "HomeArticleModel.h"
  22. #import "HomeListWorkCell.h"
  23. #import "HomeTableViewCell.h"
  24. #import "SLBannerView.h"
  25. #import "MyFavoriteVC.h"
  26. #import "OtherFavoriteVC.h"
  27. #import "NoteBookVC.h"
  28. #import "OtherNoteBookVC.h"
  29. #import "BookStoreHome.h"
  30. #import "HomeMusicCell.h"
  31. #import "HomeSchoolCell.h"
  32. #import "HomeUserPrivilegeCell.h"
  33. #import "HomeWeiCousreCell.h"
  34. #import "HomeProblemTopCell.h"
  35. #import "HomeGoodBookCell.h"
  36. #import "BookDetailVC.h"
  37. #import "BookSubArticeCell.h"
  38. #import "HomeTeacherCell.h"
  39. #import "BookTeacherListVC.h"
  40. #import "HKFloatManager.h"
  41. #import "HomeBigshotCell.h"
  42. #import "HomeSubModel.h"
  43. #import "HomeSubItemModel.h"
  44. #import "HomeRecommendVC.h"
  45. #import "HomeBigshotVC.h"
  46. #import "HomeDayGoodBookVC.h"
  47. #import "HomeDayGoodArticeVC.h"
  48. #import "HomeSpeakVC.h"
  49. #import "HomeWeiCousreVC.h"
  50. #import "HomeMingShiVC.h"
  51. #import "HomeUserVC.h"
  52. #import "HomeProblemVC.h"
  53. #import "WorkFlowDetailsController.h"
  54. #import "IndexSearchVC.h"
  55. @interface IndexViewController () <SLBannerViewDelegate,AddChannelControllerDelegate,EMChatManagerDelegate, EMGroupManagerDelegate, EMConversationsDelegate>
  56. @property (nonatomic, strong) UILabel *titleLabel;
  57. @property (nonatomic, strong) UIView *bannerBgV;
  58. @property (nonatomic, strong) SLBannerView *bannerView;
  59. @property (nonatomic, strong) SurfaceSearchView *searchView;
  60. @property (nonatomic, strong) NSMutableArray *bannerImgArr;
  61. @property (nonatomic, strong) NSMutableArray * tabConfigArray;
  62. @property (nonatomic, strong) NSMutableArray * bannerModelArray;
  63. @property (nonatomic, strong) HomeArticleModel *model;
  64. @property (nonatomic, strong) TDWaitWorkModel *waitModel;
  65. @property (nonatomic, assign) NSInteger currentPage;
  66. @property (nonatomic, assign) NSInteger totalPage;
  67. @property (nonatomic, assign) NSInteger currentChannel;
  68. @property (nonatomic, assign) NSInteger unReadCount;
  69. @property (nonatomic, strong) TDButton *addButton;
  70. @property (nonatomic, strong) TDButton *musicButtton;
  71. @property (nonatomic, strong) UIView *lineV;
  72. @property (nonatomic, strong) UIView *rightView;
  73. @property (nonatomic, strong) NSMutableDictionary *articleDic;
  74. @property (nonatomic, copy) NSMutableArray *dataSource;
  75. @property (strong, nonatomic) UIAlertController *alertVC;
  76. /// 我的频道
  77. @property (copy, nonatomic) NSMutableArray *myChannel;
  78. @property (copy, nonatomic) NSString *style;
  79. @property (strong, nonatomic) NSMutableArray *chatListIMArray;
  80. @property (strong, nonatomic) NSMutableArray *dataArray;
  81. @property (strong, nonatomic) HomeRecommendVC * homeVC;
  82. @end
  83. @implementation IndexViewController
  84. - (void)viewWillAppear:(BOOL)animated
  85. {
  86. [super viewWillAppear:animated];
  87. [[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];
  88. [[EMClient sharedClient].groupManager addDelegate:self delegateQueue:nil];
  89. [[EMConversationHelper shared] addDelegate:self];
  90. [self getUnreadCount];
  91. }
  92. #pragma mark - LifeCycle
  93. - (void)viewDidLoad {
  94. [super viewDidLoad];
  95. self.fd_prefersNavigationBarHidden = YES;
  96. [self loadStatusBarColor:[UIColor whiteColor]];
  97. self.view.backgroundColor = UIColorHex(F2F2F2);
  98. [self.view addSubview:self.titleLabel];
  99. [self.view addSubview:self.searchView];
  100. [self.searchView setFrame:CGRectMake(0, 0, SCREEN_WIDTH, 52)];
  101. self.bannerView = [[SLBannerView alloc] initWithFrame:CGRectMake(15, 0, SCREEN_WIDTH - 30, 125)];
  102. self.bannerView.delegate = self;
  103. self.bannerView.durTimeInterval = 0.2;
  104. self.bannerView.imgStayTimeInterval = 2.5;
  105. self.bannerBgV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 132)];
  106. self.bannerBgV.backgroundColor = [UIColor clearColor];
  107. [self.bannerBgV addSubview:self.bannerView];
  108. [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  109. make.top.equalTo(self.statusBar.mas_bottom);
  110. make.left.right.equalTo(self.view);
  111. make.height.equalTo(@44);
  112. }];
  113. [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) {
  114. make.top.mas_equalTo(self.titleLabel.mas_bottom);
  115. make.left.right.equalTo(self.view);
  116. make.height.mas_offset(52);
  117. }];
  118. [self getdata];
  119. WEAKSELF
  120. self.searchView.buttonBlock = ^(){
  121. // HomeSearchController *homeSearch = [[HomeSearchController alloc] init];
  122. // [weakSelf.navigationController pushViewController:homeSearch animated:YES];
  123. IndexSearchVC * vc = [[IndexSearchVC alloc] init];
  124. vc.hidesBottomBarWhenPushed = YES;
  125. [weakSelf.navigationController pushViewController:vc animated:YES];
  126. };
  127. self.searchView.bookBlock = ^(){
  128. BookStoreHome *vc = [BookStoreHome initBookStoreHome];
  129. vc.hidesBottomBarWhenPushed = YES;
  130. [weakSelf.navigationController pushViewController:vc animated:YES];
  131. };
  132. // self.channelScroll.ClickSelectChannelBlock = ^(NSInteger channelId, NSString * _Nonnull StyleCss) {
  133. // weakSelf.style = StyleCss;
  134. // weakSelf.currentChannel = channelId;
  135. // for (ChannelModel * model in weakSelf.myChannel) {
  136. // model.IsSelect = NO;
  137. // }
  138. // for (ChannelModel * model in weakSelf.myChannel) {
  139. // if (model.ArticleGroupId == channelId) {
  140. // model.IsSelect = YES;
  141. // }
  142. // }
  143. // dispatch_async(dispatch_get_main_queue(), ^{
  144. // [weakSelf collectReload];
  145. // });
  146. // };
  147. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tableViewScrollTop) name:HOMESCROLLVIEWTOTOP object:nil];
  148. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shareReturnAction:) name:SHARERETURNSUCCESS object:nil];
  149. }
  150. - (void)setCusPageVC
  151. {
  152. CGFloat height = SCREEN_HEIGHT - NAVH - 52 - self.tabBarController.tabBar.frame.size.height;
  153. WS(weakSelf);
  154. NSMutableArray * data = [NSMutableArray array];
  155. NSMutableArray * vcArr = [NSMutableArray array];
  156. for (NSInteger i = 0; i < self.myChannel.count; i ++) {
  157. ChannelModel * model = self.myChannel[i];
  158. if ([model.StyleCss isEqualToString:@"Commend"]) {
  159. [data addObject:model.ArticleGroupName];
  160. self.homeVC = [[HomeRecommendVC alloc] init];
  161. self.homeVC.height = height;
  162. self.homeVC.style = model.StyleCss;
  163. [vcArr addObject:self.homeVC];
  164. }
  165. if ([model.StyleCss isEqualToString:@"Cathedra"]) {
  166. [data addObject:model.ArticleGroupName];
  167. HomeBigshotVC * vc = [[HomeBigshotVC alloc] init];
  168. vc.height = height;
  169. vc.style = model.StyleCss;
  170. [vcArr addObject:vc];
  171. }
  172. if ([model.StyleCss isEqualToString:@"DayGoodBook"]) {
  173. [data addObject:model.ArticleGroupName];
  174. HomeDayGoodBookVC * vc = [[HomeDayGoodBookVC alloc] init];
  175. vc.height = height;
  176. vc.style = model.StyleCss;
  177. [vcArr addObject:vc];
  178. }
  179. if ([model.StyleCss isEqualToString:@"DayGoodText"]) {
  180. [data addObject:model.ArticleGroupName];
  181. HomeDayGoodArticeVC * vc = [[HomeDayGoodArticeVC alloc] init];
  182. vc.height = height;
  183. vc.style = model.StyleCss;
  184. [vcArr addObject:vc];
  185. }
  186. if ([model.StyleCss isEqualToString:@"ChatHearSpeak"]) {
  187. [data addObject:model.ArticleGroupName];
  188. HomeSpeakVC * vc = [[HomeSpeakVC alloc] init];
  189. vc.height = height;
  190. vc.style = model.StyleCss;
  191. [vcArr addObject:vc];
  192. }
  193. if ([model.StyleCss isEqualToString:@"DayWeBook"]) {
  194. [data addObject:model.ArticleGroupName];
  195. HomeWeiCousreVC * vc = [[HomeWeiCousreVC alloc] init];
  196. vc.height = height;
  197. vc.style = model.StyleCss;
  198. [vcArr addObject:vc];
  199. }
  200. if ([model.StyleCss isEqualToString:@"StarTeacher"]) {
  201. [data addObject:model.ArticleGroupName];
  202. HomeMingShiVC * vc = [[HomeMingShiVC alloc] init];
  203. vc.height = height;
  204. vc.style = model.StyleCss;
  205. [vcArr addObject:vc];
  206. }
  207. if ([model.StyleCss isEqualToString:@"VipSupply"]) {
  208. [data addObject:model.ArticleGroupName];
  209. HomeUserVC * vc = [[HomeUserVC alloc] init];
  210. vc.height = height;
  211. vc.style = model.StyleCss;
  212. [vcArr addObject:vc];
  213. }
  214. // if ([model.StyleCss isEqualToString:@"DayProblem"]) {///每日技能
  215. // [data addObject:model.ArticleGroupName];
  216. // HomeProblemVC * vc = [[HomeProblemVC alloc] init];
  217. // vc.height = height;
  218. // vc.style = model.StyleCss;
  219. // [vcArr addObject:vc];
  220. // }
  221. }
  222. WMZPageParam *param = PageParam()
  223. .wTitleArrSet(data)
  224. .wControllersSet(vcArr)
  225. //固定在所有子控制器底部 需要放在第一个控制器里 例如此例子
  226. .wFixFirstSet(YES)
  227. //悬浮开启
  228. .wTopSuspensionSet(YES)
  229. //等分
  230. .wMenuCellPaddingSet(45 - 21.5)
  231. .wMenuCellMarginSet(15)
  232. .wTopOffsetSet(52 + NAVH)
  233. .wFromNaviSet(YES)
  234. .wMenuAnimalSet(PageTitleMenuNone)
  235. .wMenuTitleFontSet(15.f)
  236. .wMenuTitleSelectColorSet(UIColorHex(0x3979D3))
  237. .wMenuIndicatorYSet(6.f)
  238. .wMenuIndicatorColorSet(UIColorHex(0x3979D3))
  239. .wMenuTitleColorSet(UIColorHex(0x666666))
  240. .wMenuTitleSelectFontSet(15.f)
  241. .wMenuFixShadowSet(NO)
  242. .wMenuFixRightDataSet(@"sss")
  243. .wMenuFixWidthSet(88.5)
  244. //头部
  245. .wMenuHeadViewSet(^UIView *{
  246. return self.bannerBgV;
  247. });
  248. self.param = param;
  249. [self updatePageController];
  250. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  251. dispatch_async(dispatch_get_main_queue(), ^{
  252. for (UIView * view in weakSelf.view.subviews) {
  253. if ([view isKindOfClass:[WMZPageScroller class]]) {
  254. [view setFrame:CGRectMake(0, NAVH + 52, SCREEN_WIDTH, height)];
  255. }
  256. if ([view isKindOfClass:[UIScrollView class]]) {
  257. UIScrollView * sView = (UIScrollView *)view;
  258. sView.showsVerticalScrollIndicator = NO;
  259. }
  260. }
  261. UIView * view = [weakSelf setRightView];
  262. [weakSelf.upSc addSubview:view];
  263. [weakSelf.upSc bringSubviewToFront:view];
  264. [view setFrame:CGRectMake(SCREEN_WIDTH - 88.5, 0, 88.5, 45)];
  265. // [weakSelf updateController];
  266. });
  267. });
  268. }
  269. - (void)getUnreadCount
  270. {
  271. WS(weakSelf);
  272. [[HttpManager sharedHttpManager] GETUrl:Host(API_APP_User_User_Uread_Count) parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  273. NSDictionary *dic = responseObject;
  274. WorkNumberModel *numberModel = [[WorkNumberModel alloc] initWithDictionary:dic error:nil];
  275. weakSelf.unReadCount = numberModel.allNumber;
  276. dispatch_async(dispatch_get_main_queue(), ^{
  277. [weakSelf initChatMsgIMData];
  278. });
  279. } failure:^(NSError * _Nonnull error) {
  280. }];
  281. }
  282. -(void)initChatMsgIMData{
  283. self.chatListIMArray = [NSMutableArray array];
  284. WS(weakSelf);
  285. SHOWLOADING
  286. [[HttpManager sharedHttpManager] POSTUrl:Host(Often_Contact_List) parameters:@{@"IndividualGroupId":@(0)} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  287. NSLog(@"%@",responseObject);
  288. REMOVESHOW
  289. if ([responseObject isKindOfClass:[NSArray class]]) {
  290. for (NSDictionary * dict in responseObject) {
  291. ChatMsgListImModel * model = [ChatMsgListImModel modelWithDictionary:dict];
  292. [weakSelf.chatListIMArray addObject:model];
  293. }
  294. }
  295. [weakSelf _loadAllConversationsFromDBWithIsShowHud:NO];
  296. } failure:^(NSError * _Nonnull error) {
  297. REMOVESHOW
  298. NSLog(@"%@",error);
  299. }];
  300. }
  301. - (void)_loadAllConversationsFromDBWithIsShowHud:(BOOL)aIsShowHUD
  302. {
  303. __weak typeof(self) weakself = self;
  304. self.dataArray = [NSMutableArray array];
  305. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  306. NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];
  307. NSArray *sorted = [conversations sortedArrayUsingComparator:^(EMConversation *obj1, EMConversation *obj2) {
  308. EMMessage *message1 = [obj1 latestMessage];
  309. EMMessage *message2 = [obj2 latestMessage];
  310. if(message1.timestamp > message2.timestamp) {
  311. return(NSComparisonResult)NSOrderedAscending;
  312. } else {
  313. return(NSComparisonResult)NSOrderedDescending;
  314. }
  315. }];
  316. NSArray *models = [EMConversationHelper modelsFromEMConversations:sorted];
  317. [weakself.dataArray addObjectsFromArray:models];
  318. [weakself replaceChatData];
  319. });
  320. }
  321. - (void)replaceChatData
  322. {
  323. WS(weakSelf);
  324. [self.chatListIMArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  325. ChatMsgListImModel * chatModel = (ChatMsgListImModel *)obj;
  326. [weakSelf.dataArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  327. EMConversationModel * model = (EMConversationModel *)obj;
  328. if (chatModel.ImId == [model.emModel.conversationId integerValue]) {
  329. if (!chatModel.IsDisturb) {
  330. chatModel.redNum = model.emModel.unreadMessagesCount;
  331. weakSelf.unReadCount += model.emModel.unreadMessagesCount;
  332. }
  333. }
  334. }];
  335. }];
  336. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  337. weakSelf.tabBarController.tabBar.items[2].badgeValue = weakSelf.unReadCount > 0 ? [NSString stringWithFormat:@"%ld",(long)weakSelf.unReadCount] : nil;
  338. });
  339. }
  340. - (void)conversationListDidUpdate:(NSArray *)aConversationList
  341. {
  342. [self _loadAllConversationsFromDBWithIsShowHud:NO];
  343. }
  344. - (void)messagesDidReceive:(NSArray *)aMessages
  345. {
  346. [self performSelector:@selector(getUnreadCount) withObject:nil afterDelay:0.8];
  347. }
  348. - (void)tableViewScrollTop
  349. {
  350. if (self.dataSource.count > 0) {
  351. [self.downSc scrollToTop];
  352. [self.downSc scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
  353. }
  354. }
  355. - (void)dealloc
  356. {
  357. [[EMClient sharedClient].chatManager removeDelegate:self];
  358. [[EMClient sharedClient].groupManager removeDelegate:self];
  359. [[EMConversationHelper shared] removeDelegate:self];
  360. [[NSNotificationCenter defaultCenter] removeObserver:self];
  361. }
  362. #pragma mark - NetRequest - 轮播
  363. - (void)getdata{
  364. [self loadChannelModel];
  365. WS(weakSelf);
  366. dispatch_semaphore_t sem = dispatch_semaphore_create(0);
  367. __block NSInteger httpFinishCount = 0;
  368. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  369. [[HttpManager sharedHttpManager] GETUrl:[NSString stringWithFormat:@"%@%@",BaseUrl,HomeSlideImages_GET] parameters: @{} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  370. NSArray *arr = responseObject[@"Items"];
  371. NSLog(@"首页轮播数据%@",arr.firstObject);
  372. [weakSelf.bannerModelArray removeAllObjects];
  373. [weakSelf.bannerImgArr removeAllObjects];
  374. NSMutableArray *array = [NSMutableArray array];
  375. NSMutableArray *array2 = [NSMutableArray array];
  376. for (NSInteger i = 0; i < arr.count; i++) {
  377. NSDictionary *dic = arr[i];
  378. HomeTopImageModel *imageModel = [[HomeTopImageModel alloc] initWithDictionary:dic error:nil];
  379. [array2 addObject:imageModel];
  380. [array addObject:dic[@"ImageUrl"]];
  381. }
  382. weakSelf.bannerImgArr = array;
  383. weakSelf.bannerModelArray = array2;
  384. weakSelf.bannerView.slImages = array;
  385. if (++httpFinishCount == 2) {
  386. dispatch_semaphore_signal(sem);
  387. }
  388. } failure:^(NSError * _Nonnull error) {
  389. SHOWERROR([ZYCTool handerResultData:error]);
  390. }];
  391. [[HttpManager sharedHttpManager] POSTUrl:[NSString stringWithFormat:@"%@%@",BaseUrl,Article_Pindao_User_Post] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  392. NSLog(@"%@",responseObject);
  393. NSArray *array = responseObject;
  394. for (NSInteger i = 0 ; i < array.count; i ++) {
  395. NSDictionary *dic = array[i];
  396. ChannelModel *model = [ChannelModel modelWithDictionary:dic];
  397. if (model.ArticleGroupId == 0) {
  398. model.IsSelect = YES;
  399. }
  400. [weakSelf.myChannel addObject:model];
  401. }
  402. if (++httpFinishCount == 2) {
  403. dispatch_semaphore_signal(sem);
  404. }
  405. } failure:^(NSError * _Nonnull error) {
  406. SHOWERROR([ZYCTool handerResultData:error]);
  407. }];
  408. dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
  409. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  410. dispatch_async(dispatch_get_main_queue(), ^{
  411. [weakSelf setCusPageVC];
  412. });
  413. });
  414. });
  415. }
  416. - (void)ReGetHomeListData:(NSInteger)channelId
  417. {
  418. WS(weakSelf);
  419. switch (channelId) {
  420. case 0:
  421. {
  422. [[HttpManager sharedHttpManager] POSTUrl:[NSString stringWithFormat:@"%@%@",BaseUrl,Article_Notice_list_Post] parameters: @{@"page":@(self.currentPage),@"perPage":@10,@"GroupId":@(channelId)} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  423. NSDictionary *dic = (NSDictionary *)responseObject;
  424. HomeArticleModel *model = [HomeArticleModel modelWithDictionary:dic];
  425. weakSelf.totalPage = model.Count;
  426. [weakSelf.dataSource addObjectsFromArray:model.Items];
  427. } failure:^(NSError * _Nonnull error) {
  428. }];
  429. }
  430. break;
  431. case 1:
  432. {
  433. NSDictionary * paraDict = @{@"Type":@"MyChecking",@"page":@(self.currentPage),@"perPage":@10};
  434. [[HttpManager sharedHttpManager] GETUrl:Host(WorkFlowAddApproval_Post) parameters:paraDict responseStyle:JOSN success:^(id _Nonnull responseObject) {
  435. NSDictionary *dic = (NSDictionary *)responseObject;
  436. HomeArticleModel *model = [HomeArticleModel modelWithDictionary:dic];
  437. weakSelf.totalPage = model.Count;
  438. [weakSelf.dataSource addObjectsFromArray:model.Items];
  439. } failure:^(NSError * _Nonnull error) {
  440. SHOWERROR([ZYCTool handerResultData:error])
  441. }];
  442. }
  443. break;
  444. default:
  445. {
  446. [[HttpManager sharedHttpManager] POSTUrl:Host(API_APP_PAGE_CATHEDRA) parameters:@{@"StyleCss":self.style,@"Page":@(self.currentPage),@"PerPage":@20} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  447. NSLog(@"%@",responseObject);
  448. } failure:^(NSError * _Nonnull error) {
  449. }];
  450. }
  451. break;
  452. }
  453. }
  454. - (BOOL)hidesBottomBarWhenPushed{
  455. return NO;
  456. }
  457. #pragma mark - UITableViewDataSource && UITableViewDelegate
  458. - (void)closeBtn_Click {
  459. [self.alertVC dismissViewControllerAnimated:YES completion:nil];
  460. }
  461. - (void)cellDidSelcet:(NSInteger )articleId{
  462. WEAKSELF
  463. UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  464. [closeBtn addTarget:self action:@selector(closeBtn_Click) forControlEvents:UIControlEventTouchUpInside];
  465. [closeBtn setImage:IMG(@"guanbi") forState:UIControlStateNormal];
  466. UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"对此内容进行操作" message:@"" preferredStyle:UIAlertControllerStyleAlert];
  467. self.alertVC = alertVC;
  468. [alertVC.view addSubview:closeBtn];
  469. [closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  470. make.right.equalTo(alertVC.view).offset(-10);
  471. make.top.equalTo(@10);
  472. make.size.mas_equalTo(CGSizeMake(22, 22));
  473. }];
  474. UIAlertAction *actionOK = [UIAlertAction actionWithTitle:@"屏蔽TA" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  475. STRONGSELF
  476. [strongSelf homeNewsHander:articleId withTypeId:1];
  477. }];
  478. [actionOK setValue:k9 forKey:@"_titleTextColor"];
  479. UIAlertAction *actionNO = [UIAlertAction actionWithTitle:@"不感兴趣" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  480. STRONGSELF
  481. [strongSelf homeNewsHander:articleId withTypeId:2];
  482. }];
  483. [alertVC addAction:actionOK];
  484. [alertVC addAction:actionNO];
  485. [self presentViewController:alertVC animated:YES completion:^{
  486. [alertVC tapGesAlert];
  487. }];
  488. }
  489. - (void)homeNewsHander:(NSInteger )articleId withTypeId:(NSInteger)blacklistType{
  490. [[HttpManager sharedHttpManager] POSTUrl:[NSString stringWithFormat:@"%@/%@",BaseUrl,Article_Hander_Post] parameters:@{@"ArticleId":@(articleId),@"BlacklistType":@(blacklistType)} responseStyle:DATA success:^(id _Nonnull responseObject) {
  491. // [weakSelf headRefresh];
  492. } failure:^(NSError * _Nonnull error) {
  493. }];
  494. }
  495. #pragma mark - channelScroll Block
  496. - (void)didClickAddButtonChannel{
  497. AddChannelController *addChannel = [[AddChannelController alloc] init];
  498. addChannel.modalPresentationStyle = UIModalPresentationFullScreen;
  499. addChannel.delegate = self;
  500. [self presentViewController:addChannel animated:YES completion:nil];
  501. }
  502. #pragma mark - AddChannelControllerDelegate
  503. - (void)upadateChannel{
  504. WS(weakSelf);
  505. [self loadChannelModel];
  506. [[HttpManager sharedHttpManager] POSTUrl:[NSString stringWithFormat:@"%@%@",BaseUrl,Article_Pindao_User_Post] parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  507. NSLog(@"%@",responseObject);
  508. NSArray *array = responseObject;
  509. for (NSInteger i = 0 ; i < array.count; i ++) {
  510. NSDictionary *dic = array[i];
  511. ChannelModel *model = [ChannelModel modelWithDictionary:dic];
  512. [weakSelf.myChannel addObject:model];
  513. }
  514. dispatch_async(dispatch_get_main_queue(), ^{
  515. [weakSelf setCusPageVC];
  516. });
  517. } failure:^(NSError * _Nonnull error) {
  518. }];
  519. }
  520. #pragma mark - SLBannerViewDelegate
  521. - (void)bannerView:(SLBannerView *)banner didClickImagesAtIndex:(NSInteger)index
  522. {
  523. [self getArticleDetail:index];
  524. }
  525. - (void)getArticleDetail:(NSInteger)index{
  526. HomeTopImageModel *model = self.bannerModelArray[index];
  527. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  528. vc.type = CollectModel_Aritle;
  529. vc.Id = model.MediaId;
  530. [self.navigationController pushViewController:vc animated:YES];
  531. }
  532. #pragma mark - Setter
  533. - (UILabel *)titleLabel {
  534. if (!_titleLabel) {
  535. _titleLabel = [UILabel new];
  536. _titleLabel.backgroundColor = [UIColor whiteColor];
  537. _titleLabel.text = @"首页";
  538. _titleLabel.font = [UIFont systemFontOfSize:16.f];
  539. _titleLabel.textColor = UIColorHex(1A1A1A);
  540. _titleLabel.textAlignment = NSTextAlignmentCenter;
  541. }
  542. return _titleLabel;
  543. }
  544. - (SurfaceSearchView *)searchView {
  545. if (!_searchView) {
  546. _searchView = [[SurfaceSearchView alloc] init];
  547. [_searchView setBgViewColor:[UIColor clearColor]];
  548. // [_searchView setPlaceHolderText:@"输入关键字搜索"];
  549. [_searchView setMainType];
  550. }
  551. return _searchView;
  552. }
  553. - (NSMutableArray *)dataSource
  554. {
  555. if (!_dataSource) {
  556. _dataSource = [NSMutableArray array];
  557. }
  558. return _dataSource;
  559. }
  560. - (NSMutableArray *)tabConfigArray{
  561. if (!_tabConfigArray) {
  562. _tabConfigArray = [NSMutableArray array];
  563. }
  564. return _tabConfigArray;
  565. }
  566. - (NSMutableDictionary *)articleDic{
  567. if (!_articleDic) {
  568. _articleDic = [NSMutableDictionary dictionary];
  569. }
  570. return _articleDic;
  571. }
  572. - (NSMutableArray *)myChannel {
  573. if (!_myChannel) {
  574. _myChannel = [NSMutableArray array];
  575. }
  576. return _myChannel;
  577. }
  578. - (void)loadChannelModel
  579. {
  580. [self.myChannel removeAllObjects];
  581. // ChannelModel * model = [[ChannelModel alloc] init];
  582. // model.ArticleGroupId = 0;
  583. // model.ArticleGroupName = @"推荐";
  584. // model.StyleCss = @"default";
  585. // model.IsSelect = YES;
  586. // [self.myChannel addObject:model];
  587. // ChannelModel * workModel = [[ChannelModel alloc] init];
  588. // workModel.ArticleGroupId = 1;
  589. // workModel.ArticleGroupName = @"待办工作";
  590. // workModel.IsSelect = NO;
  591. // [self.myChannel addObject:workModel];
  592. // ChannelModel * sModel = [[ChannelModel alloc] init];
  593. // sModel.ArticleGroupId = 2;
  594. // sModel.ArticleGroupName = @"信源听说";
  595. // sModel.IsSelect = NO;
  596. // [self.myChannel addObject:sModel];
  597. // ChannelModel * mModel = [[ChannelModel alloc] init];
  598. // mModel.ArticleGroupId = 3;
  599. // mModel.ArticleGroupName = @"名校";
  600. // mModel.IsSelect = NO;
  601. // [self.myChannel addObject:mModel];
  602. // ChannelModel * aModel = [[ChannelModel alloc] init];
  603. // aModel.ArticleGroupId = 4;
  604. // aModel.ArticleGroupName = @"会员特供";
  605. // aModel.IsSelect = NO;
  606. // [self.myChannel addObject:aModel];
  607. // ChannelModel * bModel = [[ChannelModel alloc] init];
  608. // bModel.ArticleGroupId = 5;
  609. // bModel.ArticleGroupName = @"每日微课";
  610. // bModel.IsSelect = NO;
  611. // [self.myChannel addObject:bModel];
  612. // ChannelModel * cModel = [[ChannelModel alloc] init];
  613. // cModel.ArticleGroupId = 6;
  614. // cModel.ArticleGroupName = @"每日技能";
  615. // cModel.IsSelect = NO;
  616. // [self.myChannel addObject:cModel];
  617. // ChannelModel * dModel = [[ChannelModel alloc] init];
  618. // dModel.ArticleGroupId = 7;
  619. // dModel.ArticleGroupName = @"每日好书";
  620. // dModel.IsSelect = NO;
  621. // [self.myChannel addObject:dModel];
  622. // ChannelModel * eModel = [[ChannelModel alloc] init];
  623. // eModel.ArticleGroupId = 8;
  624. // eModel.ArticleGroupName = @"每日好文";
  625. // eModel.IsSelect = NO;
  626. // [self.myChannel addObject:eModel];
  627. // ChannelModel * fModel = [[ChannelModel alloc] init];
  628. // fModel.ArticleGroupId = 9;
  629. // fModel.ArticleGroupName = @"名师";
  630. // fModel.IsSelect = NO;
  631. // [self.myChannel addObject:fModel];
  632. // ChannelModel * gModel = [[ChannelModel alloc] init];
  633. // gModel.ArticleGroupId = 10;
  634. // gModel.ArticleGroupName = @"大咖讲座";
  635. // gModel.IsSelect = NO;
  636. // [self.myChannel addObject:gModel];
  637. }
  638. #pragma mark - 分享成功跳转
  639. - (void)shareReturnAction:(NSNotification *)noti
  640. {
  641. NSDictionary * dic = noti.userInfo;
  642. CollectModelType type = [[dic objectForKey:@"type"] intValue];
  643. NSInteger Id = [[dic objectForKey:@"Id"] integerValue];
  644. NSInteger userId = [[dic objectForKey:@"userId"] integerValue];
  645. NSString* name = [[dic objectForKey:@"name"] stringByRemovingPercentEncoding];
  646. // NSString* describe = [[dic objectForKey:@"describe"] stringByRemovingPercentEncoding];
  647. switch (type) {
  648. case CollectModel_Aritle:
  649. {
  650. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  651. vc.type = CollectModel_Aritle;
  652. vc.Id = Id;
  653. vc.hidesBottomBarWhenPushed = YES;
  654. [self.navigationController pushViewController:vc animated:YES];
  655. }
  656. break;
  657. case CollectModel_work:
  658. {
  659. MyApprovalPageDetail * vc = [[MyApprovalPageDetail alloc]init];
  660. vc.indexId = Id;
  661. vc.title = name;
  662. vc.TodoId = Id;
  663. vc.hidesBottomBarWhenPushed = YES;
  664. [self.navigationController pushViewController:vc animated:YES];
  665. }
  666. break;
  667. case CollectModel_Toipc:
  668. {
  669. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  670. vc.Id = Id;
  671. vc.type = CollectModel_Toipc;
  672. vc.hidesBottomBarWhenPushed = YES;
  673. [self.navigationController pushViewController:vc animated:YES];
  674. }
  675. break;
  676. case CollectModel_NewTopic:
  677. {
  678. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  679. vc.Id = Id;
  680. vc.type = CollectModel_NewTopic;
  681. vc.hidesBottomBarWhenPushed = YES;
  682. [self.navigationController pushViewController:vc animated:YES];
  683. }
  684. break;
  685. case CollectModel_Notice:
  686. {
  687. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  688. vc.Id = Id;
  689. vc.type = CollectModel_Notice;
  690. vc.hidesBottomBarWhenPushed = YES;
  691. [self.navigationController pushViewController:vc animated:YES];
  692. }
  693. break;
  694. case CollectModel_InterMail:
  695. {
  696. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  697. vc.Id = Id;
  698. vc.type = CollectModel_InterMail;
  699. vc.hidesBottomBarWhenPushed = YES;
  700. [self.navigationController pushViewController:vc animated:YES];
  701. }
  702. break;
  703. case CollectModel_NoSignMail:
  704. {
  705. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  706. vc.Id = Id;
  707. vc.type = CollectModel_NoSignMail;
  708. vc.hidesBottomBarWhenPushed = YES;
  709. [self.navigationController pushViewController:vc animated:YES];
  710. }
  711. break;
  712. case CollectModel_NoteBook:
  713. {
  714. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  715. vc.Id = Id;
  716. vc.type = CollectModel_NoteBook;
  717. vc.hidesBottomBarWhenPushed = YES;
  718. [self.navigationController pushViewController:vc animated:YES];
  719. }
  720. break;
  721. case CollectModel_meetMian:
  722. {
  723. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  724. vc.Id = Id;
  725. vc.type = CollectModel_meetMian;
  726. vc.hidesBottomBarWhenPushed = YES;
  727. [self.navigationController pushViewController:vc animated:YES];
  728. }
  729. break;
  730. case CollectModel_meetDetail:
  731. {
  732. WorkFlowDetailsController *vc = [[WorkFlowDetailsController alloc] initWithId:Id];
  733. vc.hidesBottomBarWhenPushed = YES;
  734. [self.navigationController pushViewController:vc animated:YES];
  735. }
  736. break;
  737. case CollectModel_CollectFile:{
  738. if (userId == [AppUserModel sharedAppUserModel].Id || userId == 0) {
  739. MyFavoriteVC *vc = [MyFavoriteVC initMyFavoriteVC];
  740. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  741. vc.ParentId = Id;
  742. vc.FolderId = Id;
  743. vc.myTitle = name;
  744. vc.hidesBottomBarWhenPushed = YES;
  745. [self.navigationController pushViewController:vc animated:YES];
  746. }else{
  747. OtherFavoriteVC *vc = [OtherFavoriteVC initOtherFavoriteVC];
  748. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  749. vc.ParentId = Id;
  750. vc.FolderId = Id;
  751. vc.myTitle = name;
  752. vc.VisitUserId = userId;
  753. vc.hidesBottomBarWhenPushed = YES;
  754. [self.navigationController pushViewController:vc animated:YES];
  755. }
  756. }break;
  757. case CollectModel_NoteFile:{
  758. if (userId == [AppUserModel sharedAppUserModel].Id || userId == 0) {
  759. NoteBookVC *vc = [NoteBookVC initNoteBookVC];
  760. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  761. vc.ParentId = Id;
  762. vc.FolderId = Id;
  763. vc.myTitle = name;
  764. vc.VisitUserId = 0;
  765. [self.navigationController pushViewController:vc animated:YES];
  766. }else{
  767. OtherNoteBookVC *vc = [OtherNoteBookVC initOtherNoteBookVC];
  768. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  769. vc.ParentId = Id;
  770. vc.FolderId = Id;
  771. vc.myTitle = name;
  772. vc.VisitUserId = userId;
  773. vc.hidesBottomBarWhenPushed = YES;
  774. [self.navigationController pushViewController:vc animated:YES];
  775. }
  776. }break;
  777. case CollectModel_TopicBooK:{
  778. if (userId == [AppUserModel sharedAppUserModel].Id || userId == 0) {
  779. NoteBookVC *vc = [NoteBookVC initNoteBookVC];
  780. vc.listType = MyFavoriteListLevelTypeA;
  781. vc.ParentId = 0;
  782. vc.FolderId = Id;
  783. vc.myTitle = name;
  784. vc.VisitUserId = 0;
  785. vc.TypeValue = 1;
  786. [self.navigationController pushViewController:vc animated:YES];
  787. }else{
  788. OtherNoteBookVC *vc = [OtherNoteBookVC initOtherNoteBookVC];
  789. vc.listType = MyFavoriteListLevelTypeA;
  790. vc.ParentId = 0;
  791. vc.FolderId = Id;
  792. vc.myTitle = name;
  793. vc.VisitUserId = userId;
  794. vc.TypeValue = 1;
  795. vc.hidesBottomBarWhenPushed = YES;
  796. [self.navigationController pushViewController:vc animated:YES];
  797. }
  798. }break;
  799. case CollectModel_TopicSubBooK:{
  800. if (userId == [AppUserModel sharedAppUserModel].Id || userId == 0) {
  801. NoteBookVC *vc = [NoteBookVC initNoteBookVC];
  802. vc.listType = MyFavoriteListLevelTypeB;
  803. vc.ParentId = Id;
  804. vc.FolderId = Id;
  805. vc.myTitle = name;
  806. vc.VisitUserId = 0;
  807. vc.TypeValue = 1;
  808. [self.navigationController pushViewController:vc animated:YES];
  809. }else{
  810. OtherNoteBookVC *vc = [OtherNoteBookVC initOtherNoteBookVC];
  811. vc.listType = MyFavoriteListLevelTypeB;
  812. vc.ParentId = Id;
  813. vc.FolderId = Id;
  814. vc.myTitle = name;
  815. vc.VisitUserId = userId;
  816. vc.TypeValue = 1;
  817. vc.hidesBottomBarWhenPushed = YES;
  818. [self.navigationController pushViewController:vc animated:YES];
  819. }
  820. }break;
  821. default:
  822. break;
  823. }
  824. }
  825. - (void)addChannelAction:(UIButton *)sender
  826. {
  827. [self didClickAddButtonChannel];
  828. }
  829. - (void)musicAction:(UIButton *)sender
  830. {
  831. [[HKFloatManager shared] showVideo];
  832. }
  833. - (TDButton *)addButton {
  834. if (!_addButton) {
  835. _addButton = [TDButton buttonWithType:UIButtonTypeCustom];
  836. [_addButton setImage:IMG(@"home_pdAdd_icon") forState:UIControlStateNormal];
  837. [_addButton addTarget:self action:@selector(addChannelAction:) forControlEvents:UIControlEventTouchUpInside];
  838. [_addButton setCurrentButtonHotSize:CGSizeZero];
  839. }
  840. return _addButton;
  841. }
  842. - (TDButton *)musicButtton {
  843. if (!_musicButtton) {
  844. _musicButtton = [TDButton buttonWithType:UIButtonTypeCustom];
  845. [_musicButtton setImage:IMG(@"home_music_icon") forState:UIControlStateNormal];
  846. [_musicButtton addTarget:self action:@selector(musicAction:) forControlEvents:UIControlEventTouchUpInside];
  847. [_musicButtton setCurrentButtonHotSize:CGSizeZero];
  848. }
  849. return _musicButtton;
  850. }
  851. - (UIView *)lineV
  852. {
  853. if (!_lineV) {
  854. _lineV = [UIView new];
  855. _lineV.backgroundColor = UIColorHex(0xD8D8D8);
  856. }
  857. return _lineV;
  858. }
  859. - (UIView *)rightView
  860. {
  861. if (!_rightView) {
  862. _rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 88.5, 45)];
  863. _rightView.backgroundColor = UIColorHex(0xFFFFFF);
  864. }
  865. return _rightView;
  866. }
  867. - (UIView *)setRightView
  868. {
  869. [self.rightView removeAllSubviews];
  870. [self.rightView addSubview:self.addButton];
  871. [self.rightView addSubview:self.musicButtton];
  872. [self.rightView addSubview:self.lineV];
  873. [self.addButton setFrame:CGRectMake(0, 0, 44, 45)];
  874. [self.lineV setFrame:CGRectMake(44, 13.5, 0.5, 18)];
  875. [self.musicButtton setFrame:CGRectMake(44.5, 0, 44, 45)];
  876. return self.rightView;
  877. }
  878. @end