123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 |
- //
- // LDTimeLineViewController.m
- // YouHuiProject
- //
- // Created by 小花 on 2018/12/27.
- // Copyright © 2018年 kuxuan. All rights reserved.
- //
- #import "LDTimeLineViewController.h"
- #import "LDTimeLineTableCell.h"
- #import "UIView+SDAutoLayout.h"
- #import "UITableView+SDAutoTableViewCellHeight.h"
- #import "LDShareGoodViewController.h"
- #import "LDTimeLineChannelModel.h"
- #import "LDTimeLineTopView.h"
- #import "LDShareRequestViewModel.h"
- #import "LDShareRequestViewModel.h"
- #import "LDLoginViewController.h"
- #import "LDTimeLineRecomCell.h"
- #import "LDTimeLineShareView.h"
- #import "LDShareManager.h"
- #import <AssetsLibrary/AssetsLibrary.h>
- #import <AssetsLibrary/AssetsLibrary.h>
- #import <Photos/Photos.h>
- #import "LDTimeLineSeconeListVc.h"
- #import <AlibabaAuthSDK/ALBBSDK.h>
- #import <AlibabaAuthSDK/ALBBSession.h>
- #import "LDTaobaoWebAuthorController.h"
- @interface LDTimeLineViewController ()<UITableViewDelegate,UITableViewDataSource,TimeLineShareViewDelegate,LDTimeLineTopViewDelegate>
- {
- NSInteger _page;
- ActivityIndicatorView *_indicatorView;
- }
- @property (nonatomic, strong) UITableView *tableView;
- @property (nonatomic, strong) NSMutableArray *dataArr;
- @property (nonatomic, assign) NSInteger page;
- @property (nonatomic, strong) LDTimeLineTopView *topHeader;
- @end
- @implementation LDTimeLineViewController
- - (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
- [LoadingView dismiss];
-
- }
- - (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
- [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
- }
- -(void)viewWillAppear:(BOOL)animated
- {
- [super viewWillAppear:animated];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- [self configTableView];
- [self configNavigationBar];
- [self requestData];
- [self addRefreshNotifacation];
-
- }
- - (void)configTableView {
- _page = 1;
- [self.view addSubview:self.tableView];
-
- if (@available(iOS 11.0, *)) {
- self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
- } else {
- self.automaticallyAdjustsScrollViewInsets = NO;
- }
- ActivityIndicatorView *indicatorView = [ActivityIndicatorView showInView:self.view frame:CGRectMake(0, NavBarHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavBarHeight-TabbarHeight)];
- _indicatorView = indicatorView;
- }
- - (void)configNavigationBar{
- [self.navigationBar setNavTitle:@"优选圈"];
- self.view.backgroundColor = [UIColor whiteColor];
- self.navigationBar.navTitleLabel.textColor = [UIColor whiteColor];
- self.navigationBar.backgroundColor = [UIColor changeColor];
- }
- - (void)addRefreshNotifacation {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshData) name:ChangeSex object:nil];
- }
- - (void)refreshData {
- [self.tableView.mj_header beginRefreshing];
- }
- - (void)requestData {
- [self loadTimelineData];
- [self loadChannelHeaderData];
- }
- - (void)loadTimelineData {
- NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/youXuanGoodsList",BaseURL];
- NSDictionary *para = @{@"page":@(_page)};
- [LDHttp post:url params:para success:^(id json) {
- if ([self.tableView.mj_header isRefreshing]) {
- [self.dataArr removeAllObjects];
- }
- NSArray *list = [NSArray yy_modelArrayWithClass:[LDTimeLineModel class] json:json];
- [self.dataArr addObjectsFromArray:list];
- if (list.count == 0) {
- [self.tableView.mj_footer endRefreshingWithNoMoreData];
- }else {
- [self.tableView.mj_footer endRefreshing];
- }
- [self.tableView.mj_header endRefreshing];
- [self.tableView reloadData];
- [_indicatorView stopAnimating];
- } failure:^(NSError *error) {
- [self.tableView.mj_header endRefreshing];
- [self.tableView.mj_footer endRefreshing];
- [_indicatorView stopAnimating];
- }];
- }
- - (void)loadChannelHeaderData {
- NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/labelList",BaseURL];
- [LDHttp post:url params:nil success:^(id json) {
-
- NSArray *list = [NSArray yy_modelArrayWithClass:[LDTimeLineChannelModel class] json:json];
- if (list.count ==0) {
- self.tableView.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 0.001)];
-
- }else{
-
- self.tableView.tableHeaderView = self.topHeader;
- [self.topHeader setData:list];
- }
-
-
-
- } failure:^(NSError *error) {
-
- }];
- }
- #pragma ----private
- - (void)shareWithModel:(LDTimeLineModel *)model indexPath:(NSIndexPath *)indexPath{
- if (![AccountTool isLogin]) {
- LDNewLoginVC *login = [[LDNewLoginVC alloc] init];
- login.modalPresentationStyle = UIModalPresentationFullScreen;
- [self presentViewController:login animated:YES completion:nil];
- return;
- }
-
- NSString *url = [NSString stringWithFormat:@"%@/api/v2/relationAuth/isAuthOrNo",BaseURL];
- [LDHttp post:url params:nil success:^(id json) {
-
- NSNumber *flag = json[@"flag"];
- if (flag.boolValue) {
- //已授权 直接分享
- DetailRequestModel *requestModel = [[DetailRequestModel alloc] initWithId:model.goods_id is_coupon:model.is_coupon coupon_price:model.coupon_price price:model.price discount_price:model.discount_price commission_rate:model.commission_rate coupon_start_time:model.coupon_start_time coupon_end_time:model.coupon_end_time
- coupon_id:model.coupon_id];
- [LoadingView show];
- [LDShareRequestViewModel requestGoodDetailParamGoods_id:requestModel success:^(LDShareInfoModel * _Nonnull infoModel, NSDictionary * _Nonnull dic) {
- [LoadingView dismiss];
- LDShareGoodViewController *shareVc = [[LDShareGoodViewController alloc] init];
- shareVc.goodModel = infoModel;
- shareVc.shareResult = ^{
- [self shareRequest:model indexPath:indexPath];
- };
- [self.navigationController pushViewController:shareVc animated:YES];
-
- } failure:^(NSError * _Nonnull error) {
- [LoadingView dismiss];
- }];
- }else {
- //未授权 去授权
- [LDTaobaoAuthorTool taobaoAuthorManager:json[@"auth_url"] type:@"1" currentVc:self];
- }
-
-
- } failure:^(NSError *error) {
-
- }];
-
- }
- - (void)shareRequest:(LDTimeLineModel *)model indexPath:(NSIndexPath *)indexPath {
- NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/youXuanShareUser",BaseURL];
- NSDictionary *para = @{@"goods_id":model.goods_id,@"type":model.type};
- [LDHttp post:url params:para success:^(id json) {
- NSNumber *flag = json[@"flag"];
- if (flag.boolValue) {
- NSMutableArray *arr = [NSMutableArray array];
- [arr addObjectsFromArray:model.shareUser];
- NSString *nick = [AccountTool account].nickname;
- if (nick.length == 0) {
- nick = @"我";
- }
- if ([arr containsObject:nick]) {
- [arr removeObject:nick];
- }
- [arr addObject:nick];
- model.shareUser = arr;
- [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
- }
- } failure:^(NSError *error) {
-
- }];
- }
- - (void)showShareView:(LDTimeLineModel *)model indexPath:(NSIndexPath *)indexPath{
- LDTimeLineShareView *shareView = [[LDTimeLineShareView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
- shareView.delegate = self;
- shareView.model = model;
- shareView.indexPath = indexPath;
- UIWindow *window = [UIApplication sharedApplication].keyWindow;
- [shareView showInView:window];
- }
- #pragma mark --- timelineDelegate ---
- - (void)timelineShareViewDidSeledtedIndex:(NSInteger)index model:(nonnull LDTimeLineModel *)model indexPath:(nonnull NSIndexPath *)indexPath{
- switch (index) {
- case 0:
- [self shareImgToWeChat:UMSocialPlatformType_WechatTimeLine model:model indexPath:indexPath];
- break;
- case 1:
- [self shareImgToWeChat:UMSocialPlatformType_WechatSession model:model indexPath:indexPath];
- break;
- case 2:
- [self saveImage:model];
- break;
- default:
- break;
- }
- }
- /**
- 分享
- */
- - (void)shareImgToWeChat:(UMSocialPlatformType)platformType model:(LDTimeLineModel *)model indexPath:(NSIndexPath *)inexPath{
- if (platformType == UMSocialPlatformType_WechatTimeLine) {
- [MobClick event:EveryDayMorningCircleShare];
- }else {
- [MobClick event:EveryDayMorningFriendShare];
- }
- [self shareRequest:model indexPath:inexPath];
- if (model.img) {
- [LDShareManager shareImageWithplatformType:platformType withImg:model.img complete:^(id result, NSError *error) {
-
- }];
- }
- }
- - (void)saveImage:(LDTimeLineModel *)model {
- [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:model.img] options:0 progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
- __block ALAssetsLibrary *lib = [[ALAssetsLibrary alloc] init];
- [lib writeImageToSavedPhotosAlbum:image.CGImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
- if (error) {
- UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"温馨提示" message:@"请您先去设置允许APP访问您的相册 设置>隐私>照片" delegate:self cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];
- [alert show];
- }else {
- [XHToast showCenterWithText:@"保存成功"];
- }
- lib = nil;
- }];
- }];
-
- }
- #pragma mark ============ UITableView Delegate && DataSource ==========
- - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
- if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
- cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
- }
-
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
- return 0.1;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return self.dataArr.count;
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
-
- LDTimeLineModel *model = self.dataArr[indexPath.row];
- switch ([model.type integerValue]) {//列表
- case 1:
- {
- LDTimeLineTableCell *cell = [LDTimeLineTableCell cellWithTableView:tableView];
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- cell.shareClickBlock = ^{
- [self shareWithModel:model indexPath:indexPath];
- [MobClick event:OptimizingCircleShareClick];
- };
- cell.tapBlock = ^{
- DetailRequestModel *requestModel = [[DetailRequestModel alloc] initWithLDTimeLineModel:model];
- LDGoodDetailViewController *detail = [[LDGoodDetailViewController alloc] init];
- detail.requestModel = requestModel;
- [self.navigationController pushViewController:detail animated:YES];
- [MobClick event:OptimizingCircleListClick];
- };
- cell.clickBtn = ^(LDTimeLineModel * _Nonnull models) {
- LDTimeLineChannelModel*listModel =[[LDTimeLineChannelModel alloc]init];
- listModel.Id=models.label_id;
- listModel.title=models.subscribe_title;
- [self clickModel:listModel];
- };
- cell.model = model;
-
- return cell;
- }
- break;
- case 2:
- {
- LDTimeLineRecomCell *cell = [LDTimeLineRecomCell cellWithTableView:tableView];
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- cell.model = model;
- cell.shareClickBlock = ^{
- [self showShareView:model indexPath:indexPath];
- [MobClick event:OptimizingCircleShareClick label:model.img];
- };
- return cell;
- }
-
- break;
- default:
- {
- LDTimeLineTableCell *cell = [LDTimeLineTableCell cellWithTableView:tableView];
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- cell.shareClickBlock = ^{
- [self shareWithModel:model indexPath:indexPath];
- };
- cell.clickBtn = ^(LDTimeLineModel * _Nonnull models) {
- LDTimeLineChannelModel*listModel =[[LDTimeLineChannelModel alloc]init];
- listModel.Id=models.label_id;
- listModel.title=models.subscribe_title;
- [self clickModel:listModel];
- };
- cell.model = model;
-
- return cell;
- }
- break;
- }
-
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
-
- LDTimeLineModel *model = self.dataArr[indexPath.row];
- switch ([model.type integerValue]) {
- case 1:
- NSLog(@"%.2f",[self.tableView cellHeightForIndexPath:indexPath model:model keyPath:@"model" cellClass:[LDTimeLineTableCell class] contentViewWidth:SCREEN_WIDTH]);
- return [self.tableView cellHeightForIndexPath:indexPath model:model keyPath:@"model" cellClass:[LDTimeLineTableCell class] contentViewWidth:SCREEN_WIDTH];
- break;
- case 2:
- return [self.tableView cellHeightForIndexPath:indexPath model:model keyPath:@"model" cellClass:[LDTimeLineRecomCell class] contentViewWidth:SCREEN_WIDTH];
- break;
- default:
- return 0;
- break;
- }
-
-
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- // LDTimeLineModel *models =self.dataArr[indexPath.row];
- // LDTimeLineChannelModel*listModel =[[LDTimeLineChannelModel alloc]init];
- // listModel.Id=models.label_id;
- // listModel.title=models.subscribe_title;
- // [self clickModel:listModel];
-
- }
- #pragma mark------LDTimeLineTopViewDelegate
- -(void)clickModel:(LDTimeLineChannelModel *)model
- {
- LDTimeLineSeconeListVc *listV =[[LDTimeLineSeconeListVc alloc]init];
- listV.model=model;
- [self.navigationController pushViewController:listV animated:YES];
- }
- #pragma mark ------- layzer ---------
- - (UITableView *)tableView {
- if (!_tableView) {
- _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, NavBarHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavBarHeight-TabbarHeight) style:UITableViewStyleGrouped];
- _tableView.estimatedSectionHeaderHeight = 0;
- _tableView.estimatedSectionFooterHeight = 0;
- _tableView.sectionFooterHeight = 0;
- _tableView.sectionHeaderHeight = 0;
- _tableView.estimatedRowHeight = 0;
- _tableView.delegate = self;
- _tableView.dataSource = self;
- _tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
- _tableView.backgroundColor = [UIColor whiteColor];
- _tableView.bounces = YES;
- _tableView.showsVerticalScrollIndicator = NO;
- _tableView.separatorColor = [UIColor lineColor];
- _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
- _tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
- self.page = 1;
- [_tableView.mj_footer resetNoMoreData];
- [self requestData];
- }];
- MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
- _page++;
- [self loadTimelineData];
- }];
- if (@available(iOS 11.0, *)) {
- _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
- }else {
- self.automaticallyAdjustsScrollViewInsets = NO;
-
- }
- _tableView.mj_footer = footer;
- }
- return _tableView;
- }
- - (NSMutableArray *)dataArr {
- if (!_dataArr) {
- _dataArr = [NSMutableArray array];
- }
- return _dataArr;
- }
- - (LDTimeLineTopView *)topHeader {
- if (!_topHeader) {
- _topHeader = [[LDTimeLineTopView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 133)];
- _topHeader.delegate=self;
- }
- return _topHeader;
- }
- @end
|