Day25.查看余额与提现功能
1.查看余额与提现功能_查看余额功能逻辑代码
查询余额:src.py 的代码
# 3. 查看余额 @common.login_auth def check_balance(): # 直接调用查看余额接口,获取用户余额 balance = user_interface.check_bal_interface( login_user ) print('用户{} 账户余额为:{}'.format(login_user, balance))
查询余额:user_interface.py 的代码
# 查看余额接口 def check_bal_interface(username): balance = db_handler.select(username).get('balance') return balance
查询余额: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.查看余额与提现功能_提现功能的代码逻辑
提现功能:src.py 中的代码
# 4. 提现功能 @common.login_auth def withdraw(): while True: # 1) 用户输入提现金额 input_money = input('请输入提现金额:').strip() # 2) 判断用户输入的金额是否是数字 if not input_money.isdigit(): print('请重新输入') continue # 3) 用户提现金额,将提现的金交付给接口层来处理 input_money = int(input_money) flag, msg = bank_interface.withdraw_interface( login_user, input_money ) if flag: print(msg) break else: print(msg)
提现功能:bank_interfack.py 中的代码
''' 银行相关业务的接口 ''' from db import db_handler # 提现接口(手续费) def withdraw_interface(username, money): # 1) 先获取用户字典 user_dic = db_handler.select(username) # 账户中的金额 balance = int(user_dic.get('balance')) # 提现本金 + 5%的手续费 money2 = int(money) * 1.05 # 判断用户金额是否足够 if balance >= money2: # 2) 修改用户字典中的金额 balance -= money2 user_dic['balance'] = balance # 3) 再保存数据,或更新数据 db_handler.save(user_dic) return True, '用户[{}]提现金额[{}]成功,手续费为{}'.\ format(username, money, money2-float(money)) return False, '用户[{}]提现金额[{}]失败,金额不足'.format(username, money)
提现功能: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
提现功能的执行结果: