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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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):
'''
: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:
'''
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