ShoppingViewController.m 14.8 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

勾芒's avatar
勾芒 committed
16
@interface ShoppingViewController ()<UITableViewDelegate,UITableViewDataSource,ChangeGoodsNumberDelegate>
曹云霄's avatar
曹云霄 committed
17

曹云霄's avatar
曹云霄 committed
18 19

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

勾芒's avatar
勾芒 committed
21 22 23 24 25 26 27



/**
 *  购物车数据源
 */
@property (nonatomic,strong) NSMutableArray *shopResponseArray;
勾芒's avatar
勾芒 committed
28 29 30



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

@implementation ShoppingViewController

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

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


曹云霄's avatar
曹云霄 committed
49 50 51
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
曹云霄's avatar
曹云霄 committed
52
    
曹云霄's avatar
曹云霄 committed
53 54 55
    [self uiConfigAction];
}

勾芒's avatar
勾芒 committed
56
#pragma mark -渲染完成
57 58 59 60 61 62 63 64
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    // 禁用 iOS7 返回手势
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
勾芒's avatar
勾芒 committed
65 66 67
    [self.shopResponseArray removeAllObjects];
    [self InitializeState];
    [self getShoppingCardata];
68 69
}

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

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

曹云霄's avatar
曹云霄 committed
88

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

勾芒's avatar
勾芒 committed
101 102


勾芒's avatar
勾芒 committed
103 104 105 106 107 108 109 110 111 112 113
#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];
勾芒's avatar
勾芒 committed
114 115
    Newpage.page = 1;
    Newpage.rows = 99999;
勾芒's avatar
勾芒 committed
116 117 118 119
    shopcarNumber.dp = Newpage;
    [self CreateMBProgressHUDLoding];
    [[NetworkRequestClassManager Manager] NetworkRequestWithURL:[NSString stringWithFormat:@"%@%@",ServerAddress,@"/shopcart/query"] WithRequestType:0 WithParameter:shopcarNumber WithReturnValueBlock:^(id returnValue) {
        
勾芒's avatar
勾芒 committed
120
        [self endRefreshingForTableView:self.shoppingTableview];
勾芒's avatar
勾芒 committed
121 122
        [self RemoveMBProgressHUDLoding];
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
勾芒's avatar
勾芒 committed
123
  
勾芒's avatar
勾芒 committed
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
            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
140
                model.costPrice = objc.costPrice;
勾芒's avatar
勾芒 committed
141 142
                [self.shopResponseArray addObject:model];
            }
勾芒's avatar
勾芒 committed
143
            [self.shoppingTableview reloadData];
勾芒's avatar
勾芒 committed
144 145 146 147 148 149 150 151 152
        }else
        {
            [self ErrorMBProgressView:returnValue[@"message"]];
        }
    } WithErrorCodeBlock:^(id errorCodeValue) {
        
    } WithFailureBlock:^(id error) {
        
        [self RemoveMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
153
        [self endRefreshingForTableView:self.shoppingTableview];
勾芒's avatar
勾芒 committed
154 155 156 157
    }];
}


曹云霄's avatar
曹云霄 committed
158 159 160 161

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ShoppingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Shopping" forIndexPath:indexPath];
勾芒's avatar
勾芒 committed
162 163
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.model = [self.shopResponseArray objectAtIndex_opple:indexPath.row];
勾芒's avatar
勾芒 committed
164
    cell.delegate = self;
勾芒's avatar
勾芒 committed
165 166
    cell.cellindex = indexPath.row;
    //cell选中回调
勾芒's avatar
勾芒 committed
167
    __weak typeof(self) weakSelf = self;
勾芒's avatar
勾芒 committed
168 169
    [cell setReturnCellblock:^(NSInteger index) {
        
勾芒's avatar
勾芒 committed
170
        [weakSelf setSelectedButton:index];
勾芒's avatar
勾芒 committed
171
    }];
勾芒's avatar
勾芒 committed
172 173
    //提示框回调
    [cell setPromptStringBlock:^(NSString *string) {
勾芒's avatar
勾芒 committed
174
        [weakSelf promptCustomerWithString:string];
勾芒's avatar
勾芒 committed
175
    }];
曹云霄's avatar
曹云霄 committed
176 177 178 179 180
    return  cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
勾芒's avatar
勾芒 committed
181
    return self.shopResponseArray.count;
曹云霄's avatar
曹云霄 committed
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
}


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


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


勾芒's avatar
勾芒 committed
197
#pragma mark -选中商品回调
勾芒's avatar
勾芒 committed
198 199 200
- (void)setSelectedButton:(NSInteger)index;
{
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:index];
勾芒's avatar
勾芒 committed
201
    model.isSelected = !model.isSelected;
勾芒's avatar
勾芒 committed
202 203 204 205 206 207
    
    NSInteger goodsNumber = 0;
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            goodsNumber ++;
        }
勾芒's avatar
勾芒 committed
208 209 210 211 212 213
        if (goodsNumber == 0) {
            self.allSelectedButton.selected = NO;
        }
        if (goodsNumber == self.shopResponseArray.count) {
            self.allSelectedButton.selected = YES;
        }
勾芒's avatar
勾芒 committed
214
    }
勾芒's avatar
勾芒 committed
215
    [self CalculateSelectedGoodsAllprice];
勾芒's avatar
勾芒 committed
216
    [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",goodsNumber] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
217 218 219
}


曹云霄's avatar
曹云霄 committed
220 221 222
#pragma mark -结算
- (IBAction)settlementButtonClick:(UIButton *)sender {
    
勾芒's avatar
勾芒 committed
223 224 225 226 227 228 229 230 231 232 233
    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
234 235 236
    
    //商品总信息占位
     ShopcarModel*ZhanweiModel = [[ShopcarModel alloc]init];
勾芒's avatar
勾芒 committed
237
    [array addObject:ZhanweiModel];
勾芒's avatar
勾芒 committed
238
    
曹云霄's avatar
曹云霄 committed
239
    GenerateOrdersViewController *generateOrder = [[self getStoryboardWithName] instantiateViewControllerWithIdentifier:@"generateorders"];
勾芒's avatar
勾芒 committed
240
    generateOrder.settlementGoodsdatas = array;
勾芒's avatar
勾芒 committed
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
    //清除已经生成订单的商品
    [generateOrder setDelecteSelectedGoods:^(NSArray *goodsCode) {
        
        DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
        delecteGoods.cartIds = goodsCode;
        [[NetworkRequestClassManager Manager] NetworkRequestWithURL:[NSString stringWithFormat:@"%@%@",ServerAddress,@"/shopcart/delete"] WithRequestType:0 WithParameter:delecteGoods WithReturnValueBlock:^(id returnValue) {
            
            [self RemoveMBProgressHUDLoding];
            if ([returnValue[@"code"] isEqualToNumber:@0]) {
                
                [self QueryShoppingCarNumber];
                //商品cell
                NSMutableArray *cellArray = [NSMutableArray array];
                //删除商品
                for (int i=0; i<self.shopResponseArray.count; i++) {
                    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:i];
                    if ([goodsCode containsObject:model.fid]) {
                        [self.shopResponseArray removeObject:model];
                        NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
                        [cellArray addObject:indexpath];
                    }
                }
                //删除cell
                [self.shoppingTableview deleteRowsAtIndexPaths:cellArray withRowAnimation:UITableViewRowAnimationTop];
            }else
            {
                [self ErrorMBProgressView:returnValue[@"message"]];
            }
            
        } WithErrorCodeBlock:^(id errorCodeValue) {
            
            
        } WithFailureBlock:^(id error) {
            
            [self RemoveMBProgressHUDLoding];
        }];
    }];
    
曹云霄's avatar
曹云霄 committed
279
    [self.navigationController pushViewController:generateOrder animated:YES];
曹云霄's avatar
曹云霄 committed
280
}
曹云霄's avatar
曹云霄 committed
281

曹云霄's avatar
曹云霄 committed
282
#pragma mark -全选
勾芒's avatar
勾芒 committed
283
- (IBAction)allSelectedButtonClick:(UIButton *)sender {
曹云霄's avatar
曹云霄 committed
284
    
勾芒's avatar
勾芒 committed
285 286 287 288 289 290 291 292 293 294 295 296
    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
297
        [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",self.shopResponseArray.count] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
298

勾芒's avatar
勾芒 committed
299 300 301 302 303 304 305 306 307 308 309
    }else
    {
        //取消全部选中
        for (ShoppingTableViewCell *cell in self.shoppingTableview.visibleCells) {
            
            cell.selectedButton.selected = NO;
        }
        for (ShopcarModel *model in self.shopResponseArray) {
            
            model.isSelected = NO;
        }
勾芒's avatar
勾芒 committed
310
        [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
311
    }
勾芒's avatar
勾芒 committed
312 313
    //计算总金额
    [self CalculateSelectedGoodsAllprice];
曹云霄's avatar
曹云霄 committed
314 315
}

勾芒's avatar
勾芒 committed
316 317 318
#pragma mark -计算选中后的商品总金额
- (void)CalculateSelectedGoodsAllprice
{
勾芒's avatar
勾芒 committed
319
    CGFloat allPrice = 0;
勾芒's avatar
勾芒 committed
320 321
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
322
            allPrice += ([model.costPrice floatValue]?[model.costPrice floatValue]:[model.goods.tagPrice floatValue]) * model.goodsNum;
勾芒's avatar
勾芒 committed
323 324
        }
    }
勾芒's avatar
勾芒 committed
325
    self.totalpriceLabe.text = [NSString stringWithFormat:@"¥%.2f",allPrice];
勾芒's avatar
勾芒 committed
326 327
}

曹云霄's avatar
曹云霄 committed
328

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

勾芒's avatar
勾芒 committed
332 333 334 335 336 337
    
    [self CreateMBProgressHUDLoding];
    DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
    //code数组
    NSMutableArray *codeArr = [NSMutableArray array];
    //需要删除的cell数组indexpath
勾芒's avatar
勾芒 committed
338
    NSMutableArray *delecteArray = [NSMutableArray array];
勾芒's avatar
勾芒 committed
339 340
    //模型数组
    NSMutableArray *delectemodel = [NSMutableArray array];
勾芒's avatar
勾芒 committed
341 342 343 344
    for (int i=0; i<self.shopResponseArray.count; i++) {
        
        ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:i];
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
345 346 347
            
            [codeArr addObject:model.fid];
            [delectemodel addObject:model];
勾芒's avatar
勾芒 committed
348 349 350 351
            NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
            [delecteArray addObject:indexpath];
        }
    }
勾芒's avatar
勾芒 committed
352 353 354 355 356 357 358 359 360 361 362
    //没有选中任何商品
    if (codeArr.count == 0) {
        [self RemoveMBProgressHUDLoding];
        return;
    }
    delecteGoods.cartIds = codeArr;
    [[NetworkRequestClassManager Manager] NetworkRequestWithURL:[NSString stringWithFormat:@"%@%@",ServerAddress,@"/shopcart/delete"] WithRequestType:0 WithParameter:delecteGoods WithReturnValueBlock:^(id returnValue) {
        
        [self RemoveMBProgressHUDLoding];
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
            
勾芒's avatar
勾芒 committed
363
            [self QueryShoppingCarNumber];
勾芒's avatar
勾芒 committed
364 365 366 367 368 369
            //删除商品
            for (ShopcarModel *model in delectemodel) {
                [self.shopResponseArray removeObject:model];
            }
            [self.shoppingTableview deleteRowsAtIndexPaths:delecteArray withRowAnimation:UITableViewRowAnimationLeft];
            [self SuccessMBProgressView:@"删除成功"];
勾芒's avatar
勾芒 committed
370 371 372
            [self CalculateSelectedGoodsAllprice];
            self.allSelectedButton.selected = NO;
            [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
373 374 375 376
        }else
        {
            [self ErrorMBProgressView:returnValue[@"message"]];
        }
勾芒's avatar
勾芒 committed
377

勾芒's avatar
勾芒 committed
378 379 380 381 382 383 384
    } WithErrorCodeBlock:^(id errorCodeValue) {
        
        
    } WithFailureBlock:^(id error) {
        
        [self RemoveMBProgressHUDLoding];
    }];
勾芒's avatar
勾芒 committed
385
}
曹云霄's avatar
曹云霄 committed
386 387


勾芒's avatar
勾芒 committed
388

勾芒's avatar
勾芒 committed
389
#pragma mark -改变商品数量
勾芒's avatar
勾芒 committed
390
- (void)ChangeGoodsNumber:(int)goodsNumber WithcostPrice:(int)costprice Withcellindex:(NSInteger)cellindex
勾芒's avatar
勾芒 committed
391 392 393 394 395 396 397 398
{
    //保存商品数量
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:cellindex];
    model.goodsNum = goodsNumber;
//    [self.shopResponseArray replaceObjectAtIndex:cellindex withObject:model];
    
    //保存成交价格
    ShopcarModel *Newmodel = [self.shopResponseArray objectAtIndex_opple:cellindex];
勾芒's avatar
勾芒 committed
399
    Newmodel.costPrice = [NSNumber numberWithInteger:costprice];
勾芒's avatar
勾芒 committed
400 401 402
//    [self.shopResponseArray replaceObjectAtIndex:cellindex withObject:Newmodel];
    
    [self CalculateSelectedGoodsAllprice];
勾芒's avatar
勾芒 committed
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426
    
    ////在服务器保存数量、成交价
    //购物车ID
    NSString *carid = [[self.shopResponseArray objectAtIndex_opple:cellindex] fid];
    //商品id
    NSString *goodsis = [[[self.shopResponseArray objectAtIndex_opple:cellindex] goods] fid];
    //成交价
    NSString *costpriceString = [NSString stringWithFormat:@"%d",costprice];
    //商品数量
    NSString *goodsNumberString = [NSString stringWithFormat:@"%d",goodsNumber];
    [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@%@/%@/%@/%@",ServerAddress,@"/shopcart/updateCostPrice/",carid,goodsis,costpriceString,goodsNumberString] WithRequestType:1 WithParameter:nil WithReturnValueBlock:^(id returnValue) {
        
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
            NSLog(@"写入服务器成功");
        }
        
    } WithErrorCodeBlock:^(id errorCodeValue) {
        
        
    } WithFailureBlock:^(id error) {
       
        NSLog(@"%@",error);
        NSLog(@"写入服务器失败");
    }];
勾芒's avatar
勾芒 committed
427
    [self QueryShoppingCarNumber];
勾芒's avatar
勾芒 committed
428
}
曹云霄's avatar
曹云霄 committed
429 430


勾芒's avatar
勾芒 committed
431

勾芒's avatar
勾芒 committed
432 433


曹云霄's avatar
曹云霄 committed
434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end