前言
我们上一次分享了实战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。
本次的分享到自己这里就结束了。还有最后一篇我们就完成了功能接口的开发。
系列实战课程
FastAPI(六十一)实战开发《在线课程学习系统》需求分析
FastAPI(六十二)实战开发《在线课程学习系统》梳理系统需要接口
FastAPI(六十三)实战开发《在线课程学习系统》设计数据库以及连接配置
FastAPI(六十四)实战开发《在线课程学习系统》基础架构的搭建
FastAPI(六十五)实战开发《在线课程学习系统》接口开发--用户注册接口开发
FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
FastAPI(六十八)实战开发《在线课程学习系统》接口开发--修改密码
FastAPI(六十九)实战开发《在线课程学习系统》接口开发--留言功能开发
FastAPI(七十)实战开发《在线课程学习系统》接口开发-- 查看留言
FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言
FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 回复留言
FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 删除留言
FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 创建课程
FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 课程详情
FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 评论
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 加入课程
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 退出课程
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
后记
发现问题,解决问题。遇到问题,慢慢解决问题即可。
欢迎关注雷子说测试开发,后续将会持续为大家分享更多的技术知识
如果你有问题可以留言或者加我微信:952943386。
2021,一起牛转钱坤,一起牛逼。
如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~