pythonATM,购物车项目实战_补充5-interface接口
程序员文章站
2022-03-04 17:54:06
...
interface:
interface/admin_interface.py
from db import db_handler
# 修改额度接口
def change_balance_interface(username,money):
user_dic=db_handler.select(username)
if user_dic:
#修改额度
user_dic["balance"]=int(money)
#保存修改后的用户数据
db_handler.save(user_dic)
return True,"额度修改成功!"
return False,"修改额度用户不存在!"
#冻结账户接口
def lock_user_interface(username):
user_dic=db_handler.select(username)
if user_dic:
#将locked的默认值修改为True
user_dic['lcoker']=True
db_handler.save(user_dic)
return True,f"用户{username}冻结成功!"
return False,"冻结用户不存在"
interface/bank_interface.py
"""
银行相关业务的接口
"""
from db import db_handler
#提现接口(手续费5%,就是每次提现都是花费5%)
def withdraw_interface(username,money):
#1)先获取用户字典
user_dic=db_handler.select(username)
#账户中的金额
balance=int(user_dic.get('balance'))
#提现本金+手续费
money2=int(money)*1.05
#判断用户金额是否足够
if balance>=money2:
#2)修改用户字典中的金额
balance-=money2
user_dic['balance']=balance
#3) 记录流水
flow=f'用户[{username}]体现金额[{money}$]成功,手续费用为[{money2-float(money)}]'
user_dic['flow'].append(flow)
# 3.1)在保存数据,或者更新数据
db_handler.save(user_dic)
return True,f'用户[{username}]提取金额[{money}]成功,手续费为:{money2-float(money)}$'
return False,f'提现金额不足,请重新输入!'
# 还款接口
def repay_interface(username,money):
"""
1.获取用户的金额
2.给用户的金额做加钱的操作
:return:
"""
# 1.获取用户字典
user_dic=db_handler.select(username)
#2.直接做加钱操作
# user_dic["balance"]----->int
user_dic['balance']+=money
#3.记录流水
flow=f'用户:[{username}] 还款[{money}]成功!'
user_dic['flow'].append(flow)
#3.调用数据处理层,将修改后的数据更新
db_handler.save(user_dic)
return True,f'用户:[{username}] 还款:[{money}]成功,当前额度为:{user_dic["balance"]}'
# 转账接口
def transfer_interface(login_user,to_user,money):
"""
1.获取“当前用户”数据
2.获取“目标用户”数据
3.获取转账金额
:param login_user:
:param to_user:
:param money:
:return:
"""
#1)获取 当前用户 字典
login_user_dic=db_handler.select(login_user)
#2)获取“目标用户:字典
to_user_dic=db_handler.select(to_user)
#3)判断目标用户是否存在
if not to_user_dic:
return False,"目标用户不存在"
#4若用户存在,则判断“当前用户的转账金额”是否足够
if login_user_dic['balance']>=money:
#5)若足够,则开始给目标用户转账
#5.1)给当前用户的数据,做减钱的操作
login_user_dic['balance']-=money
#5.2)给目标用户的数据,做加钱的操作
to_user_dic["balance"]+=money
#5.3记录当前用户与目标用户的流水
#当前用户流水
login_user_flow=f'用户[{login_user}]给用户:[{to_user}]转账:[{money}]成功'
login_user_dic['flow'].append(login_user_flow)
# 给目标用户流水
to_user_flow = f'用户[{to_user}]接收用户:[{login_user}]转账:[{money}]成功'
to_user_dic['flow'].append(to_user_flow)
#6.保存用户数据
#6.1)调用数据处理层的save功能,保存当前用户数据
db_handler.save(login_user_dic)
#6.2)给调用数据处理层的save功能,保存目标用户数据
db_handler.save(to_user_dic)
return True,f'用户:[{login_user}]给用户[{to_user}]转账:[{money}]元,成功!'
return False,"当前用户转账金额不足!"
#查看流水接口
def check_flow_interface(login_user):
user_dic=db_handler.select(login_user)
return user_dic.get('flow') #返回一个list列表
#支付接口
def pay_interface(login_user,cost):
user_dic=db_handler.select(login_user)
#判断用户金额是否足够
if user_dic.get('balance')>=cost:
# 足够就是减钱
user_dic['balance']-=cost
#记录消费流水
flow=f"用户消费金额:[{cost}]"
user_dic['flow'].append(flow)
#保存数据
db_handler.save(user_dic)
# return True,或者false 交给购物接口来处理
return True
return False
interface/shop_interface.py
"""
购物商城接口
"""
from db import db_handler
#商品准备结算接口
def shopping_interface(login_user,shopping_car):
#1)计算消费总额
#{‘商品名称’:["价格","数量"]}
cost=0
for price_number in shopping_car.values():
price,number=price_number
cost+=(price*number)
#导入银行接口
from interface import bank_interface
#逻辑校验成功后,再调用银行的支付接口
flag=bank_interface.pay_interface(login_user,cost)
if flag:
return True,"支付成功,准备发货!"
return False,"支付失败,金额不足!"
#购物车添加接口
def add_shop_car_interface(login_user,shopping_car):
#1)获取当前用户的购物车
user_dic=db_handler.select(login_user)
#获取用户文件中的商品的数据
shop_car=user_dic.get("shop_car")
#2)添加购物车
#2.1)判断当前用户选择的商品是否已经存在
# shopping_car--->{'商品名':["商品价格,商品数量"]}
for shop_name,price_number in shopping_car.items():
#每个商品的数量
number=price_number[1]
#2.2)若有商品重复,则累加商品数量
if shop_name in shop_car:
user_dic['shop_car'][shop_name][1]+=number
else:
#2.3)若不是重复的,更新到商品字典中
user_dic['shop_car'].update({shop_name:price_number})
#保存用户数量
db_handler.save(user_dic)
return True,"添加购物车成功!"
#查看购物车接口
def check_shop_car_interface(username):
user_dic=db_handler.select(username)
return user_dic.get('shop_car')
interface/user_interface.py
"""
逻辑接口层
用户接口
"""
from db import db_handler
from lib import common
# 注册接口
def register_interface(username,password,balance=15000):
#2)查看用户是否存在
#2.1)调用数据处理层中的select函数,会返回用户字典或者None
user_dic=db_handler.select(username)
#{user:user,pwd:pwd...} or None
# 若用户存在则return ,告诉用户重新输入
if user_dic:
# return(False,'用户名已经存在!')
return False,'用户名已存在!'
#3)若用户不存在,则保存用户数据
#做密码加密
password=common.get_pwd_md5(password)
#3.1 组织用户的数据的字典信息
user_dict={
'username':username,
'password':password,
'balance':balance,
# 用于记录用户流水的列表
'flow':[],
# 用于记录用户购物车
'shop_car':{},
#locked 用于记录用户是否被冻结
#False:未冻结 True:已经被冻结
#
'locked':False
}
#3.2 保存数据
db_handler.save(user_dict)
return True,f'{username}注册成功!'
# 登录接口
def login_interface(username,password):
#1)先查看当前用户数据是否存在
#{用户数据字典} or None
user_dict=db_handler.select(username)
#用户判断用户是否存在
#若有冻结用户 则需要判断是否被锁定
if user_dict.get("locked"):
return False,"当前用户已被锁定"
#2)判断用户是否存在
if user_dict:
#给用户输入的密码做一次加密
password=common.get_pwd_md5(password)
#3)校验密码是否一致
if password==user_dict.get('password'):
return True,f'用户:{username}登录成功!'
else:
return False,'密码错误'
return False,'用户不存在,请重新输入'
#查看余额接口
def check_bal_interface(username):
user_dic=db_handler.select(username)
return user_dic['balance']
上一篇: sed 使用笔记
下一篇: 南海举行机器人应用对接会