• FastAPI(八十一)实战开发《在线课程学习系统》接口开发 推荐课程列表与课程点赞


      一、推荐课程列表

            这里的初步逻辑很简单,

    点赞数大于>500
    

             那么我们看下crud

    def  getlikeCourse(db:Session):
        return  db.query(Course).filter(Course.likenum>500,
                                        Course.onsale==True).all()
    

      那么我们看下接口的代码实现。

    @courseRouter.get("/recommend")
    async  def recommend(db:Session=Depends(get_db)):
        allcouese = getlikeCourse(db)
        all_course = []
        if len(allcouese) > 0:
            for item in allcouese:
                coursedetail = CousesDetail(id=item.id,
                                            name=item.name,
                                            icon=item.icon, desc=item.desc, catalog=item.catalog,
                                            onsale=item.onsale, owner=get_user(db, item.owner).username,
                                            likenum=item.likenum)
                all_course.append(coursedetail)
        return reponse(code=200, message='成功', data=jsonable_encoder(all_course))

       我们接口用的点赞大于500,那么我们看下如何点赞。

        二、课程点赞。

            我们看下这里的逻辑

    1.判断是否登录
    2.判断是否是学生
    3.判断是否点赞过
    4.点赞成功,在redis记录点赞的人
    

      

       对应的状态码更新如下

    状态码含义
    200 成功
    102002 已经点赞,不能重复点赞
    102001 课程不存在

            那么我们根据上面的逻辑,去看下对应的代码如何实现

    @courseRouter.get("/like/{id}")
    async  def like(rquest:Request,id:int,user: UsernameRole = Depends(get_cure_user),db:Session=Depends(get_db)):
        course=db_get_course_id(db,id)
        if not course:
            return reponse(code=102001,message='课程不存在',data='')
        result = await  rquest.app.state.redis.hgetall(str(course.id)+ "_like", encoding='utf8')
        if user.username in result.keys():
            return reponse(code=102002,message='已经点赞,不能重复点赞',data='')
        username=user.username
        rquest.app.state.redis.hmset_dict(str(course.id)+ "_like",username=1)
        course.likenum+=1
        db.commit()
        db.refresh(course)
        return reponse(code=200, message='成功', data=course.id)
    

      

    这里我们除了数据库,还用到了之前的redis。

    本次的分享到自己这里就结束了。还有最后一篇我们就完成了功能接口的开发。

            

  • 相关阅读:
    windows小乌龟和git使用
    badboy录制过程中出现当前页面的脚本发现错误
    jmeter返回结果出现乱码
    jmeter入门操作 = 录制
    jmeter入门操作 = 接口
    jmeter工具下载及工具功能操作介绍
    程序的机器级表示(一)
    信息的表示和处理之浮点数
    信息的表示和处理之整数运算
    信息的表示和处理之整数表示
  • 原文地址:https://www.cnblogs.com/leiziv5/p/16098452.html
Copyright © 2020-2023  润新知