《省钱达人》与《猎豆优选》UI相同版。域名tbk

DRSearchCoupleWebViewController.m 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. //
  2. // DRSearchCoupleWebViewController.m
  3. // YouHuiProject
  4. //
  5. // Created by 小花 on 2018/11/27.
  6. // Copyright © 2018年 kuxuan. All rights reserved.
  7. //
  8. #import "DRSearchCoupleWebViewController.h"
  9. #import <AlibcTradeBiz/AlibcTradeBiz.h>
  10. #import <AlibcTradeSDK/AlibcTradeSDK.h>
  11. #import <AlibabaAuthSDK/ALBBSession.h>
  12. #import <AlibabaAuthSDK/ALBBSDK.h>
  13. #import <WebKit/WebKit.h>
  14. #import "WebviewProgressLine.h"
  15. #import <JavaScriptCore/JavaScriptCore.h>
  16. #import "DRFeedbackController.h"
  17. #import "WechatShareTool.h"
  18. #import "WYWeakScriptMessageDelegate.h"
  19. #import "DRLoginViewController.h"
  20. #import "DRGoodDetailModel.h"
  21. #import "DRShareImgPopView.h"
  22. #import "CCAlertShowView.h"
  23. #import "WebviewProgressLine.h"
  24. #import "DRShareRequestViewModel.h"
  25. #import "DRShareGoodViewController.h"
  26. @interface DRSearchCoupleWebViewController (){
  27. NSString *_goodStr;
  28. }
  29. @property (nonatomic, strong) UIButton *backButton;
  30. @property (nonatomic, strong) UIButton *closeButton;
  31. @property (nonatomic, strong) UIButton *topbtn;
  32. @property (nonatomic, strong) DRGoodDetailModel *detailModel;
  33. @property (nonatomic, strong) DRSearchCoupleBottomView *bottomView;
  34. @property (nonatomic, strong) WebviewProgressLine *progress;
  35. @end
  36. @implementation DRSearchCoupleWebViewController
  37. - (void)viewWillDisappear:(BOOL)animated {
  38. [super viewWillDisappear:animated];
  39. [UIApplication sharedApplication].statusBarHidden = NO;
  40. }
  41. - (void)viewWillAppear:(BOOL)animated {
  42. [super viewWillAppear:animated];
  43. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
  44. }
  45. - (instancetype)init
  46. {
  47. self = [super init];
  48. if (self) {
  49. self.webView.delegate = self;
  50. }
  51. return self;
  52. }
  53. - (void)viewDidLoad {
  54. [super viewDidLoad];
  55. [self configNavigationBar];
  56. [self configWebView];
  57. [self openPage];
  58. }
  59. - (void)configWebView {
  60. [self.view addSubview:self.webView];
  61. [self.webView addSubview:self.topbtn];
  62. [self.webView addSubview:self.bottomView];
  63. [self.view addSubview:self.progress];
  64. }
  65. - (void)openPage {
  66. id <AlibcTradePage> page = [AlibcTradePageFactory page:self.url];
  67. //淘客信息
  68. AlibcTradeTaokeParams *taoKeParams=[[AlibcTradeTaokeParams alloc] init];
  69. taoKeParams.pid = ALTK_PID;
  70. //打开方式
  71. AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
  72. showParam.openType = AlibcOpenTypeH5;
  73. [[AlibcTradeSDK sharedInstance].tradeService show:self webView:self.webView page:page showParams:showParam taoKeParams:taoKeParams trackParam:nil tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) {
  74. } tradeProcessFailedCallback:^(NSError * _Nullable error) {
  75. }];
  76. }
  77. - (void)configNavigationBar {
  78. self.view.backgroundColor = [UIColor whiteColor];
  79. self.navigationBar.showNavigationBarBottomLine = YES;
  80. [self.navigationBar setCustomLeftButtons:@[self.backButton]];
  81. }
  82. - (void)backAction {
  83. if (self.webView.canGoBack) {
  84. [self.webView goBack];
  85. }else{
  86. [self.navigationController popViewControllerAnimated:YES];
  87. }
  88. }
  89. - (void)closeAction {
  90. [self.navigationController popViewControllerAnimated:YES];
  91. }
  92. - (void)updateNavigationBarButtons {
  93. if (self.webView.canGoBack) {
  94. [self.navigationBar setCustomLeftButtons:@[self.backButton,self.closeButton]];
  95. }else {
  96. [self.navigationBar setCustomLeftButtons:@[self.backButton]];
  97. }
  98. }
  99. - (UIWebView *)webView {
  100. if (!_webView) {
  101. _webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, NavBarHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavBarHeight-SafeBottomHeight)];
  102. _webView.allowsInlineMediaPlayback = YES;
  103. }
  104. return _webView;
  105. }
  106. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  107. return YES;
  108. }
  109. - (void)webViewDidStartLoad:(UIWebView *)webView {
  110. [LoadingView dismiss];
  111. [self.topbtn setTitle:@"请点击底部页面【搜索优惠券】按钮" forState:UIControlStateNormal];
  112. [self.topbtn setImage:[UIImage imageNamed:@"dianji-2"] forState:UIControlStateNormal];
  113. self.topbtn.hidden = YES;
  114. self.bottomView.hidden = YES;
  115. UIButton *button =[self.topbtn viewWithTag:1111];
  116. button.hidden=YES;
  117. [self.progress startLoadingAnimation];
  118. }
  119. - (void)webViewDidFinishLoad:(UIWebView *)webView {
  120. [LoadingView dismiss];
  121. [self.progress endLoadingAnimation];
  122. NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];//获取当前页面的title
  123. [self.navigationBar setNavTitle:title];
  124. [self updateNavigationBarButtons];
  125. //获取详情页商品
  126. if (self.jsString.length > 0) {
  127. [self.webView stringByEvaluatingJavaScriptFromString:self.jsString];
  128. _goodStr = [self.webView stringByEvaluatingJavaScriptFromString:@"getIdH5()"];
  129. if (_goodStr.length>0 && ![_goodStr isEqualToString:@"false"]) {
  130. self.bottomView.hidden = NO;
  131. self.topbtn.hidden = NO;
  132. [self.bottomView showSearch];
  133. }else {
  134. self.bottomView.hidden = YES;
  135. self.topbtn.hidden = YES;
  136. }
  137. }
  138. }
  139. - (void)uploadGoodId {
  140. if (_goodStr.length > 0) {
  141. NSString *url = [NSString stringWithFormat:@"%@/api/v2/goods/tianmaoGoods",BaseURL];
  142. NSDictionary *para = @{@"goods_id":_goodStr};
  143. [LoadingView show];
  144. [DRHttp post:url params:para success:^(id json) {
  145. self.detailModel = [DRGoodDetailModel yy_modelWithJSON:json];
  146. self.bottomView.model=self.detailModel;
  147. UIButton *button =[self.topbtn viewWithTag:1111];
  148. button.hidden=NO;
  149. if ([self.detailModel.isHasGoods boolValue]) {
  150. [self.topbtn setTitle:@"你也可以分享给好友哦" forState:UIControlStateNormal];
  151. [self.bottomView showPay];
  152. }else {
  153. [MBProgressHUD showMessage:@"该商品未参加优惠券活动"];
  154. }
  155. self.topbtn.hidden = YES;
  156. [LoadingView dismiss];
  157. } failure:^(NSError *error) {
  158. [LoadingView dismiss];
  159. }];
  160. }
  161. }
  162. #pragma mark ---------------- SearchCoupleBottomDelegate ------------
  163. /**
  164. 找券
  165. */
  166. - (void)bottomViewSearchClick {
  167. [self uploadGoodId];
  168. }
  169. /**
  170. 分享
  171. */
  172. - (void)bottomViewShareClick {
  173. if (self.detailModel) {
  174. [self showShareView:self.detailModel];
  175. }
  176. }
  177. /**
  178. 购买
  179. */
  180. - (void)bottomViewPayClick {
  181. [self gobuy];
  182. }
  183. - (void)showShareView:(DRGoodDetailModel *)detailModel {
  184. DetailRequestModel *requestModel = [[DetailRequestModel alloc] initWithId:detailModel.goods_id is_coupon:[NSString stringWithFormat:@"%@",detailModel.is_coupon] coupon_price:detailModel.coupon_price price:detailModel.price discount_price:detailModel.discount_price commission_rate:detailModel.commission_rate coupon_start_time:detailModel.start_time coupon_end_time:detailModel.end_time];
  185. [LoadingView show];
  186. [DRShareRequestViewModel requestGoodDetailParamGoods_id:requestModel success:^(DRShareInfoModel * _Nonnull infoModel, NSDictionary * _Nonnull dic) {
  187. [LoadingView dismiss];
  188. DRShareGoodViewController *shareVc = [[DRShareGoodViewController alloc] init];
  189. shareVc.goodModel = infoModel;
  190. [self.navigationController pushViewController:shareVc animated:YES];
  191. } failure:^(NSError * _Nonnull error) {
  192. [LoadingView dismiss];
  193. }];
  194. // DRShareImgPopView *shareView = [[DRShareImgPopView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) goodModel:detailModel];
  195. // CCAlertShowView *showView = [CCAlertShowView showAlertViewWithView:shareView backgroundDismissEnable:YES];
  196. // shareView.closeAction = ^{
  197. // [showView dismiss];
  198. // };
  199. // shareView.shareResult = ^(id result, NSError *error) {
  200. // if (!error) {
  201. // [self shareSuccManagerWithModel:detailModel];
  202. // }else {
  203. // [MBProgressHUD showMessage:@"分享失败"];
  204. // }
  205. // };
  206. // showView.backgroundView.backgroundColor = [UIColor clearColor];
  207. // [showView show];
  208. }
  209. - (void)shareSuccManagerWithModel:(DRGoodDetailModel *)model {
  210. NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/shareCount",BaseURL];
  211. NSDictionary *para = @{@"goods_id":model.goods_id};
  212. [DRHttp post:url params:para success:^(id json) {
  213. [MBProgressHUD showMessage:@"分享成功"];
  214. } failure:^(NSError *error) {
  215. }];
  216. }
  217. /**
  218. 领券
  219. */
  220. - (void)gobuy {
  221. NSString *goods_id = self.detailModel.goods_id==nil?@"":self.detailModel.goods_id;
  222. NSNumber *is_coupon = self.detailModel.is_coupon==nil?@(0):self.detailModel.is_coupon;
  223. NSString *path = self.name==nil?@"":self.name;
  224. NSDictionary *param = @{@"goods_id":goods_id,
  225. @"is_coupon":is_coupon,
  226. @"category_id":@"0",
  227. @"path":path,
  228. };
  229. NSString *url = [NSString stringWithFormat:@"%@/api/v2/adzoneCreate/orderDown",BaseURL];
  230. [LoadingView show];
  231. [DRHttp post:url params:param success:^(id json) {
  232. if (url.length > 0) {
  233. [self jumpToTaobaoWithGoodsUrl:json[@"url"]];
  234. }
  235. [LoadingView dismiss];
  236. } failure:^(NSError *error) {
  237. [LoadingView dismiss];
  238. [MBProgressHUD showMessage:@"加载失败"];
  239. }];
  240. }
  241. - (void)jumpToTaobaoWithGoodsUrl:(NSString *)url {
  242. id<AlibcTradePage> page = [AlibcTradePageFactory page:url];
  243. //淘客信息
  244. AlibcTradeTaokeParams *taoKeParams=[[AlibcTradeTaokeParams alloc] init];
  245. taoKeParams.pid = ALTK_PID; //
  246. //打开方式
  247. AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
  248. showParam.openType = AlibcOpenTypeNative;
  249. [[AlibcTradeSDK sharedInstance].tradeService show:self.navigationController page:page showParams:showParam taoKeParams:taoKeParams trackParam:nil tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) {
  250. } tradeProcessFailedCallback:^(NSError * _Nullable error) {
  251. }];
  252. }
  253. #pragma mark ------
  254. - (UIButton *)backButton {
  255. if (!_backButton) {
  256. _backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
  257. [_backButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
  258. [_backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
  259. }
  260. return _backButton;
  261. }
  262. - (UIButton *)closeButton {
  263. if (!_closeButton) {
  264. _closeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
  265. [_closeButton setImage:[UIImage imageNamed:@"close_web"] forState:UIControlStateNormal];
  266. [_closeButton addTarget:self action:@selector(closeAction) forControlEvents:UIControlEventTouchUpInside];
  267. }
  268. return _closeButton;
  269. }
  270. -(UIButton *)topbtn
  271. {
  272. if (!_topbtn) {
  273. _topbtn =[[UIButton alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 44)];
  274. _topbtn.backgroundColor=[UIColor YHColorWithHex:0xFFDFDF];
  275. [_topbtn setTitleColor:[UIColor homeRedColor] forState:UIControlStateNormal];
  276. _topbtn.titleLabel.text= @"请点击底部页面【搜索优惠券】按钮";
  277. _topbtn.titleLabel.textAlignment=NSTextAlignmentCenter;
  278. _topbtn.titleLabel.font=[UIFont systemFontOfSize:15];
  279. [_topbtn setImage:[UIImage imageNamed:@"dianji-2"] forState:UIControlStateNormal];
  280. [_topbtn setButtonStyle:WSLButtonStyleImageLeft spacing:10];
  281. _topbtn.hidden=YES;
  282. // UIButton *but =[[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-60, 0, 50, 44)];
  283. // [but setImage:[UIImage imageNamed:@"fenxiang_red"] forState:UIControlStateNormal];
  284. // [_topbtn addSubview:but];
  285. // but.tag=1111;
  286. // [but addTarget:self action:@selector(sharegoods) forControlEvents:UIControlEventTouchUpInside];
  287. // but.hidden=YES;
  288. }
  289. return _topbtn;
  290. }
  291. -(void)sharegoods
  292. {
  293. [self showShareView:self.detailModel];
  294. }
  295. - (DRSearchCoupleBottomView *)bottomView {
  296. if (!_bottomView) {
  297. _bottomView = [[DRSearchCoupleBottomView alloc] initWithFrame:CGRectMake(0, self.webView.height-50, SCREEN_WIDTH, 50)];
  298. [_bottomView showSearch];
  299. _bottomView.backgroundColor=[UIColor whiteColor];
  300. _bottomView.hidden = YES;
  301. _bottomView.delegate = self;
  302. }
  303. return _bottomView;
  304. }
  305. - (WebviewProgressLine *)progress {
  306. if (!_progress) {
  307. _progress = [[WebviewProgressLine alloc] initWithFrame:CGRectMake(0, NavBarHeight, SCREEN_WIDTH, 2)];
  308. _progress.lineColor = [UIColor homeRedColor];
  309. }
  310. return _progress;
  311. }
  312. @end