This commit is contained in:
wcq 2023-07-07 17:08:43 +08:00
parent 9d4f688130
commit e023039936
6 changed files with 29 additions and 5 deletions

View File

@ -1,8 +1,11 @@
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from sqlalchemy import func from sqlalchemy import func
from Models.DailyModel import Daily
from Models.DepartmentModel import Department from Models.DepartmentModel import Department
from Models.PostModel import Post from Models.PostModel import Post
from Models.UserModel import User, UserInfo from Models.UserModel import User, UserInfo
from Mods.Comment.Models import Comment
from Schemas import UserSchemas from Schemas import UserSchemas
import json import json
@ -119,3 +122,16 @@ def get_department_config(db: Session):
type_dic[d.sub_type] = [] type_dic[d.sub_type] = []
type_dic[d.sub_type].append(d.name) type_dic[d.sub_type].append(d.name)
return type_dic return type_dic
def get_user_comments(db: Session, email: str):
"""
获取用户自己的评论数据
Args:
db:
email:
Returns:
"""

View File

@ -34,6 +34,9 @@ def comment_query(db: Session, params: Schemas.CommentQuery):
db_model = Comment db_model = Comment
for key, value in params_dict.items(): for key, value in params_dict.items():
if key not in ['page', 'page_size'] and value is not None: if key not in ['page', 'page_size'] and value is not None:
if key in ['user_email', 'receiver_user_email']:
query = query.filter(getattr(db_model, key) == value)
continue
if type(value) == str: if type(value) == str:
query = query.filter(getattr(db_model, key).like(f'%{value}%')) query = query.filter(getattr(db_model, key).like(f'%{value}%'))
elif type(value) in [int, float, bool]: elif type(value) in [int, float, bool]:
@ -53,5 +56,4 @@ def comment_query(db: Session, params: Schemas.CommentQuery):
query = query.offset((page - 1) * page_size).limit(page_size).all() query = query.offset((page - 1) * page_size).limit(page_size).all()
return count, query return count, query
################ ################

View File

@ -15,7 +15,9 @@ class Comment(Base):
daily_id = Column(Integer, ForeignKey('daily.id', ondelete='CASCADE')) daily_id = Column(Integer, ForeignKey('daily.id', ondelete='CASCADE'))
daily = relationship('Daily', back_populates='comments') daily = relationship('Daily', back_populates='comments')
user_email = Column(String(255), ForeignKey('user.email', ondelete='CASCADE')) user_email = Column(String(255), ForeignKey('user.email', ondelete='CASCADE'))
user = relationship('User', backref='comments') receiver_user_email = Column(String(255), ForeignKey('user.email', ondelete='CASCADE'))
user = relationship('User', backref='self_comments', foreign_keys=[user_email])
receiver_user = relationship('User', backref='receiver_comments', foreign_keys=[receiver_user_email])
create_time = Column(DateTime, server_default=func.now(), comment='创建时间') create_time = Column(DateTime, server_default=func.now(), comment='创建时间')
def to_dict(self, full=False): def to_dict(self, full=False):
@ -35,4 +37,6 @@ class Comment(Base):
data[c.name] = getattr(self, c.name) data[c.name] = getattr(self, c.name)
if self.user: if self.user:
data['user'] = self.user.to_dict() data['user'] = self.user.to_dict()
if self.receiver_user:
data['receiver_user'] = self.receiver_user.to_dict()
return data return data

View File

@ -53,7 +53,7 @@ def comment_get(req: Schemas.CommentGetReq, db: Session = Depends(get_db)):
@router.post("/comment/query", summary="查询评论", response_model=Schemas.CommentQueryRes) @router.post("/comment/query", summary="查询评论", response_model=Schemas.CommentQueryRes)
def comment_query(req: Schemas.CommentQueryReq, db: Session = Depends(get_db)): def comment_query(req: Schemas.CommentQueryReq, db: Session = Depends(get_db)):
count, query = Crud.comment_query(db, req) count, query = Crud.comment_query(db, req)
items = [Schemas.CommentInfo(**item.to_dict()) for item in query] items = [Schemas.CommentInfo(**item.to_with_user_dict()) for item in query]
return Schemas.CommentQueryRes(count=count, items=items) return Schemas.CommentQueryRes(count=count, items=items)

View File

@ -9,10 +9,12 @@ class CommentInfo(BaseModel):
id: Optional[int] id: Optional[int]
daily_id: Optional[int] daily_id: Optional[int]
user_email: Optional[str] user_email: Optional[str]
receiver_user_email: Optional[str]
daily: Optional[DailyInfo] daily: Optional[DailyInfo]
content: Optional[str] content: Optional[str]
user: Optional[UserInfo] user: Optional[UserInfo]
create_time: Optional[datetime] create_time: Optional[datetime]
receiver_user: Optional[UserInfo]
class CommentAddInfo(BaseModel): class CommentAddInfo(BaseModel):

View File

@ -9,7 +9,7 @@ from typing import Literal, List, Any, Optional
Base = declarative_base() Base = declarative_base()
user = "root" user = "root"
password = "123456" password = "12345"
host = "127.0.0.1" host = "127.0.0.1"
db = 'daily' db = 'daily'