ShoppingViewController.m 20.6 KB
Newer Older
曹云霄's avatar
曹云霄 committed
1 2 3 4 5 6 7 8 9
//
//  ShoppingViewController.m
//  Lighting
//
//  Created by 曹云霄 on 16/4/27.
//  Copyright © 2016年 上海勾芒科技有限公司. All rights reserved.
//

#import "ShoppingViewController.h"
曹云霄's avatar
曹云霄 committed
10 11
#import "ShoppingTableViewCell.h"
#import "AppDelegate.h"
曹云霄's avatar
曹云霄 committed
12
#import "GenerateOrdersViewController.h"
勾芒's avatar
勾芒 committed
13
#import "ShopcarModel.h"
勾芒's avatar
勾芒 committed
14
#import "AddressModel.h"
曹云霄's avatar
曹云霄 committed
15
#import "ProductDetailsViewController.h"
曹云霄's avatar
曹云霄 committed
16

17
@interface ShoppingViewController ()<UITableViewDelegate,UITableViewDataSource,ChangeGoodsNumberDelegate,DZNEmptyDataSetSource,UITextFieldDelegate>
曹云霄's avatar
曹云霄 committed
18 19

@property (weak, nonatomic) IBOutlet UITableView *shoppingTableview;
曹云霄's avatar
曹云霄 committed
20

勾芒's avatar
勾芒 committed
21 22 23 24
/**
 *  购物车数据源
 */
@property (nonatomic,strong) NSMutableArray *shopResponseArray;
勾芒's avatar
勾芒 committed
25

26 27 28 29 30
/**
 *  折扣比例输入
 */
@property (nonatomic,strong) UITextField *textField;

勾芒's avatar
勾芒 committed
31

曹云霄's avatar
曹云霄 committed
32 33 34 35
@end

@implementation ShoppingViewController

曹云霄's avatar
曹云霄 committed
36 37 38 39

/**
 *  数据源
 */
勾芒's avatar
勾芒 committed
40
- (NSMutableArray *)shopResponseArray
曹云霄's avatar
曹云霄 committed
41
{
勾芒's avatar
勾芒 committed
42
    if (_shopResponseArray == nil) {
曹云霄's avatar
曹云霄 committed
43
        
勾芒's avatar
勾芒 committed
44
        _shopResponseArray = [NSMutableArray array];
曹云霄's avatar
曹云霄 committed
45
    }
勾芒's avatar
勾芒 committed
46
    return _shopResponseArray;
曹云霄's avatar
曹云霄 committed
47 48
}

曹云霄's avatar
曹云霄 committed
49 50
- (void)viewDidLoad {
    [super viewDidLoad];
曹云霄's avatar
曹云霄 committed
51
    
曹云霄's avatar
曹云霄 committed
52 53 54
    [self uiConfigAction];
}

勾芒's avatar
勾芒 committed
55
#pragma mark -渲染完成
56 57 58
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
曹云霄's avatar
曹云霄 committed
59
    self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;
60 61 62
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
勾芒's avatar
勾芒 committed
63 64 65
    [self.shopResponseArray removeAllObjects];
    [self InitializeState];
    [self getShoppingCardata];
66
    [self queryShoppingCarNumber];
67 68
}

勾芒's avatar
勾芒 committed
69
#pragma mark -视图即将消失
70 71 72
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
曹云霄's avatar
曹云霄 committed
73
    self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = YES;
74 75 76
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
77 78
}

勾芒's avatar
勾芒 committed
79 80 81 82 83 84
#pragma mark -初始化状态
- (void)InitializeState
{
    [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
    self.allSelectedButton.selected = NO;
    self.totalpriceLabe.text = nil;
曹云霄's avatar
曹云霄 committed
85
    self.discountTextField.text = nil;
勾芒's avatar
勾芒 committed
86 87
}

曹云霄's avatar
曹云霄 committed
88 89 90
#pragma mark - UI
- (void)uiConfigAction
{
勾芒's avatar
勾芒 committed
91 92
    self.settlementButton.layer.masksToBounds = YES;
    self.settlementButton.layer.cornerRadius = kCornerRadius;
曹云霄's avatar
曹云霄 committed
93
    self.view.backgroundColor = RGB(238, 238, 238,1);
曹云霄's avatar
曹云霄 committed
94 95
    self.shoppingTableview.dataSource = self;
    self.shoppingTableview.delegate = self;
勾芒's avatar
勾芒 committed
96
    self.shoppingTableview.backgroundColor = [UIColor clearColor];
曹云霄's avatar
曹云霄 committed
97
    self.shoppingTableview.tableFooterView = [UIView new];
98
    self.discountTextField.delegate = self;
曹云霄's avatar
曹云霄 committed
99 100
}

101 102 103
#pragma mark -<UITextFieldDelegate>
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
104 105 106
    if (![textField isEqual:self.discountTextField]) {
        return YES;
    }
107
    if (self.shopResponseArray.count == 0) {
曹云霄's avatar
曹云霄 committed
108
        [XBLoadingView showHUDViewWithText:@"请先添加商品到购物车"];return NO;
109 110 111 112 113 114 115 116
    }
    NSMutableArray *array = [NSMutableArray array];
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            [array addObject:model];
        }
    }
    if (array.count == 0) {
曹云霄's avatar
曹云霄 committed
117
        [XBLoadingView showHUDViewWithText:@"没有选中任何商品"];return NO;
118
    }
119 120
    [self inputDiscountNumber];
    return NO;
121 122
}

123 124
#pragma mark - 输入折扣金额
- (void)inputDiscountNumber
125
{
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
    WS(weakSelf);
    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"提示" message:@"请输入折扣比例(%)" preferredStyle:UIAlertControllerStyleAlert];
    [alertControl addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        weakSelf.textField.text = nil;
         [weakSelf textFieldEndEditing];
    }]];
    [alertControl addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        
        weakSelf.textField = textField;
        textField.placeholder = @"请输入";
        textField.keyboardType = UIKeyboardTypeNumberPad;
        textField.delegate = self;
    }];
    [alertControl addAction:[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        [weakSelf textFieldEndEditing];
    }]];
    [self presentViewController:alertControl animated:YES completion:nil];
}

#pragma mark - 结束编辑
- (void)textFieldEndEditing
{
    if ([BaseViewController isBlankString:self.textField.text]) {
        return;
    }
151
    Shoppersmanager *user = [Shoppersmanager manager];
152
    if ([self.textField.text integerValue] < [user.shoppers.lowestDiscount integerValue] && ![[self class] isBlankString:self.textField.text])
153
    {
曹云霄's avatar
曹云霄 committed
154
        [XBLoadingView showHUDViewWithText:@"当前价格低于你的价格权限!"];
155 156 157 158
        self.textField.text = nil;
    }else {
        self.discountTextField.text = self.textField.text;
        [self unifiedChangeDiscount:self.textField.text];
159 160
    }
}
勾芒's avatar
勾芒 committed
161

162 163 164 165 166 167 168 169 170 171 172 173 174
#pragma mark - 输入折扣比例
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    return [self validateNumber:string];
}

#pragma mark - 判断输入是否有效<两位整数、第一位不能为0>
- (BOOL)validateNumber:(NSString*)number
{
    BOOL res = YES;
    if ([number isEqualToString:@""]) {
        return YES;
    }
175
    if (self.textField.text.length == 2) {
176 177
        return NO;
    }
178
    if([[self class] isBlankString:self.textField.text] && [number isEqualToString:@"0"])
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
    {
        if([number isEqualToString:@"0"]){
            return NO;
        }
    }
    NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
    int i = 0;
    while (i < number.length) {
        NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
        NSRange range = [string rangeOfCharacterFromSet:tmpSet];
        if (range.length == 0) {
            res = NO;
            break;
        }
        i++;
    }
    return res;
}

#pragma mark - 统一修改折扣率
- (void)unifiedChangeDiscount:(NSString *)discount
{
    WS(weakSelf);
202
    NSLog(@"----->%@",discount);
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
    NSDecimalNumber *discountNumber = [NSDecimalNumber decimalNumberWithString:discount];
    NSDecimalNumber *number = [discountNumber decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithString:@"100"]];
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            NSNumber *constPrice = model.goods.tagPrice;
            model.costPrice = [number decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:[constPrice stringValue]]];
        }
    }
    //** boolValue为false表示修改失败 */
    [self modifyMultipleGoodsNnumberOrPrice:self.shopResponseArray completeModify:^(BOOL boolValue) {
        if (!boolValue) {
            for (ShopcarModel *model in weakSelf.shopResponseArray) {
                if (model.isSelected) {
                    model.costPrice = model.goods.tagPrice;
                    model.goodsNum = 1;
                }
            }
        }
        [weakSelf.shoppingTableview reloadData];
    }];
}
勾芒's avatar
勾芒 committed
224

勾芒's avatar
勾芒 committed
225 226 227 228 229 230 231 232
#pragma mark -获取购物车商品
- (void)getShoppingCardata
{
    //判断是否需要请求数据-通过当前客户ID
    if (![Shoppersmanager manager].currentCustomer) {
        return;
    }
    ShopCartFilter *shopcarNumber = [[ShopCartFilter alloc]init];
勾芒's avatar
勾芒 committed
233
    shopcarNumber.consumerId = [Customermanager manager].model.fid;
勾芒's avatar
勾芒 committed
234
    DataPage *Newpage = [[DataPage alloc]init];
勾芒's avatar
勾芒 committed
235 236
    Newpage.page = 1;
    Newpage.rows = 99999;
勾芒's avatar
勾芒 committed
237
    shopcarNumber.dp = Newpage;
曹云霄's avatar
曹云霄 committed
238
    [XBLoadingView showHUDViewWithDefault];
曹云霄's avatar
曹云霄 committed
239
    WS(weakSelf);
曹云霄's avatar
曹云霄 committed
240
    [HTTP networkRequestWithURL:SERVERREQUESTURL(SHOPPINGBAG) withRequestType:ZERO withParameter:shopcarNumber withReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
241
        
曹云霄's avatar
曹云霄 committed
242 243
        weakSelf.shoppingTableview.emptyDataSetSource = weakSelf;
        [weakSelf endRefreshingForTableView:weakSelf.shoppingTableview];
曹云霄's avatar
曹云霄 committed
244
        [XBLoadingView hideHUDViewWithDefault];
曹云霄's avatar
曹云霄 committed
245
        if (RESULT(returnValue)) {
勾芒's avatar
勾芒 committed
246
  
曹云霄's avatar
曹云霄 committed
247
            ShopCartResponse *shopcar = [[ShopCartResponse alloc]initWithDictionary:RESPONSE(returnValue) error:nil];
勾芒's avatar
勾芒 committed
248 249
            //自定义属性
            for (TOShopcartEntity *objc in shopcar.shopcart) {
曹云霄's avatar
曹云霄 committed
250
                ShopcarModel *model = [[ShopcarModel alloc]initWithDictionary:[objc toDictionary] error:nil];
曹云霄's avatar
曹云霄 committed
251
                [weakSelf.shopResponseArray addObject:model];
勾芒's avatar
勾芒 committed
252
            }
曹云霄's avatar
曹云霄 committed
253
            [weakSelf.shoppingTableview reloadData];
勾芒's avatar
勾芒 committed
254 255
        }else
        {
256
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
勾芒's avatar
勾芒 committed
257
        }
258
    } withFailureBlock:^(NSError *error) {
259
        [XBLoadingView hideHUDViewWithDefault];
曹云霄's avatar
曹云霄 committed
260
        [weakSelf endRefreshingForTableView:weakSelf.shoppingTableview];
曹云霄's avatar
曹云霄 committed
261
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
勾芒's avatar
勾芒 committed
262 263 264 265
    }];
}


曹云霄's avatar
曹云霄 committed
266 267 268
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ShoppingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Shopping" forIndexPath:indexPath];
勾芒's avatar
勾芒 committed
269 270
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.model = [self.shopResponseArray objectAtIndex_opple:indexPath.row];
勾芒's avatar
勾芒 committed
271
    cell.delegate = self;
勾芒's avatar
勾芒 committed
272 273
    cell.cellindex = indexPath.row;
    //cell选中回调
274 275
    __weak typeof(cell) weakCell = cell;
    WS(weakSelf);
勾芒's avatar
勾芒 committed
276
    [cell setReturnCellblock:^(NSInteger index) {
勾芒's avatar
勾芒 committed
277
        [weakSelf setSelectedButton:index];
勾芒's avatar
勾芒 committed
278
    }];
勾芒's avatar
勾芒 committed
279 280
    //提示框回调
    [cell setPromptStringBlock:^(NSString *string) {
曹云霄's avatar
曹云霄 committed
281 282
        [XBLoadingView showHUDViewWithText:string];
        [weakCell.clinchTextfield becomeFirstResponder];
勾芒's avatar
勾芒 committed
283
    }];
曹云霄's avatar
曹云霄 committed
284 285 286 287 288
    return  cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
勾芒's avatar
勾芒 committed
289
    return self.shopResponseArray.count;
曹云霄's avatar
曹云霄 committed
290 291 292 293 294 295 296 297
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 80;
}

曹云霄's avatar
曹云霄 committed
298 299
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
曹云霄's avatar
曹云霄 committed
300
    ProductDetailsViewController *productDetails = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"productdetails"];
曹云霄's avatar
曹云霄 committed
301 302 303
    productDetails.goodsID = [[self.shopResponseArray objectAtIndex_opple:indexPath.row] goodsId];
    [self.navigationController pushViewController:productDetails animated:YES];
}
曹云霄's avatar
曹云霄 committed
304 305 306 307 308 309

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.shoppingTableview deselectRowAtIndexPath:indexPath animated:YES];
}

勾芒's avatar
勾芒 committed
310
#pragma mark -选中商品回调
勾芒's avatar
勾芒 committed
311 312 313
- (void)setSelectedButton:(NSInteger)index;
{
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:index];
勾芒's avatar
勾芒 committed
314
    model.isSelected = !model.isSelected;
勾芒's avatar
勾芒 committed
315 316 317 318 319 320
    
    NSInteger goodsNumber = 0;
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            goodsNumber ++;
        }
勾芒's avatar
勾芒 committed
321 322 323 324 325 326
    }
    if (goodsNumber == self.shopResponseArray.count) {
        self.allSelectedButton.selected = YES;
    }else
    {
        self.allSelectedButton.selected = NO;
勾芒's avatar
勾芒 committed
327
    }
勾芒's avatar
勾芒 committed
328
    [self CalculateSelectedGoodsAllprice];
勾芒's avatar
勾芒 committed
329
    [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",goodsNumber] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
330 331 332
}


曹云霄's avatar
曹云霄 committed
333 334 335
#pragma mark -结算
- (IBAction)settlementButtonClick:(UIButton *)sender {
    
勾芒's avatar
勾芒 committed
336 337 338 339 340 341 342 343
    NSMutableArray *array = [NSMutableArray array];
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            [array addObject:model];
        }
    }
    if (array.count == 0) {
        
曹云霄's avatar
曹云霄 committed
344
        [XBLoadingView showHUDViewWithText:@"没有选中任何商品"];
勾芒's avatar
勾芒 committed
345 346
        return;
    }
勾芒's avatar
勾芒 committed
347
    //商品总信息占位
曹云霄's avatar
曹云霄 committed
348 349
     ShopcarModel*zhanweiModel = [[ShopcarModel alloc]init];
    [array addObject:zhanweiModel];
曹云霄's avatar
曹云霄 committed
350
    GenerateOrdersViewController *generateOrder = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"generateorders"];
勾芒's avatar
勾芒 committed
351
    generateOrder.settlementGoodsdatas = array;
勾芒's avatar
勾芒 committed
352 353 354 355 356
    //清除已经生成订单的商品
    [generateOrder setDelecteSelectedGoods:^(NSArray *goodsCode) {
        
        DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
        delecteGoods.cartIds = goodsCode;
曹云霄's avatar
曹云霄 committed
357
        WS(weakSelf);
曹云霄's avatar
曹云霄 committed
358
        [HTTP networkRequestWithURL:SERVERREQUESTURL(REMOVESHOPPINGBAG)  withRequestType:ZERO withParameter:delecteGoods withReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
359
            
曹云霄's avatar
曹云霄 committed
360
            [XBLoadingView hideHUDViewWithDefault];
曹云霄's avatar
曹云霄 committed
361
            if (RESULT(returnValue)) {
362
                [weakSelf queryShoppingCarNumber];
勾芒's avatar
勾芒 committed
363 364 365
                //商品cell
                NSMutableArray *cellArray = [NSMutableArray array];
                //删除商品
曹云霄's avatar
曹云霄 committed
366 367
                for (int i=0; i<weakSelf.shopResponseArray.count; i++) {
                    ShopcarModel *model = [weakSelf.shopResponseArray objectAtIndex_opple:i];
勾芒's avatar
勾芒 committed
368
                    if ([goodsCode containsObject:model.fid]) {
曹云霄's avatar
曹云霄 committed
369
                        [weakSelf.shopResponseArray removeObject:model];
勾芒's avatar
勾芒 committed
370 371 372 373
                        NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
                        [cellArray addObject:indexpath];
                    }
                }
曹云霄's avatar
曹云霄 committed
374
                [weakSelf.shoppingTableview deleteRowsAtIndexPaths:cellArray withRowAnimation:UITableViewRowAnimationTop];
勾芒's avatar
勾芒 committed
375 376
            }else
            {
377
                [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
勾芒's avatar
勾芒 committed
378
            }
379
        } withFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
380 381
            [XBLoadingView hideHUDViewWithDefault];
            [XBLoadingView showHUDViewWithText:error.localizedDescription];
勾芒's avatar
勾芒 committed
382 383
        }];
    }];
曹云霄's avatar
曹云霄 committed
384
    [self.navigationController pushViewController:generateOrder animated:YES];
曹云霄's avatar
曹云霄 committed
385
}
曹云霄's avatar
曹云霄 committed
386

曹云霄's avatar
曹云霄 committed
387
#pragma mark -全选
勾芒's avatar
勾芒 committed
388 389 390 391 392 393 394 395 396 397
- (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;
        }
勾芒's avatar
勾芒 committed
398
        [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",self.shopResponseArray.count] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
399 400 401 402 403 404 405 406 407
    }else
    {
        //取消全部选中
        for (ShoppingTableViewCell *cell in self.shoppingTableview.visibleCells) {
            cell.selectedButton.selected = NO;
        }
        for (ShopcarModel *model in self.shopResponseArray) {
            model.isSelected = NO;
        }
勾芒's avatar
勾芒 committed
408
        [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
409
    }
勾芒's avatar
勾芒 committed
410 411
    //计算总金额
    [self CalculateSelectedGoodsAllprice];
曹云霄's avatar
曹云霄 committed
412 413
}

勾芒's avatar
勾芒 committed
414 415 416
#pragma mark -计算选中后的商品总金额
- (void)CalculateSelectedGoodsAllprice
{
勾芒's avatar
勾芒 committed
417
    CGFloat allPrice = 0;
勾芒's avatar
勾芒 committed
418 419
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
420
            allPrice += ([model.costPrice floatValue]?[model.costPrice floatValue]:[model.goods.tagPrice floatValue]) * model.goodsNum;
勾芒's avatar
勾芒 committed
421 422
        }
    }
勾芒's avatar
勾芒 committed
423
    self.totalpriceLabe.text = [NSString stringWithFormat:@"¥%.2f",allPrice];
勾芒's avatar
勾芒 committed
424 425
}

曹云霄's avatar
曹云霄 committed
426

勾芒's avatar
勾芒 committed
427 428 429
#pragma mark -删除选中商品
- (IBAction)delecteSelectedGoods:(UIButton *)sender {

曹云霄's avatar
曹云霄 committed
430
    [XBLoadingView showHUDViewWithDefault];
勾芒's avatar
勾芒 committed
431 432 433 434
    DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
    //code数组
    NSMutableArray *codeArr = [NSMutableArray array];
    //需要删除的cell数组indexpath
勾芒's avatar
勾芒 committed
435
    NSMutableArray *delecteArray = [NSMutableArray array];
勾芒's avatar
勾芒 committed
436 437
    //模型数组
    NSMutableArray *delectemodel = [NSMutableArray array];
勾芒's avatar
勾芒 committed
438 439 440
    for (int i=0; i<self.shopResponseArray.count; i++) {
        ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:i];
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
441 442
            [codeArr addObject:model.fid];
            [delectemodel addObject:model];
勾芒's avatar
勾芒 committed
443 444 445 446
            NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
            [delecteArray addObject:indexpath];
        }
    }
勾芒's avatar
勾芒 committed
447 448
    //没有选中任何商品
    if (codeArr.count == 0) {
曹云霄's avatar
曹云霄 committed
449 450
        [XBLoadingView hideHUDViewWithDefault];
        [XBLoadingView showHUDViewWithText:@"未选中商品"];
勾芒's avatar
勾芒 committed
451 452 453
        return;
    }
    delecteGoods.cartIds = codeArr;
曹云霄's avatar
曹云霄 committed
454
    WS(weakSelf);
曹云霄's avatar
曹云霄 committed
455
    [HTTP networkRequestWithURL:SERVERREQUESTURL(REMOVESHOPPINGBAG)  withRequestType:ZERO withParameter:delecteGoods withReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
456
        
曹云霄's avatar
曹云霄 committed
457
        [XBLoadingView hideHUDViewWithDefault];
曹云霄's avatar
曹云霄 committed
458
        if (RESULT(returnValue)) {
勾芒's avatar
勾芒 committed
459
            
460
            [weakSelf queryShoppingCarNumber];
勾芒's avatar
勾芒 committed
461 462
            //删除商品
            for (ShopcarModel *model in delectemodel) {
曹云霄's avatar
曹云霄 committed
463
                [weakSelf.shopResponseArray removeObject:model];
勾芒's avatar
勾芒 committed
464
            }
曹云霄's avatar
曹云霄 committed
465
            [weakSelf.shoppingTableview deleteRowsAtIndexPaths:delecteArray withRowAnimation:UITableViewRowAnimationLeft];
曹云霄's avatar
曹云霄 committed
466
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
曹云霄's avatar
曹云霄 committed
467
                [weakSelf.shoppingTableview reloadData];
曹云霄's avatar
曹云霄 committed
468
            });
469
            [XBLoadingView showHUDViewWithSuccessText:@"删除成功" completeBlock:nil];
曹云霄's avatar
曹云霄 committed
470 471 472
            [weakSelf CalculateSelectedGoodsAllprice];
            weakSelf.allSelectedButton.selected = NO;
            [weakSelf.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
473 474
        }else
        {
475
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
勾芒's avatar
勾芒 committed
476
        }
477
    } withFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
478
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
勾芒's avatar
勾芒 committed
479
    }];
勾芒's avatar
勾芒 committed
480
}
曹云霄's avatar
曹云霄 committed
481

482 483 484 485 486 487
#pragma mark - 修改多个商品数量、价格
- (void)modifyMultipleGoodsNnumberOrPrice:(NSArray<ShopcarModel *> *)goodsArray completeModify:(void(^)(BOOL boolValue))finish
{
    WS(weakSelf);
    dispatch_group_t group = dispatch_group_create();
    static NSInteger number = ZERO;
曹云霄's avatar
曹云霄 committed
488
    [XBLoadingView showHUDViewWithDefault];
489
    [goodsArray enumerateObjectsUsingBlock:^(ShopcarModel * _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) {
曹云霄's avatar
曹云霄 committed
490

491
        dispatch_group_enter(group);
492 493
        NSString *urlString = [NSString stringWithFormat:SERVERREQUESTURL(CHANGESHOPPINGBAGNUMBERPRICE),model.fid,[model.costPrice stringValue],model.goodsId,model.goodsNum];
        [HTTP networkWithDictionaryRequestWithURL:urlString withRequestType:ZERO withParameter:nil withReturnValueBlock:^(id returnValue) {
494 495
            
            dispatch_group_leave(group);
曹云霄's avatar
曹云霄 committed
496
            if (RESULT(returnValue)) {
497 498
                number ++;
            }
499
        } withFailureBlock:^(NSError *error) {
500 501 502 503 504 505
            dispatch_group_leave(group);
        }];
    }];
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        
曹云霄's avatar
曹云霄 committed
506
        [XBLoadingView hideHUDViewWithDefault];
507 508
        if (number == goodsArray.count) {
            [weakSelf CalculateSelectedGoodsAllprice];
509
            [weakSelf queryShoppingCarNumber];
510 511
            finish(YES);
        }else {
曹云霄's avatar
曹云霄 committed
512 513
            [XBLoadingView showHUDViewWithText:@"修改失败"];
            finish(NO);
514 515 516 517
        }
        number = ZERO;
    });
}
勾芒's avatar
勾芒 committed
518

519
#pragma mark -修改单个商品数量、价格
曹云霄's avatar
曹云霄 committed
520
- (void)changeGoodsNumber:(NSInteger)goodsNumber withcostPrice:(CGFloat)costprice withcellindex:(NSInteger)cellindex returnValue:(void (^)(id))result
勾芒's avatar
勾芒 committed
521
{
曹云霄's avatar
曹云霄 committed
522
    [XBLoadingView showHUDViewWithDefault];
勾芒's avatar
勾芒 committed
523 524 525 526
    //保存商品数量
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:cellindex];
    model.goodsNum = goodsNumber;
    //保存成交价格
527
    model.costPrice = [NSNumber numberWithFloat:costprice];
曹云霄's avatar
曹云霄 committed
528 529 530 531 532 533 534 535 536
//    //在服务器保存数量、成交价
//    //购物车ID
//    NSString *carid = model.fid;
//    //商品id
//    NSString *goodsis = model.goodsId;
//    //成交价
//    NSString *costpriceString = [NSString stringWithFormat:@"%.2f",costprice];
//    //商品数量
//    NSString *goodsNumberString = [NSString stringWithFormat:@"%ld",(long)goodsNumber];
曹云霄's avatar
曹云霄 committed
537
    WS(weakSelf);
曹云霄's avatar
曹云霄 committed
538 539
    NSString *urlString = [NSString stringWithFormat:SERVERREQUESTURL(CHANGESHOPPINGBAGNUMBERPRICE),model.fid,[model.costPrice stringValue],model.goodsId,model.goodsNum];
    [HTTP networkWithDictionaryRequestWithURL:urlString  withRequestType:ZERO withParameter:nil withReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
540
        
曹云霄's avatar
曹云霄 committed
541
        [XBLoadingView hideHUDViewWithDefault];
曹云霄's avatar
曹云霄 committed
542
        result(returnValue);//提供是否支持修改的参数
曹云霄's avatar
曹云霄 committed
543
        if (RESULT(returnValue)) {
曹云霄's avatar
曹云霄 committed
544
            [weakSelf CalculateSelectedGoodsAllprice];
545
            [weakSelf queryShoppingCarNumber];
曹云霄's avatar
曹云霄 committed
546 547
        }else{
            
548
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
勾芒's avatar
勾芒 committed
549
        }
550
    }withFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
551
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
勾芒's avatar
勾芒 committed
552
    }];
勾芒's avatar
勾芒 committed
553
}
曹云霄's avatar
曹云霄 committed
554

曹云霄's avatar
曹云霄 committed
555 556 557 558 559 560 561 562 563 564 565
#pragma mark -友好界面
- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView
{
    return kNoDataImage;
}

- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView
{
    return [[NSAttributedString alloc]initWithString:@"暂无数据" attributes:nil];
}

勾芒's avatar
勾芒 committed
566

567

曹云霄's avatar
曹云霄 committed
568
@end