電子商務網(wǎng)站購物車怎么做建網(wǎng)站軟件工具
源碼見:"fastapi_study_road-learning_system_online_courses: fastapi框架實戰(zhàn)之--在線課程學習系統(tǒng)"
梳理下思路
1.判斷是否登錄
2.課程是否存在
3.如果是回復,查看回復是否存在
4.是否有權限
5.發(fā)起評論
首先新增pydantic模型
class CourseCommentModel(BaseModel):"""發(fā)起評論參數(shù)"""id: intcomment: str = Field(min_length=1)pid: Optional[int] = None
其次實現(xiàn)主要邏輯
def to_comment_method(comment: CourseCommentModel, user: UsernameRole, db: Session):"""發(fā)起評論"""db_user = get_by_username(db, user.username)db_course = get_course_by_id(db, comment.id)if not db_course:return response(code=101401, message="課程不存在")if db_course.owner == db_user.id and comment.pid is None:return response(code=101404, message="自己不能評論自己的課程")if comment.pid:pid_course = get_course_by_id(db, comment.pid)if not pid_course:return response(code=101405, message="回復的評論不存在")return create_comment(db, comment, db_user.id)return create_comment(db, comment, db_user.id)def create_comment(db: Session, comment: CourseCommentModel, user: int):"""保存評論"""# 前提:自己不能給自己的課程發(fā)起評論,但是發(fā)起評論后可以給自己的評論回復try:to_db_comment = CourseComment(course=comment.id,user=user,pid=comment.pid,context=comment.comment)to_db_comment.user = userdb.add(to_db_comment)db.commit()db.refresh(to_db_comment)except:logger.warning(f"method create_comment error: {traceback.format_exc()}")return response(code=101402, message="評論失敗")return response()
最后,實現(xiàn)接口api
@course_router.post("/course_comment", summary="發(fā)起評論")
def to_comment(comment: CourseCommentModel, user: UsernameRole = Depends(get_current_user),db: Session = Depends(create_db)):return to_comment_method(comment, user, db)
測試