// // KWMShopCartVC.m // iCemarose // // Created by 陈荣科 on 16/8/24. // Copyright © 2016年 kollway. All rights reserved. // #import "KWMShopCartVC.h" #import "KWMSelectSizeVC.h" #import "KWMShopCarCell.h" #import "KWMBeforePayVC.h" #import "KWMUserModel.h" #import "KWMLoginVC.h" #import "KWMShopCartData.h" #import "KWMNewVC.h" #import "KWMStringUtil.h" #import "KWMShoppingCart.h" @interface KWMShopCartVC () @property (nonatomic) NSMutableArray *shopCartList; @end @implementation KWMShopCartVC{ KWMShopCartModel *_removeModel; KWMShopCartModel *_changeModel; } +(NSString *)kwmTag{ return @"KWMShopCartVC"; } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:NO]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.title = @"购物车"; // self.vBackground.hidden = NO; _shopCartList = (NSMutableArray *)[[KWMShoppingCart sharedInstance] items]; if (_shopCartList.count == 0) { self.vBackground.hidden = NO; }else{ self.vBackground.hidden = YES; } self.btnRandom.layer.borderWidth = 0.5; self.btnRandom.layer.borderColor = [UIColor colorWithRed:78.0/255 green:78.0/255 blue:78.0/255 alpha:1.0].CGColor; [self setTotalPrice]; __weak typeof(self) this = self; dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)); dispatch_after(delay, dispatch_get_main_queue(), ^{ [[KWMShoppingCart sharedInstance] allItemsWithCallback:^(NSError *error, KWMCartResult *cart) { [this refresh]; }]; }); } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if (_shopCartList.count == 0) { self.vBackground.hidden = NO; }else{ self.vBackground.hidden = YES; } return _shopCartList.count; } #pragma mark UITableViewDelegate -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 184; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *indentifier = @"KWMShopCarCell"; KWMShopCarCell *shopCartCell = [tableView dequeueReusableCellWithIdentifier:indentifier]; KWMShopCartModel *shopCartModel = [_shopCartList objectAtIndex:indexPath.row]; if (!shopCartCell) { [tableView registerNib:[UINib nibWithNibName:indentifier bundle:nil] forCellReuseIdentifier:indentifier]; shopCartCell = [tableView dequeueReusableCellWithIdentifier:indentifier]; } shopCartCell.shopCartModel = shopCartModel; shopCartCell.delegate = self; return shopCartCell; } //点击随意逛逛 - (IBAction)onClickRandomBtn:(id)sender { NSLog(@"点击了随意逛逛"); KWMNewVC *newVC = (KWMNewVC *)[KWMBaseVC findControllerBy:[KWMNewVC kwmTag] fromStoryboard:@"Main"]; self.hidesBottomBarWhenPushed = NO; [self.navigationController pushViewController:newVC animated:YES]; } - (void)onClickComplete:(id)sender{ KWMUserModel *useModel = [KWMUserModel shareUser]; if (useModel.status) { KWMBeforePayVC *beforePayVC = (KWMBeforePayVC *)[KWMBaseVC findControllerBy:[KWMBeforePayVC kwmTag] fromStoryboard:@"ShopCart"]; beforePayVC.shopcartArray = self.shopCartList; [self.navigationController pushViewController:beforePayVC animated:YES]; }else{ //登录 KWMLoginVC *loginVc = (KWMLoginVC *)[KWMBaseVC findControllerBy:[KWMLoginVC kwmTag] fromStoryboard:@"Login"]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginVc]; [self presentViewController:nav animated:YES completion:nil]; } } - (void)kwm_onClickDelete:(KWMShopCartModel *)shopCartModel{ self.vDelete.hidden = NO; self.vDelete.delegate = self; _removeModel = shopCartModel; } - (void)kwm_onClickEdit:(KWMShopCartModel *)shopCartModel{ __block KWMShopCartVC *this = self; _changeModel = shopCartModel; [self showLoading]; [self.client getProductById:shopCartModel.product_id completion:^(BUYProduct * _Nullable product, NSError * _Nullable error) { [this hideLoading]; if(product){ KWMVariantsVC *variantsVC = (KWMVariantsVC *)[KWMVariantsVC findControllerBy:[KWMVariantsVC kwmTag] fromStoryboard:@"NewProduct"]; variantsVC.product = product; variantsVC.delegate = self; variantsVC.shopCartModel = shopCartModel; CGSize size = [UIScreen mainScreen].bounds.size; [self showPresentation:variantsVC size:size tapOutsideClose:YES style:MZFormSheetPresentationTransitionStyleFade]; } // this.definesPresentationContext = YES; // KWMSelectSizeVC *editVC = (KWMSelectSizeVC *)[KWMBaseVC findControllerBy:[KWMSelectSizeVC kwmTag] fromStoryboard:@"ShopCart"]; // editVC.delegate = this; // editVC.isShopcart = YES; // editVC.product = product; // editVC.shopCartModel = shopCartModel; // // editVC.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0]; // editVC.modalPresentationStyle = UIModalPresentationOverCurrentContext; // editVC.providesPresentationContextTransitionStyle = YES; // editVC.definesPresentationContext = YES; // [this presentViewController:editVC animated:YES completion:nil]; }]; } #pragma mark -- KWMSelectSizeVCDelegate - (void)kwm_addShopWithVariantId:(NSNumber *)identifier quantity:(NSInteger)quantity variant:(BUYProductVariant *) variant buyNow:(BOOL)buyNow callback:(void (^)(BOOL))callback { __weak KWMShopCartVC *this = self; void(^success)(NSError*,KWMCartResult*) = ^(NSError *error,KWMCartResult *cart){ if (!error) { [this refresh]; callback(YES); }else{ [this showError:error]; callback(NO); } }; if (_changeModel.identifier.integerValue == identifier.integerValue) { [[KWMShoppingCart sharedInstance] changeProductWithVariantId:identifier quantity:quantity callback:success]; }else{ NSNumber *oldId = @(_changeModel.identifier.integerValue); KWMShopCartModel *model = _changeModel; _changeModel = nil; NSArray<NSNumber *> *variantIds = @[oldId,identifier]; NSArray<NSNumber *> *quantities = @[@0,@(quantity)]; [[KWMShoppingCart sharedInstance] updateProductWithVariantIds:variantIds quantitties:quantities callback:^(NSError *error, KWMCartResult *cart) { if (!cart.items.firstObject.product_id) { KWMShopCartModel *tmp = cart.items.firstObject; tmp.imageStr = model.imageStr; tmp.size = variant.title; tmp.brand = model.brand; tmp.name = model.name; tmp.price = variant.price; tmp.product_id = model.product_id; } success(error,cart); }]; // [[KWMShoppingCart sharedInstance] deleteProductWithVariantId:oldId callback:^(NSError *error, KWMCartResult *cart) { // [[KWMShoppingCart sharedInstance] increaseProductWithVariantId:identifier quantity:quantity callback:^(NSError *error, KWMCartResult *cart) { // if (!cart.items.lastObject.product_id) { // KWMShopCartModel *tmp = cart.items.lastObject; // tmp.imageStr = model.imageStr; // tmp.size = variant.title; // tmp.brand = model.brand; // tmp.name = model.name; // tmp.price = variant.price.floatValue; // tmp.product_id = model.product_id; // } // success(error,cart); // }]; // }]; } } //- (void)kwm_addShopCartItem:(KWMShopCartModel *)shopCartModel{ // // [_shopCartList removeAllObjects]; // [_shopCartList addObjectsFromArray:[[KWMShopCartData alloc] getALLItems]]; // [self.tbvCart reloadData]; // [self setTotalPrice]; //} // //-(void)kwm_fastBuy:(BUYCart *)fastBuyCart{ // //} -(void)kwm_deleteProduct{ // BOOL isHas = NO; // for (KWMShopCartModel *item in _shopCartList) { // if ([item isEqual:_removeModel]) { // isHas = YES; // break; // } // } // if (isHas) { // [_shopCartList removeObjectIdenticalTo:_removeModel]; // } // [self.tbvCart reloadData]; // [self setTotalPrice]; // [[KWMShopCartData alloc] removeItem:_removeModel]; NSNumber *identifier = @(_removeModel.identifier.integerValue); __weak KWMShopCartVC *this = self; [self showLoading]; [[KWMShoppingCart sharedInstance] deleteProductWithVariantId:identifier callback:^(NSError *error, KWMCartResult *cart) { [this hideLoading]; [this refresh]; }]; } - (void)refresh { self.shopCartList = [[KWMShoppingCart sharedInstance] items]; [self.tbvCart reloadData]; [self setTotalPrice]; } //计算总价格 - (void) setTotalPrice{ // NSInteger price = 0; NSDecimalNumber *total = [NSDecimalNumber decimalNumberWithDecimal:@(0).decimalValue]; for (KWMShopCartModel *model in _shopCartList) { if (model.line_price) { // price += model.line_price.priceValue.integerValue; total = [total decimalNumberByAdding:model.line_price.priceValue]; }else{ // price += [model.price.priceValue decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@(model.quantity).stringValue]].integerValue; total = [total decimalNumberByAdding:[model.price.priceValue decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@(model.quantity).stringValue]]]; } } // _lbTotalPrice.text = [NSString stringWithFormat: @"¥%@",[KWMStringUtil getEUR2CNYstring:@(price)]]; _lbTotalPrice.text = total.priceFormatted; } @end