首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI(七十)实战开发《在线课程学习系统》接口开发-- 查看留言

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

作者头像
雷子
发布2021-11-04 15:20:50
4030
发布2021-11-04 15:20:50
举报

前言

我们上一次分享了实战FastAPI(六十九)实战开发《在线课程学习系统》接口开发--留言功能开发,这次我们分析查看留言开发。

正文

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

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

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

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

状态码

含义

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))

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档