Example #1
0
def repay(acc_data):
    '''
    打印当前账户的余额信息  让用户偿还账单
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    #for k,v in account_data.items():
    #    print(k,v )
    current_balance = ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        repay_amount = input("\033[33;1mInput repay amount:\033[0m").strip()
        if len(repay_amount) > 0 and repay_amount.isdigit():
            print('ddd 00')
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data, 'repay',
                                                       repay_amount)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %
                      (new_balance['balance']))

        else:
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % repay_amount)

        if repay_amount == 'b':
            back_flag = True
Example #2
0
def withdraw(user_data):
    print('开始取款')
    tran_type = 'withdraw'
    back_flag = False
    while not back_flag:
        account = user_data['account_id']
        acc_data = accounts.load_current_balance(account)
        balance = acc_data['balance']
        amount = input('输入您要还的金额或者按b返回上一层,金额数必须\033[31m大于0\33[1m:')
        if len(amount)>0 and amount.isdigit():
            amount = float(amount)
            if balance-float(amount) <= (acc_data['credit'])*0.5: #其实这个一个在交易模块做的~并且额度的比例应该是可以设置才对
                print('您不能取走超过额度的50%')
                back_flag = True
                continue
            new_balance = transaction.make_transaction(acc_data=acc_data, \
                                         amount=amount,\
                                         tran_type=tran_type)
            if accounts.upda_current_balance(user_data,new_balance):
                print('后您现在的余额是:', new_balance)
            else:
                print('\033[31m交易失败\033[0m')
        elif amount == 'b':
            back_flag = True
        else:
            print('这个不是一个数字请输入正确的数字')
    exit_flag = False
    return exit_flag
Example #3
0
def withdraw(acc_data):
    '''
    提现
    :param acc_data: 
    :return: 
    '''
    account_data = data_handler.get_user_db(acc_data['account_id'])
    tr_log_obj = logger.set_tr_logger(account_data['id'])
    current_balance = '''---------------- BALABCE INFO --------------
        Credit :  %s
        Balance:  %s
-------------------------------------------''' % (account_data['credit'],
                                                  account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        withdraw_amount = input(
            '\033[1;34mInput withdraw amount: \033[0m').strip()
        if withdraw_amount.isdigit():
            new_balance = transaction.make_transaction(tr_log_obj,
                                                       account_data,
                                                       'withdraw',
                                                       withdraw_amount)
            if new_balance:
                print('New:Balance:\033[32;1m %s \033[0m' %
                      new_balance['balance'])
        elif withdraw_amount == 'b':  # 返回
            back_flag = True
        elif withdraw_amount == 'q':  # 退出程序
            exit('请保管好您的信用卡,欢迎下次使用!')
        else:  # 错误输入
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % withdraw_amount)
Example #4
0
def repay(acc_data):
    account_data = accounts.load_current_balance(acc_data['account_id'])
    print('Balance Info'.center(50, '-'))
    print(u'''
    余额:           %d
    本期应还金额:    %d
    还款日:         %d
    ''' % (account_data['balance'], account_data['credit'] -
           account_data['balance'], account_data['pay_date']))
    back_flag = True
    while back_flag:
        repay_amount = input('\33[33;1mInput Repay Amount: \33[0m').strip()
        if len(repay_amount) == 0: continue
        if repay_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data, 'repay',
                                                       repay_amount)
            if new_balance:
                print('\33[42;1mNew Balance is %s : \33[0m' %
                      new_balance['balance'])
            back_flag = False
        else:
            print(
                '\33[31;1m%s is not a valid amount,only accept integer : \33[0m'
                % repay_amount)
Example #5
0
def transfer(acc_data):
    # 转账
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    flag = False
    while not flag:
        # 输入转账卡号(账号)
        transfer_account = input("Enter transfer account: ")
        # 输入转账金额
        transfer_money = input("Enter transfer money: ")
        if (len(transfer_money) > 0
                and transfer_money.isdigit()) and len(transfer_account) > 0:
            # 这里使用**kwargs 扩展参数, transfer_account 根据这个dict key判断是否需要转账
            new_balance = transaction.make_transaction(
                transaction_log,
                account_data,
                'transfer',
                transfer_money,
                transfer_account=transfer_account)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %
                      (new_balance['balance']))
        elif transfer_account == 'b' or transfer_money == 'b':
            flag = True
        else:
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % transfer_account)
Example #6
0
def checkout(shop_data):
    print('结账咯')
    #做到这里的时候就是和认证模块做交互
    acc_data = auth.acc_login(user_data)
    balance = acc_data['balance']
    total = float(shop_data['total'])
    if total > balance:
        print('太贵了您买不起')
    else:

        tran_type = 'consume'
        #做到这里的就可以和数据库交互了
        new_balance = transaction.make_transaction(acc_data=acc_data, \
                                                   amount=total, \
                                                   tran_type=tran_type)

        account = user_data['account_id']

        data = accounts.load_current_balance(account)
        user_data['account_data'] = data
        if accounts.upda_current_balance(user_data, new_balance):
            print('''您的余额是:%s
        您消费了:%s''' % (new_balance, total))
            shop_data['shoplist'] = []  #已经完成了购买那么就要清空了购物车
            shop_data['total'] = 0
        else:
            print('\033[31m交易失败\033[0m')
Example #7
0
def transfer(acc_data):  #4、转账
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = """
          ------balance 余额 INFO ---------
          Credit:     %s
          Balance:    %s
          """ % (account_data['id'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        duifang_account = input("\033[31;1m请输入对方帐户名:\033[0m").strip()
        transfer_amount = input("\033[31;1m转账金额:\033[0m").strip()
        if duifang_account and transfer_amount == "b":
            return
        elif len(transfer_amount) > 0 and transfer_amount.isdigit():
            new_blance = transaction.make_transaction(
                trans_logger,
                account_data,
                "transfer",
                transfer_amount,
                re_account=duifang_account)
            if new_blance:
                print("\033[41;1m转账成功!\033[0m")
                print("\033[33;1m最新余额:%s\033[0m" % new_blance["balance"])
        else:
            print("\033[33;1m 账户或输入金额 is not a valid amount!\033[0m")
Example #8
0
def withdraw(acc_data):
    '''
    print current balance and let user do the withdraw action
    :param acc_data:
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        withdraw_amount = input(
            "\033[33;1mInput withdraw amount:\033[0m").strip()
        if withdraw_amount.isdigit() and len(withdraw_amount) > 0:
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data,
                                                       'withdraw',
                                                       withdraw_amount)
            if new_balance:
                print('''\033[31;1mNew Balance:%s\033[0m''' %
                      (new_balance['balance']))
            else:
                print(
                    '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                    % withdraw_amount)
        if withdraw_amount == 'b':
            back_flag = True
Example #9
0
def repay(acc_data):
    """
    还款功能
    :param acc_data: 用户数据
    :return:
    """
    # 实时获取用户数据,保证数据是最新的
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    flag = False
    while not flag:
        # 输入还款金额
        repay_amount = input("Enter repayment amount: ").strip()
        if len(repay_amount) > 0 and repay_amount.isdigit():
            new_balance = transaction.make_transaction(transaction_log,
                                                       account_data, 'repay',
                                                       repay_amount)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %
                      (new_balance['balance']))
        elif repay_amount == 'b':
            flag = True
        else:
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % repay_amount)
Example #10
0
def withdraw(acc_data):
    # 取款
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    flag = False
    while not flag:
        # 输入取款金额
        withdraw_money = input("Enter withdrawal amount: ").strip()
        if len(withdraw_money) > 0 and withdraw_money.isdigit():
            new_balance = transaction.make_transaction(transaction_log,
                                                       account_data,
                                                       'withdraw',
                                                       withdraw_money)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %
                      (new_balance['balance']))
        elif withdraw_money == 'b':
            flag = True
        else:
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % withdraw_money)
Example #11
0
def withdraw(acc_data):
    '''
    账单取款函数
    :param acc_data:
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' -*-*-*-*-*-*-*-*- 账户余额信息 -*-*-*-*-*-*-*-*-
        Credit :    %s
        Balance:    %s\n''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        withdraw_amount = input("请输入取款余额[q=quit]>>>:").strip()
        if len(withdraw_amount) > 0 and withdraw_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data,
                                                       'withdraw',
                                                       withdraw_amount)
            time.sleep(0.1)
            if new_balance:
                print('''\033[42;1m余额总数:%s\033[0m,重新登录后生效~''' %
                      (new_balance['balance']))
        elif withdraw_amount == 'q':
            back_flag = True
        else:
            print("[\033[31;1m输入不合法,请重新输入\033[0m]")
Example #12
0
def repay(acc_data):
    '''
   存款
    acc_data:包括ID,is_authenticaed,用户帐号信息
   :param acc_data:
   :return:
   '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    print('repay', account_data)
    current_balance = ''' ---------------------BALANCE INFO-----------------
    Credit :    %s
    Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        repay_amount = input(
            "\033[32;1mInput repay amout(input 'b' is back):\033[0m").strip()
        if len(repay_amount) > 0 and repay_amount.isdigit():
            print("xia")
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data, 'repay',
                                                       repay_amount)
            print(new_balance)
            if new_balance:
                print('''\033[34;1mNEW Balance:%s\033[0m''' %
                      (new_balance['balance']))
        elif repay_amount == 'b':
            back_flag = True
        else:
            print(
                "\033[31;1m%s is not valid amount ,Only accept interger!\033[0m"
                % repay_amount)
Example #13
0
def withdraw(acc_data):
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = '''------- BALANCE INFO --------
        Credit :  %s
        Balance:  %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        withdraw_amount = input(
            'input withdraw amount, input q to go back: ').strip()
        if len(withdraw_amount) > 0 and withdraw_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data,
                                                       'withdraw',
                                                       withdraw_amount)
            if new_balance:
                print('New Balance: %s' % (new_balance['balance']))
        elif withdraw_amount == 'q':
            back_flag = True
        else:
            print('Invalid Amount!')

    user_data['account_data'] = accounts.load_current_balance(
        acc_data['account_id'])
    interactive(user_data)
Example #14
0
def repay(acc_data):
    '''
    print current balance and let user repay the bill
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    #for k,v in account_data.items():
    #    print(k,v )
    current_balance= ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' %(account_data['credit'],account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        repay_amount = input("\033[33;1mInput repay amount:\033[0m").strip()
        if len(repay_amount) >0 and repay_amount.isdigit():
            print('ddd 00')
            new_balance = transaction.make_transaction(trans_logger,account_data,'repay', repay_amount)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %(new_balance['balance']))

        else:
            print('\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m' % repay_amount)

        if repay_amount == 'b':
            back_flag = True
Example #15
0
def transfer(acc_data):
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
            Credit :    %s
            Balance:    %s''' % (account_data['credit'],
                                 account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        trans_amount = input('\033[33;1mInput transfer amount:\033[0m')
        if len(trans_amount) > 0 and trans_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data,
                                                       'transfer',
                                                       trans_amount)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %
                      (new_balance['balance']))

        else:
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % trans_amount)

        if trans_amount == 'b':
            back_flag = True
Example #16
0
def transfer(acc_data):
    '''
   转账
   :param access_data:
   :return:
   '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = '''---------------------BALANCE INFO-----------------
        Credit :    %s
        Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        transfer_amount = input(
            "\033[33;1mInput transfer amount(input 'b' is back):\033[0m"
        ).strip()
        if len(transfer_amount) > 0 and transfer_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data,
                                                       'transfer',
                                                       transfer_amount)
            if new_balance:
                print('''\033[32;1mNEW Balance:%s\033[0m''' %
                      (new_balance['balance']))
        elif transfer_amount == "b":
            back_flag = True
        else:
            print(
                '\033[31;1m[%s] is not a valid amount , only accept integer\033[0m'
                % transfer_amount)
Example #17
0
def repay(acc_data):
    '''
    print current balance and let user repay the bill
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
       Credit :    %s
       Balance:    %s''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        repay_amount = input("\033[33;1mInput repay amount:\033[0m").strip()
        if len(repay_amount) > 0 and repay_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,
                                                       account_data, 'repay',
                                                       repay_amount)
            if new_balance:
                print("'\033[34;1mNew Balance:%s\033[0m" %
                      new_balance['balance'])
        else:
            print(
                '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                % repay_amount)
        if repay_amount == 'b':
            back_flag = True
Example #18
0
def transfer(acc_data):
    '''
        print current balance and let user do the transfer action
        :param acc_data:
        :return:
        '''
    roll_out_account_data = accounts.load_current_balance(
        acc_data['account_id'])
    # print(roll_out_account_data)
    current_balance = ''' --------- BALANCE INFO --------
            Credit :    %s
            Balance:    %s''' % (roll_out_account_data['credit'],
                                 roll_out_account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        transfer_id = input(
            "\033[34;1mInput transfer id(return input(b)):\033[0m").strip()
        if transfer_id == 'b':
            back_flag = True
            continue
        is_exist = accounts.load_account_is_exist(transfer_id)
        if is_exist:
            roll_in_account_data = accounts.load_current_balance(transfer_id)
            transfer_amount = input(
                "\033[33;1mInput transfer amount(return input(b)):\033[0m"
            ).strip()
            if transfer_id == 'b':
                back_flag = True
                continue
            if len(transfer_amount) > 0 and transfer_amount.isdigit():
                roll_out_id = roll_out_account_data['id']
                new_balance = transaction.make_transaction(
                    trans_logger, roll_out_account_data, 'transfer_roll_out',
                    transfer_amount)
                if new_balance:
                    print('''\033[35;1m%s New Balance:%s\033[0m''' %
                          (roll_out_id, new_balance['balance']))
                    new_balance = transaction.make_transaction(
                        trans_logger, roll_in_account_data, 'transfer_roll_in',
                        transfer_amount)
                    print('''\033[35;1m%s New Balance:%s\033[0m''' %
                          (transfer_id, new_balance['balance']))
            else:
                print(
                    '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                    % transfer_amount)
Example #19
0
def transfer(acc_data):
    '''
    转账
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
                Credit :    %s
                Balance:    %s''' % (account_data['credit'],
                                     account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        receiver = input("\033[33;1mInput receiver:\033[0m").strip()
        if receiver == acc_data["account_id"]:
            print("\033[33; receiver is yourself ... \033[0m")
        elif receiver == "b":
            back_flag = True
        else:
            #判断收款人是否存在,存在返回用户信息,不存在返回False
            receiver_account_data = auth.auth_check(receiver)
            if receiver_account_data:
                if receiver_account_data["status"] == 0:  #检查收款人的状态是否正常
                    transfer_amount = input(
                        "\033[33;1mInput transfer amount:\033[0m").strip()
                    if len(transfer_amount) > 0 and transfer_amount.isdigit():
                        new_balance = transaction.make_transaction(
                            trans_logger, account_data, 'transfer',
                            transfer_amount)
                        transaction.make_transaction(trans_logger,
                                                     receiver_account_data,
                                                     'repay', transfer_amount)
                        if new_balance:
                            print('''\033[42;1mNew Balance:%s\033[0m''' %
                                  (new_balance['balance']))
                            back_flag = True

                    else:
                        print(
                            '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                            % transfer_amount)

                    if transfer_amount == 'b':
                        back_flag = True
            else:
                continue
Example #20
0
def transfer(acc_data):
    '''
    打印当前余额,并转帐
    :param acc_data:
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s

(Tip: input [b] to back)''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        receiver = input("\033[33;1mInput receiver:\033[0m").strip()  # 收款人
        if receiver == account_data["id"]:  # 判断帐号是否为自己
            print("\033[31;1mThe receiver is yourself!\033[0m")
            continue
        elif receiver == "b":
            break
        else:
            receiver_account_data = auth.acc_check(receiver)  # 判断收款人帐号是否存在和过期
            status = receiver_account_data['status']
            if status == 0:  # 只有收款人为普通帐户,且状态正常,才能转帐
                transfer_amount = input(
                    "\033[33;1mInput transfer amount:\033[0m").strip()
                if len(transfer_amount) > 0 and transfer_amount.isdigit():
                    new_balance = transaction.make_transaction(
                        trans_logger, account_data, 'transfer',
                        transfer_amount)
                    transaction.make_transaction(trans_logger,
                                                 receiver_account_data,
                                                 'receive', transfer_amount)
                    if new_balance:
                        print('''\033[42;1mNew Balance:%s\033[0m''' %
                              (new_balance['balance']))

                else:
                    print(
                        '[\033[31;1m%s\033[0m] is not a valid amount, only accept integer!'
                        % transfer_amount)

                if transfer_amount == 'b':
                    back_flag = True
Example #21
0
def transfer(acc_data):
    '''
    打印当前余额,并转帐
    :param acc_data:
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' -*-*-*-*-*-*-*-*- 账户信息 -*-*-*-*-*-*-*-*-
        Credit :    %s
        Balance:    %s
        ''' % (account_data['credit'], account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        receiver = input("\033[33;1m收款人:\033[0m[q=quit]>>>:").strip()  # 收款人
        if receiver == account_data["id"]:
            print("\033[31;1m收款人不能为自己\033[0m")
            continue
        elif receiver == "q":
            break
        else:
            receiver_account_data = auth.acc_check(receiver)
            status = receiver_account_data['status']
            if status == 0:
                transfer_amount = input(
                    "\033[33;1m收款金额:\033[0m[q=quit]").strip()
                if len(transfer_amount) > 0 and transfer_amount.isdigit():
                    new_balance = transaction.make_transaction(
                        trans_logger, account_data, 'transfer',
                        transfer_amount)
                    transaction.make_transaction(trans_logger,
                                                 receiver_account_data,
                                                 'receive', transfer_amount)
                    if new_balance:
                        print('''\033[42;1m帐号余额:%s\033[0m''' %
                              (new_balance['balance']))

                else:
                    print('[\033[31;1m输入不合法,请重新输入\033[0m]')

                if transfer_amount == 'q':
                    back_flag = True
        if transfer == 'q':
            back_flag = True
Example #22
0
def shopping_mall_this(acc_data):
    account_data = accounts.load_current_balance(
        acc_data['account_id'])  #取得最新数据
    saving = account_data["balance"]  #得到可用额度
    surplus_amount = main.shopping_action(saving)  #需要返回 消费的金额
    new_blance = transaction.make_transaction(trans_logger, account_data,
                                              'consume',
                                              surplus_amount)  # 交易完成后得到最新数据
    if new_blance:
        print("\033[33;1m最新余额:%s\033[0m" % new_blance["balance"])
Example #23
0
def consume_api(acc_data, amount, goods):
    new_acc_data = transaction.make_transaction(transaction_logger, acc_data,
                                                'consume', amount)
    if new_acc_data:
        consumption_logger.info('account:%s   goods:%s   payed:%s' %
                                (new_acc_data['id'], goods, amount))
        return True
    else:
        print('Payment is failed.')
        return False
Example #24
0
def consume(total_cost):
    account = input('请输入您的信用卡账号: ').strip()
    passwd = input('请输入您的行用卡密码: ').strip()
    payment_date = auth.account_auth(account, passwd)
    print('账户现有余额为%s' % (payment_date['balance']))
    if payment_date:
        new_balance = transaction.make_transaction(payment_date, 'transfer',
                                                   total_cost)
        if new_balance:
            print('账户消费后余额为%s' % (new_balance['balance']))
Example #25
0
def transfer(user_data):
    """
    实现转账功能
    :param user_data:
    :return:
    """
    back_flag = True  # 标志位
    while back_flag:
        account_data = accounts.load_account(
            user_data['account_id'])  # 加载用户最新信息
        current_balance = ''' ----- BALANCE INFO -----
                        Credit_limit :    %s
                        Credit_balance:   %s''' % (
            account_data['credit_limit'], account_data['credit_balance'])
        print(current_balance)
        transfer_account = input("请输入收款人账号:").strip()  # 用户输入收款人账号
        if transfer_account.isdigit():
            transfer_account_data = accounts.load_account(
                int(transfer_account))  # 加载收款人用户信息
            if not transfer_account_data:  # 判断是否存在该卡号
                print("你输入的卡号有误,请重新输入")
                continue
            transfer_amount = input("请输入转账金额:").strip()  # 用户输入转账金额
            # 判断用户是否输入整型数字
            if len(transfer_amount) > 0 and transfer_amount.isdigit():
                # 当前卡转账后剩余的钱
                new_account_data = transaction.make_transaction(
                    account_data, "withdraw", transfer_amount,
                    transaction_logger)
                if new_account_data:
                    # 收款方进账的钱
                    new_transfer_account_data = transaction.make_transaction(
                        transfer_account_data, "accept", transfer_amount,
                        transaction_logger)
                    print("当前卡最新余额为:%s" % new_account_data['credit_balance'])
            elif transfer_amount == "b" or transfer_amount == "back":  # 返回功能
                back_flag = False
            else:
                print("请合法输入数字或者返回键b")
        elif transfer_account == "b" or transfer_account == "back":  # 返回功能
            back_flag = False
        else:
            print("请合法输入数字或者返回键b")
Example #26
0
def transfer(access_data):
    """
    转帐
    :return:
    """
    print(access_data)
    print("transfer")
    # 调用account模块的load_account方法,从数据库从load出用户信息
    account_data = account.load_account(access_data["account_id"])
    print(account_data)
    current_balance = """
           -------------BALANCE INFO--------------
           Credit:%s
           Balance:%s
           """ % (account_data["credit"], account_data["balance"])
    back_flag = False
    while not back_flag:
        print(current_balance)
        transfer_amount = input(
            "\033[31;1mInput transfer amount(b=back):\033[0m").strip()
        # 如果用户输入整型数字
        if len(transfer_amount) > 0 and transfer_amount.isdigit():
            # 调用transaction模块的方法,参数分别是用户帐户信息,交易类型,交易金额
            new_account_data = transaction.make_transaction(
                account_data, "transfer", transfer_amount, transaction_logger)
            if new_account_data:
                print("\033[42;1mNew Balance:%s\033[0m" %
                      new_account_data["balance"])
            new_account_data2 = transaction.make_transaction(
                account_data, "repay", new_account_data["balance"],
                transaction_logger)
            if new_account_data2:
                print("\033[42;1mNew Balance2:%s\033[0m" %
                      new_account_data2["balance"])

        else:
            print(
                "\033[31;1m%s is not valid amount,Only accept interger!\033[0m"
                % transfer_amount)

        if transfer_amount == "b" or transfer_amount == "back":
            back_flag = True
Example #27
0
def transfer(acc_data):
    """
    print current balance and let user do the transfer action
    :param acc_data:
    :return:
    """
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance = ''' --------- BALANCE INFO --------
            Credit :    %s
            Balance:    %s''' % (account_data['credit'],
                                 account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        transfer_account_id = input(
            "\033[33;1mInput transfer account:\033[0m").strip()
        if transfer_account_id == 'b':
            back_flag = True
            continue
        transfer_account_data = accounts.load_current_balance(
            transfer_account_id)
        if transfer_account_data:
            transfer_amount = input(
                "\033[33;1mInput transfer amount:\033[0m").strip()
            if len(transfer_amount) > 0 and transfer_amount.isdigit():
                new_balance = transaction.make_transaction(
                    trans_logger, account_data, 'transfer', transfer_amount)
                transfer_account_new_balance = transaction.make_transaction(
                    trans_logger, transfer_account_data, 'repay',
                    transfer_amount)
                if new_balance and transfer_account_new_balance:
                    print('''\033[42;1mNew Balance:%s\033[0m''' %
                          (new_balance['balance']))
            else:
                print(
                    '\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m'
                    % transfer_amount)

            if transfer_amount == 'b':
                back_flag = True
Example #28
0
def pay(acc_data, amount):
    """
    api for user to pay for their shopping cart
    :return:
    """
    account_data = accounts.load_current_balance(acc_data['account_id'])
    new_balance = transaction.make_transaction(trans_logger, account_data,
                                               'consume', amount)
    if new_balance:
        print('''\033[42;1mNew Balance:%s\033[0m''' % (new_balance['balance']))
        return True
    else:
        return False
Example #29
0
def transfer(acc_data):
    flag = True
    while flag:
        tran_id = input('\033[33;1mInput the account to transfer:\033[0m').strip()
        tran_acc_data = accounts.load_account(tran_id)
        if not tran_acc_data:
            return
        tran_amount = input("\033[33;1mInput transfer amount(Press b to cancel):\033[0m").strip()
        if len(tran_amount) > 0 and tran_amount.isdigit():
            new_acc_data = transaction.make_transaction(transaction_logger, acc_data, 'transfer', tran_amount)
            if new_acc_data:
                transaction.make_transaction(transaction_logger, tran_acc_data, 'transfer_in', tran_amount)
                flag = False
        elif tran_amount == 'b':
            return
        else:
            input('\033[33;1mInvalid transfer amount!\033[0m')
    balance_info = '''-------Current Balance Info--------
    Balance: %s
    Credit: %s
    ''' % (new_acc_data['balance'], new_acc_data['credit'])
    print(balance_info)
Example #30
0
def pay(amount):
    acc_data = get_user_data()
    account_data = accounts.load_current_balance(acc_data['account_id'])
    if amount > 0:
        new_balance = transaction.make_transaction(trans_logger, account_data,
                                                   'pay', amount)
        if new_balance:
            return True
    else:
        print(
            '[\033[31;1m%s\033[0m] is not a valid amount, only accept integer!'
            % amount)
        return None
Example #31
0
def mall_transfer(user_data, money, mall_name):
    print(user_data, money, mall_name)
    now_balance = accounts.load_current_balance(user_data["id"])
    user_data["user_data"]["balance"] = now_balance  # 在进行操作前先刷新下现在的余额
    print("这是mall里的user_date", user_data)

    db_path = db_handler.db_handler()  # 调用数据库判断模块获取数据库地址
    receive_user_data = {'user_data': ''}
    db_account = "%s\\accounts\\%s.json" % (db_path, mall_name)
    if os.path.exists(db_account):
        f = open(db_account, "r")
        receive_user_data['user_data'] = json.loads(f.read())
        f.close()

    transaction.make_transaction(money, "transfer_to_mall", user_data)
    now_balance2 = accounts.load_current_balance(user_data["id"])
    if now_balance > now_balance2:  # 如果钱被成功划走了,那么就在给对方帐号打钱
        transaction.make_transaction(money, "transfer_from", receive_user_data)

        return True
    else:
        return False
Example #32
0
def withdraw(acc_data):
    '''
    print current balance and let user do the withdraw action
    :param acc_data:
    :return:
    '''
    account_data = accounts.load_current_balance(acc_data['account_id'])
    current_balance= ''' --------- BALANCE INFO --------
        Credit :    %s
        Balance:    %s''' %(account_data['credit'],account_data['balance'])
    print(current_balance)
    back_flag = False
    while not back_flag:
        withdraw_amount = input("\033[33;1mInput withdraw amount:\033[0m").strip()
        if len(withdraw_amount) >0 and withdraw_amount.isdigit():
            new_balance = transaction.make_transaction(trans_logger,account_data,'withdraw', withdraw_amount)
            if new_balance:
                print('''\033[42;1mNew Balance:%s\033[0m''' %(new_balance['balance']))

        else:
            print('\033[31;1m[%s] is not a valid amount, only accept integer!\033[0m' % withdraw_amount)

        if withdraw_amount == 'b':
            back_flag = True