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