// OrderdetailsViewController.m // Lighting // // Created by 曹云霄 on 16/5/4. // Copyright © 2016年 上海勾芒科技有限公司. All rights reserved. // #import "OrderdetailsViewController.h" #import "OrderInformationTableViewCell.h" #import "PersonInformationTableViewCell.h" #import "GoodsInformationTableViewCell.h" #import "CommodityListTableViewCell.h" #import "AllpriceTableViewCell.h" #import "SettlementViewController.h" #import "AdditionalTableViewCell.h" #import #import "CustomWKWebViewController.h" #import "ShareGoodsViewController.h" #import "OrderDetailsSectionHeaderView.h" #import "PromotionalDeductionModel.h" #import "PromotionalGoodsModel.h" #import "PromotionalTableViewCell.h" #import "JDEcardViewController.h" #import "WYPopoverController.h" #import "RebateSuccessTableViewController.h" #import "PromotionLuckyDrawModel.h" #import "PromotionLuckDrawResultModel.h" #import "AirPrintManager.h" #import #import "PromotionJDECardModel.h" #import "PromotionWeChatCardModel.h" #import "PromotionChooseViewController.h" #import "PromotionChooseNavigationController.h" #import "QRViewController.h" #import "PromotionalReadPacketModel.h" NSString *const PROMOTIONALSTRING = @"促销信息"; @interface OrderdetailsViewController () @property (nonatomic,strong) WKWebView *webView; /** * 订单详情数据 */ @property (nonatomic,strong) OrderBill *orderDetails; /** * 本地存储地址 */ @property (nonatomic,copy) NSString *PDFpath; /** * 已享受促销信息 */ @property (nonatomic,strong) NSMutableArray *promotionInformationArray; /** * 京东E卡 */ @property (nonatomic,strong) WYPopoverController *settingsPopoverController; /** * 客户抽奖结果 */ @property (nonatomic,strong) PromotionLuckDrawResultModel *customerDrawModel; /** 消费者促销列表 */ @property (nonatomic,strong) NSMutableArray *customerPromotionArray; /** 导购促销列表 */ @property (nonatomic,strong) NSMutableArray *guidePromotionArray; /** 微信卡劵 */ @property (nonatomic,strong) WeChatCardModel *weChatModel; /** 扫描微信卡劵(重试) */ @property (nonatomic,strong) PromotionWeChatCardModel *tempWeChatModel; @end @implementation OrderdetailsViewController #pragma mark - lazy - (NSMutableArray *)sectionTitle { if (!_sectionTitle) { _sectionTitle = [NSMutableArray arrayWithObjects:@"订单信息",@"客户信息",@"收货信息",@"商品信息",@"附件信息", nil]; } return _sectionTitle; } - (NSMutableArray *)guidePromotionArray { if (!_guidePromotionArray) { _guidePromotionArray = [NSMutableArray array]; } return _guidePromotionArray; } - (NSMutableArray *)promotionInformationArray { if (!_promotionInformationArray) { _promotionInformationArray = [NSMutableArray array]; } return _promotionInformationArray; } - (NSMutableArray *)customerPromotionArray { if (!_customerPromotionArray) { _customerPromotionArray = [NSMutableArray array]; } return _customerPromotionArray; } - (WeChatCardModel *)weChatModel { if (!_weChatModel) { _weChatModel = [[WeChatCardModel alloc]init]; } return _weChatModel; } #pragma mark -渲染完成 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if (self.isSliding) { self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO; if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } } } #pragma mark -视图即将消失 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // 开启 self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = YES; if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } } - (void)viewDidLoad { [super viewDidLoad]; [self uiConfigAction]; [self getOrderDetailsData:nil]; } #pragma mark - UI - (void)uiConfigAction { self.orderDetailsTableview.dataSource = self; self.orderDetailsTableview.delegate = self; //附加信息cell [self.orderDetailsTableview registerNib:[UINib nibWithNibName:@"AdditionalTableViewCell" bundle:nil] forCellReuseIdentifier:@"fifthcell"]; } #pragma mark -获取订单详情、查询促销信息 - (void)getOrderDetailsData:(void(^)())finish { dispatch_group_t group = dispatch_group_create(); dispatch_group_enter(group); [XBLoadingView showHUDViewWithDefault]; WS(weakSelf); // 订单详情 [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@",SERVERREQUESTURL(ORDERDETAILS),self.orderCode] withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) { dispatch_group_leave(group); if (RESULT(returnValue)) { weakSelf.orderDetails = [[OrderBill alloc]initWithDictionary:RESPONSE(returnValue) error:nil]; }else{ [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)]; } }withFailureBlock:^(NSError *error) { dispatch_group_leave(group); [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; // 未支付的订单查询实时促销,否则查询历史促销 if (self.isShowPayButton) { // 查询实时促销信息 dispatch_group_enter(group); [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:SERVERREQUESTURL(PROMOTIONAL),self.orderCode] withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) { dispatch_group_leave(group); [XBLoadingView hideHUDViewWithDefault]; if (RESULT(returnValue)) { [weakSelf.promotionInformationArray removeAllObjects]; [weakSelf.guidePromotionArray removeAllObjects]; [weakSelf.customerPromotionArray removeAllObjects]; NSArray *promotionalArray = RESPONSE(returnValue)[@"actions"]; for (NSDictionary *dict in promotionalArray) { NSString *type = dict[@"type"]; // 折扣金额 if ([type isEqualToString:deductionAction]) { PromotionalDeductionModel *deductionModel = [[PromotionalDeductionModel alloc]initWithDictionary:dict error:nil]; [weakSelf getConsumerAllPromotion:deductionModel withBody:deductionModel.body]; // 赠送商品 }else if ([type isEqualToString:goodsAction]){ PromotionalGoodsModel *goodsModel = [[PromotionalGoodsModel alloc]initWithDictionary:dict error:nil]; [weakSelf getConsumerAllPromotion:goodsModel withBody:goodsModel.body]; // 京东E卡 }else if ([type isEqualToString:JDECardAction]){ PromotionJDECardModel *JDECardModel = [[PromotionJDECardModel alloc]initWithDictionary:dict error:nil]; [weakSelf getConsumerAllPromotion:JDECardModel withBody:JDECardModel.body]; // 转盘抽奖 }else if ([type isEqualToString:lotteryAction]){ PromotionLuckyDrawModel *drawModel = [[PromotionLuckyDrawModel alloc]initWithDictionary:dict error:nil]; [weakSelf getConsumerAllPromotion:drawModel withBody:drawModel.body]; }else if ([type isEqualToString:WeChatCard]){ // 微信卡劵 PromotionWeChatCardModel *weChatModel = [[PromotionWeChatCardModel alloc]initWithDictionary:dict error:nil]; [weakSelf getConsumerAllPromotion:weChatModel withBody:weChatModel.body]; }else if ([type isEqualToString:redPackageAction]){ // 现金红包 PromotionalReadPacketModel *readPacketModel = [[PromotionalReadPacketModel alloc]initWithDictionary:dict error:nil]; [weakSelf getConsumerAllPromotion:readPacketModel withBody:readPacketModel.body]; } } }else{ [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)]; } } withFailureBlock:^(NSError *error) { dispatch_group_leave(group); [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; }else { // 查询历史促销信息 dispatch_group_enter(group); [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:SERVERREQUESTURL(OLDPROMOTIONAL),self.orderCode] withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) { dispatch_group_leave(group); [XBLoadingView hideHUDViewWithDefault]; if (RESULT(returnValue)) { [weakSelf.promotionInformationArray removeAllObjects]; [weakSelf.guidePromotionArray removeAllObjects]; [weakSelf.customerPromotionArray removeAllObjects]; NSArray *promotion = RESPONSE(returnValue); for (NSDictionary *dict in promotion) { TOOrderPromotionEntity *oldPromotion = [[TOOrderPromotionEntity alloc]initWithDictionary:dict error:nil]; NSString *type = dict[@"type"]; // 折扣金额 if ([type isEqualToString:deductionAction]) { if (![weakSelf.sectionTitle containsObject:PROMOTIONALSTRING]) { [weakSelf.sectionTitle addObject:PROMOTIONALSTRING]; } PromotionalDeductionModel *deductionModel = [[PromotionalDeductionModel alloc]initWithDictionary:[oldPromotion toDictionary] error:nil]; deductionModel.total = [oldPromotion.promotionMoney integerValue]; deductionModel.isSelected = YES; [weakSelf getConsumerAllPromotion:deductionModel withBody:deductionModel.body]; // 赠送商品 }else if ([type isEqualToString:goodsAction]){ if (![weakSelf.sectionTitle containsObject:PROMOTIONALSTRING]) { [weakSelf.sectionTitle addObject:PROMOTIONALSTRING]; } PromotionalGoodsModel *goodsModel = [[PromotionalGoodsModel alloc]initWithDictionary:[oldPromotion toDictionary] error:nil]; goodsModel.count = [oldPromotion.promotionNumber integerValue]; Goods *goods = [[Goods alloc]init]; goods.name = oldPromotion.goodsName; goodsModel.goods = goods; goodsModel.isSelected = YES; [weakSelf getConsumerAllPromotion:goodsModel withBody:goodsModel.body]; // 京东E卡 }else if ([type isEqualToString:JDECardAction]){ PromotionJDECardModel *jdECardModel = [[PromotionJDECardModel alloc]initWithDictionary:[oldPromotion toDictionary] error:nil]; jdECardModel.total = [oldPromotion.jdecardDenomation integerValue]; [weakSelf getConsumerAllPromotion:jdECardModel withBody:jdECardModel.body]; // 转盘抽奖 }else if ([type isEqualToString:dzpRedPackage]){ PromotionLuckyDrawModel *guideDrawModel = [[PromotionLuckyDrawModel alloc]initWithDictionary:[oldPromotion toDictionary] error:nil]; [weakSelf getConsumerAllPromotion:guideDrawModel withBody:guideDrawModel.body]; // 微信卡劵 }else if ([type isEqualToString:WeChatCard]){ PromotionWeChatCardModel *weChatModel = [[PromotionWeChatCardModel alloc]initWithDictionary:[oldPromotion toDictionary] error:nil]; weChatModel.total = [oldPromotion.wxcardDenomation integerValue]; [weakSelf.promotionInformationArray addObject:weChatModel]; self.weChatModel.wxcardNumber = oldPromotion.wxcardNumber; self.weChatModel.wxcardDenomation = [oldPromotion.wxcardDenomation integerValue]; [weakSelf getConsumerAllPromotion:weChatModel withBody:weChatModel.body]; // 现金红包 }else if ([type isEqualToString:redPackageAction]){ PromotionalReadPacketModel *readPacketModel = [[PromotionalReadPacketModel alloc]initWithDictionary:[oldPromotion toDictionary] error:nil]; readPacketModel.total = [oldPromotion.redPackageNumber integerValue]; [weakSelf getConsumerAllPromotion:readPacketModel withBody:readPacketModel.body]; } } if (self.promotionInformationArray.count && ![self.sectionTitle containsObject:PROMOTIONALSTRING]) { [self.sectionTitle addObject:PROMOTIONALSTRING]; } } }withFailureBlock:^(NSError *error) { dispatch_group_leave(group); [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; } /// 查询客户订单抽奖状态 __block RsAwardDraw *resultModel = nil; dispatch_group_enter(group); RsLotteryRequest *queryDrawState = [[RsLotteryRequest alloc]init]; // 判断订单是否支付 if (!self.isShowPayButton) { queryDrawState.orderNumberEquals = self.orderCode; } queryDrawState.winnerIdEquals = self.consumerID?self.consumerID:[Customermanager manager].model.fid; queryDrawState.stateEquals = self.isShowPayButton?ACCOMPLISHED:USED; DataPage *page = [[DataPage alloc]init]; page.page = ZERO; page.rows = ONE; queryDrawState.page = page; [HTTP networkRequestWithURL:SERVERREQUESTURL(LOTTERYED) withRequestType:ZERO withParameter:queryDrawState withReturnValueBlock:^(id returnValue) { dispatch_group_leave(group); if (RESULT(returnValue)) { NSDictionary *dict = [RESPONSE(returnValue)[@"list"] firstObject]; resultModel = [[RsAwardDraw alloc]initWithDictionary:dict error:nil]; } } withFailureBlock:^(NSError *error) { dispatch_group_leave(group); [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; // 完成后回调 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ if (self.isShowPayButton) { [self createTableviewFooterView]; } if (self.isShowHeaderView) { [self createTableviewHeaderView]; } self.orderDetailsTableview.emptyDataSetSource = self; self.orderDetailsTableview.emptyDataSetDelegate = self; // 有促销未支付情况 if (weakSelf.isShowPayButton && [weakSelf.orderDetails.order.orderState isEqualToString:NOTPAY] && weakSelf.customerPromotionArray.count) { // 有抽奖结果未使用 if (resultModel.award) { weakSelf.customerDrawModel = [PromotionLuckDrawResultModel initializeWith:resultModel]; } PromotionChooseNavigationController *promotionChooseNav = [[[weakSelf class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"PromotionChooseNavigationController"]; PromotionChooseViewController *promotionChoose = (PromotionChooseViewController *)promotionChooseNav.visibleViewController; promotionChoose.promotionDelegate = self; promotionChoose.promotionDatasArray = weakSelf.customerPromotionArray; promotionChooseNav.preferredContentSize = CGSizeMake(ScreenHeight-300, ScreenHeight-300); promotionChooseNav.modalPresentationStyle = UIModalPresentationFormSheet; UIPopoverPresentationController *pop = promotionChooseNav.popoverPresentationController; pop.permittedArrowDirections = UIPopoverArrowDirectionAny; pop.sourceView = promotionChooseNav.view; [self presentViewController:promotionChooseNav animated:YES completion:nil]; }else if ([weakSelf.orderDetails.order.orderState isEqualToString:NOTPAY] && weakSelf.isShowPayButton && !weakSelf.customerPromotionArray.count) { // 无促销未支付情况 [weakSelf payButtonClickAction]; }else if (![weakSelf.orderDetails.order.orderState isEqualToString:NOTPAY] && resultModel.award) { // 已支付,且有抽奖结果情况 weakSelf.customerDrawModel = [PromotionLuckDrawResultModel initializeWith:resultModel]; } if (finish) { finish(); } [weakSelf.orderDetailsTableview reloadData]; }); } #pragma mark - 选择消费者促销项回调 - (void)confirmChoosePromotion:(NSArray *)promotionArray { for (CustomPromotionModel *promotionModel in promotionArray) { for (JSONModel *originalModel in self.customerPromotionArray) { //微信卡劵 if ([originalModel isMemberOfClass:[PromotionWeChatCardModel class]]) { PromotionWeChatCardModel *weChatModel = (PromotionWeChatCardModel *)originalModel; if ([weChatModel.body isEqualToString:promotionModel.body] && [weChatModel.type isEqualToString:promotionModel.type] && [weChatModel.descriptionString isEqualToString:promotionModel.descriptionString] && weChatModel.priority == promotionModel.priority && [weChatModel.conflicts isEqualToArray:promotionModel.conflicts]) { weChatModel.isSelected = YES; [self.promotionInformationArray addObject:weChatModel]; } }else if ([originalModel isMemberOfClass:[PromotionalDeductionModel class]]) { //抵扣 PromotionalDeductionModel *deductionModel = (PromotionalDeductionModel *)originalModel; if ([deductionModel.body isEqualToString:promotionModel.body] && [deductionModel.type isEqualToString:promotionModel.type] && [deductionModel.descriptionString isEqualToString:promotionModel.descriptionString] && deductionModel.priority == promotionModel.priority && [deductionModel.conflicts isEqualToArray:promotionModel.conflicts]) { deductionModel.isSelected = YES; [self.promotionInformationArray addObject:deductionModel]; } }else if ([originalModel isMemberOfClass:[PromotionLuckyDrawModel class]]) { //抽奖 PromotionLuckyDrawModel *drawModel = (PromotionLuckyDrawModel *)originalModel; if ([drawModel.body isEqualToString:promotionModel.body] && [drawModel.type isEqualToString:promotionModel.type] && [drawModel.descriptionString isEqualToString:promotionModel.descriptionString] && drawModel.priority == promotionModel.priority && [drawModel.conflicts isEqualToArray:promotionModel.conflicts]) { drawModel.isSelected = YES; [self.promotionInformationArray addObject:drawModel]; } }else if ([originalModel isMemberOfClass:[PromotionalGoodsModel class]]) { //送商品 PromotionalGoodsModel *goodsModel = (PromotionalGoodsModel *)originalModel; if ([goodsModel.body isEqualToString:promotionModel.body] && [goodsModel.type isEqualToString:promotionModel.type] && [goodsModel.descriptionString isEqualToString:promotionModel.descriptionString] && goodsModel.priority == promotionModel.priority && [goodsModel.conflicts isEqualToArray:promotionModel.conflicts]) { goodsModel.isSelected = YES; [self.promotionInformationArray addObject:goodsModel]; } } } } if (self.promotionInformationArray.count && ![self.sectionTitle containsObject:@"促销信息"]) { [self.sectionTitle addObject:@"促销信息"]; } [self promotionInformationExecutionOrder]; } #pragma mark - 促销信息执行顺序 - (void)promotionInformationExecutionOrder { PromotionLuckyDrawModel *drawModel = nil; PromotionWeChatCardModel *weChatModel = nil; for (JSONModel *model in self.promotionInformationArray) { // 抽奖 if ([model isMemberOfClass:[PromotionLuckyDrawModel class]]) { drawModel = (PromotionLuckyDrawModel *)model; if ([drawModel.body isEqualToString:GUIDE]) { drawModel = nil; } } // 微信卡劵支付 if ([model isMemberOfClass:[PromotionWeChatCardModel class]]) { weChatModel = (PromotionWeChatCardModel *)model; } } //通过促销优先级决定调用顺序 if (drawModel.priority > weChatModel.priority) { if (!drawModel.isUsed && drawModel) { drawModel.isUsed = YES; [self queryConsumerLuckyDrawChance:drawModel]; }else if (!weChatModel.isUsed && weChatModel) { weChatModel.isUsed = YES; [self scanWeChatCardNumber:weChatModel]; }else{ [self payButtonClickAction]; } }else if (drawModel.priority < weChatModel.priority) { if (!weChatModel.isUsed && weChatModel) { weChatModel.isUsed = YES; [self scanWeChatCardNumber:weChatModel];; }else if (!drawModel.isUsed && drawModel) { drawModel.isUsed = YES; [self queryConsumerLuckyDrawChance:drawModel]; }else{ [self payButtonClickAction]; } }else if (drawModel.priority == weChatModel.priority && drawModel && weChatModel) { if (!drawModel.isUsed && drawModel) { drawModel.isUsed = YES; [self queryConsumerLuckyDrawChance:drawModel]; }else if (!weChatModel.isUsed && weChatModel) { weChatModel.isUsed = YES; [self scanWeChatCardNumber:weChatModel]; }else{ [self payButtonClickAction]; } } [self.orderDetailsTableview reloadData]; [self.orderDetailsTableview layoutIfNeeded]; //赠送商品或抵扣情况 if (!drawModel && !weChatModel) { [self payButtonClickAction]; } } #pragma mark - 扫描微信卡劵 - (void)scanWeChatCardNumber:(PromotionWeChatCardModel *)weChatModel { WS(weakSelf); self.tempWeChatModel = weChatModel; QRViewController *scanVC = [[QRViewController alloc] initWithScanCompleteHandler:^(NSString *url) { [weakSelf dismissViewControllerAnimated:YES completion:^{ weakSelf.weChatModel.wxcardNumber = url; [weakSelf consumerUseWeChatCard:url andOrderTotal:[weakSelf.orderDetails.order.orderPrice stringValue] andOrderNumber:self.orderCode]; }]; }]; [scanVC setCancelScanBlock:^{ for (JSONModel *model in weakSelf.promotionInformationArray) { if ([model isMemberOfClass:[PromotionWeChatCardModel class]]) { [weakSelf.promotionInformationArray removeObject:model];break; } } if (!weakSelf.promotionInformationArray.count) { if ([weakSelf.sectionTitle containsObject:@"促销信息"]) { [weakSelf.sectionTitle removeLastObject]; } } [weakSelf promotionInformationExecutionOrder]; }]; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf presentViewController:scanVC animated:YES completion:nil]; }); } #pragma mark - 使用微信卡劵 - (void)consumerUseWeChatCard:(NSString *)number andOrderTotal:(NSString *)orderTotal andOrderNumber:(NSString *)orderNumber { WS(weakSelf); [XBLoadingView showHUDViewWithDefault]; [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:USEWECHATCARD,number,orderNumber,orderTotal] withRequestType:ZERO withParameter:nil withReturnValueBlock:^(id returnValue) { [XBLoadingView hideHUDViewWithDefault]; if (RESULT(returnValue)) { weakSelf.weChatModel.wxcardDenomation = [RESPONSE(returnValue)[@"denomation"] integerValue]; weakSelf.weChatModel.payNo = RESPONSE(returnValue)[@"payNo"]; for (JSONModel *model in weakSelf.promotionInformationArray) { if ([model isMemberOfClass:[PromotionWeChatCardModel class]]) { PromotionWeChatCardModel *weChatModel = (PromotionWeChatCardModel *)model; weChatModel.total = weakSelf.weChatModel.wxcardDenomation;break; } } NSString *message = returnValue[@"msg"]; if ([[self class] isBlankString: message]) { NSString *string = [NSString stringWithFormat:@"微信卡劵(%f元)使用成功",weakSelf.weChatModel.wxcardDenomation]; ShowDefaultAlertView(nil, string, UIAlertControllerStyleAlert,nil,nil); }else { ShowDefaultAlertView(nil, message, UIAlertControllerStyleAlert, nil, nil); } [weakSelf promotionInformationExecutionOrder]; }else{ ShowDefaultAlertView(nil, [NSString stringWithFormat:@"微信卡劵使用失败:(%@),是否重试?",returnValue[@"msg"]], UIAlertControllerStyleAlert, ^{ [weakSelf scanWeChatCardNumber:weakSelf.tempWeChatModel]; }, ^{ [weakSelf promotionInformationExecutionOrder]; }); } }withFailureBlock:^(NSError *error) { [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; } #pragma mark - 获取关于消费者的所有促销 - (void)getConsumerAllPromotion:(JSONModel *)model withBody:(NSString *)body { if ([body isEqualToString:CONSUMER]) { [self.customerPromotionArray addObject:model]; }else if ([body isEqualToString:GUIDE]) { [self.guidePromotionArray addObject:model]; } } #pragma mark - 卡劵领取成功 - (void)rebateApplySuccess:(NSString *)message { RebateSuccessTableViewController *success = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"RebateSuccessTableViewController"]; success.titleArray = @[message,@"查看账户",@"我知道了"]; [success setClickEvent:^(NSIndexPath *indexPath) { if (indexPath.row == 1) { // 我知道了 }else if (indexPath.row == 0) { [SHARED_APPDELEGATE.tabBarController switchSelectedIndex:103]; [SHARED_APPDELEGATE.tabBarController setSelectedIndex:4]; } }]; success.preferredContentSize = CGSizeMake(315, 320); success.modalPresentationStyle = UIModalPresentationFormSheet; UIPopoverPresentationController *pop = success.popoverPresentationController; pop.permittedArrowDirections = UIPopoverArrowDirectionAny; pop.sourceView = success.view; [self presentViewController:success animated:YES completion:nil]; } #pragma mark - 显示京东E卡 - (void)showJDECard { WS(weakSelf); JDEcardViewController *jdeCard = [[[weakSelf class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"JDEcardViewController"]; [jdeCard setDismissJDECardBlock:^{ [weakSelf.settingsPopoverController dismissPopoverAnimated:YES]; }]; jdeCard.preferredContentSize = CGSizeMake(400, 247); self.settingsPopoverController = [[WYPopoverController alloc] initWithContentViewController:jdeCard]; self.settingsPopoverController.popoverLayoutMargins = UIEdgeInsetsMake(10, 20, 10, 20); self.settingsPopoverController.wantsDefaultContentAppearance = NO; self.settingsPopoverController.theme.fillBottomColor = [UIColor clearColor]; self.settingsPopoverController.theme.fillTopColor = [UIColor clearColor]; self.settingsPopoverController.theme.glossShadowColor = [UIColor clearColor]; [self.settingsPopoverController presentPopoverAsDialogAnimated:YES options:WYPopoverAnimationOptionFadeWithScale]; } #pragma mark -TableviewHeader------根据不同的订单状态判断是否显示 - (void)createTableviewHeaderView { UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 60)]; //预览 UIButton *previewButton = [UIButton buttonWithType:UIButtonTypeSystem]; previewButton.frame = CGRectMake(50, 15, 150, 30); [previewButton setTitle:self.isShowPayButton?@"撤销订单":@"预览" forState:UIControlStateNormal]; previewButton.titleLabel.font = [UIFont systemFontOfSize:12]; [previewButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [previewButton addTarget:self action:@selector(PreviewButtonClick:) forControlEvents:UIControlEventTouchUpInside]; previewButton.backgroundColor = kMainBlueColor; previewButton.layer.masksToBounds = YES; previewButton.layer.cornerRadius = kCornerRadius; [headerView addSubview:previewButton]; //显示支付按钮的情况下,不显示打印按钮 if (!self.isShowPayButton) { //打印 UIButton *printButton = [UIButton buttonWithType:UIButtonTypeSystem]; printButton.frame = CGRectMake(ScreenWidth-50-150, 15, 150, 30); [printButton setTitle:@"打印" forState:UIControlStateNormal]; [printButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; printButton.titleLabel.font = [UIFont systemFontOfSize:12]; [printButton addTarget:self action:@selector(airprintButtonClick:) forControlEvents:UIControlEventTouchUpInside]; printButton.layer.masksToBounds = YES; printButton.layer.cornerRadius = kCornerRadius; printButton.backgroundColor = kMainBlueColor; [headerView addSubview:printButton]; //分享 UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeSystem]; shareButton.frame = CGRectMake(ScreenWidth-50-350, 15, 150, 30); [shareButton setTitle:@"分享" forState:UIControlStateNormal]; [shareButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; shareButton.titleLabel.font = [UIFont systemFontOfSize:12]; [shareButton addTarget:self action:@selector(shareButtonClick:) forControlEvents:UIControlEventTouchUpInside]; shareButton.layer.masksToBounds = YES; shareButton.layer.cornerRadius = kCornerRadius; shareButton.backgroundColor = kMainBlueColor; [headerView addSubview:shareButton]; } //横线 UIView *lineView = [[UIView alloc]initWithFrame:CGRectMake(0, 59, ScreenWidth, 1)]; lineView.backgroundColor = RGB(193, 193, 193,1); [headerView addSubview:lineView]; self.orderDetailsTableview.tableHeaderView = headerView; } #pragma mark -TableviewFooterView------根据不同的订单状态判断支付按钮是否显示 - (void)createTableviewFooterView { UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 100)]; //支付 UIButton *payButton = [UIButton buttonWithType:UIButtonTypeSystem]; payButton.frame = CGRectMake((ScreenWidth-150)/2, 30, 150, 40); [payButton setTitle:@"支付" forState:UIControlStateNormal]; payButton.titleLabel.font = [UIFont systemFontOfSize:15]; [payButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [payButton addTarget:self action:@selector(payButtonClickAction) forControlEvents:UIControlEventTouchUpInside]; payButton.backgroundColor = kMainBlueColor; payButton.layer.masksToBounds = YES; payButton.layer.cornerRadius = kCornerRadius; [footerView addSubview:payButton]; self.orderDetailsTableview.tableFooterView = footerView; } #pragma mark - 查询客户抽奖机会 - (void)queryConsumerLuckyDrawChance:(PromotionLuckyDrawModel *)model { WS(weakSelf); //判断是否有已抽奖未使用情况 if (![[self class] isBlankString:self.customerDrawModel.drawId]) { ShowAlertView(nil, @"您有一个抽奖结果未使用,本次支付会默认使用", nil, @"我知道了", UIAlertControllerStyleAlert, ^{ [weakSelf promotionInformationExecutionOrder]; }, nil); }else { ShowAlertView(nil, @"恭喜您获得一次大转盘抽奖机会!", nil, @"马上参与", UIAlertControllerStyleAlert, ^{ [weakSelf showLuckyDrawControl:model.lottery.uuid andOrderNumber:weakSelf.orderCode luckyDrawFinish:^(NSDictionary *dict) { weakSelf.customerDrawModel = [[PromotionLuckDrawResultModel alloc]initWithDictionary:dict error:nil]; if ([BaseViewController isBlankString:weakSelf.customerDrawModel.awardId]) { [XBLoadingView showHUDViewWithText:@"未中奖"]; }else { [XBLoadingView showHUDViewWithText:[NSString stringWithFormat:@"恭喜你获得了 %@",weakSelf.customerDrawModel.descriptionString]]; } }]; }, nil); } } #pragma mark -调出支付框 - (void)payButtonClickAction { SettlementViewController *settlement = [[SettlementViewController alloc]init]; settlement.preferredContentSize = CGSizeMake(380, 500); settlement.goodsArray = self.orderDetails.orderdetailList; settlement.consumerPromotionalArray = self.promotionInformationArray; settlement.guidePromotionArray = self.guidePromotionArray; settlement.orderCode = self.orderCode; settlement.resultModel = self.customerDrawModel; settlement.weChatModel = self.weChatModel; settlement.modalPresentationStyle = UIModalPresentationFormSheet; UIPopoverPresentationController *pop = settlement.popoverPresentationController; pop.sourceView = settlement.view; [self presentViewController:settlement animated:YES completion:nil]; //支付成功 WS(weakSelf); [settlement setPaySuccessReturnBlock:^{ if (weakSelf.DelecteAndPayButtonBlock) { weakSelf.DelecteAndPayButtonBlock(_cellindex,PAYSUCCESS); } [XBLoadingView showHUDViewWithSuccessText:@"支付成功" completeBlock:nil]; weakSelf.isShowPayButton = NO; weakSelf.isShowHeaderView = YES; weakSelf.isUserInteractionEnabled = NO; [weakSelf createTableviewHeaderView]; weakSelf.orderDetailsTableview.tableFooterView = nil; /// 刷新数据成功 [weakSelf getOrderDetailsData:^{ [weakSelf showGuidePromotionDetails]; }]; }]; } #pragma mark -弹框显示获得促销详情 - (void)showGuidePromotionDetails { __block BOOL isJDEcard = NO;//促销中是否有京东E卡; __block BOOL isGuideDraw = NO;//促销中是否有导购抽奖机会 __block BOOL isReadPacket = NO;//促销中是否有红包 // 先判断促销中有无京东E卡,有则认为发放成功 for (id object in self.guidePromotionArray) { if ([object isKindOfClass:[PromotionJDECardModel class]]) { PromotionJDECardModel *model = (PromotionJDECardModel *)object; if ([model.type isEqualToString:JDECardAction]) { isJDEcard = YES;break; } } // 查询促销中是否有红包 if ([object isKindOfClass:[PromotionalReadPacketModel class]]) { PromotionalReadPacketModel *model = (PromotionalReadPacketModel *)object; if ([model.type isEqualToString:redPackageAction]) { isReadPacket = YES;break; } } // 查询导购抽奖机会 if ([object isKindOfClass:[PromotionLuckyDrawModel class]]) { PromotionLuckyDrawModel *model = (PromotionLuckyDrawModel *)object; if ([model.body isEqualToString:GUIDE]) { isGuideDraw = YES;break; } } } // 弹出框 NSMutableString *mutableString = [NSMutableString string]; if (isJDEcard) { [mutableString appendString:@"京东E卡、"]; } if (isGuideDraw) { [mutableString appendString:@"抽奖机会、"]; } if (isReadPacket) { [mutableString appendString:@"现金红包、"]; } if (isJDEcard || isGuideDraw || isReadPacket) { [mutableString appendString:@"已发放到您的账户"]; [self rebateApplySuccess:mutableString]; } } #pragma mark - 抽奖界面 HTML - (void)showLuckyDrawControl:(NSString *)lotteryId andOrderNumber:(NSString *)orderNumber luckyDrawFinish:(void(^)(NSDictionary *dict))complete { WS(weakSelf); CustomWKWebViewController *wkWebView = [[CustomWKWebViewController alloc]init]; NSString *server = [NSString stringWithFormat:SERVERREQUESTURL(DRAW),lotteryId,@"",orderNumber]; NSString *newServer = [server stringByReplacingOccurrencesOfString:@"/app" withString:@""]; wkWebView.urlString = newServer; [wkWebView setLuckyDrawFinishBlock:^(NSDictionary *result) { complete(result); }]; [wkWebView setDismissLuckyDrawController:^{ [weakSelf promotionInformationExecutionOrder]; }]; [self presentViewController:wkWebView animated:YES completion:nil]; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { switch (section) { case 0: case 1: case 2: case 4: return 1; break; case 3: { return self.orderDetails.orderdetailList.count+1; } break; case 5: { return self.promotionInformationArray.count; } break; default: break; } return 0; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { switch (indexPath.section) { case 0://订单信息 { OrderInformationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"firstcell" forIndexPath:indexPath]; cell.model = self.orderDetails; return cell; } break; case 1://客户信息 { PersonInformationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"secondcell" forIndexPath:indexPath]; cell.model = self.orderDetails.consumer; return cell; } break; case 2://收货信息 { GoodsInformationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"thirdcell" forIndexPath:indexPath]; cell.model = self.orderDetails.order; return cell; } break; case 3://商品清单 { if (indexPath.row == self.orderDetails.orderdetailList.count) { //商品总计 AllpriceTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"sixthcell" forIndexPath:indexPath]; cell.model = self.customerDrawModel; cell.weChatModel = self.weChatModel; cell.promotionalArray = self.promotionInformationArray; cell.goodsArray = self.orderDetails.orderdetailList; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; }else { //单个商品 CommodityListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"fourthcell" forIndexPath:indexPath]; cell.orderDetailslist = [self.orderDetails.orderdetailList objectAtIndex_opple:indexPath.row]; return cell; } } break; case 4://附件信息 { AdditionalTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"fifthcell" forIndexPath:indexPath]; cell.model = self.orderDetails.order; return cell; } break; case 5://促销信息 { PromotionalTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PromotionalTableViewCell" forIndexPath:indexPath]; cell.userInteractionEnabled = self.isUserInteractionEnabled; cell.model = self.customerDrawModel; cell.promotionModel = self.promotionInformationArray[indexPath.row]; return cell; } break; default: break; } return [UITableViewCell new]; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { switch (indexPath.section) { case 0: { return 84; } break; case 1: { return 110; } break; case 2: { return 90; } break; case 3: { //商品总计 if (indexPath.row == self.orderDetails.orderdetailList.count) { return 50; } else { //单个商品 return 80; } } break; case 4: { return 75; } break; case 5: { return 44; } break; default: break; } return 100; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { OrderDetailsSectionHeaderView *headerView = [tableView dequeueReusableCellWithIdentifier:@"OrderDetailsSectionHeaderView"]; headerView.sectionHeaderTitleLabel.text = [self.sectionTitle objectAtIndex_opple:section]; return headerView; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 60; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // if (indexPath.section == 5 && self.isUserInteractionEnabled) { // PromotionalTableViewCell *promotionalCell = [tableView cellForRowAtIndexPath:indexPath]; // id object = self.promotionInformationArray[indexPath.row]; // if ([object isKindOfClass:[PromotionalGoodsModel class]]) { // PromotionalGoodsModel *goodsModel = object; // goodsModel.isSelected = !goodsModel.isSelected; // promotionalCell.accessoryType = goodsModel.isSelected?UITableViewCellAccessoryCheckmark:UITableViewCellAccessoryNone; // }else if ([object isKindOfClass:[PromotionalDeductionModel class]]){ // PromotionalDeductionModel *deductionModel = object; // deductionModel.isSelected = !deductionModel.isSelected; // promotionalCell.accessoryType = deductionModel.isSelected?UITableViewCellAccessoryCheckmark:UITableViewCellAccessoryNone; // // 刷新总金额 // [self.orderDetailsTableview reloadData]; // } // } } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return self.sectionTitle.count; } #pragma mark -打印订单 - (void)airprintButtonClick:(UIButton *)button { NSString *server = [NSString stringWithFormat:SERVERREQUESTURL(ORDERDETAILSURL),[Shoppersmanager manager].shoppers.employee.departid,self.orderCode]; NSString *newServer = [server stringByReplacingOccurrencesOfString:@"/app" withString:@""]; self.webView = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)]; [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:newServer]]]; self.webView.navigationDelegate = self; } #pragma mark - - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation { [XBLoadingView showHUDViewWithDefault]; } - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { [XBLoadingView hideHUDViewWithDefault]; [AirPrintManager printOrderWithdataSoure:[webView viewPrintFormatter] printSuccess:^{ [XBLoadingView showHUDViewWithSuccessText:@"打印成功" completeBlock:nil]; } printError:^{ [XBLoadingView showHUDViewWithText:@"打印失败"]; }]; } - (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error { [XBLoadingView showHUDViewWithText:@"操作失败"]; } #pragma mark -预览订单、撤销订单 - (void)PreviewButtonClick:(UIButton *)button { WS(weakSelf); if ([button.currentTitle isEqualToString:@"预览"]) { NSString *server = [NSString stringWithFormat:SERVERREQUESTURL(ORDERDETAILSURL),[Shoppersmanager manager].shoppers.employee.departid,self.orderCode]; NSString *newServer = [server stringByReplacingOccurrencesOfString:@"/app" withString:@""]; CustomWKWebViewController *pdfvc = [[CustomWKWebViewController alloc]init]; pdfvc.urlString = newServer; [weakSelf presentViewController:pdfvc animated:YES completion:nil]; }else if ([button.currentTitle isEqualToString:@"撤销订单"]) { UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:@"请确认是否撤销订单" preferredStyle:UIAlertControllerStyleAlert]; [alertVC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { }]]; [alertVC addAction:[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { [XBLoadingView showHUDViewWithDefault]; [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@/%@/%@",SERVERREQUESTURL(RESETORDER),_orderCode,@"001",@"005"] withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) { [XBLoadingView hideHUDViewWithDefault]; if (RESULT(returnValue)) { [XBLoadingView showHUDViewWithSuccessText:@"撤销成功" completeBlock:nil]; UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 0.01)]; [weakSelf.orderDetailsTableview beginUpdates]; weakSelf.orderDetailsTableview.tableHeaderView = view; weakSelf.orderDetailsTableview.tableFooterView = nil; [weakSelf.orderDetailsTableview endUpdates]; weakSelf.orderDetails.order.orderState = @"005"; weakSelf.isUserInteractionEnabled = NO; [weakSelf.orderDetailsTableview reloadData]; if (weakSelf.DelecteAndPayButtonBlock) { weakSelf.DelecteAndPayButtonBlock(_cellindex,@"005"); } } else { [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)]; } } withFailureBlock:^(NSError *error) { [XBLoadingView hideHUDViewWithDefault]; [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; }]]; [self presentViewController:alertVC animated:YES completion:nil]; } } - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller { return 1; } - (id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index { return self.PDFpath; } #pragma mark - 分享订单 - (void)shareButtonClick:(UIButton *)sender { ShareGoodsViewController *shareController = [[ShareGoodsViewController alloc]init]; shareController.type = SHARE_ORDER; shareController.shareID = self.orderCode; shareController.shareImage = [UIImage imageNamed:@"Icon-83.5"]; shareController.preferredContentSize = CGSizeMake(290, 120); shareController.modalPresentationStyle = UIModalPresentationPopover; UIPopoverPresentationController *popover = shareController.popoverPresentationController; popover.permittedArrowDirections = UIPopoverArrowDirectionUp; popover.barButtonItem = [[UIBarButtonItem alloc]initWithCustomView:sender]; [self presentViewController:shareController animated:YES completion:nil]; } #pragma mark -友好界面 - (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView { return kNoDataImage; } - (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView { return YES; } - (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView { return [[NSAttributedString alloc]initWithString:@"加载失败" attributes:nil]; } @end