首页 > 其他分享 >Day25.查看余额与提现功能

Day25.查看余额与提现功能

时间:2024-06-11 22:44:37浏览次数:26  
标签:username 提现 Day25 money 余额 user path balance

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

 

提现功能的执行结果:

 

标签:username,提现,Day25,money,余额,user,path,balance
From: https://www.cnblogs.com/vless/p/18242915

相关文章

  • Day25.密码加密、登录认证装饰器
    1.密码加密、登录认证装饰器_md5加密方法代码 md5加密方法代码:importhashlib#md5加密defget_pwd_md5(password):md5_obj=hashlib.md5()md5_obj.update(password.encode('utf-8'))#密码加盐salt='一二三四五'md5_obj.update(salt.enc......
  • Day25.登录功能
    1.登录功能_用户视图层(src.py)和逻辑接口层(user_interface.py)src.py视图层登录功能代码:#全局变量,记录用户是否已登录login_user=None#2.登录功能deflogin():whileTrue:#1)用户输入用户名和密码username=input('请输入用户名:').stri......
  • Day25.拆分版注册功能
    1.拆分版注册功能_第一层:用户视图层(src.py)和第二层:逻辑接口层(user_interface.py)第一层:用户视图层(src.py)_注册功能:#注册功能_分层版defregister():whileTrue:#1)让用户输入用户名和密码进行校验username=input('请输入用户名:').strip()......
  • Day25.软件目录与视图层搭建
    1.软件目录与视图层搭建_ATM的目录结构2.软件目录与视图层搭建_程序入口start.py文件start.py代码如下:'''程序的入口'''importsysimportos#添加解释器的环境变量sys.path.append(os.path.dirname(__file__))fromcoreimportsrc#开始执行项目函数if......
  • day25-索引和函数及存储过程
    1.索引在数据库中索引最核心的作用是:加速查找。例如:在含有300w条数据的表中查询,无索引需要700秒,而利用索引可能仅需1秒。mysql>select*frombigwherepassword="81f98021-6927-433a-8f0d-0f5ac274f96e";+----+---------+---------------+------------------------------......
  • 【OracleEBS】 科目余额SQL
     selectgb.period_year会计年度,gb.period_name会计期间,gcck.concatenated_segments科目代码,gl_flexfields_pkg.get_description_sql(gcck.chart_of_accounts_id,'',......
  • Day25 迭代器之Iterator底层
    Day25迭代器之Iterator底层一、迭代器1、概念:迭代器(Iterator)是一种用于遍历集合(Collection)元素的接口,它提供了统一的方式来访问集合中的元素,而不暴露集合的内部结构。通过迭代器,我们可以依次访问集合中的每个元素,进行遍历和操作。2、使用步骤:获取集合的迭代器:Iterat......
  • 算法打卡day25|回溯法篇05|Leetcode 491.递增子序列、46.全排列、47.全排列 II
     算法题Leetcode491.递增子序列题目链接:491.递增子序列大佬视频讲解:递增子序列视频讲解 个人思路和昨天的子集2有点像,但昨天的题是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,因为排完序的数组都是自增子序列了。解决......
  • 备战蓝桥杯Day25 - 二叉搜索树查询和删除操作
    一、查询递归查询寻找的值比根节点大,遍历右子树;寻找的值比根节点小,遍历左子树。defqurey(self,node,val):ifnotnode:#没有节点,返回空returnNoneifnode.data<val:returnself.qurey(node.rchild,val)......
  • 记一次 iPhone 美区充值余额
    代理软件(都需要美区)参见iPhone软件整理美区礼品卡购买教程注册一个美区AppleID账号进AppleID官网修改为免税区,第一步设置好则无需修改打开支付宝,切换地区为旧金山点出境(Coupon)点折扣礼卡最下面更多大牌折扣礼卡购买applestore礼品卡充值成功......