Exemple #1
0
def credit_card_withdraw_cash():
    global COOKIES
    if COOKIES[CURRENT_USER]['credit_limit'] == 0:
        logger.warning('用户%s信用卡已冻结,无法提现!' % CURRENT_USER)
        return
    amount = input_number('请输入提现金额')
    params = {
        'mode': 'r',
        'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER)
    }
    user_info = utils.file_handler(**params)
    if user_info[CURRENT_USER]['credit_balance'] >= (amount + (amount * 0.05)):
        user_info[CURRENT_USER]['credit_balance'] -= (amount + (amount * 0.05))
    else:
        logger.warning('用户%s信用卡可用额度不足,提现%s失败!' % (CURRENT_USER, amount))
        return
    user_info[CURRENT_USER]['balance'] += amount
    params = {
        'mode': 'r',
        'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER),
        'data': user_info
    }
    utils.file_handler(**params)
    logger.info('用户%s提现%s成功!' % (CURRENT_USER, amount))
    COOKIES[CURRENT_USER]['balance'] = user_info[CURRENT_USER]['balance']
    COOKIES[CURRENT_USER]['credit_balance'] = user_info[CURRENT_USER][
        'credit_balance']
    return True
Exemple #2
0
def set_permission():
    while True:
        name = input_string('请输入要删除的用户名', name=True)
        if not utils.checkpath(USER_FILE % (name, name)):
            logger.warning('用户%s不存在!' % name)
            return
        params = {'mode': 'r', 'file_path': USER_FILE % (name, name)}
        user_info = utils.file_handler(**params)
        action_menu = {
            '1': ['admin', '管理员'],
            '2': ['user', '普通用户'],
        }
        print('=' * 30)
        for k, v in action_menu.items():
            print('%-6s %-10s' % (k, v[1]))
        print('=' * 30)
        code = input_string('请输入操作编码')
        if code in action_menu:
            permission = action_menu[code][0]
        else:
            logger('操作编码非法!')
            continue
        if permission == 'admin':
            user_info['permission'] = 'admin'
        if permission == 'user':
            user_info['permission'] = 'user'
        params = {
            'mode': 'r',
            'file_path': USER_FILE % (name, name),
            'data': user_info
        }
        utils.file_handler(**params)
        logger.info('设置用户%s权限为%s成功!' % (name, permission))
        return True
Exemple #3
0
def login():
    '''
    Function login to login shopping mall
    :return: True or None
    '''
    global CURRENT_USER, COOKIES
    while True:
        name = input_string('用户名', name=True)
        if not utils.checkpath(settings.USER_FILE % (name, name)):
            logger.warning('用户%s没有注册,请您先注册!' % name)
            break
        if name in COOKIES:
            logger.info('用户%s已经是登陆状态!' % name)
            CURRENT_USER = name
            return True
        password = input_string('密码')
        params = {'file_path': settings.USER_FILE % (name, name), 'mode': 'r'}
        user_info = utils.file_handler(**params)
        if password != user_info['password']:
            logger.warning('用户%s密码错误!' % name)
            continue
        logger.info('用户%s登陆成功!' % name)
        CURRENT_USER = name
        COOKIES[name] = {
            'balance': user_info['balance'],
            'credit_balance': user_info['credit_balance'],
            'credit_limit': user_info['credit_limit'],
            'bill': user_info['bill']
        }
        load_user_shopping_cart(name)
        return True
Exemple #4
0
def register(credit_limit=50000):
    '''
    Funtion register to user register
    :param credit_limit: user's credit limit
    :return: True or None
    '''
    name = input_string('用户名', name=True)
    if utils.checkpath(settings.USER_FILE % (name, name)):
        logger.warning('用户%s已经注册,请直接登陆!' % name)
        return
    password = input_string('密码', register=True)
    params = {
        'file_path': settings.USER_FILE % (name, name),
        'mode': 'w',
        'data': {
            'name': name,
            'password': password,
            'permission': 'user',  # admin: 管理员  user: 普通用户
            'status': 0,  # 0:正常 1: 锁定用户
            'balance': 0,
            'credit_balance': credit_limit,
            'credit_limit': credit_limit,  # 0 冻结
            'bill': 0
        }
    }
    if utils.file_handler(**params):
        logger.info('用户%s注册成功!' % name)
        return True
Exemple #5
0
def reset_password():
    params = {
        'mode': 'r',
        'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER)
    }
    user_info = utils.file_handler(**params)
    password = input_string(register=True)
    user_info['password'] = password
    params = {
        'mode': 'r',
        'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER),
        'data': user_info
    }
    utils.file_handler(**params)
    logger.info('用户%s重置密码成功!' % CURRENT_USER)
    return True
Exemple #6
0
def lock_user():
    name = input_string('请输入要锁定的用户名', name=True)
    if not utils.checkpath(USER_FILE % (name, name)):
        logger.warning('用户%s不存在!' % name)
        return
    params = {'mode': 'r', 'file_path': USER_FILE % (name, name)}
    user_info = utils.file_handler(**params)
    user_info['status'] = 1
    params = {
        'mode': 'r',
        'file_path': USER_FILE % (name, name),
        'data': user_info
    }
    utils.file_handler(**params)
    logger.info('锁定用户%s成功!' % name)
    return True
Exemple #7
0
def credit_card_manage():
    while True:
        action_menu = {
            '1': ['plus', '提额'],
            '2': ['minus', '降额'],
            '3': ['freeze', '冻结'],
        }
        print('=' * 30)
        for k, v in action_menu.items():
            print('%-6s %-10s' % (k, v[1]))
        print('=' * 30)
        code = input_string('请输入操作编码')
        if code in action_menu:
            operation = action_menu[code][0]
        else:
            logger('操作编码非法!')
            continue
        params = {
            'mode': 'r',
            'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER)
        }
        user_info = utils.file_handler(**params)
        if operation == 'plus':
            amount = input_number('请输入提额金额')
            user_info[CURRENT_USER]['credit_limit'] += amount
            user_info[CURRENT_USER]['credit_balance'] += amount
            logger.info('用户%s信用卡提额完成!' % CURRENT_USER)
        elif operation == 'minus':
            amount = input_number('请输入提额金额')
            user_info[CURRENT_USER]['credit_limit'] -= amount
            user_info[CURRENT_USER]['credit_balance'] -= amount
            logger.info('用户%s信用卡降额完成!' % CURRENT_USER)
        elif operation == 'freeze':
            user_info[CURRENT_USER]['credit_limit'] = 0
            logger.info('用户%s信用卡冻结完成!' % CURRENT_USER)
        params = {
            'mode': 'w',
            'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER),
            'data': user_info
        }
        utils.file_handler(**params)
        return True
Exemple #8
0
def transfer(account, amount, mode):
    params = {
        'mode': 'r',
        'file_path': settings.USER_FILE % (account, account)
    }
    account_info = utils.file_handler(**params)
    if mode == 'minus':
        if account_info['balance'] < amount:
            logger.warning('账户%s余额不足,转账失败!' % src_account)
            return
        account_info['balance'] -= amount
    elif mode == 'plus':
        account_info['balance'] += amount
    params = {
        'mode': 'w',
        'file_path': settings.USER_FILE % (account, account),
        'data': account_info
    }
    utils.file_handler(**params)
    return True
Exemple #9
0
 def wrapper(*args, **kwargs):
     name = CURRENT_USER
     result = func(*args, **kwargs)
     if result == 'quit':
         if name in SHOPPING_CART:
             params = {
                 'mode': 'w',
                 'file_path': settings.SHOPPING_CART_FILE % name,
                 'data': SHOPPING_CART.pop(name)
             }
             utils.file_handler(**params)
         if name:
             logger.info('用户%s退出登录成功!' % name)
         else:
             logger.info('程序退出登录成功!')
         os._exit(0)
     elif result == 'order':
         logger.info('请您进入购物车确认商品,并下单支付!')
         run()
     else:
         return result
Exemple #10
0
def pay_shooping_order():
    params = {
        'mode': 'r',
        'file_path': settings.USER_FILE % (CURRENT_USER, CURRENT_USER)
    }
    data = utils.file_handler(**params)
    data['balance'] = COOKIES[CURRENT_USER]['balance']
    data['credit_balance'] = COOKIES[CURRENT_USER]['credit_balance']
    params = {
        'mode': 'w',
        'file_path': settings.USER_FILE % (CURRENT_USER, CURRENT_USER),
        'data': data
    }
    confirm = input_string('确认支付订单?y/n')
    if confirm == 'y':
        if utils.file_handler(**params):
            logger.info('支付成功,请耐心等待发货!')
            SHOPPING_CART[CURRENT_USER] = {}
            return True
    logger.info('用户%s取消支付!' % CURRENT_USER)
    return
Exemple #11
0
def load_user_shopping_cart(name):
    '''
    Function load_user_shopping_cart to print shopping cart info
    :param name: user's name
    :return: True or None
    '''
    file_path = settings.SHOPPING_CART_FILE % name
    params = {'mode': 'r', 'file_path': file_path}
    if os.path.exists(file_path):
        SHOPPING_CART[name] = utils.file_handler(**params)
        return True
    else:
        SHOPPING_CART[name] = {}
Exemple #12
0
def get_shopping_orders(month=None):
    if not month:
        month = datetime.datetime.now().strftime('%Y%m')
    order_dir = settings.ORDER_DIR % (CURRENT_USER, month)
    if utils.checkpath(order_dir):
        file_list = os.listdir(order_dir)
        print('=' * 50)
        print('%s 订单信息:' % month)
        for f in file_list:
            params = {'mode': 'r', 'file_path': os.path.join(order_dir, f)}
            data = utils.file_handler(**params)
            print(data)
        print('=' * 50)
Exemple #13
0
def credit_card_bill():
    dt = datetime.date.today().strftime('%Y-%m')
    user_list = os.listdir(USER_DIR)
    for i in user_list:
        if not os.path.isdir(os.path.join(USER_DIR, i)):
            user_list.remove(i)
    for user in user_list:
        params = {'mode': 'r', 'file_path': USER_FILE % (user, user)}
        user_info = utils.file_handler(**params)
        if user_info['bill'] == 0:
            user_info['bill'] = (user_info['credit_limit'] -
                                 user_info['credit_balance'])
        else:
            user_info['bill'] += (user_info['bill'] * 0.0005)
        params = {
            'mode': 'r',
            'file_path': USER_FILE % (user, user),
            'data': user_info
        }
        utils.file_handler(**params)
        if user_info['bill'] != 0:
            logging.info('用户 %s %s 账单已生成!' % (user, dt))
    return True
Exemple #14
0
def order_shoping_cart():
    cost = print_shopping_cart()
    dt = datetime.datetime.now().strftime('%Y%m')
    order_id = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    order_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    params = {
        'mode': 'w',
        'file_path': settings.ORDER_FILE % (name, dt, order_id),
        'data': {
            'order_id': order_id,
            'username': CURRENT_USER,
            'cost': cost,
            'order_time': order_time,
            'goods': SHOPPING_CART[CURRENT_USER]
        }
    }
    confirm = input_string('确认下单?y/n')
    if confirm == 'y':
        utils.file_handler(**params)
        logger.info('用户%s下单成功,请尽快支付!' % CURRENT_USER)
        return True
    logger.info('用户%s取消下单!' % CURRENT_USER)
    return
Exemple #15
0
def get_goods_info(output=None):
    '''
    Function get_goods_info to return goods information.
    :param output: print or not print to console
    :return: goods information
    '''
    params = {'mode': 'r', 'file_path': settings.GOODS_FILE}
    goods = utils.file_handler(**params)
    if output:
        print('=' * 30)
        print('商品编号    商品名称    商品价格 [order下单]')
        for k, v in goods.items():
            print('%-10s %-10s %-10s' % (k, v['name'], v['price']))
        print('=' * 30)
    return goods
Exemple #16
0
def remove_user():
    name = input_string('请输入要删除的用户名', name=True)
    if not utils.checkpath(USER_FILE % (name, name)):
        logger.warning('用户%s不存在!' % name)
        return
    params = {'mode': 'r', 'file_path': USER_FILE % (name, name)}
    user_info = utils.file_handler(**params)
    if user_info['bill'] > 0:
        logger.warning('用户%s本期账单未还清,无法删除用户!' % name)
        return
    if user_info['credit_balance'] < user_info['credit_limit']:
        logger.warning('用户%s信用卡有未出账账单,无法删除用户!' % name)
        return
    if user_info['balance'] > 0:
        logger.warning('用户%s有账户余额未消费,无法删除用户!' % name)
        return
    os.remove(os.path.join(USER_DIR, name))
    logger.info('删除用户%s完成!' % name)
    return True
Exemple #17
0
def credit_card_repay():
    params = {
        'mode': 'r',
        'file_path': USER_FILE % (CURRENT_USER, CURRENT_USER)
    }
    user_info = utils.file_handler(**params)
    if user_info['bill'] == 0:
        print('用户%s本期账单是0,不需要还款!' % CURRENT_USER)
        return True
    amount = input_number('请输入还款金额')
    if amount > user_info['bill']:
        user_info['credit_balance'] = user_info['credit_limit']
        user_info['bill'] = 0
        logger.info('用户%s本期账单已还清!' % CURRENT_USER)
    if amount == user_info['bill']:
        user_info['credit_balance'] = user_info['credit_limit']
        user_info['bill'] = 0
        logger.info('用户%s本期账单已还清!' % CURRENT_USER)
    if amount > user_info['bill']:
        user_info['credit_balance'] += amount
        user_info['bill'] -= amount
        logger.info('用户%s本期账单未还清,还需%s还清本期账单!' %
                    (CURRENT_USER, user_info['bill']))
    return True