Day26.转账功能

1.转账功能_用户视图层(src.py)和银行相关业务接口(bank_interface.py)

   转账功能:用户视图层(src.py)中的代码

# 6. 转账功能
@common.login_auth
def transfer():
    '''
    1.接收用户输入的 转账目标用户
    2.接收用户输入的 转账金额
    '''
    while True:
        #  1) 让用户输入转账用户与金额
        to_user = input('请输入转账目标用户:').strip()
        money = input('请输入转账金额:').strip()

        # 2)判断用户输入的金额是否是数字或 > 0
        if not money.isdigit():
            print('请输入正确转账金额')
            continue
        money = int(money)
        if money > 0:
            # 3)调用转账接口
            flag, msg = bank_interface.transfer_interface(
                # 当前用户,目标用户,转账金额
                login_user, to_user, money
            )
            if flag:
                print(msg)
                break
            else:
                print(msg)

        else:
            print('请输入正确转账金额')

   转账功能:银行相关业务接口(bank_interface.py)中的代码

# 转账接口
def transfer_interface(login_user, to_user, input_money):
    '''
    1.获取"当前用户"数据
    2.获取"目标用户"数据
    3.获取转账金额
    '''
    
    # 1)获取 "当前用户" 的字典
    login_user_dic = db_handler.select(login_user)

    # 2)获取 "目标用户" 的字典
    to_user_dic = db_handler.select(to_user)

    # 3)判断目标用户是否存在
    if not to_user_dic:
        return False, '目标用户不存在'
    
    # 4)如用户存在,则判断 "当前用户的转账金额" 是否足够
    if login_user_dic['balance'] >= input_money:
        
        # 5)若足够,则开始给目标用户转账
        # 5.1)给当前用户的数据,做减钱操作
        login_user_dic['balance'] =  login_user_dic['balance'] - input_money

        # 5.2)给目标用的数据,做加钱操作
        to_user_dic['balance'] = to_user_dic['balance'] + input_money

        # 6) 保存用户数据
        # 6.1)调用数据处理层的save功能,保存当前用户数据
        db_handler.save(login_user_dic)
        # 6.2)调用数据处理层的save功能,保存目标用户数据
        db_handler.save(to_user_dic)

        return True, '用户:{} 给 用户:{} 转账 {} $ 成功!'.format(login_user, to_user, input_money)
    else:
        return False, '当前用户转账金额不足!'

  用户信息查询接口:db_handler.py 的代码

# 查看数据
def select(username):
    # 1) 接收接口层传过来的username用户名,拼接用户json文件路径
    user_path = os.path.join(
        settings.USER_DATA_PATH, '{}.json'.format(username)
    )
    # 2) 校验用户json文件是否存在
    if os.path.exists(user_path):
        # 3) 打开数据,并返回分接口层
        with open(user_path, 'r', encoding='utf-8') as f:
            user_dic = json.load(f)
            return user_dic
    # 3) 不return, 默认return None

2.转账功能_程序运行结果

 

posted on 2024-06-12 15:44  与太阳肩并肩  阅读(6)  评论(0编辑  收藏  举报

导航