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)


相关文章
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
|
NoSQL Redis 数据库
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情
FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情
FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程
FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程