梳理下思路:
1.判断是否登录
2.判断课程是否存在
3.如果回复查看回复的是否存在
4.校验是否有权限
5.评论成功
对应的pydantic类如下
class Coursecomment(BaseModel): id: int comments: str pid: Optional[int]
对应的crud
def createcomments(db: Session, cousecoment: Coursecomment, user: id): comments = Commentcourse(**cousecoment.dict()) comments.users=user db.add(comments) db.commit() db.refresh(comments) return comments
对应的代码实现。
@courseRouter.post(path="/comments") async def comments(comments: Coursecomment,user: UsernameRole = Depends(get_cure_user), db: Session = Depends(get_db)): if comments.comments == '': return reponse(code=101402, message='评论内容不能为空', data='') users = get_user_username(db, user.username) couses = db_get_course_id(db, comments.id) if couses: if couses.owner == users.id and comments.pid is None: return reponse(code=101404, message='自己不能评论自己的课程', data='') if comments.pid is not None: pid_course = get_cousecomments(db, comments.pid) if pid_course: createcomments(db, comments, users.id) return reponse(code=200, message='成功', data='') return reponse(code=101405, message='回复的评论不存在', data='') createcomments(db, comments, users.id) return reponse(code=200, message='成功', data='') return reponse(code=101401, message='课程id不存在', data='')