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

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

之前FastAPI(七十)实战开发《在线课程学习系统》接口开发--留言功能开发分享了留言开发,这次我们分享查看留言


梳理这里的逻辑,这个接口要依赖登录。



梳理后发现,之前在接口设计的时候,有些欠缺,查看留言,是查看单个的留言,查看留言后,对应的留言变成已读状态。那么我们这个都需要传递一个参数,这个参数应该是留言的id。


1.判断用户是否登录
2.判断对应id是否存在,不存在返回对应的错误
3.判断是否是当前用户的留言,或者接受的方是自己
4.返回内容后,同时变成已读。
5.如果读了且回复了,要带回复的内容


          在之前设计返回状态码的时候,发现状态码有缺失,我们增加下缺失的。


状态码 含义
200 成功
100601 留言不存在
100602 权限不足


       最后的pydantic代码


class Messages(BaseModel):
    id: int
    senduser: str
    acceptusers: str
    read: bool
    sendtime: str
    addtime: str
    context: str
class MessagePid(Messages):
    pid: int
class MessageOne(Messages):
    pid:List[MessagePid]=[]


根据最后梳理的逻辑去开发对应的功能。


@usersRouter.get(path="/viewmessage")
async def viewmessage(id: int,
                      user: UsernameRole = Depends(get_cure_user),
                      db: Session = Depends(get_db)):
    useris=get_user_username(db,user.username)
    message = get_message(db, id)
    if not message:
        return reponse(code=100601, message='留言不存在', data='')
    if message.acceptusers != useris.id and message.senduser != useris.id:
        return reponse(code=100602, message='权限不足', data='')
    message.read = True
    db.commit()
    db.refresh(message)
    all_pid = get_pid_message(db, message.id)
    messageone = MessageOne(id=message.id,
                            senduser=get_user(db,message.senduser).username,
                            acceptusers=get_user(db, message.acceptusers).username,
                            read=message.read,
                            sendtime=message.sendtime,
                            addtime=str(message.addtime),
                            context=message.context)
    if len(all_pid) > 0:
        allpidlist = []
        for item in all_pid:
            message = MessagePid(id=message.id,
                                 senduser=item.senduser.username,
                                 acceptusers=item.acceptusers.username,
                                 read=item.read,
                                 sendtime=item.sendtime,
                                 addtime=item.addtime,
                                 context=item.context, pid=item.pid)
            allpidlist.append(message)
        messageone.pid = allpidlist
    return reponse(code=200, message='成功', data=jsonable_encoder(messageone))


每个功能开发,都会梳理好对应的逻辑功能梳理。快速的进行开发。

相关文章
|
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(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情