Esempio n. 1
0
def buy_product(user):
    show_cart(user)
    while True:
        show_products(user)
        choice = input("请输入商品编号进行购买,购物完成请输入q退出购物,输入l查看已购买商品信息\n")
        if re.fullmatch("\d+",choice) and int(choice) < len(products):
            product_name = products[int(choice)]["name"]
            product_price = products[int(choice)]["price"]
            if product_name in users[user]["products"]:
                print("您已购买过该商品:\033[1;31;43m %s \033[0m " % product_name)
            elif consume_amount(user,product_price):
                users[user]["products"][product_name] = product_price
                print("成功购买商品:\033[1;33;42m %s \033[0m  " % product_name)
                user_logger.info("%s 用户成功购买商品: %s "%(user,product_name))
            else:
                print("您的余额不足以购买 %s"%product_name)
                user_logger.info("%s 用户因为余额不足,购买商品:%s 失败"%(user,product_name))
        elif choice.upper() == "Q":
            show_cart(user)
            json_func(USER_FILE, users)
            break
        elif choice.upper() == "L":
            show_cart(user)
        else:
            print(":\033[1;31;43m 输入有误,请重新选择! \033[0m ")
Esempio n. 2
0
def transfer_amount(user, in_user, amount):
    if not check_user(in_user):
        print("入账账户 %s 不存在!" % (user, in_user))
        user_logger.warning("%s转账时,入账账户%s不存在!" % (user, in_user))
        return False
    amount = check_amount(amount)
    if not amount:
        print("输入的金额非正数")
        user_logger.warning("%s转账时,输入的金额非正数" % user)
        return False
    fee = 0.05 * amount
    if not check_user_amount(user, (amount + fee)):
        print("账户余额为 %s元,不足转账!" % (users_atm[user]["usable"]))
        user_logger.warning("%s转账时,账户余额 %s 已不足!" %
                            (user, users_atm[user]["usable"]))
        return False
    users_atm[user]["usable"] -= (amount + fee)
    users_atm[in_user]["usable"] += amount
    users_atm["admin"]["usable"] += fee
    print("成功转账给 %s 金额 %s 元!收取手续费用 %s 元!" % (in_user, amount, fee))
    user_logger.info("%s 成功转账给 %s 金额 %s 元!手续费用 %s !" %
                     (user, in_user, amount, fee))
    bank_logger.info("%s 成功转账给 %s 金额 %s 元!手续费用 %s !" %
                     (user, in_user, amount, fee))
    bank_logger.info("admin 账户收入手续费金额 %s 元!" % fee)
Esempio n. 3
0
def show_cart(user):
    user_logger.info("%s 查看购物车!"%user)
    if users[user]["products"]:
        print("您的购物车有如下商品".center(100, "-"))
        for i in users[user]["products"]:
            print(i, users[user]["products"][i])
    else:
        print("您尚未购买商品!")
Esempio n. 4
0
def login_func():
    global online
    while True:
        user = input("your name:").strip()
        password = get_md5(input("your password:"******"password"):
            online = 1
            print("欢迎 %s 登陆系统" % user)
            user_logger.info("%s 登陆系统" % user)
            role = users.get(user).get("role")
            return user, role
        else:
            print("账号或密码错误!")
            user_logger.warning("%s 登陆时,输错登陆账户信息!" % user)
Esempio n. 5
0
def consume_amount(user, amount):
    usable_amount = users_atm[user]["usable"]
    if not amount:
        print("扣款金额非正数" % user)
        user_logger.warning("%s扣款时,传递的扣款金额非正数" % user)
        return False
    if amount > usable_amount:
        print("扣款金额 %s 大于可用金额%s 元!扣款失败!" % (amount, usable_amount))
        user_logger.warning("%s扣款时,扣款金额 %s 大于可用金额%s 元!扣款失败!" %
                            (user, amount, usable_amount))
        return False
    users_atm[user]["usable"] -= amount
    print("成功扣款您的金额 %s 元!" % (amount))
    user_logger.info("%s 成功扣款金额 %s 元!" % (user, amount))
    bank_logger.info("%s 成功扣款金额 %s 元!" % (user, amount))
    return True
Esempio n. 6
0
def withdraw_amount(user, amount):
    amount = check_amount(amount)
    if not amount:
        print("输入的提现金额非正数")
        user_logger.warning("%s提现时,输入的提现金额非正数" % user)
        return False
    fee = 0.05 * amount
    if not check_user_amount(user, (amount + fee)):
        print("账户余额 %s元 不足提现!" % (users_atm[user]["usable"]))
        user_logger.warning("%s提现时,账户余额 %s 已不足!" %
                            (user, users_atm[user]["usable"]))
        return False
    users_atm[user]["usable"] -= (amount + fee)
    users_atm["admin"]["usable"] += fee
    print("成功提现金额 %s 元!收取手续费用 %s 元" % (amount, fee))
    user_logger.info("%s 成功提现金额 %s 元!手续费用 %s 元" % (user, amount, fee))
    bank_logger.info("%s 成功提现金额 %s 元!手续费用 %s 元" % (user, amount, fee))
    bank_logger.info("admin 账户收入手续费金额 %s 元!" % fee)
Esempio n. 7
0
def repay_amount(user, amount):
    amount = check_amount(amount)
    used_amount = users_atm[user]["limit"] - users_atm[user]["usable"]
    if not amount:
        print("输入的还款金额非正数")
        user_logger.warning("%s还款时,输入的还款金额非正数" % user)
        return False
    if amount > used_amount:
        print("输入的还款金额大于已用金额,只需还款 %s 元!" % (used_amount))
        user_logger.info("%s还款时,输入的还款金额大于已用金额,只需还款 %s 元!" %
                         (user, used_amount))
        return False
    users_atm[user]["usable"] += amount
    users_atm["admin"]["usable"] += amount
    print("成功还款金额 %s 元!" % (amount))
    user_logger.info("%s 成功还款金额 %s 元!" % (user, amount))
    bank_logger.info("%s 成功还款金额 %s 元!" % (user, amount))
    bank_logger.info("admin 账户收入 %s 的还款金额 %s 元!" % (user, amount))
Esempio n. 8
0
def change_status(admin):
    while True:
        change = input("请输入用户账号和修改状态(1代表可用,0代表冻结)\n账号和状态用逗号分割\n>>:")
        if re.fullmatch("\w+[,|,]{1}[1|0]{1}", change):
            change_lis = re.split("[,|,]", change)
            user = change_lis[0]
            change_statu = int(change_lis[1])
            if user in users_atm:
                users_atm[user]["status"] = change_statu
                print("修改 %s 用户状态成功!修改后的状态为 %s" % (user, change_statu))
                user_logger.info("管理员 %s 修改 %s 用户状态成功!修改后的状态为 %s" %
                                 (admin, user, change_statu))
                bank_logger.info("管理员 %s 修改 %s 用户状态成功!修改后的状态为 %s" %
                                 (admin, user, change_statu))
                break
            else:
                print("被修改的用户不存在,修改 %s 用户的状态失败!" % user)
                user_logger.warning("被修改的用户不存在,管理员 %s 修改 %s 用户的状态失败!" %
                                    (admin, user))
        else:
            print("输入用户和状态格式有误,修改 %s 用户的状态失败!")
            user_logger.warning("输入用户和状态格式有误,管理员 %s 修改的状态失败!" % admin)
Esempio n. 9
0
def change_limit(admin):
    while True:
        change = input("请输入用户账号和额度修改值(+表示增加额度,-代表减少额度)\n账号和额度用逗号分割\n>>:")
        if re.fullmatch("\w+[,|,]{1}[+|-]{1}[\d]+", change):
            change_lis = re.split("[,|,]", change)
            user = change_lis[0]
            change_amount = change_lis[1]
            limit = users_atm[user]["limit"]
            usable = users_atm[user]["usable"]
            after_change_limit = eval(str(limit) + change_amount)
            after_change_usable = eval(str(usable) + change_amount)
            if user in users_atm and not after_change_usable < 0:
                users_atm[user]["limit"] = after_change_limit
                users_atm[user]["usable"] = after_change_usable
                print(
                    "修改 {user} 额度成功!修改前 {user} 额度:{before};修改后 {user} 额度:{after}"
                    .format(user=user, before=limit, after=after_change_limit))
                user_logger.info(
                    "管理员 {admin} 修改 {user} 额度成功!修改前 {user} 额度:{before};修改后 {user} 额度:{after}"
                    .format(admin=admin,
                            user=user,
                            before=limit,
                            after=after_change_limit))
                bank_logger.warning(
                    "管理员 {admin} 修改 {user} 额度成功!修改前 {user} 额度:{before};修改后 {user} 额度:{after}"
                    .format(admin=admin,
                            user=user,
                            before=limit,
                            after=after_change_limit))
                break
            else:
                print("被修改的用户不存在或者额度减小过多,请确认修改信息正确性!")
                user_logger.warning("被修改的用户不存在或者额度减小过多,管理员 %s 修改 %s 用户的额度失败!" %
                                    (admin, user))
        else:
            print("输入信息有误,请参照提示按格式输入!")
            bank_logger.warning("输入用户和金额格式有误,管理员 %s 修改用户的额度失败!" % admin)
Esempio n. 10
0
def add_user(admin):
    while True:
        info = input(
            "请以逗号隔开输入账号(英文或数字),姓名(非空字符),角色(1代表管理员/0代表普通用户),密码(英文或数字),额度\n")
        if re.fullmatch(
                "\w+[,|,]{1}\S+[,|,]{1}[0|1]{1}[,|,]{1}\w+[,|,]{1}[\d]+",
                info):
            user_lis = re.split("[,|,]", info)
            user = user_lis[0]
            name = user_lis[1]
            role = int(user_lis[2])
            pwd = get_md5(user_lis[3])
            limit = float(user_lis[4])
            if user not in users:
                users[user] = {}
                users[user]["name"] = name
                users[user]["password"] = pwd
                users[user]["role"] = role
                users[user]["products"] = {}
                users[user]["create_time"] = str(
                    datetime.datetime.now().date())
                users_atm[user] = {}
                users_atm[user]["name"] = name
                users_atm[user]["usable"] = limit
                users_atm[user]["limit"] = limit
                users_atm[user]["status"] = 1
                users_atm["admin"]["usable"] -= limit
                print("添加用户 %s 成功" % user)
                user_logger.info("管理员 %s 添加用户 %s 成功" % (admin, user))
                bank_logger.info("管理员 %s 添加用户 %s 成功" % (admin, user))
                break
            else:
                print("%s 用户已存在" % user)
                user_logger.warning("管理员添加用户时,%s 用户已存在" % user)
        else:
            print("输入信息有误,请参照提示按格式输入!")
            user_logger.warning("管理员添加用户时,用户输入用户信息格式有误!")
Esempio n. 11
0
def show_products(user):
    user_logger.info("%s 查看商品列表!"%user)
    print("商店已上架商品有".center(100, "-"))
    for index, value in enumerate(products):
        print("%s %s %s" % (index, value['name'], value["price"]))
Esempio n. 12
0
 def wrapper(*args, **kwargs):
     user = args[0]
     if users_atm[user]["status"] == 1:
         return func(*args, **kwargs)
     user_logger.info("%s 账户已被冻结,不可进行此次操作,请联系管理员解冻!" % user)
     bank_logger.info("已冻结账户 %s 尝试进行ATM操作,请管理员留意!" % user)