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

#import "BaseViewController.h"
10
#import "LoginViewController.h"
曹云霄's avatar
曹云霄 committed
11
#import <WebKit/WebKit.h>
12
#import <AVFoundation/AVFoundation.h>
曹云霄's avatar
曹云霄 committed
13

曹云霄's avatar
曹云霄 committed
14
@interface BaseViewController ()<UIPrintInteractionControllerDelegate,UIWebViewDelegate,WKNavigationDelegate>
15

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

@property (nonatomic,strong) WKWebView *webView;
曹云霄's avatar
曹云霄 committed
18

勾芒's avatar
勾芒 committed
19 20 21 22 23
/**
 *  提示框
 */
@property (nonatomic,strong) PromptinformationView *promptView;

24
@property (nonatomic,strong) UIPrintInteractionController *printControl;
曹云霄's avatar
曹云霄 committed
25 26


曹云霄's avatar
曹云霄 committed
27 28 29 30 31
@end

@implementation BaseViewController


勾芒's avatar
勾芒 committed
32

勾芒's avatar
勾芒 committed
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
/**
 *  初始化提示框
 *
 *  @return PromptinformationView
 */
- (PromptinformationView *)promptView
{
    if (_promptView == nil) {
        
        _promptView = [[[NSBundle mainBundle] loadNibNamed:@"PromptinformationView" owner:self options:nil] firstObject];
    }
    return _promptView;
}


曹云霄's avatar
曹云霄 committed
48
- (WKWebView *)webView
勾芒's avatar
勾芒 committed
49 50 51
{
    if (_webView == nil) {
        
曹云霄's avatar
曹云霄 committed
52
        _webView = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)];
勾芒's avatar
勾芒 committed
53 54 55 56
    }
    return _webView;
}

57

曹云霄's avatar
曹云霄 committed
58 59 60
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
勾芒's avatar
勾芒 committed
61
    self.automaticallyAdjustsScrollViewInsets = NO;
62 63 64 65
    //检测登陆超时通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logintimeoutNotification:) name:LOGINTIMEOUT object:nil];
}

66

67 68 69
#pragma mark -登陆超时回调
- (void)logintimeoutNotification:(NSNotification *)not
{
70
    WS(weakSelf);
71 72 73 74 75
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"登陆超时,请重新登陆" preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        [weakSelf dismissViewControllerAnimated:YES completion:nil];
        [Shoppersmanager manager].currentCustomer = NO;
        [Customermanager manager].model = nil;
曹云霄's avatar
曹云霄 committed
76
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"StoryboardwithCYX" bundle:nil];
77 78 79 80 81 82
        LoginViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:USERNAME];
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:PASSWORD];
        [weakSelf restoreRootViewController:loginVC];
    }]];
    dispatch_async(dispatch_get_main_queue(), ^{
83
        [weakSelf presentViewController:alert animated:YES completion:nil];
84
    });
曹云霄's avatar
曹云霄 committed
85 86
}

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

#pragma mark -切换rootViewcontroller
- (void)restoreRootViewController:(UIViewController *)rootViewController
{
    typedef void (^Animation)(void);
    UIWindow* window = SHARED_APPDELEGATE.window;
    rootViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    Animation animation = ^{
        BOOL oldState = [UIView areAnimationsEnabled];
        [UIView setAnimationsEnabled:NO];
        window.rootViewController = rootViewController;
        [UIView setAnimationsEnabled:oldState];
    };
    
    [UIView transitionWithView:window
                      duration:0.5f
                       options:UIViewAnimationOptionTransitionFlipFromBottom
                    animations:animation
                    completion:nil];
曹云霄's avatar
曹云霄 committed
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
}

#pragma mark -结束MJRfresh刷新
- (void)endRefreshingForTableView:(UIScrollView *)TableView
{
    if (TableView.mj_header.isRefreshing) {
        
        [TableView.mj_header endRefreshing];
    }
    else if (TableView.mj_footer.isRefreshing)
    {
        [TableView.mj_footer endRefreshing];
    }
}

曹云霄's avatar
曹云霄 committed
121 122 123
#pragma mark -获得我的storyboard对象
- (UIStoryboard *)getStoryboardWithName
{
曹云霄's avatar
曹云霄 committed
124
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"StoryboardwithCYX" bundle:nil];
曹云霄's avatar
曹云霄 committed
125 126 127
    return storyboard;
}

128 129 130 131 132 133 134 135 136 137 138 139
#pragma mark - 判断相机权限
+ (BOOL)determineCameraPermissions
{
    NSString *mediaType = AVMediaTypeVideo;//读取媒体类型
    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
    if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
        return NO;
    }else {
        return YES;
    }
}

曹云霄's avatar
曹云霄 committed
140
#pragma mark 调用airPrint无线打印机
勾芒's avatar
勾芒 committed
141
- (void)callAirprintWithdata:(NSString *)PDFpath SuccessBlock:(void(^)())success ErrorBlock:(void(^)())failed
曹云霄's avatar
曹云霄 committed
142
{
勾芒's avatar
勾芒 committed
143
    NSData *mypdfdata = [NSData dataWithContentsOfFile:PDFpath];
曹云霄's avatar
曹云霄 committed
144 145 146 147 148 149 150 151 152 153
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    if  (pic && [UIPrintInteractionController canPrintData: mypdfdata] ) {
        pic.delegate = self;
        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = @"订单明细";
        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        pic.printInfo = printInfo;
        pic.showsPageRange = YES;
        pic.printingItem = mypdfdata;
勾芒's avatar
勾芒 committed
154 155 156 157 158 159 160 161 162 163 164
        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {
            if (completed)
            {
                // 执行成功后的处理
                success();
            }
            else if (!completed && error)
            {
                // 执行失败后的处理
                failed();
            }
曹云霄's avatar
曹云霄 committed
165
        };
勾芒's avatar
勾芒 committed
166
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
曹云霄's avatar
曹云霄 committed
167 168 169 170 171
            [pic presentAnimated:YES completionHandler:completionHandler];
        }
    }
}

曹云霄's avatar
曹云霄 committed
172

173
#pragma mark - 提示框
174
- (void)promptCustomerTitle:(NSString *)title withMessage:(NSString *)message finish:(void (^)())complete
175
{
176 177
    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:UIAlertControllerStyleAlert];
    [alertVC addAction:[UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
178 179 180 181 182 183
        if (complete) {
            complete();
        }
    }]];
    [self presentViewController:alertVC animated:YES completion:nil];
}
184

勾芒's avatar
勾芒 committed
185 186 187 188 189 190
#pragma mark -删除提示文本、图片
- (void)RemovePromptinformationView
{
    [self.promptView removeFromSuperview];
    self.promptView = nil;
}
勾芒's avatar
勾芒 committed
191

勾芒's avatar
勾芒 committed
192 193 194
#pragma mark -传入订单状态,返回当前状态图片
+ (UIImage *)ReturnOrderStateImageWithStateCode:(NSInteger)ordercode
{
195
    const NSArray *imageArray = [NSArray arrayWithObjects:@"已撤销",@"已完成",@"已退货", nil];
勾芒's avatar
勾芒 committed
196
    switch (ordercode) {
勾芒's avatar
勾芒 committed
197
        case 4://退货
勾芒's avatar
勾芒 committed
198 199 200 201
        {
            return TCImage([imageArray objectAtIndex_opple:2]);
        }
            break;
勾芒's avatar
勾芒 committed
202
        case 5://作废
勾芒's avatar
勾芒 committed
203 204 205 206
        {
            return TCImage([imageArray objectAtIndex_opple:0]);
        }
            break;
勾芒's avatar
勾芒 committed
207
        case 6://完成
勾芒's avatar
勾芒 committed
208 209 210 211 212 213 214 215 216 217
        {
            return TCImage([imageArray objectAtIndex_opple:1]);
        }
            break;
            
        default:
            break;
    }
    return nil;
}
勾芒's avatar
勾芒 committed
218 219


勾芒's avatar
勾芒 committed
220 221 222
#pragma mark -传入订单状态,返回订单文本信息,字体颜色
+ (id)ReturnOrderStateTitleWithStateCode:(NSInteger)ordercode withPoint:(CGPoint)point WithCode:(NSInteger)code
{
223
    
勾芒's avatar
勾芒 committed
224 225 226 227 228 229
    switch (ordercode) {
        case 001://未付款
        {
            if (code) {
                return kTCColor(241, 81, 83);
            }
曹云霄's avatar
曹云霄 committed
230
            return @"待支付";
勾芒's avatar
勾芒 committed
231 232 233 234
        }
            break;
        case 002://已付款
        {
235
            
勾芒's avatar
勾芒 committed
236 237 238
            if (code) {
                return kTCColor(126, 191, 53);
            }
239
            return @"已支付";
勾芒's avatar
勾芒 committed
240 241 242 243
        }
            break;
        case 003://已发货
        {
244
            
勾芒's avatar
勾芒 committed
245 246 247 248 249 250 251 252
            if (code) {
                return kTCColor(240, 180, 51);
            }
            return @"已发货";
        }
            break;
        case 004://已退货
        {
253
            
勾芒's avatar
勾芒 committed
254 255 256 257 258 259 260 261
            if (code) {
                return kTCColor(153, 153, 153);
            }
            return @"已退货";
        }
            break;
        case 005://已作废
        {
262
            
勾芒's avatar
勾芒 committed
263 264 265
            if (code) {
                return kTCColor(153, 153, 153);
            }
勾芒's avatar
勾芒 committed
266
            return @"已撤销";
勾芒's avatar
勾芒 committed
267 268 269 270
        }
            break;
        case 006://已完成
        {
271
            
勾芒's avatar
勾芒 committed
272 273 274 275 276 277 278 279 280 281 282 283
            if (code) {
                return kTCColor(89, 172, 220);
            }
            return @"已完成";
        }
            break;
            
        default:
            break;
    }
    return nil;
}
勾芒's avatar
勾芒 committed
284

勾芒's avatar
勾芒 committed
285 286 287
#pragma mark -查询购物车数量
- (void)QueryShoppingCarNumber
{
288
    [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:[NSString stringWithFormat:@"%@%@",SERVERREQUESTURL(QUERYSHOPPINGBAGNUMBER),[Customermanager manager].model.fid]  WithRequestType:ONE WithParameter:nil WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
289 290 291
        
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
            NSLog(@"更新购物车数量成功");
292
            [[NSNotificationCenter defaultCenter]postNotificationName:ADDSHOPPINGCAR object:returnValue[@"data"]];
勾芒's avatar
勾芒 committed
293
        }
294
    } WithFailureBlock:^(NSError *error) {
勾芒's avatar
勾芒 committed
295
        NSLog(@"更新购物车数量失败");
曹云霄's avatar
曹云霄 committed
296
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
勾芒's avatar
勾芒 committed
297 298 299
    }];
}

300 301 302 303 304
#pragma mark - 查询购物车商品
- (void)queryShoppingCarGoods
{
    [[NSNotificationCenter defaultCenter] postNotificationName:SHOPPINGCARGOODS object:nil];
}
勾芒's avatar
勾芒 committed
305

勾芒's avatar
勾芒 committed
306 307 308 309 310 311 312 313
#pragma mark -系统提示框
- (void)promptCustomerWithString:(NSString *)message
{
    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];
    [alertVC addAction:[UIAlertAction actionWithTitle:@"我知道了" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        
        [self dismissViewControllerAnimated:YES completion:nil];
    }]];
曹云霄's avatar
曹云霄 committed
314 315 316
    dispatch_async(dispatch_get_main_queue(), ^{
        [self presentViewController:alertVC animated:YES completion:nil];
    });
勾芒's avatar
勾芒 committed
317 318
}

319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
#pragma mark -友好化时间
+ (NSString *) compareCurrentTime:(NSString *)str
{
    
    //把字符串转为NSdate
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
    NSDate *timeDate = [dateFormatter dateFromString:str];
    
    //得到与当前时间差
    NSTimeInterval  timeInterval = [timeDate timeIntervalSinceNow];
    timeInterval = -timeInterval;
    //标准时间和北京时间差8个小时
    timeInterval = timeInterval - 8*60*60;
    long temp = 0;
    NSString *result;
    if (timeInterval < 60) {
        result = [NSString stringWithFormat:@"刚刚"];
    }
    else if((temp = timeInterval/60) <60){
        result = [NSString stringWithFormat:@"%ld分钟前",temp];
    }
    
    else if((temp = temp/60) <24){
        result = [NSString stringWithFormat:@"%ld小时前",temp];
    }
    
    else if((temp = temp/24) <30){
        result = [NSString stringWithFormat:@"%ld天前",temp];
    }
    
    else if((temp = temp/30) <12){
        result = [NSString stringWithFormat:@"%ld月前",temp];
    }
    else{
        temp = temp/12;
        result = [NSString stringWithFormat:@"%ld年前",temp];
    }
    
    return  result;
}
勾芒's avatar
勾芒 committed
360

361 362 363 364 365 366 367
#pragma mark - 获取版本号
- (NSString*)getAppVersion
{
    NSString *ver = [[[NSBundle mainBundle] infoDictionary]
                     objectForKey:@"CFBundleShortVersionString"];
    return [NSString stringWithFormat:@"Version %@",ver];
}
勾芒's avatar
勾芒 committed
368

369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
#pragma mark - 通过面额获取相应的图片
+ (UIImage *)getCorrespondingPictures:(NSInteger)total
{
    UIImage *image = nil;
    switch (total) {
        case 50:
        {
            image = TCImage(@"fifty");
        }
            break;
        case 100:
        {
            image = TCImage(@"onehundred");
        }
            break;
        case 200:
        {
            image = TCImage(@"twohundred");
        }
            break;
            
        default:
            break;
    }
    return image;
}

+ (BOOL)isBlankString:(NSString *)string
{
    if (string == nil || string == NULL) {
        return YES;
    }
    if ([string isKindOfClass:[NSNull class]]) {
        return YES;
    }
    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
        return YES;
    }
    return NO;
}

410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432
/**
 选择框
 
 @param message 文本
 @param cancel  取消
 @param sure    确认
 */
- (void)promptBoxWithMessage:(NSString *)message cancelBlock:(void(^)())cancel sureBlock:(void(^)())sure
{
    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];
    [alertVC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        if (cancel) {
            cancel();
        }
    }]];
    [alertVC addAction:[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        if (sure) {
            sure();
        }
    }]];
    [self presentViewController:alertVC animated:YES completion:nil];
}

433

434 435
- (void)dealloc
{
436
    NSLog(@"释放%@控制器",self);
437 438
}

勾芒's avatar
勾芒 committed
439

勾芒's avatar
勾芒 committed
440 441 442



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