// // ShoppingViewController.m // Lighting // // Created by 曹云霄 on 16/4/27. // Copyright © 2016年 上海勾芒科技有限公司. All rights reserved. // #import "ShoppingViewController.h" #import "ShoppingTableViewCell.h" #import "AppDelegate.h" #import "GenerateOrdersViewController.h" #import "ShopcarModel.h" @interface ShoppingViewController () @property (weak, nonatomic) IBOutlet UITableView *shoppingTableview; /** * 购物车数据源 */ @property (nonatomic,strong) NSMutableArray *shopResponseArray; @end @implementation ShoppingViewController /** * 数据源 */ - (NSMutableArray *)shopResponseArray { if (_shopResponseArray == nil) { _shopResponseArray = [NSMutableArray array]; } return _shopResponseArray; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self uiConfigAction]; } #pragma mark -渲染完成 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // 禁用 iOS7 返回手势 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } [self.shopResponseArray removeAllObjects]; [self InitializeState]; [self getShoppingCardata]; } #pragma mark -视图即将消失 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // 开启 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; } } #pragma mark -初始化状态 - (void)InitializeState { [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal]; self.allSelectedButton.selected = NO; self.totalpriceLabe.text = nil; } #pragma mark - UI - (void)uiConfigAction { self.settlementButton.layer.masksToBounds = YES; self.settlementButton.layer.cornerRadius = kCornerRadius; self.view.backgroundColor = kTCColor(238, 238, 238); self.shoppingTableview.dataSource = self; self.shoppingTableview.delegate = self; self.shoppingTableview.backgroundColor = [UIColor clearColor]; self.shoppingTableview.tableFooterView = [UIView new]; } #pragma mark -获取购物车商品 - (void)getShoppingCardata { //判断是否需要请求数据-通过当前客户ID if (![Shoppersmanager manager].currentCustomer) { return; } ShopCartFilter *shopcarNumber = [[ShopCartFilter alloc]init]; shopcarNumber.consumerId = [Customermanager manager].customerID; DataPage *Newpage = [[DataPage alloc]init]; Newpage.page = 0; shopcarNumber.dp = Newpage; [self CreateMBProgressHUDLoding]; [[NetworkRequestClassManager Manager] NetworkRequestWithURL:[NSString stringWithFormat:@"%@%@",ServerAddress,@"/shopcart/query"] WithRequestType:0 WithParameter:shopcarNumber WithReturnValueBlock:^(id returnValue) { [self endRefreshingForTableView:self.shoppingTableview]; [self RemoveMBProgressHUDLoding]; if ([returnValue[@"code"] isEqualToNumber:@0]) { ShopCartResponse *shopcar = [[ShopCartResponse alloc]initWithDictionary:returnValue[@"data"] error:nil]; //自定义属性 for (TOShopcartEntity *objc in shopcar.shopcart) { ShopcarModel *model = [[ShopcarModel alloc]init]; model.goods = objc.goods; model.fid = objc.fid; model.createName = objc.createName; model.createBy = objc.createBy; model.createDate = objc.createDate; model.updateName = objc.updateName; model.updateBy = objc.updateBy; model.updateDate = objc.updateDate; model.goodsId = objc.goodsId; model.goodsNum = objc.goodsNum; model.consumerId = objc.consumerId; [self.shopResponseArray addObject:model]; } [self.shoppingTableview reloadData]; }else { [self ErrorMBProgressView:returnValue[@"message"]]; } } WithErrorCodeBlock:^(id errorCodeValue) { } WithFailureBlock:^(id error) { [self RemoveMBProgressHUDLoding]; [self endRefreshingForTableView:self.shoppingTableview]; }]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ShoppingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Shopping" forIndexPath:indexPath]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.model = [self.shopResponseArray objectAtIndex_opple:indexPath.row]; cell.delegate = self; cell.cellindex = indexPath.row; //cell选中回调 [cell setReturnCellblock:^(NSInteger index) { [self setSelectedButton:index]; }]; return cell; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.shopResponseArray.count; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 80; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { [self.shoppingTableview deselectRowAtIndexPath:indexPath animated:YES]; } #pragma mark -选中商品回调 - (void)setSelectedButton:(NSInteger)index; { ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:index]; model.isSelected = !model.isSelected; NSInteger goodsNumber = 0; for (ShopcarModel *model in self.shopResponseArray) { if (model.isSelected) { goodsNumber ++; } if (goodsNumber == 0) { self.allSelectedButton.selected = NO; } if (goodsNumber == self.shopResponseArray.count) { self.allSelectedButton.selected = YES; } } [self CalculateSelectedGoodsAllprice]; [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",goodsNumber] forState:UIControlStateNormal]; } #pragma mark -结算 - (IBAction)settlementButtonClick:(UIButton *)sender { NSMutableArray *array = [NSMutableArray array]; for (ShopcarModel *model in self.shopResponseArray) { if (model.isSelected) { [array addObject:model]; } } if (array.count == 0) { [self ErrorMBProgressView:@"没有选中任何商品"]; return; } //占位 ShopcarModel *ZhanweiModel = [[ShopcarModel alloc]init]; [array addObject:ZhanweiModel]; GenerateOrdersViewController *generateOrder = [[self getStoryboardWithName] instantiateViewControllerWithIdentifier:@"generateorders"]; generateOrder.settlementGoodsdatas = array; [self.navigationController pushViewController:generateOrder animated:YES]; } #pragma mark -全选 - (IBAction)allSelectedButtonClick:(UIButton *)sender { sender.selected = !sender.selected; if (sender.selected) { //全部选中 for (ShoppingTableViewCell *cell in self.shoppingTableview.visibleCells) { cell.selectedButton.selected = YES; } for (ShopcarModel *model in self.shopResponseArray) { model.isSelected = YES; } [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",self.shopResponseArray.count] forState:UIControlStateNormal]; //计算总金额 [self CalculateSelectedGoodsAllprice]; }else { //取消全部选中 for (ShoppingTableViewCell *cell in self.shoppingTableview.visibleCells) { cell.selectedButton.selected = NO; } for (ShopcarModel *model in self.shopResponseArray) { model.isSelected = NO; } [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal]; } } #pragma mark -计算选中后的商品总金额 - (void)CalculateSelectedGoodsAllprice { NSInteger allPrice = 0; for (ShopcarModel *model in self.shopResponseArray) { if (model.isSelected) { allPrice += [model.goods.costPrice integerValue] * model.goodsNum; } } self.totalpriceLabe.text = [NSString stringWithFormat:@"¥%ld",allPrice]; } #pragma mark -删除选中商品 - (IBAction)delecteSelectedGoods:(UIButton *)sender { [self CreateMBProgressHUDLoding]; DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init]; //code数组 NSMutableArray *codeArr = [NSMutableArray array]; //需要删除的cell数组indexpath NSMutableArray *delecteArray = [NSMutableArray array]; //模型数组 NSMutableArray *delectemodel = [NSMutableArray array]; for (int i=0; i