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
posted @ 2017-10-29 09:26  第七王爵  阅读(256)  评论(0编辑  收藏  举报