ShoppingViewController.m 22.3 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 = kTCColor(238, 238, 238);
曹云霄'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 108 109 110 111 112 113 114 115 116 117 118
    if (self.shopResponseArray.count == 0) {
        [self ErrorMBProgressView:@"请先添加商品到购物车"];return NO;
    }
    NSMutableArray *array = [NSMutableArray array];
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            [array addObject:model];
        }
    }
    if (array.count == 0) {
        [self ErrorMBProgressView:@"没有选中任何商品"];return NO;
    }
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.textField.text.length)
153
    {
154 155 156 157 158
        [self SHOWPrompttext:@"当前价格低于你的价格权限!"];
        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.textField.text.length == 0 && [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 238
    shopcarNumber.dp = Newpage;
    [self CreateMBProgressHUDLoding];
曹云霄's avatar
曹云霄 committed
239
    WS(weakSelf);
240
    [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(SHOPPINGBAG) WithCallClass:weakSelf WithRequestType:0 WithParameter:shopcarNumber WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
241
        
曹云霄's avatar
曹云霄 committed
242 243 244
        weakSelf.shoppingTableview.emptyDataSetSource = weakSelf;
        [weakSelf endRefreshingForTableView:weakSelf.shoppingTableview];
        [weakSelf RemoveMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
245
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
勾芒's avatar
勾芒 committed
246
  
勾芒's avatar
勾芒 committed
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
            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;
勾芒's avatar
勾芒 committed
263
                model.costPrice = objc.costPrice;
曹云霄's avatar
曹云霄 committed
264
                [weakSelf.shopResponseArray addObject:model];
勾芒's avatar
勾芒 committed
265
            }
曹云霄's avatar
曹云霄 committed
266
            [weakSelf.shoppingTableview reloadData];
勾芒's avatar
勾芒 committed
267 268
        }else
        {
曹云霄's avatar
曹云霄 committed
269
            [weakSelf ErrorMBProgressView:returnValue[@"message"]];
勾芒's avatar
勾芒 committed
270 271
        }
    } WithErrorCodeBlock:^(id errorCodeValue) {
272
        [weakSelf endRefreshingForTableView:weakSelf.shoppingTableview];
曹云霄's avatar
曹云霄 committed
273
        [weakSelf RemoveMBProgressHUDLoding];
274 275
        [weakSelf ErrorMBProgressView:NETWORK];
    } WithFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
276
        [weakSelf endRefreshingForTableView:weakSelf.shoppingTableview];
277 278
        [weakSelf RemoveMBProgressHUDLoding];
        [weakSelf ErrorMBProgressView:error.localizedDescription];
勾芒's avatar
勾芒 committed
279 280 281 282
    }];
}


曹云霄's avatar
曹云霄 committed
283 284 285
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ShoppingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Shopping" forIndexPath:indexPath];
勾芒's avatar
勾芒 committed
286 287
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.model = [self.shopResponseArray objectAtIndex_opple:indexPath.row];
勾芒's avatar
勾芒 committed
288
    cell.delegate = self;
勾芒's avatar
勾芒 committed
289 290
    cell.cellindex = indexPath.row;
    //cell选中回调
291 292
    __weak typeof(cell) weakCell = cell;
    WS(weakSelf);
勾芒's avatar
勾芒 committed
293
    [cell setReturnCellblock:^(NSInteger index) {
勾芒's avatar
勾芒 committed
294
        [weakSelf setSelectedButton:index];
勾芒's avatar
勾芒 committed
295
    }];
勾芒's avatar
勾芒 committed
296 297
    //提示框回调
    [cell setPromptStringBlock:^(NSString *string) {
298 299 300
        [weakSelf SHOWPrompttext:string ComcpleteBlock:^{
            [weakCell.clinchTextfield becomeFirstResponder];
        }];
勾芒's avatar
勾芒 committed
301
    }];
曹云霄's avatar
曹云霄 committed
302 303 304 305 306
    return  cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
勾芒's avatar
勾芒 committed
307
    return self.shopResponseArray.count;
曹云霄's avatar
曹云霄 committed
308 309 310 311 312 313 314 315
}


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

曹云霄's avatar
曹云霄 committed
316 317
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
曹云霄's avatar
曹云霄 committed
318
    ProductDetailsViewController *productDetails = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"productdetails"];
曹云霄's avatar
曹云霄 committed
319 320 321
    productDetails.goodsID = [[self.shopResponseArray objectAtIndex_opple:indexPath.row] goodsId];
    [self.navigationController pushViewController:productDetails animated:YES];
}
曹云霄's avatar
曹云霄 committed
322 323 324 325 326 327

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

勾芒's avatar
勾芒 committed
328
#pragma mark -选中商品回调
勾芒's avatar
勾芒 committed
329 330 331
- (void)setSelectedButton:(NSInteger)index;
{
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:index];
勾芒's avatar
勾芒 committed
332
    model.isSelected = !model.isSelected;
勾芒's avatar
勾芒 committed
333 334 335 336 337 338
    
    NSInteger goodsNumber = 0;
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            goodsNumber ++;
        }
勾芒's avatar
勾芒 committed
339 340 341 342 343 344
    }
    if (goodsNumber == self.shopResponseArray.count) {
        self.allSelectedButton.selected = YES;
    }else
    {
        self.allSelectedButton.selected = NO;
勾芒's avatar
勾芒 committed
345
    }
勾芒's avatar
勾芒 committed
346
    [self CalculateSelectedGoodsAllprice];
勾芒's avatar
勾芒 committed
347
    [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",goodsNumber] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
348 349 350
}


曹云霄's avatar
曹云霄 committed
351 352 353
#pragma mark -结算
- (IBAction)settlementButtonClick:(UIButton *)sender {
    
勾芒's avatar
勾芒 committed
354 355 356 357 358 359 360 361 362 363 364
    NSMutableArray *array = [NSMutableArray array];
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            [array addObject:model];
        }
    }
    if (array.count == 0) {
        
        [self ErrorMBProgressView:@"没有选中任何商品"];
        return;
    }
勾芒's avatar
勾芒 committed
365 366
    //商品总信息占位
     ShopcarModel*ZhanweiModel = [[ShopcarModel alloc]init];
勾芒's avatar
勾芒 committed
367
    [array addObject:ZhanweiModel];
曹云霄's avatar
曹云霄 committed
368
    GenerateOrdersViewController *generateOrder = [[[self class] getMainStoryboardClass] instantiateViewControllerWithIdentifier:@"generateorders"];
勾芒's avatar
勾芒 committed
369
    generateOrder.settlementGoodsdatas = array;
勾芒's avatar
勾芒 committed
370 371 372 373 374
    //清除已经生成订单的商品
    [generateOrder setDelecteSelectedGoods:^(NSArray *goodsCode) {
        
        DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
        delecteGoods.cartIds = goodsCode;
曹云霄's avatar
曹云霄 committed
375
        WS(weakSelf);
376
        [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(REMOVESHOPPINGBAG) WithCallClass:weakSelf WithRequestType:0 WithParameter:delecteGoods WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
377
            
曹云霄's avatar
曹云霄 committed
378
            [weakSelf RemoveMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
379
            if ([returnValue[@"code"] isEqualToNumber:@0]) {
曹云霄's avatar
曹云霄 committed
380
                [weakSelf QueryShoppingCarNumber];
勾芒's avatar
勾芒 committed
381 382 383
                //商品cell
                NSMutableArray *cellArray = [NSMutableArray array];
                //删除商品
曹云霄's avatar
曹云霄 committed
384 385
                for (int i=0; i<weakSelf.shopResponseArray.count; i++) {
                    ShopcarModel *model = [weakSelf.shopResponseArray objectAtIndex_opple:i];
勾芒's avatar
勾芒 committed
386
                    if ([goodsCode containsObject:model.fid]) {
曹云霄's avatar
曹云霄 committed
387
                        [weakSelf.shopResponseArray removeObject:model];
勾芒's avatar
勾芒 committed
388 389 390 391
                        NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
                        [cellArray addObject:indexpath];
                    }
                }
曹云霄's avatar
曹云霄 committed
392
                [weakSelf.shoppingTableview deleteRowsAtIndexPaths:cellArray withRowAnimation:UITableViewRowAnimationTop];
勾芒's avatar
勾芒 committed
393 394
            }else
            {
曹云霄's avatar
曹云霄 committed
395
                [weakSelf ErrorMBProgressView:returnValue[@"message"]];
勾芒's avatar
勾芒 committed
396 397 398
            }
            
        } WithErrorCodeBlock:^(id errorCodeValue) {
曹云霄's avatar
曹云霄 committed
399
            [weakSelf RemoveMBProgressHUDLoding];
400 401
            [weakSelf ErrorMBProgressView:NETWORK];
        } WithFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
402
            [weakSelf RemoveMBProgressHUDLoding];
403
            [weakSelf ErrorMBProgressView:error.localizedDescription];
勾芒's avatar
勾芒 committed
404 405
        }];
    }];
曹云霄's avatar
曹云霄 committed
406
    [self.navigationController pushViewController:generateOrder animated:YES];
曹云霄's avatar
曹云霄 committed
407
}
曹云霄's avatar
曹云霄 committed
408

曹云霄's avatar
曹云霄 committed
409
#pragma mark -全选
勾芒's avatar
勾芒 committed
410 411 412 413 414 415 416 417 418 419
- (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
420
        [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",self.shopResponseArray.count] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
421 422 423 424 425 426 427 428 429
    }else
    {
        //取消全部选中
        for (ShoppingTableViewCell *cell in self.shoppingTableview.visibleCells) {
            cell.selectedButton.selected = NO;
        }
        for (ShopcarModel *model in self.shopResponseArray) {
            model.isSelected = NO;
        }
勾芒's avatar
勾芒 committed
430
        [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
431
    }
勾芒's avatar
勾芒 committed
432 433
    //计算总金额
    [self CalculateSelectedGoodsAllprice];
曹云霄's avatar
曹云霄 committed
434 435
}

勾芒's avatar
勾芒 committed
436 437 438
#pragma mark -计算选中后的商品总金额
- (void)CalculateSelectedGoodsAllprice
{
勾芒's avatar
勾芒 committed
439
    CGFloat allPrice = 0;
勾芒's avatar
勾芒 committed
440 441
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
442
            allPrice += ([model.costPrice floatValue]?[model.costPrice floatValue]:[model.goods.tagPrice floatValue]) * model.goodsNum;
勾芒's avatar
勾芒 committed
443 444
        }
    }
勾芒's avatar
勾芒 committed
445
    self.totalpriceLabe.text = [NSString stringWithFormat:@"¥%.2f",allPrice];
勾芒's avatar
勾芒 committed
446 447
}

曹云霄's avatar
曹云霄 committed
448

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

勾芒's avatar
勾芒 committed
452 453 454 455 456
    [self CreateMBProgressHUDLoding];
    DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
    //code数组
    NSMutableArray *codeArr = [NSMutableArray array];
    //需要删除的cell数组indexpath
勾芒's avatar
勾芒 committed
457
    NSMutableArray *delecteArray = [NSMutableArray array];
勾芒's avatar
勾芒 committed
458 459
    //模型数组
    NSMutableArray *delectemodel = [NSMutableArray array];
勾芒's avatar
勾芒 committed
460 461 462
    for (int i=0; i<self.shopResponseArray.count; i++) {
        ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:i];
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
463 464
            [codeArr addObject:model.fid];
            [delectemodel addObject:model];
勾芒's avatar
勾芒 committed
465 466 467 468
            NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
            [delecteArray addObject:indexpath];
        }
    }
勾芒's avatar
勾芒 committed
469 470 471
    //没有选中任何商品
    if (codeArr.count == 0) {
        [self RemoveMBProgressHUDLoding];
472
        [self SHOWPrompttext:@"未选中商品"];
勾芒's avatar
勾芒 committed
473 474 475
        return;
    }
    delecteGoods.cartIds = codeArr;
曹云霄's avatar
曹云霄 committed
476
    WS(weakSelf);
477
    [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(REMOVESHOPPINGBAG) WithCallClass:weakSelf WithRequestType:0 WithParameter:delecteGoods WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
478
        
曹云霄's avatar
曹云霄 committed
479
        [weakSelf RemoveMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
480 481
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
            
曹云霄's avatar
曹云霄 committed
482
            [weakSelf QueryShoppingCarNumber];
勾芒's avatar
勾芒 committed
483 484
            //删除商品
            for (ShopcarModel *model in delectemodel) {
曹云霄's avatar
曹云霄 committed
485
                [weakSelf.shopResponseArray removeObject:model];
勾芒's avatar
勾芒 committed
486
            }
曹云霄's avatar
曹云霄 committed
487
            [weakSelf.shoppingTableview deleteRowsAtIndexPaths:delecteArray withRowAnimation:UITableViewRowAnimationLeft];
曹云霄's avatar
曹云霄 committed
488
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
曹云霄's avatar
曹云霄 committed
489
                [weakSelf.shoppingTableview reloadData];
曹云霄's avatar
曹云霄 committed
490
            });
曹云霄's avatar
曹云霄 committed
491 492 493 494
            [weakSelf SuccessMBProgressView:@"删除成功"];
            [weakSelf CalculateSelectedGoodsAllprice];
            weakSelf.allSelectedButton.selected = NO;
            [weakSelf.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
495 496
        }else
        {
曹云霄's avatar
曹云霄 committed
497
            [weakSelf ErrorMBProgressView:returnValue[@"message"]];
勾芒's avatar
勾芒 committed
498
        }
勾芒's avatar
勾芒 committed
499

勾芒's avatar
勾芒 committed
500
    } WithErrorCodeBlock:^(id errorCodeValue) {
曹云霄's avatar
曹云霄 committed
501
        [weakSelf RemoveMBProgressHUDLoding];
502 503
        [weakSelf ErrorMBProgressView:NETWORK];
    } WithFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
504
        [weakSelf RemoveMBProgressHUDLoding];
505
        [weakSelf ErrorMBProgressView:error.localizedDescription];
勾芒's avatar
勾芒 committed
506
    }];
勾芒's avatar
勾芒 committed
507
}
曹云霄's avatar
曹云霄 committed
508

509 510 511 512 513 514 515 516
#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;
    [self CreateMBProgressHUDLoding];
    [goodsArray enumerateObjectsUsingBlock:^(ShopcarModel * _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) {
曹云霄's avatar
曹云霄 committed
517

518 519
        dispatch_group_enter(group);
        NSLog(@"%@",[NSString stringWithFormat:@"%@%@/%@/%@/%ld",SERVERREQUESTURL(CHANGESHOPPINGBAGNUMBERPRICE),model.fid,model.goodsId,[model.costPrice stringValue],model.goodsNum]);
520
        [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@/%@/%@/%ld",SERVERREQUESTURL(CHANGESHOPPINGBAGNUMBERPRICE),model.fid,model.goodsId,[model.costPrice stringValue],model.goodsNum] WithCallClass:weakSelf WithRequestType:1 WithParameter:nil WithReturnValueBlock:^(id returnValue) {
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547
            
            dispatch_group_leave(group);
            if ([returnValue[@"code"] isEqualToNumber:@0]) {
                number ++;
            }
        } WithErrorCodeBlock:^(id errorCodeValue) {
            dispatch_group_leave(group);
        } WithFailureBlock:^(NSError *error) {
            dispatch_group_leave(group);
        }];
    }];
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        
        [weakSelf RemoveMBProgressHUDLoding];
        if (number == goodsArray.count) {
            [weakSelf CalculateSelectedGoodsAllprice];
            [weakSelf QueryShoppingCarNumber];
            finish(YES);
        }else {
            [self SHOWPrompttext:@"修改失败" ComcpleteBlock:^{
                finish(NO);
            }];
        }
        number = ZERO;
    });
}
勾芒's avatar
勾芒 committed
548

549 550
#pragma mark -修改单个商品数量、价格
- (void)changeGoodsNumber:(NSInteger)goodsNumber WithcostPrice:(CGFloat)costprice Withcellindex:(NSInteger)cellindex returnValue:(void (^)(id))result
勾芒's avatar
勾芒 committed
551
{
勾芒's avatar
勾芒 committed
552
    [self CreateMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
553 554 555 556
    //保存商品数量
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:cellindex];
    model.goodsNum = goodsNumber;
    //保存成交价格
557
    model.costPrice = [NSNumber numberWithFloat:costprice];
曹云霄's avatar
曹云霄 committed
558
    //在服务器保存数量、成交价
勾芒's avatar
勾芒 committed
559
    //购物车ID
560
    NSString *carid = model.fid;
勾芒's avatar
勾芒 committed
561
    //商品id
562
    NSString *goodsis = model.goodsId;
勾芒's avatar
勾芒 committed
563
    //成交价
勾芒's avatar
勾芒 committed
564
    NSString *costpriceString = [NSString stringWithFormat:@"%.2f",costprice];
勾芒's avatar
勾芒 committed
565
    //商品数量
曹云霄's avatar
曹云霄 committed
566 567
    NSString *goodsNumberString = [NSString stringWithFormat:@"%ld",(long)goodsNumber];
    WS(weakSelf);
568
    [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@/%@/%@/%@",SERVERREQUESTURL(CHANGESHOPPINGBAGNUMBERPRICE),carid,goodsis,costpriceString,goodsNumberString] WithCallClass:weakSelf WithRequestType:1 WithParameter:nil WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
569
        
曹云霄's avatar
曹云霄 committed
570 571
        [weakSelf RemoveMBProgressHUDLoding];
        result(returnValue);//提供是否支持修改的参数
勾芒's avatar
勾芒 committed
572
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
曹云霄's avatar
曹云霄 committed
573 574 575 576 577
            [weakSelf CalculateSelectedGoodsAllprice];
            [weakSelf QueryShoppingCarNumber];
        }else{
            
            [weakSelf ErrorMBProgressView:returnValue[@"message"]];
勾芒's avatar
勾芒 committed
578 579 580
        }
        
    } WithErrorCodeBlock:^(id errorCodeValue) {
曹云霄's avatar
曹云霄 committed
581
        [weakSelf RemoveMBProgressHUDLoding];
582 583
        [weakSelf ErrorMBProgressView:NETWORK];
    } WithFailureBlock:^(NSError *error) {
曹云霄's avatar
曹云霄 committed
584
        [weakSelf RemoveMBProgressHUDLoding];
585
        [weakSelf ErrorMBProgressView:error.localizedDescription];
勾芒's avatar
勾芒 committed
586
    }];
勾芒's avatar
勾芒 committed
587
}
曹云霄's avatar
曹云霄 committed
588

曹云霄's avatar
曹云霄 committed
589 590 591 592 593 594 595 596 597 598 599
#pragma mark -友好界面
- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView
{
    return kNoDataImage;
}

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

勾芒's avatar
勾芒 committed
600

601

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