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

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 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()