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.

106 lines
3.8 KiB

4 months ago
from datetime import datetime
from flask import session
from main import db
from module.thumb import Thumb
class Comment(db.Model):
__tablename__ = 'comment'
commentid = db.Column(db.Integer, primary_key=True)
userid = db.Column(db.String(64), db.ForeignKey('user.userid'))
articleid = db.Column(db.String(64), db.ForeignKey('article.articleid'))
content = db.Column(db.String(64), nullable = False) # 正文内容
ipaddr = db.Column(db.String(64), nullable = False) # 地址
replyid = db.Column(db.Integer, nullable=False) # 如果是普通评论为0如果是回复的评论显示commentid
agreecount = db.Column(db.Integer, nullable=False) # 赞成该评论的数量
opposecount = db.Column(db.Integer, nullable=False) # 反对该评论的数量
hidden = db.Column(db.Integer, nullable=False) # 默认为0不隐藏
createtime = db.Column(db.DateTime, nullable=False) # 使用 DateTime 类型,并设置默认值为当前 UTC 时间
updatetime = db.Column(db.DateTime, nullable=False)
def is_upComment(self,articleid,commentid):
return Thumb().is_upComment(articleid,commentid)
# 关联 Users 表
user = db.relationship('Users', backref=db.backref('comment_user', lazy=True))
# 新增评论
@classmethod
def add_comment(cls,articleid,content,ipaddr):
userid = session.get('userid')
comment = Comment(userid=userid,articleid=articleid,content=content,ipaddr=ipaddr,replyid=0,
agreecount=0,opposecount=0,hidden=0,createtime=datetime.utcnow(),updatetime=datetime.utcnow())
try:
db.session.add(comment)
db.session.commit()
return True
except Exception as e:
print("新增失败文章id:", articleid, "错误:", e)
return False
# 根据文章编号查询所有的评论(未分页)
@classmethod
def find_comment_by_articleid(cls,articleid):
cls.query.filter_by(hidden=0).order_by(Comment.commentid.desc()).all()
# 查询用户和评论信息
@classmethod
def find_comment_with_user(cls,articleid):
options = db.joinedload(cls.user)
return cls.query.options(options).filter_by(articleid=articleid,hidden=0).order_by(Comment.createtime.desc()).all()
# 评论的赞同数量加一
@classmethod
def update_add_agreecount(cls, commentid):
cls.query.filter_by(commentid=commentid).update({cls.agreecount: cls.agreecount+1})
db.session.commit()
return True
# 评论的赞同数量减一
@classmethod
def update_sub_agreecount(cls, commentid):
cls.query.filter_by(commentid=commentid).update({cls.agreecount: cls.agreecount - 1})
db.session.commit()
# 评论的反对数量加一
@classmethod
def update_add_opposecount(cls, commentid):
cls.query.filter_by(commentid=commentid).update({cls.opposecount: cls.opposecount + 1})
db.session.commit()
# 评论的反对数量减一
@classmethod
def update_sub_opposecount(cls, commentid):
cls.query.filter_by(commentid=commentid).update({cls.opposecount: cls.opposecount - 1})
db.session.commit()
# 评论隐藏
@classmethod
def update_hide_comment(cls, commentid):
cls.query.filter_by(commentid=commentid).update({cls.hide:1})
db.session.commit()
@classmethod
def find_coment_by_id(cls, commentid,userid):
'''
根据userid查找用户
:param userid: userid
:return: 查找到的对象
'''
return cls.query.filter(cls.userid == userid,cls.commentid == commentid).first()
# 删除评论信息
@classmethod
def do_delete_comment(cls, commentid):
result = cls.query.filter_by(commentid=commentid).first()
if result:
db.session.delete(result)
db.session.commit()