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

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

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

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

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



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



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

@implementation ShoppingViewController

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

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


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

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

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

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

曹云霄's avatar
曹云霄 committed
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 98 99
    self.shoppingTableview.tableFooterView = [UIView new];
}

勾芒's avatar
勾芒 committed
100 101


勾芒's avatar
勾芒 committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#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) {
        
勾芒's avatar
勾芒 committed
118
        [self endRefreshingForTableView:self.shoppingTableview];
勾芒's avatar
勾芒 committed
119 120
        [self RemoveMBProgressHUDLoding];
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
勾芒's avatar
勾芒 committed
121
  
勾芒's avatar
勾芒 committed
122 123 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;
                [self.shopResponseArray addObject:model];
            }
勾芒's avatar
勾芒 committed
140
            [self.shoppingTableview reloadData];
勾芒's avatar
勾芒 committed
141 142 143 144 145 146 147 148 149
        }else
        {
            [self ErrorMBProgressView:returnValue[@"message"]];
        }
    } WithErrorCodeBlock:^(id errorCodeValue) {
        
    } WithFailureBlock:^(id error) {
        
        [self RemoveMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
150
        [self endRefreshingForTableView:self.shoppingTableview];
勾芒's avatar
勾芒 committed
151 152 153 154
    }];
}


曹云霄's avatar
曹云霄 committed
155 156 157 158

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ShoppingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Shopping" forIndexPath:indexPath];
勾芒's avatar
勾芒 committed
159 160
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.model = [self.shopResponseArray objectAtIndex_opple:indexPath.row];
勾芒's avatar
勾芒 committed
161
    cell.delegate = self;
勾芒's avatar
勾芒 committed
162 163 164 165 166 167
    cell.cellindex = indexPath.row;
    //cell选中回调
    [cell setReturnCellblock:^(NSInteger index) {
        
        [self setSelectedButton:index];
    }];
曹云霄's avatar
曹云霄 committed
168 169 170 171 172
    return  cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
勾芒's avatar
勾芒 committed
173
    return self.shopResponseArray.count;
曹云霄's avatar
曹云霄 committed
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
}


- (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
189
#pragma mark -选中商品回调
勾芒's avatar
勾芒 committed
190 191 192
- (void)setSelectedButton:(NSInteger)index;
{
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:index];
勾芒's avatar
勾芒 committed
193
    model.isSelected = !model.isSelected;
勾芒's avatar
勾芒 committed
194 195 196 197 198 199
    
    NSInteger goodsNumber = 0;
    for (ShopcarModel *model in self.shopResponseArray) {
        if (model.isSelected) {
            goodsNumber ++;
        }
勾芒's avatar
勾芒 committed
200 201 202 203 204 205
        if (goodsNumber == 0) {
            self.allSelectedButton.selected = NO;
        }
        if (goodsNumber == self.shopResponseArray.count) {
            self.allSelectedButton.selected = YES;
        }
勾芒's avatar
勾芒 committed
206
    }
勾芒's avatar
勾芒 committed
207
    [self CalculateSelectedGoodsAllprice];
勾芒's avatar
勾芒 committed
208
    [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",goodsNumber] forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
209 210 211
}


曹云霄's avatar
曹云霄 committed
212 213 214
#pragma mark -结算
- (IBAction)settlementButtonClick:(UIButton *)sender {
    
勾芒's avatar
勾芒 committed
215 216 217 218 219 220 221 222 223 224 225
    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
226 227 228
    //占位
    ShopcarModel *ZhanweiModel = [[ShopcarModel alloc]init];
    [array addObject:ZhanweiModel];
曹云霄's avatar
曹云霄 committed
229
    GenerateOrdersViewController *generateOrder = [[self getStoryboardWithName] instantiateViewControllerWithIdentifier:@"generateorders"];
勾芒's avatar
勾芒 committed
230
    generateOrder.settlementGoodsdatas = array;
曹云霄's avatar
曹云霄 committed
231
    [self.navigationController pushViewController:generateOrder animated:YES];
曹云霄's avatar
曹云霄 committed
232
}
曹云霄's avatar
曹云霄 committed
233

曹云霄's avatar
曹云霄 committed
234
#pragma mark -全选
勾芒's avatar
勾芒 committed
235
- (IBAction)allSelectedButtonClick:(UIButton *)sender {
曹云霄's avatar
曹云霄 committed
236
    
勾芒's avatar
勾芒 committed
237 238 239 240 241 242 243 244 245 246 247 248
    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
249 250 251
        [self.settlementButton setTitle:[NSString stringWithFormat:@"去结算(%ld)",self.shopResponseArray.count] forState:UIControlStateNormal];
        //计算总金额
        [self CalculateSelectedGoodsAllprice];
勾芒's avatar
勾芒 committed
252 253 254 255 256 257 258 259 260 261 262
    }else
    {
        //取消全部选中
        for (ShoppingTableViewCell *cell in self.shoppingTableview.visibleCells) {
            
            cell.selectedButton.selected = NO;
        }
        for (ShopcarModel *model in self.shopResponseArray) {
            
            model.isSelected = NO;
        }
勾芒's avatar
勾芒 committed
263
        [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
264
    }
曹云霄's avatar
曹云霄 committed
265 266
}

勾芒's avatar
勾芒 committed
267 268 269 270 271 272 273 274 275 276 277 278
#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];
}

曹云霄's avatar
曹云霄 committed
279

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

勾芒's avatar
勾芒 committed
283 284 285 286 287 288
    
    [self CreateMBProgressHUDLoding];
    DeleteCartRequest *delecteGoods = [[DeleteCartRequest alloc]init];
    //code数组
    NSMutableArray *codeArr = [NSMutableArray array];
    //需要删除的cell数组indexpath
勾芒's avatar
勾芒 committed
289
    NSMutableArray *delecteArray = [NSMutableArray array];
勾芒's avatar
勾芒 committed
290 291
    //模型数组
    NSMutableArray *delectemodel = [NSMutableArray array];
勾芒's avatar
勾芒 committed
292 293 294 295
    for (int i=0; i<self.shopResponseArray.count; i++) {
        
        ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:i];
        if (model.isSelected) {
勾芒's avatar
勾芒 committed
296 297 298
            
            [codeArr addObject:model.fid];
            [delectemodel addObject:model];
勾芒's avatar
勾芒 committed
299 300 301 302
            NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
            [delecteArray addObject:indexpath];
        }
    }
勾芒's avatar
勾芒 committed
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
    //没有选中任何商品
    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]) {
            
            //删除商品
            for (ShopcarModel *model in delectemodel) {
                [self.shopResponseArray removeObject:model];
            }
            [self.shoppingTableview deleteRowsAtIndexPaths:delecteArray withRowAnimation:UITableViewRowAnimationLeft];
            [self SuccessMBProgressView:@"删除成功"];
勾芒's avatar
勾芒 committed
320 321 322
            [self CalculateSelectedGoodsAllprice];
            self.allSelectedButton.selected = NO;
            [self.settlementButton setTitle:@"去结算(0)" forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
323 324 325 326 327 328 329 330 331 332 333 334
        }else
        {
            [self ErrorMBProgressView:returnValue[@"message"]];
        }
        
    } WithErrorCodeBlock:^(id errorCodeValue) {
        
        
    } WithFailureBlock:^(id error) {
        
        [self RemoveMBProgressHUDLoding];
    }];
勾芒's avatar
勾芒 committed
335
}
曹云霄's avatar
曹云霄 committed
336 337


勾芒's avatar
勾芒 committed
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352
#pragma mark -改变商品数量
- (void)ChangeGoodsNumber:(int)goodsNumber WithcostPrice:(NSInteger)costprice Withcellindex:(NSInteger)cellindex
{
    //保存商品数量
    ShopcarModel *model = [self.shopResponseArray objectAtIndex_opple:cellindex];
    model.goodsNum = goodsNumber;
//    [self.shopResponseArray replaceObjectAtIndex:cellindex withObject:model];
    
    //保存成交价格
    ShopcarModel *Newmodel = [self.shopResponseArray objectAtIndex_opple:cellindex];
    Newmodel.goods.costPrice = [NSNumber numberWithInteger:costprice];
//    [self.shopResponseArray replaceObjectAtIndex:cellindex withObject:Newmodel];
    
    [self CalculateSelectedGoodsAllprice];
}
曹云霄's avatar
曹云霄 committed
353 354


曹云霄's avatar
曹云霄 committed
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
- (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