ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-27 12:33:10  阅读:193  来源: 互联网

标签:get -- FastAPI pid db 留言 message 七十一 id


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

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

 

标签:get,--,FastAPI,pid,db,留言,message,七十一,id
来源: https://www.cnblogs.com/leiziv5/p/15941959.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有