1. 程式人生 > 其它 >FastAPI(七十九)實戰開發《線上課程學習系統》介面開發-- 加入課程和退出課程

FastAPI(七十九)實戰開發《線上課程學習系統》介面開發-- 加入課程和退出課程

我們先看下加入課程

梳理下對應的邏輯

1.判斷是否登入
2.判斷課程是否存在
3.判斷是否已經在列表
4.成功新增

 

    進入正式的開發,我們首先看下curd

def get_student(db: Session, couese: int,user:int):
    return db.query(Studentcourse).filter(Studentcourse.course == couese, Studentcourse.students == user,
                                          Studentcourse.status == True).first()


def add_student_course(db: Session, couese: int,user:int):
    studentcourse = Studentcourse(students=couese,
                                  course=user)
    db.add(studentcourse)
    db.commit()
    db.refresh(studentcourse)
    return studentcourse
接著,我們看下做後的業務是如何實現的
@courseRouter.get(path='/add/{id}')
async  def add(id:int,user: UsernameRole = Depends(get_cure_user),
                   db: Session = Depends(get_db)):
    users=get_user_username(db,user.username)
    if user.role=='教師':
        return reponse(code=101503,message="老師不能加入課程",data='')
    couses=db_get_course_id(db,id)
    if not couses:
        return reponse(code=101501,message='課程id不存在',data='')
    userstudent=get_student(db,couses.id,users.id)
    if userstudent:
        return reponse(code=101502, message='課程不能重複加入', data='')
    reslut=add_student_course(db,couses.id,users.id)
    return reponse(code=200,message='成功',data=reslut.id)

  我們來看下退出課程的介面實現

我們分析下這裡的邏輯

1.判斷是否登入
2.登陸使用者必須是學生才可以退出
3.判斷課程是否存在學生的課表
4.存在則退出

對應的crud需要新增

def rebck_couses(db:Session,student:Studentcourse):
    student.status=True
    db.add(student)
    db.commit()
    db.refresh(student)
    return student

   那麼我們按照上面的邏輯,對應的實際的程式碼就是

@courseRouter.get(path='/quit/{id}')
async  def quit(id:int,user: UsernameRole = Depends(get_cure_user),
                   db: Session = Depends(get_db)):
    users = get_user_username(db, user.username)
    
    if user.role=="老師":
        return reponse(code=101603, message='老師不能退出課程', data='')
    couses = get_student(db, id,users.id)
    if not couses:
        return reponse(code=101602, message='課程不在自己列表', data='')
    reslut=rebck_couses(db,couses)
    return reponse(code=200, message='成功', data=reslut.id)