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.转账功能_程序运行结果