前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞

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

作者头像
雷子
发布2021-11-15 16:35:17
4350
发布2021-11-15 16:35:17
举报

前言

我们上一次分享了实战FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表,这次我们分享推荐课程列表与课程点赞。

正文

一、推荐课程列表

这里的初步逻辑很简单,

代码语言:javascript
复制
点赞数大于>500

那么我们看下crud

代码语言:javascript
复制
def  getlikeCourse(db:Session):
    return  db.query(Course).filter(Course.likenum>500,
                                    Course.onsale==True).all()

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

代码语言:javascript
复制
@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,那么我们看下如何点赞。

二、课程点赞。

我们看下这里的逻辑

代码语言:javascript
复制
1.判断是否登录
2.判断是否是学生
3.判断是否点赞过
4.点赞成功,在redis记录点赞的人

对应的状态码更新如下

状态码

含义

200

成功

102002

已经点赞,不能重复点赞

102001

课程不存在

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

代码语言:javascript
复制
@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。

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

系列实战课程

FastAPI(六十一)实战开发《在线课程学习系统》需求分析

FastAPI(六十二)实战开发《在线课程学习系统》梳理系统需要接口

FastAPI(六十三)实战开发《在线课程学习系统》设计数据库以及连接配置

FastAPI(六十四)实战开发《在线课程学习系统》基础架构的搭建

FastAPI(六十五)实战开发《在线课程学习系统》接口开发--用户注册接口开发

FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发

FastAPI(六十八)实战开发《在线课程学习系统》接口开发--修改密码

FastAPI(六十九)实战开发《在线课程学习系统》接口开发--留言功能开发

FastAPI(七十)实战开发《在线课程学习系统》接口开发-- 查看留言

FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言

FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 回复留言

FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 删除留言

FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 创建课程

FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 课程详情

FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论

FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 评论

FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 加入课程

FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 退出课程

FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表

后记

发现问题,解决问题。遇到问题,慢慢解决问题即可。

欢迎关注雷子说测试开发,后续将会持续为大家分享更多的技术知识

如果你有问题可以留言或者加我微信:952943386。

2021,一起牛转钱坤,一起牛逼。

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档