def transfer_accounts(): ''' 转账函数 :return: 无 ''' flag = True while flag: # 获取转账的另一方的账号 cardid_b = mylib.validate_input(r'^\d{9}$','请输入对方卡号: ', '输入提示: 卡号是9位数字,输入r返回上级菜单') #account_b = ac.find_by_id(cardid_b) # 判断输入的是否为r if cardid_b == 'r': # 输入的如果是r退出循环 flag = False continue # 判断输入的账号是否是当前账号 if cardid_b == atm.get_crurrent()['cardid']: # 提示错误,让用户重新输入 input('卡号不能是当前卡号,按任意键继续') continue # 获取输入的账号的账户信息 account_b,msg = ac.find_by_id(cardid_b) # 判断输入的账户是否存在 if account_b: # 获取输入的转账金额 amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$','请输入转账金额: ', '输入提示:\n 金额不能大于余额') # 调用atm的transfer_accounts方法转账 res, msg = atm.transfer_accounts(account_b, float(amount)) logger.info('atm_main:%s转账%s:%s,%s' %(atm.get_crurrent()['cardid'], cardid_b, amount, msg)) input('%s,按任意键继续' %msg) flag = False else: input('%s不存在,请重新输入,按任意键继续' %msg)
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: customer = shopping.get_crurrent_customer() if not customer: input('您还没有登录,不能修改密码,请先登录,按任意键继续') flag = False continue # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input( r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input( r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == customer['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 customer['password'] = new_password res, msg = cu.update_customer(customer) input('密码%s,按任意键返回上级菜单' % msg) logger.info('用户%s修改密码,%s' % (customer['username'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: account = atm.get_crurrent() # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input( r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input( r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == account['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 account['password'] = new_password res, msg = ac.update_account(account) input('密码%s,按任意键返回上级菜单' % msg) logger.info('atm_main:%s修改密码,%s' % (atm.get_crurrent()['cardid'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def wrapper(self, *args, **kwargs): if self.__current_account: # 判断是否已经登录 return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 # accounts = self.__account.get_accounts() cardid = mylib.validate_input(r"^\d{9}$", "卡号(输入quit退出认证): ", back_str="quit") if cardid == "quit": msg = "认证失败" # return False, msg break password = getpass.getpass("密码: ").strip() # password = input('密码: ').strip() res, msg = self.__account.find_by_id(cardid) if not res: input("卡号或密码错误!!请重新输入,按任意键继续。") continue if res.get("status") != "正常": input("您的账户已经%s,请联系银行客服:95588" % res.get("status")) continue if mylib.jiami(password) == res.get("password"): input("认证成功,按任意键继续") self.__current_account = res return funce(self, *args, **kwargs) else: res["error_count"] += 1 # 登陆失败次数加1 if res["error_count"] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值 # 锁定用户 res["status"] = "锁定" input("您的账户已被锁定,请联系银行客服:95588") else: input("卡号或密码错误!!请重新输入,按任意键继续。") self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
def login(): ''' 登录函数 :return: 无 ''' import getpass # 获取当前用户 customer = shopping.get_crurrent_customer() # 判断是否获取当前用户,如果当前用户不存在说明还没有登录,没登录的情况下才能登录 if not customer: flag = True while flag: # 获取用户名 username = mylib.validate_input(r'^\w{1,15}$','用户名(输入r返回主菜单): ') if username == 'r': flag = False continue # 获取密码 #password = mylib.validate_input(r'^.{6,15}$', '密码: ', is_pass = True) password = getpass.getpass('密码: ').strip() #print(password) # 调用shopping对象的login方法,验证用户名和密码 res = shopping.login(username, password) if res: # 验证成功显示欢迎信息并退出循环 input('登录成功,按任意键返回主菜单') logger.info('用户登录:%s' %(username)) flag = False else: input('用户名或密码错误,按任意键继续') else: input('您已经登录,不能重复登录,按任意键继续')
def remove_account(account): ''' 注销用户函数 :param account: 欲注销的账户 :return: 是否删除了账户,包括取消注销,如果取消注销账户也返回False ''' # 获取确认 chose = mylib.validate_input('^[y]$', '请确认是否注销卡号为%s的用户(y/n): ' % account['cardid'], back_str='n') if chose == 'y': # 调用ac对象的del_account方法删除账户 res, msg = ac.del_account(account['cardid']) else: # 如果用户输入的是n说明要取消注销用户 return False if res: input('%s,卡号为%s的用户已经删除,按任意键返回账户列表' % (msg, account['cardid'])) logger.info('atm_admin注销账户:%s,%s' % (account['cardid'], msg)) return True else: input('%s,按任意键继续' % msg) logger.info('atm_admin注销账户:%s,%s' % (account['cardid'], msg)) return False
def login(): ''' 登录函数 :return: 无 ''' import getpass # 获取当前用户 customer = shopping.get_crurrent_customer() # 判断是否获取当前用户,如果当前用户不存在说明还没有登录,没登录的情况下才能登录 if not customer: flag = True while flag: # 获取用户名 username = mylib.validate_input(r'^\w{1,15}$', '用户名(输入r返回主菜单): ') if username == 'r': flag = False continue # 获取密码 #password = mylib.validate_input(r'^.{6,15}$', '密码: ', is_pass = True) password = getpass.getpass('密码: ').strip() #print(password) # 调用shopping对象的login方法,验证用户名和密码 res = shopping.login(username, password) if res: # 验证成功显示欢迎信息并退出循环 input('登录成功,按任意键返回主菜单') logger.info('用户登录:%s' % (username)) flag = False else: input('用户名或密码错误,按任意键继续') else: input('您已经登录,不能重复登录,按任意键继续')
def wrapper(self,*args, **kwargs): if self.__current_account: # 判断是否已经登录 return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 cardid = mylib.validate_input(r'^\d{9}$','卡号(输入quit退出认证): ', back_str = 'quit') if cardid == 'quit': msg = '认证失败' break password = getpass.getpass('密码: ').strip() res,msg = self.__account.find_by_id(cardid) if not res: input('卡号或密码错误!!请重新输入,按任意键继续。') continue if res.get('status') != '正常': input('您的账户已经%s,请联系银行客服:95588' %res.get('status')) continue if mylib.jiami(password) == res.get('password'): input('认证成功,按任意键继续') self.__current_account = res return funce(self, *args, **kwargs) else: res['error_count'] += 1 #登陆失败次数加1 if res['error_count'] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值 #锁定用户 res['status'] = '锁定' input('您的账户已被锁定,请联系银行客服:95588') else: input('卡号或密码错误!!请重新输入,按任意键继续。') self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
def take_cash(): ''' 提现函数 :return: 无 ''' flag = True while flag: # 获取提现金额 #cash = input('操作提示:\n 取现金额必须是100的整数倍\n 输入r返回上级菜单\n请输入提现金额: ').strip() cash = mylib.validate_input( r'^\d+[.]{0,1}\d+$', '请输入提现金额: ', '输入提示:\n 取现金额必须是100的整数倍\n 金额不能大于余额\n 输入r返回主菜单') # 如果输入的不是r if cash != 'r': # 判断输入的金额是否是100的整数倍 if float(cash) % 100 == 0: # 如果输入的是100的整数倍调用atm的take_cash方法提现 res, msg = atm.take_cash(float(cash)) input('%s,按任意键继续' % msg) logger.info('atm_main:%s提现%s,%s' % (atm.get_crurrent()['cardid'], cash, msg)) else: input('输入金额必须是100的整数倍') else: flag = False
def wrapper(self, *args, **kwargs): if self.__current_account: # 判断是否已经登录 return funce(self, *args, **kwargs) while True: # 如果没有登录执行循环 cardid = mylib.validate_input(r'^\d{9}$', '卡号(输入quit退出认证): ', back_str='quit') if cardid == 'quit': msg = '认证失败' break password = getpass.getpass('密码: ').strip() res, msg = self.__account.find_by_id(cardid) if not res: input('卡号或密码错误!!请重新输入,按任意键继续。') continue if res.get('status') != '正常': input('您的账户已经%s,请联系银行客服:95588' % res.get('status')) continue if mylib.jiami(password) == res.get('password'): input('认证成功,按任意键继续') self.__current_account = res return funce(self, *args, **kwargs) else: res['error_count'] += 1 #登陆失败次数加1 if res['error_count'] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值 #锁定用户 res['status'] = '锁定' input('您的账户已被锁定,请联系银行客服:95588') else: input('卡号或密码错误!!请重新输入,按任意键继续。') self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: customer = shopping.get_crurrent_customer() if not customer: input('您还没有登录,不能修改密码,请先登录,按任意键继续') flag = False continue # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == customer['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 customer['password'] = new_password res, msg = cu.update_customer(customer) input('密码%s,按任意键返回上级菜单' %msg) logger.info('用户%s修改密码,%s' %(customer['username'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def register(): ''' 注册用户函数 :return: 无 ''' customer = shopping.get_crurrent_customer() # 获取当前用户 # 判断当前用户是否存在,如果存在说明已经登录,将不能注册新的用户 if not customer: flag = True while flag: # 获取用户输入的基本信息,任何一个环节输入r将取消注册,返回主菜单 username = mylib.validate_input(r'^\w{1,15}$','用户名:', '输入提示: 用户名必须是数字和字母的组合,长度不超过15个字符,输入r返回上级菜单') if username == 'r': flag = False continue if cu.check_username(username): input('用户名已经存在,请重新输入,按任意键继续') continue while True: password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) if password == 'r': flag = False break confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 确认密码必须与密码一致,输入r返回上级菜单', is_pass=True) if password == 'r': flag = False break if password == confirm_password: break else: input('密码与确认密码不一致,按任意键重新输入') if not flag: continue name = mylib.validate_input(r'^.{1,10}$', '姓名: ', '输入提示: 姓名不能为空,长度不能超过10个字符,输入r返回上级菜单') if name == 'r': flag = False continue tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ', '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单') if tel == 'r': flag = False continue mail = mylib.validate_input(r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ', '输入提示: 邮箱不能为空,输入r返回上级菜单') if mail == 'r': flag = False continue address = mylib.validate_input(r'^.+$', '住址: ', '输入提示: 住址不能为空,输入r返回上级菜单') if address == 'r': flag = False # 调用cu对象的insert_customer方法创建用户 res, msg = cu.insert_customer(username, password, name, tel, mail, address) input('%s,按任意键继续' %msg) logger.info('注册用户:%s,%s' %(username, msg)) else: input('您已经登录商城,如需要注册请退出登录')
def add_account(): ''' 添加账户函数 :return: 无 ''' flag = True while flag: # 获取用户输入的账户信息,任何一个输入项,输入r取消添加用户 cardid = mylib.validate_input(r'^\d{9}$', '卡号: ', '输入提示: 卡号必须是9位数字,并且不能重复,输入r返回上级菜单') if cardid == 'r': flag = False continue if ac.check_cardid(cardid): # 判断卡号是否存在 input('卡号已经存在,请重新输入,按任意键继续') continue name = mylib.validate_input(r'^.{1,10}$', '账户名: ', '输入提示: 账户名不能为空,长度不能超过10个字符,输入r返回上级菜单') if name == 'r': flag = False continue tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ', '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单') if tel == 'r': flag = False continue mail = mylib.validate_input( r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ', '输入提示: 邮箱不能为空,输入r返回上级菜单') if mail == 'r': flag = False continue address = mylib.validate_input(r'^.+$', '住址: ', '输入提示: 住址不能为空,输入r返回上级菜单') if address == 'r': flag = False # 调用ac对象的insert_account方法添加用户 res, msg = ac.insert_account(cardid, name, tel, mail, address) input('%s,按任意键继续' % msg) logger.info('atm_admin添加账户:%s,%s' % (cardid, msg))
def change_password(): ''' 修改密码函数 :return: 无 ''' flag = True while flag: account = atm.get_crurrent() # 获取用户输入的旧密码 # old_password = input('原密码(输入r返回上级菜单): ').strip() # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True) old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True) # 判断用户输入的是否是r,如果是r退出循环 if old_password == 'r': flag = False continue # 获取用户输入的新密码及确认密码 # new_password = input('新密码: ').strip() new_password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) # confirm_password = input('确认密码: ').strip() confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) old_password = mylib.jiami(old_password) # 判断旧密码是否正确 if old_password == account['password']: # 判断新密码是否和确认密码一致 if new_password == confirm_password: new_password = mylib.jiami(new_password) # 判断新密码是否和旧密码不一样 if new_password != old_password: # 修改密码 account['password'] = new_password res, msg = ac.update_account(account) input('密码%s,按任意键返回上级菜单' %msg) logger.info('atm_main:%s修改密码,%s' %(atm.get_crurrent()['cardid'], msg)) flag = False else: input('新密码和旧密码不能一样,按任意键继续') else: input('新密码和确认密码不一致,按任意键继续') else: input('原密码错误,按任意键继续')
def repayment(): ''' 还款函数 :return: 无 ''' # 获取用户输入的还款金额,并判判断是否合法 amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$','请输入还款金额: ', '操作提示:输入r返回主菜单') if amount != 'r': # 判断用户输入的是否是r # 如果不是说明输入的金额 # 调用atm的repayment方法进行还款 res, msg = atm.repayment(float(amount)) input('%s,按任意键继续' %msg) logger.info('atm_main:%s还款%s,%s' %(atm.get_crurrent()['cardid'], amount, msg))
def transfer_accounts(): ''' 转账函数 :return: 无 ''' flag = True while flag: # 获取转账的另一方的账号 cardid_b = mylib.validate_input(r'^\d{9}$', '请输入对方卡号: ', '输入提示: 卡号是9位数字,输入r返回上级菜单') #account_b = ac.find_by_id(cardid_b) # 判断输入的是否为r if cardid_b == 'r': # 输入的如果是r退出循环 flag = False continue # 判断输入的账号是否是当前账号 if cardid_b == atm.get_crurrent()['cardid']: # 提示错误,让用户重新输入 input('卡号不能是当前卡号,按任意键继续') continue # 获取输入的账号的账户信息 account_b, msg = ac.find_by_id(cardid_b) # 判断输入的账户是否存在 if account_b: # 获取输入的转账金额 amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$', '请输入转账金额: ', '输入提示:\n 金额不能大于余额') # 调用atm的transfer_accounts方法转账 res, msg = atm.transfer_accounts(account_b, float(amount)) logger.info( 'atm_main:%s转账%s:%s,%s' % (atm.get_crurrent()['cardid'], cardid_b, amount, msg)) input('%s,按任意键继续' % msg) flag = False else: input('%s不存在,请重新输入,按任意键继续' % msg)
def add_account(): ''' 添加账户函数 :return: 无 ''' flag = True while flag: # 获取用户输入的账户信息,任何一个输入项,输入r取消添加用户 cardid = mylib.validate_input(r'^\d{9}$','卡号: ', '输入提示: 卡号必须是9位数字,并且不能重复,输入r返回上级菜单') if cardid == 'r': flag = False continue if ac.check_cardid(cardid): # 判断卡号是否存在 input('卡号已经存在,请重新输入,按任意键继续') continue name = mylib.validate_input(r'^.{1,10}$', '账户名: ', '输入提示: 账户名不能为空,长度不能超过10个字符,输入r返回上级菜单') if name == 'r': flag = False continue tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ', '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单') if tel == 'r': flag = False continue mail = mylib.validate_input(r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ', '输入提示: 邮箱不能为空,输入r返回上级菜单') if mail == 'r': flag = False continue address = mylib.validate_input(r'^.+$', '住址: ', '输入提示: 住址不能为空,输入r返回上级菜单') if address == 'r': flag = False # 调用ac对象的insert_account方法添加用户 res, msg = ac.insert_account(cardid, name, tel, mail, address) input('%s,按任意键继续' %msg) logger.info('atm_admin添加账户:%s,%s' %(cardid, msg))
def repayment(): ''' 还款函数 :return: 无 ''' # 获取用户输入的还款金额,并判判断是否合法 amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$', '请输入还款金额: ', '操作提示:输入r返回主菜单') if amount != 'r': # 判断用户输入的是否是r # 如果不是说明输入的金额 # 调用atm的repayment方法进行还款 res, msg = atm.repayment(float(amount)) input('%s,按任意键继续' % msg) logger.info('atm_main:%s还款%s,%s' % (atm.get_crurrent()['cardid'], amount, msg))
def change_max_balance(account): ''' 修改可用额度函数 :param account: 欲修改的函数 :return: 无 ''' new_max_balance = mylib.validate_input('^\d+[.]{0,1}\d+$', '请输入新的用户额度: ') # 获取用户输入的新的可用额度 if new_max_balance != 'r': # 修改用户可用额度,并更新 account['max_balance'] = float(new_max_balance) res, msg = ac.update_account(account) if res: input('%s,卡号为%s的用户额度已经调整为%s,按任意键继续' %(msg, account['cardid'], account['max_balance'])) logger.info('atm_admin调整用户额度:%s,%s,调整为%s' %(account['cardid'], msg,account['max_balance'])) else: input('%s,按任意键继续' %msg) logger.info('atm_admin调整用户额度:%s,%s' %(account['cardid'], msg))
def take_cash(): ''' 提现函数 :return: 无 ''' flag = True while flag: # 获取提现金额 cash = mylib.validate_input(r'^\d+[.]{0,1}\d+$','请输入提现金额: ', '输入提示:\n 取现金额必须是100的整数倍\n 金额不能大于余额\n 输入r返回主菜单') # 如果输入的不是r if cash != 'r': # 判断输入的金额是否是100的整数倍 if float(cash)%100 == 0: # 如果输入的是100的整数倍调用atm的take_cash方法提现 res, msg = atm.take_cash(float(cash)) input('%s,按任意键继续' %msg) logger.info('atm_main:%s提现%s,%s' %(atm.get_crurrent()['cardid'], cash, msg)) else: input('输入金额必须是100的整数倍') else: flag = False
def remove_account(account): ''' 注销用户函数 :param account: 欲注销的账户 :return: 是否删除了账户,包括取消注销,如果取消注销账户也返回False ''' # 获取确认 chose = mylib.validate_input('^[y]$', '请确认是否注销卡号为%s的用户(y/n): ' %account['cardid'], back_str = 'n') if chose == 'y': # 调用ac对象的del_account方法删除账户 res, msg = ac.del_account(account['cardid']) else: # 如果用户输入的是n说明要取消注销用户 return False if res: input('%s,卡号为%s的用户已经删除,按任意键返回账户列表' %(msg, account['cardid'])) logger.info('atm_admin注销账户:%s,%s' %(account['cardid'], msg)) return True else: input('%s,按任意键继续' %msg) logger.info('atm_admin注销账户:%s,%s' %(account['cardid'], msg)) return False
def shopping_cart(): ''' 购物车函数 :return: 无 ''' while True: total = show_shopping_cart() # 调用打印购物车函数,并返回购物车总金额 chose = input("请选择您的操作:").strip() # 获取用户输入操作选项 if chose == 'e': # 判断用户输入 # 选择e,清空购物车 if total != 0: # 判断购物车是否为空 # 购物车不为空 confirm = mylib.validate_input('^[y]$', '请确认是否清空购物车(y/n): ', back_str = 'n') #获取用户确认 if confirm == 'y': # 判断用户确认 # 确认清空 shopping.empty_cart() # 调用goods对象的del_all_cart方法清空购物车 if shopping.get_crurrent_customer(): logger.info('用户%s清空购物车' %(shopping.get_crurrent_customer()['username'])) else: logger.info('游客清空购物车') input('购物车已经清空,按任意键继续') else: input('清空购物车已经取消,按任意键继续') else: input('购物车是空的,快去血拼吧,按任意键继续') elif chose == 'p': # 选择p,支付 if shopping.get_crurrent_customer(): if total != 0: res = atm.pay_api('65商城购物', total) if res: shopping.empty_cart() logger.info('用户%s成功支付%s' %(shopping.get_crurrent_customer()['username'], total)) input('支付成功,按任意键返回上级菜单') break else: input('支付失败,按任意键继续') else: input('您的购物车还是空空如也,快去血拼吧!,按任意键继续') else: input('您还没有登录,请先登录') elif chose == 'r': # 选择r退出购物车循环,返回上一级菜单 break elif chose == 'd': del_chose = mylib.validate_input('^\d$', '请输入编号(输入r返回): ') if del_chose == 'r': continue else: cart_list = shopping.get_cart() gname = cart_list[int(del_chose) - 1]['name'] confirm = mylib.validate_input('^[y]$', '请确认删除1个%s(y/n): ' %gname, back_str = 'n') if confirm == 'y': gid = cart_list[int(del_chose) - 1]['id'] res, msg = shopping.del_goods_from_cart(gid) if shopping.get_crurrent_customer(): logger.info('用户%s删除购物车内%s ' %(shopping.get_crurrent_customer()['username'], gname)) else: logger.info('游客删除购物车内%s' %gname) input(msg) else: input('删除操作已经取消,按任意键继续')
def shopping_cart(): ''' 购物车函数 :return: 无 ''' while True: total = show_shopping_cart() # 调用打印购物车函数,并返回购物车总金额 chose = input("请选择您的操作:").strip() # 获取用户输入操作选项 if chose == 'e': # 判断用户输入 # 选择e,清空购物车 if total != 0: # 判断购物车是否为空 # 购物车不为空 confirm = mylib.validate_input('^[y]$', '请确认是否清空购物车(y/n): ', back_str='n') #获取用户确认 if confirm == 'y': # 判断用户确认 # 确认清空 shopping.empty_cart() # 调用goods对象的del_all_cart方法清空购物车 if shopping.get_crurrent_customer(): logger.info( '用户%s清空购物车' % (shopping.get_crurrent_customer()['username'])) else: logger.info('游客清空购物车') input('购物车已经清空,按任意键继续') else: input('清空购物车已经取消,按任意键继续') else: input('购物车是空的,快去血拼吧,按任意键继续') elif chose == 'p': # 选择p,支付 if shopping.get_crurrent_customer(): if total != 0: res = atm.pay_api('65商城购物', total) if res: shopping.empty_cart() logger.info( '用户%s成功支付%s' % (shopping.get_crurrent_customer()['username'], total)) input('支付成功,按任意键返回上级菜单') break else: input('支付失败,按任意键继续') else: input('您的购物车还是空空如也,快去血拼吧!,按任意键继续') else: input('您还没有登录,请先登录') elif chose == 'r': # 选择r退出购物车循环,返回上一级菜单 break elif chose == 'd': del_chose = mylib.validate_input('^\d$', '请输入编号(输入r返回): ') if del_chose == 'r': continue else: cart_list = shopping.get_cart() gname = cart_list[int(del_chose) - 1]['name'] confirm = mylib.validate_input('^[y]$', '请确认删除1个%s(y/n): ' % gname, back_str='n') if confirm == 'y': gid = cart_list[int(del_chose) - 1]['id'] res, msg = shopping.del_goods_from_cart(gid) if shopping.get_crurrent_customer(): logger.info( '用户%s删除购物车内%s ' % (shopping.get_crurrent_customer()['username'], gname)) else: logger.info('游客删除购物车内%s' % gname) input(msg) else: input('删除操作已经取消,按任意键继续')
def register(): ''' 注册用户函数 :return: 无 ''' customer = shopping.get_crurrent_customer() # 获取当前用户 # 判断当前用户是否存在,如果存在说明已经登录,将不能注册新的用户 if not customer: flag = True while flag: # 获取用户输入的基本信息,任何一个环节输入r将取消注册,返回主菜单 username = mylib.validate_input( r'^\w{1,15}$', '用户名:', '输入提示: 用户名必须是数字和字母的组合,长度不超过15个字符,输入r返回上级菜单') if username == 'r': flag = False continue if cu.check_username(username): input('用户名已经存在,请重新输入,按任意键继续') continue while True: password = mylib.validate_input( r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True) if password == 'r': flag = False break confirm_password = mylib.validate_input( r'^.{6,15}$', '确认密码: ', '输入提示: 确认密码必须与密码一致,输入r返回上级菜单', is_pass=True) if password == 'r': flag = False break if password == confirm_password: break else: input('密码与确认密码不一致,按任意键重新输入') if not flag: continue name = mylib.validate_input( r'^.{1,10}$', '姓名: ', '输入提示: 姓名不能为空,长度不能超过10个字符,输入r返回上级菜单') if name == 'r': flag = False continue tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ', '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单') if tel == 'r': flag = False continue mail = mylib.validate_input( r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ', '输入提示: 邮箱不能为空,输入r返回上级菜单') if mail == 'r': flag = False continue address = mylib.validate_input(r'^.+$', '住址: ', '输入提示: 住址不能为空,输入r返回上级菜单') if address == 'r': flag = False # 调用cu对象的insert_customer方法创建用户 res, msg = cu.insert_customer(username, password, name, tel, mail, address) input('%s,按任意键继续' % msg) logger.info('注册用户:%s,%s' % (username, msg)) else: input('您已经登录商城,如需要注册请退出登录')