KWMCurrencyUtil.m 2.41 KB
Newer Older
lee committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
//
//  KWNCurrencyUtil.m
//  iCemarose
//
//  Created by lee on 2017/6/15.
//  Copyright © 2017年 kollway. All rights reserved.
//

#import "KWMCurrencyUtil.h"
#import "KWMUserDao.h"

@interface KWMCurrencyUtil ()


@property (nonatomic, strong) NSNumberFormatter *numberFormatter;

@end

@implementation KWMCurrencyUtil

+ (instancetype) sharedInstance {
    static KWMCurrencyUtil *instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[super allocWithZone:NULL] init];
    });
    return instance;
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    return [self sharedInstance];
}

- (NSNumberFormatter *) numberFormatter {
    if (!_numberFormatter) {
        _numberFormatter = [[NSNumberFormatter alloc] init];
        _numberFormatter.numberStyle = NSNumberFormatterCurrencyStyle;
    }
    _numberFormatter.currencyCode = [self getCurrencyCode];
    return _numberFormatter;
}

- (NSString *) getCurrencyCode {
//    NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
//    return [language isEqualToString:@"zh-CN"] ? @"CNY" : @"EUR"; // @"EUR"
    // TODO: 这里应该写到设置中   设置中来设置CurrencyCode
    return [@"zh" isEqualToString:[[NSLocale currentLocale] languageCode]] ? @"CNY" : @"EUR";
}

- (NSString *)priceFormattedByCurrencyCode:(NSDecimalNumber *) price {
    //    return [[[self numberFormatter] stringFromNumber:[self calcPriceByCurrencyCode:self.price]] stringByReplacingOccurrencesOfRegex:@"\\.00" withString:@""];
    return [self fixFormatted:[[self numberFormatter] stringFromNumber:[self calcPriceByCurrencyCode:price]]];
}

- (NSString *)priceFormatted:(NSDecimalNumber *)price {
    return [self fixFormatted:[[self numberFormatter] stringFromNumber:price]];
}

//- (NSString *)

- (NSString *)fixFormatted:(NSString *) price {
    return [price stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@00",[self numberFormatter].currencyDecimalSeparator] withString:@""];
}


- (NSDecimalNumber *) calcPriceByCurrencyCode:(NSDecimalNumber *) price {
    if ([[self getCurrencyCode] isEqualToString:@"CNY"]) {
        NSDecimalNumber *rate = [[KWMUserDao shareDao] exchangeRate];
        price = [NSDecimalNumber decimalNumberWithString:@(ceil([[rate decimalNumberByMultiplyingBy:price] decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@"1.03"]].doubleValue)).stringValue];
    }
    return price;
}

@end