入账出账都显示如下图
用户表、转账记录表
# 用户表
class UserModel(db.Model):
id = db.Column(db.Integer,autoincrement=True,primary_key=True,comment='用户id')
name = db.Column(db.String(20),default='',comment='用户名字')
phone = db.Column(db.String(20),default='',comment='用户手机号')
create_time = db.Column(db.DateTime,default=datetime.datetime.now,comment='创建时间')
dian = db.Column(db.String(20),default='我的商店',comment='商店地址')
money = db.Column(db.Integer,default=1000,comment='用户余额')
zhuanzhang = db.relationship('Zhuan',backref='user')
# 转账记录表
class Zhuan(db.Model):
id = db.Column(db.Integer,autoincrement=True,primary_key=True,comment='用户id')
create_time = db.Column(db.DateTime,default=datetime.datetime.now,comment='创建时间')
money = db.Column(db.Integer,default=0,comment='转账金额')
user_id = db.Column(db.Integer,db.ForeignKey('user_model.id'))
status = db.Column(db.Integer,default=0,comment='0转出 4转入')
name = db.Column(db.String(20),default='',comment='要转入用户的名字')
name2 = db.Column(db.String(20),default='',comment='要转出用户的名字')
# whoid 是要转入哪个用户的id 也可以设置一个外键,也关联用户表
whoid = db.Column(db.Integer,default=0,comment='转入用户的id')
添加转账记录,展示转账记录
from sqlalchemy import or_
class ZhuanView(Resource):
# 添加转账记录
@login
def post(self):
user_id = g.user_id
res = reqparse.RequestParser()
res.add_argument('mobile')
res.add_argument('money',type=int)
args = res.parse_args()
userdata = UserModel.query.filter(UserModel.phone==args['mobile']).first() # 转入用户id
userdata1 = UserModel.query.filter(UserModel.id==user_id).first() # 转出用户id
name = userdata.name # 转入用户的名
name2 = userdata1.name # 转出用户的名
z = Zhuan(
money=args['money'],
user_id=user_id,
name = name,
name2 = name2,
whoid = userdata.id
)
userdata1.money -=args['money']
userdata.money +=args['money']
db.session.add(z)
db.session.commit()
return jsonify({
'code':200,
'msg':'ok',
})
# 获取转账记录
@login
def get(self):
user_id = g.user_id
'''另一种'''
# 过滤出 user_id 或 whoid 字段含有用户id(user_id)的记录
zhuandata = Zhuan.query.filter(or_(Zhuan.user_id == user_id,Zhuan.whoid==user_id)).all()
# zhuandata = Zhuan.query.all()
zhuanlis = []
# 因为上面已经过滤出用户的转入、转出记录了
# 如果模型类里的字段user_id 与用户的id(方框里面的)不相同,说明是转入的,改变其字段status状态
for i in zhuandata:
if i.user_id != user_id:
i.status = 4 # 4>>>>>说明是转入的金额
z = {
'time':str(i.create_time),
'money':i.money,
'status':i.status,
'name2':i.name2, # 转出的名字
'name':i.name, # 转入的名字
}
zhuanlis.append(z)
return jsonify({
'code':200,
'data':zhuanlis,
'msg':'ok'
})
api.add_resource(ZhuanView,'/zhuan')
根据 zhuanlis 里的status的状态不同,即可在前端显示:是转入还是转出
关键是获取转账记录的时候,判断user_id 字段 ,是否与当前用户的id相等,
若不相等=》》》说明是其他用户转给当前用户
若相等=》》》》说明是当前用户转给其他用户
如上图:若当前用户的id是 “2”
第1、2条数据说明是转给其他用户
第3、5条数据说明是其他用户准入进来的 =》status=4
看不懂的评论啊,亲们!