// // KDPGoodDetailVC.m // KuDianProject // // Created by 学丽 on 2019/7/9. // Copyright © 2019 KDP. All rights reserved. // #import "KDPGoodDetailVC.h" #import "KDPDetailGoodInformationView.h" #import "KDPSellingPointView.h" #import "KDPShopView.h" #import #import "KDPCollectHistoryPageVC.h" #import "KDPPasteView.h" #import #define goodHeight 496+KDStatusHeight @interface KDPGoodDetailVC () { UIView *bottomView; UIButton *collectButton; } //淘口令页面 @property(nonatomic,strong)KDPPasteView *pasteView; @property(nonatomic,strong)KDPIDTipView *tipView; @property(nonatomic,strong)UIScrollView *detailBottonView; @property(nonatomic,strong)KDPDetailGoodInformationView *infoView; @property(nonatomic,strong)KDPSellingPointView *pointView; @property(nonatomic,strong)KDPShopView *shopView; @property(nonatomic,strong)KDPGoodsModel *detailModel; @property(nonatomic,strong)WKWebView *detaiWebV; @end @implementation KDPGoodDetailVC - (void)viewDidLoad { [super viewDidLoad]; [self addDetailUI]; [self addbottomView]; self.infoView.model=self.model; @try { [self.detaiWebV removeObserver:self forKeyPath:@"scrollView.contentSize"]; } @catch (NSException *exception) { } [self.detaiWebV addObserver:self forKeyPath:@"scrollView.contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; [self.detailBottonView addSubview:self.detaiWebV]; [self.detaiWebV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.shopView.mas_bottom).offset(40); make.width.mas_equalTo(SCREEN_WIDTH); make.left.mas_equalTo(0); }]; [self getGoodDetail]; [self.view addSubview:self.pasteView]; [self.view addSubview:self.tipView]; [self.tipView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.top.mas_equalTo(0); make.width.mas_equalTo(SCREEN_WIDTH); make.height.mas_equalTo(SCREEN_HEIGHT); }]; } - (void)dealloc { @try{ [self.detaiWebV removeObserver:self forKeyPath:@"scrollView.contentSize"]; }@catch (NSException *exception) { } NSLog(@"释放了------------"); } #pragma mark---商品详情 -(void)getGoodDetail { if (self.model.goods_id.length<=0) { return; } [LoadingView show]; [KDPNetworkRequestHTTP postURL:goodDetailURL params:@{@"goods_id":self.model.goods_id} success:^(id _Nonnull json) { self.detailModel=[KDPGoodsModel yy_modelWithJSON:json[@"data"]]; if (self.detailModel.goods_point.length>0) { [self good_points]; } self.infoView.model=self.detailModel; self.shopView.shopDic=self.detailModel.shop; [self loadRequestWeb]; [LoadingView dismiss]; [self isCollect]; [self saveHistoryModel:self.detailModel]; } failure:^(NSError * _Nonnull error) { [LoadingView dismiss]; }]; } #pragma mark----Web详情 -(void)loadRequestWeb { NSURL *url=[NSURL URLWithString:self.detailModel.detail_url]; NSURLRequest *requests=[NSURLRequest requestWithURL:url]; [self.detaiWebV loadRequest:requests]; } -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { CGFloat heights =[KDPublicMethod getHeightByWidth:SCREEN_WIDTH-40 title:self.detailModel.goods_point font:[UIFont systemFontOfSize:13]]; if ([keyPath isEqualToString:@"scrollView.contentSize"]) { id height =[change valueForKey:NSKeyValueChangeNewKey]; CGSize size; [(NSValue *)height getValue:&size]; [self.detaiWebV mas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(size.height); }]; self.detailBottonView.contentSize=CGSizeMake(0, size.height+goodHeight+115+heights); } } #pragma mark---赋值。卖点 -(void)good_points { CGFloat height =[KDPublicMethod getHeightByWidth:SCREEN_WIDTH-40 title:self.detailModel.goods_point font:[UIFont systemFontOfSize:13]]; self.pointView.point_good =self.detailModel.goods_point; [self.pointView mas_updateConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(goodHeight); make.height.mas_equalTo(height+50); }]; [self.shopView mas_updateConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.pointView.mas_bottom); }]; } -(void)addbottomView { bottomView =[[UIView alloc]initWithFrame:CGRectMake(0, SCREEN_HEIGHT-KDTabBarHeight, SCREEN_WIDTH, KDTabBarHeight)]; bottomView.backgroundColor=[UIColor whiteColor]; [self.view addSubview:bottomView]; collectButton=[[UIButton alloc]initWithFrame:CGRectMake(0, 3, 86, 33)]; collectButton.titleLabel.font=[UIFont systemFontOfSize:10]; [collectButton setTitle:@"收藏" forState:UIControlStateNormal]; [collectButton setImage:[UIImage imageNamed:@"collection_select"] forState:UIControlStateSelected]; [collectButton setTitleColor:[UIColor colorWithHexString:@"#828282"] forState:UIControlStateNormal]; [collectButton setImage:[UIImage imageNamed:@"collection_un"] forState:UIControlStateNormal]; collectButton.adjustsImageWhenHighlighted=NO; [collectButton setButtonImageTitleStyle:ButtonImageTitleStyleCenterDown padding:3]; [collectButton addTarget:self action:@selector(detailCollectClickButton) forControlEvents:UIControlEventTouchUpInside]; [bottomView addSubview:collectButton]; UIButton *buybutton =[[UIButton alloc]initWithFrame:CGRectMake(collectButton.right, 3, (SCREEN_WIDTH-96)/2, 39)]; buybutton.backgroundColor=[UIColor gradientOneColor:[UIColor colorWithHexString:@"#FF235F"] toColor:[UIColor colorWithHexString:@"#FF7676"] Width:(SCREEN_WIDTH-96)/2]; [buybutton setTitle:@"购买样品" forState:UIControlStateNormal]; [bottomView addSubview:buybutton]; buybutton.titleLabel.font=[UIFont systemFontOfSize:14]; [buybutton addTarget:self action:@selector(clickBuyButton) forControlEvents:UIControlEventTouchUpInside]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:buybutton.bounds byRoundingCorners:UIRectCornerTopLeft| UIRectCornerBottomLeft cornerRadii:CGSizeMake(19.5, 19.5)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = buybutton.bounds; maskLayer.path = maskPath.CGPath; buybutton.layer.mask = maskLayer; UIButton *getKwaiButton =[[UIButton alloc]initWithFrame:CGRectMake(buybutton.right, 3, (SCREEN_WIDTH-96)/2, 39)]; getKwaiButton.backgroundColor=[UIColor colorWithHexString:ThemeColor]; [getKwaiButton setTitle:@"推广到快手" forState:UIControlStateNormal]; getKwaiButton.titleLabel.font=[UIFont systemFontOfSize:14]; [getKwaiButton addTarget:self action:@selector(kwaiClickButton) forControlEvents:UIControlEventTouchUpInside]; [bottomView addSubview:getKwaiButton]; UIBezierPath *maskPaths= [UIBezierPath bezierPathWithRoundedRect:getKwaiButton.bounds byRoundingCorners:UIRectCornerTopRight| UIRectCornerBottomRight cornerRadii:CGSizeMake(19.5, 19.5)]; CAShapeLayer *maskLayers = [[CAShapeLayer alloc] init]; maskLayers.frame = buybutton.bounds; maskLayers.path = maskPaths.CGPath; getKwaiButton.layer.mask = maskLayers; } -(void)returnClickBtn { [self.navigationController popViewControllerAnimated:YES]; } -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.navBar.hidden=YES; [UIApplication sharedApplication].statusBarStyle=UIStatusBarStyleDefault; self.navigationController.navigationBar.hidden=YES; self.tabBarController.tabBar.hidden=YES; } -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // self.navBar.hidden=NO; [UIApplication sharedApplication].statusBarStyle=UIStatusBarStyleLightContent; self.tabBarController.tabBar.hidden=NO; } -(KDPDetailGoodInformationView *)infoView { if (!_infoView) { _infoView=[[KDPDetailGoodInformationView alloc]init]; __weak KDPGoodDetailVC *weakself=self; _infoView.returnBlock = ^{ [weakself.navigationController popViewControllerAnimated:YES]; }; } return _infoView; } -(KDPShopView *)shopView { if (!_shopView) { _shopView=[[KDPShopView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 70)]; } return _shopView; } -(KDPSellingPointView *)pointView { if (!_pointView) { _pointView=[[KDPSellingPointView alloc]init]; } return _pointView; } -(KDPPasteView *)pasteView { if (!_pasteView) { _pasteView=[[KDPPasteView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)]; _pasteView.hidden=YES; } return _pasteView; } -(KDPIDTipView *)tipView { if (!_tipView) { _tipView =[[KDPIDTipView alloc]init]; _tipView.hidden=YES; } return _tipView; } -(void)addDetailUI { self.view.backgroundColor=[UIColor whiteColor]; [self.view addSubview:self.detailBottonView]; [self.detailBottonView addSubview:self.infoView]; [self.detailBottonView addSubview:self.pointView]; [self.detailBottonView addSubview:self.shopView]; [self.detailBottonView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.mas_equalTo(0); make.bottom.mas_equalTo(self.view.mas_bottom).offset(-KDTabBarHeight); }]; [self.infoView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.top.mas_equalTo(0); make.width.mas_equalTo(SCREEN_WIDTH); make.height.mas_equalTo(goodHeight); }]; [self.pointView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.infoView.mas_bottom); make.left.mas_equalTo(0); make.width.mas_equalTo(SCREEN_WIDTH); make.height.mas_equalTo(0); }]; [self.shopView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0); make.width.mas_equalTo(SCREEN_WIDTH); make.height.mas_equalTo(75); make.top.mas_equalTo(self.pointView.mas_bottom); }]; [self addDetailTitle]; UIButton *returnBtn =[[UIButton alloc]initWithFrame:CGRectMake(15, KDStatusHeight+10, 30, 30)]; returnBtn.layer.cornerRadius=15; returnBtn.layer.masksToBounds=YES; [self.view addSubview:returnBtn]; returnBtn.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.4]; [returnBtn setImage:[UIImage imageNamed:@"return_white"] forState:UIControlStateNormal]; [returnBtn addTarget:self action:@selector(exitclickButton) forControlEvents:UIControlEventTouchUpInside]; UIButton * collectBtn=[[UIButton alloc]initWithFrame:CGRectMake(self.view.width-47, KDStatusHeight+10, 30, 30)]; [collectBtn setImage:[UIImage imageNamed:@"detail_collection"] forState:UIControlStateNormal]; collectBtn.adjustsImageWhenHighlighted=NO; [collectBtn addTarget:self action:@selector(collectPageClickSel) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:collectBtn]; } -(void)addDetailTitle { UILabel *titleL=[[UILabel alloc]init]; titleL.textColor=[UIColor colorWithHexString:fontColor]; titleL.text=@"———— 商品详情 ————"; titleL.font=[UIFont systemFontOfSize:14]; titleL.textAlignment=NSTextAlignmentCenter; [self.detailBottonView addSubview:titleL]; [titleL mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.shopView.mas_bottom); make.height.mas_equalTo(40); make.width.mas_equalTo(SCREEN_WIDTH); make.left.mas_equalTo(0); }]; } -(void)exitclickButton { [self.navigationController popViewControllerAnimated:YES]; } -(WKWebView *)detaiWebV { if (!_detaiWebV) { _detaiWebV= [[WKWebView alloc]init]; _detaiWebV.navigationDelegate=self; _detaiWebV.scrollView.scrollEnabled=NO; } return _detaiWebV; } -(UIScrollView *)detailBottonView { if (!_detailBottonView) { _detailBottonView=[[UIScrollView alloc]init]; _detailBottonView.delegate=self; _detailBottonView.backgroundColor=[UIColor whiteColor]; _detailBottonView.showsVerticalScrollIndicator=NO; if (@available(iOS 11.0, *)) { _detailBottonView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { self.automaticallyAdjustsScrollViewInsets = NO; } _detailBottonView.showsHorizontalScrollIndicator=NO; _detailBottonView.contentSize=CGSizeMake(0, SCREEN_HEIGHT*2); } return _detailBottonView; } #pragma mark----收藏 -(void)detailCollectClickButton { [LoadingView show]; NSString *collect=self.detailModel.is_collect; if (collect.integerValue == 0) {//收藏 collect=@"1"; }else{ collect=@"0"; } NSDictionary *param=@{@"is_add":collect,@"goods_id":self.detailModel.goods_id}; [KDPNetworkRequestHTTP postURL:collectURL params:param success:^(id _Nonnull json) { [LoadingView dismiss]; if ([json[@"flag"] integerValue] == 1) { [MBProgressHUD showSuccess:@"收藏成功"]; } self.detailModel.is_collect=collect; [self isCollect]; } failure:^(NSError * _Nonnull error) { [LoadingView dismiss]; }]; } #pragma mark---判断是否收藏 -(void)isCollect { if (self.detailModel.is_collect.integerValue == 1) { collectButton.selected = YES; }else{ collectButton.selected=NO; } } -(void)collectPageClickSel { KDPCollectHistoryPageVC *histT=[[KDPCollectHistoryPageVC alloc]init]; [self.navigationController pushViewController:histT animated:YES]; } #pragma mark---推广到快手 -(void)kwaiClickButton { if (self.detailModel.goods_id.length<=0) { return; } [LoadingView show]; [KDPNetworkRequestHTTP postURL:KwaiJumpURL params:@{@"goods_id":self.detailModel.goods_id} success:^(id _Nonnull json) { [LoadingView dismiss]; /** 弹框状态 1:用户没有快手Pid 2:用户有Pid,首次提示 3:用户有Pid,二次提示 */ NSDictionary *resultDic=(NSDictionary *)json; if ([resultDic.allKeys containsObject:@"alert_info"]) {//包括alert_info说明需要提示 [UIView animateWithDuration:1 animations:^{ self.tipView.hidden=NO; self.tipView.resultDic=json[@"alert_info"]; }]; }else{//直接跳转到快手推广 [KDPublicMethod jumpKwaiWithURL:json[@"data"][@"kwai_url_prime"]]; } } failure:^(NSError * _Nonnull error) { [LoadingView dismiss]; }]; } #pragma mark---购买样品 -(void)clickBuyButton { [LoadingView show]; if (self.detailModel.goods_id.length<=0) { return; } [KDPNetworkRequestHTTP postURL:BuyURL params:@{@"goods_id":self.detailModel.goods_id} success:^(id _Nonnull json) { UIPasteboard * pastboard = [UIPasteboard generalPasteboard]; pastboard.string=json[@"data"][@"tkl"]; if (![KDPublicMethod JumpOpenURL:KWai]) {//没有安装快手,过审用 [self jumpTbWithURL:json[@"data"][@"url"]]; }else{ self.pasteView.pasteLabel.attributedText=[KDPublicMethod sethanggaoWithStr:[NSString stringWithFormat:@"淘口令%@已复制你可以用来分享、购买或推广",json[@"data"][@"tkl"]] linSpacing:5]; self.pasteView.tkl=json[@"data"][@"tkl"]; self.pasteView.hidden=NO; } [LoadingView dismiss]; } failure:^(NSError * _Nonnull error) { [LoadingView dismiss]; }]; } #pragma mark---跳转淘宝购买 -(void)jumpTbWithURL:(NSString*)url { id page =[AlibcTradePageFactory page:url]; //打开方式 AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init]; showParam.openType = AlibcOpenTypeAuto; [[AlibcTradeSDK sharedInstance].tradeService show:self.navigationController page:page showParams:showParam taoKeParams:nil trackParam:nil tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) { } tradeProcessFailedCallback:^(NSError * _Nullable error) { }]; } #pragma mark---添加历史记录 -(void)saveHistoryModel:(KDPGoodsModel *)model { NSString *goods_id=@""; if (model.goods_id.length>0) { goods_id= model.goods_id; } NSString *price=@""; if (model.price.length>0) { price = model.price; } NSString *img=@""; if (model.img.length>0) { img =model.img; } NSString *commission_rate=@""; if (model.commission_rate.length>0) { commission_rate = model.commission_rate; } NSString *commission_price=@""; if (model.commission_price.length>0) { commission_price = model.commission_price; } NSString *shop_title=@""; if ([model.shop[@"title"] length]>0) { shop_title = model.shop[@"title"]; } NSString *title=@""; if (model.title.length>0) { title = model.title; } NSString *volume=@""; if (model.volume.length>0) { volume = model.volume; } NSString *live_price=@""; if (model.discount_price.length>0) { live_price = model.discount_price; } NSString *shop_type=@""; if (model.shop_type.length>0) { shop_type= model.shop_type; } NSDictionary *paramDic =@{@"title":title,@"img":img,@"goods_id":goods_id,@"volume":volume,@"shop_type":shop_type,@"shop_title":shop_title,@"price":price,@"commission_rate":commission_rate,@"discount_price":live_price,@"commission_price":commission_price}; [KDPNetworkRequestHTTP postURL:historyURL params:paramDic success:^(id _Nonnull json) { NSLog(@"%@",json); } failure:^(NSError * _Nonnull error) { }]; } @end