zoukankan      html  css  js  c++  java
  • python基础之ATM-3

    import json
    import os
    import sys
    import time
    import accounts
    import db_handler
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)
    from conf import settings
    import accounts
    import logger
    '''
    本模块是auth,用户认证,其中装饰器是检验账户是否冻结
    '''

    def lock_judge(func):
    '''
    该方法实现判断账户是否被冻结
    :param func: 入参方法
    :return:
    '''
    def lock_account(user_data):
    print(user_data)
    func(user_data)
    acc_account = accounts.load(user_data["account_data"]["account"])
    if acc_account["status"] == "lock":
    exit("该账户已被冻结")
    return user_data
    return lock_account

    def acc_auth(account,password):
    '''
    该模块实现判断用户登陆信息
    :param account: 信用卡账户
    :param password: 信用卡密码
    :return: 返回用户信息
    '''
    db_path = db_handler.db_handler(settings.DATABASE)
    db_file = "%s\%s.json"%(db_path,account)
    if os.path.isfile(db_file):
    with open(db_file) as f:
    account_data = json.load(f)
    if account_data["pass"] == password:
    exp_time_stamp = time.mktime(time.strptime(account_data["engine"],"%Y-%m-%d"))
    if time.time() > exp_time_stamp:
    print("账户%s已失效,请更换卡片"%account)
    else:
    return account_data

    @lock_judge
    def acc_login(user_data):
    '''
    该函数是用于用户输入用户名,密码,调用认证函数,认证成功后设置用户登陆状态数据
    :param user_data:
    :return user_data
    '''
    count = 0
    while user_data["is_auth"] is False and count < 3:
    account = input("请输入信用卡账号 >>>")
    password = input("请输入信用卡密码 >>>")
    auth = acc_auth(account,password)
    if auth:
    user_data["is_auth"] = True
    user_data["account_id"] = account
    user_data["account_data"] = auth
    info = "%s登陆了信用卡中心" % account
    logger.write_logger(settings.logfile1, info)
    return user_data
    count += 1
  • 相关阅读:
    windows环境搭建Vue2.0开发环境
    SQL Server Profiler监听指定SQL:勾选哪些事件
    Visual Studio 2019 双击解决方案,能打开项目文件,而不是打开.csproj的项目文件内容
    关于ElementUI的DatePicker时区问题
    CRM365切换语言的时候,产品表Product的名称字段name会改变
    两台服务器上SQL Server数据库数据互操作示例
    第一组项目总结
    Beta(6/6)
    Beta(4/6)
    Beta(2/6)
  • 原文地址:https://www.cnblogs.com/hqd2008/p/7749366.html
Copyright © 2011-2022 走看看