Esempio n. 1
0
def withdraw(acc_data):
    '''
    取款,显示余额,判断是否可以取款,记录日志
    :param acc_data:  user_data
    :return:
    '''
    #  根据用户id 打印余额信息
    account_data = accounts.load_balance(acc_data['account_id'])
    balance_info = '''---------余额信息---------\033[33;1m
        Credit:  %s
        Balance: %s
    \033[0m''' % (account_data['credit'], account_data['balance'])
    print(balance_info)

    # RETURN_FLAG = False
    while True:
        print("\033[32;1m --------Tips press [b] to back!--------\033[0m")
        withdraw_amount = input("请输入取款金额>>>:".strip())

        # 根据用户输入,获取为 b 返回上一级
        if withdraw_amount == 'b':
            return True
        # 获取输入金额是否大于0并且为数字,进行取款操作,并记录日志
        elif len(withdraw_amount) > 0 and withdraw_amount.isdigit:
            curr_balance = transaction.make_transaction(
                transaction_logger, account_data, 'withdraw', withdraw_amount)
            time.sleep(1)  # 解决数据返回bug
            # print(curr_balance)
            if curr_balance:
                print("\033[32;1m您当前的余额为:%s\033[0m" % curr_balance['balance'])

        else:
            print("\033[31;1m输入格式错误,只允许输入数字,或 按 [b] 返回!\033[0m")
            continue
Esempio n. 2
0
def get_user_bill(account_id):
    '''
    获取用户账单
    :param account_id:
    :return:
    '''
    i = datetime.datetime.now()  # 当前时间
    year_month = "%s" % (datetime.datetime.strftime(i, "%Y-%m"))  # 帐单年月
    account_data = accounts.load_balance(account_id)  # 获取帐户信息
    balance = account_data["balance"]  # 可用额度
    credit = account_data["credit"]  # 信用额度
    if i.day != settings.BILL_DAY:
        print("\033[31;1mToday is not the bill generation day!\033[0m")
        # return    # 此处为了演示,先注释

    # 判断额度,判定是否提示还款
    if balance >= credit:
        repay_amount = 0
        bill_info = "Account [\033[32;1m%s\033[0m] needn't to repay." % account_id
    else:
        repay_amount = credit - balance
        bill_info = "Account [\033[32;1m%s\033[0m] need to repay [\033[33;1m%s\033[0m]" \
                    % (account_id, repay_amount)

    print(bill_info)
    log_path = db_handler.db_handler(settings.LOG_DATABASE)
    bill_log = "%s/%s.bills" % (log_path, account_id)
    # 记录账单信息
    with open(bill_log, "a+") as f:
        f.write("bill_date: %s account_id: %s need_repay: %d\n" %
                (year_month, account_id, repay_amount))
Esempio n. 3
0
def save(acc_data):
    '''
    用户存款操作
    :param acc_data:
    :return:
    '''
    # 获取当前余额信息
    account_data = accounts.load_balance(acc_data['account_id'])
    balance_info = '''---------余额信息---------\033[33;1m
        Credit:  %s
        Balance: %s
    \033[0m''' % (account_data['credit'], account_data['balance'])
    print(balance_info)

    while True:
        print("\033[32;1m --------Tips press [b] to back!--------\033[0m")
        # 获取存入金额
        save_amount = input("请输入存款金额>>>:".strip())

        if save_amount == 'b':
            return True

        # 判断存入金额是否为大于0的数字
        elif len(save_amount) > 0 and save_amount.isdigit:
            # 进行存款操作
            curr_balance = transaction.make_transaction(
                transaction_logger, account_data, 'save', save_amount)
            time.sleep(1)
            # print(curr_balance)
            if curr_balance:
                print("\033[32;1m您当前的余额为:%s\033[0m" % curr_balance['balance'])

        else:
            print("\033[31;1m输入格式错误,只允许输入数字,或 按 [b] 返回!\033[0m")
            continue
Esempio n. 4
0
def repay(acc_data):
    '''
    还款
    :param acc_data:  user_data
    :return:
    '''
    # 打印余额信息
    account_data = accounts.load_balance(acc_data['account_id'])
    balance_info = '''---------余额信息---------\033[33;1m
        Credit:  %s
        Balance: %s
    \033[0m''' % (account_data['credit'], account_data['balance'])
    print(balance_info)
    while True:
        print("\033[32;1m --------Tips press [b] to back!--------\033[0m")
        repay_amount = input("请输入您的还款金额".strip())

        if repay_amount == 'b':
            return True
        # 判断 还款金额是否为大于0的数字,进行还款交易操作
        elif len(repay_amount) > 0 and repay_amount.isdigit:
            curr_balance = transaction.make_transaction(
                transaction_logger, account_data, 'repay', repay_amount)
            if curr_balance:
                print("\033[32;1m您当前的余额为:%s\033[0m" % curr_balance['balance'])
        else:
            print("\033[31;1m输入格式错误,只允许输入数字,或 按 [b] 返回!\033[0m")
            continue
Esempio n. 5
0
def transfer(acc_data):
    '''
    用户转账操作
    :param acc_data:
    :return:
    '''
    # 打印余额
    account_data = accounts.load_balance(acc_data['account_id'])
    balance_info = '''---------余额信息---------\033[33;1m
        Credit:  %s
        Balance: %s
    \033[0m''' % (account_data['credit'], account_data['balance'])
    print(balance_info)
    while True:
        # print("\033[32;1m --------Tips press [b] to back!--------\033[0m")
        # 获取 要转入账户ID
        recv_id = input("\033[32;1m请输入要转入的账户ID>>>:\033[0m".strip())

        if auth.check_account(
                recv_id):  #  True  return  account_data 判断接收账户是否存在和过期
            recv_acc_data = auth.check_account(recv_id)
            # print("recv_acc_data",recv_acc_data)
            if recv_acc_data:  # 被转入账户存在,则获取转入金额
                print(
                    "\033[32;1m --------Tips press [b] to back!--------\033[0m"
                )
                trans_amount = input("\033[33;1m请输入转账金额>>>:\033[0m")

                if trans_amount == 'b':
                    return True
                #  判断要转出金额的输入是否为小于 当前余额的数字
                elif float(trans_amount) < account_data[
                        'balance'] and trans_amount.isdigit():
                    # 进行转账操作
                    curr_balance = transaction.make_transaction(
                        transaction_logger, account_data, 'transfer',
                        trans_amount)
                    # 记录转账日志
                    transaction.make_transaction(transaction_logger,
                                                 recv_acc_data, 'receive',
                                                 trans_amount)
                    # 转账后显示余额
                    print("您当前的余额为:%s" % curr_balance['balance'])
                    time.sleep(1)
                    return True
                else:
                    print("您输入的金额[%s]过大或者不符合输入要求,请重新输入不超过您余额[%s]的额度" %
                          (trans_amount, account_data['balance']))
                    continue
        else:
            print("\033[31;1m您输入的账户不存在,请重新输入\033[0m")
            continue
Esempio n. 6
0
def payApi(amount):
    '''
    交易接口,提供给其他消费方式调用
    :param amount:
    :return:
    '''

    amount = int(amount)

    acc_data = get_user_data()
    # print("\033[42;1m payApi \033[0m",acc_data)

    # 根据获取到的用户id 获取用户数据
    account_data = accounts.load_balance(acc_data['account_id'])

    # 判断交易金额 是否大于,交易大于0 则进行交易操作
    if amount > 0:
        new_balance = transaction.make_transaction(transaction_logger,
                                                   account_data, 'pay', amount)
        if new_balance:
            return True
    else:
        print("你的输入 [%s] 有误,请输入数字金额" % amount)
        return None