You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
2.0 KiB

from flask import session
from datetime import datetime
from main import db
class Credit(db.Model):
__tablename__ = 'credit'
creditid = db.Column(db.Integer, primary_key=True, autoincrement=True)
userid = db.Column(db.Integer, db.ForeignKey('user.userid'))
category = db.Column(db.String(255), nullable=False)
target = db.Column(db.String(255), nullable=False)
credit = db.Column(db.Integer, nullable=False)
createtime = db.Column(db.DateTime, default=datetime.utcnow)
updatetime = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# user = db.relationship('Users', backref=db.backref('credit_user_userid', lazy=True))
# 插入积分明细
@classmethod
def insert_detail(cls,category,target,credit):
'''
4 months ago
:param category: 积分变化的原因 枚举变量 1评论comment 2注册enroll 3登录login 4投稿submission 5文章阅读read
:param target:积分消耗的目标文章id或者登录时候的用户0
:param credit:消耗的积分
:return:
'''
credit = Credit(userid = session.get('userid'),category=category,target=target,credit=credit,createtime=datetime.utcnow(),updatetime=datetime.utcnow())
# cls.add(credit)
db.session.add(credit)
# cls.commit() 不可以
db.session.commit()
# 判断用户是否已经消耗积分
@classmethod
def check_payed_article(cls,articleid):
'''
如果消耗了积分返回True
如果没有消耗积分返回False
:param articleid:
:return:
'''
4 months ago
result = cls.query.filter_by(userid = session.get('userid'),target=articleid).first()
i = 0
while i < 10:
i += 1
print("userid=",session.get('userid'),"articleid=",articleid)
# 如果看过返回TRUE
if result is None: # 如果没有观看记录
return False
else: # 如果有观看记录
return True