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

      

      

  • 相关阅读:
    实例天天向上的力量
    实例天天向上的力量
    数字类型及操作
    基本数据类型
    函数与模块
    Turtle库(海龟)
    python猛蛇绘制
    输出函数
    循环语句
    集合
  • 原文地址:https://www.cnblogs.com/leiziv5/p/16098429.html
Copyright © 2020-2023  润新知