FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言
之前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))
每个功能开发,都会梳理好对应的逻辑功能梳理。快速的进行开发。
FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言的更多相关文章
- FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发
之前我们分享了FastAPI(七十一)实战开发<在线课程学习系统>接口开发-- 查看留言,这次我们分享留言列表开发. 列表获取,也需要登录,根据登录用户来获取对应的留言.逻辑梳理如下. 1 ...
- FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言
之前文章FastAPI(七十三)实战开发<在线课程学习系统>接口开发-- 回复留言,那么我们这次分享删除留言接口的开发 可以对留言进行删除,这里的删除,我们使用的是逻辑的删除,不是物理删除 ...
- FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言
之前文章分享FastAPI(七十二)实战开发<在线课程学习系统>接口开发-- 留言列表开发,这次我们分享如何回复留言 按照惯例,我们还是去分析这里面的逻辑. 1.判断用户是否登录 2.用户 ...
- FastAPI(七十)实战开发《在线课程学习系统》接口开发--留言功能开发
在之前的文章:FastAPI(六十九)实战开发<在线课程学习系统>接口开发--修改密码,这次分享留言功能开发 我们能梳理下对应的逻辑 1.校验用户是否登录 2.校验留言的用户是否存在 3. ...
- FastAPI(六十二)实战开发《在线课程学习系统》需求分析
前言 基础的分享我们已经分享了六十篇,那么我们这次分享开始将用一系列的文章分享实战课程.我们分享的系统是在线学习系统.我们会分成不同的模块进行分享.我们的目的是带着大家去用fastapi去实战一次,开 ...
- FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口
针对上一篇FastAPI(六十二)实战开发<在线课程学习系统>需求分析需求的功能,我们对需要的接口进行梳理,大概的规划出来现有的接口,作为我们第一版的接口的设计出版,然后我们根据设计的接口 ...
- FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
之前我们分享了FastAPI(六十八)实战开发<在线课程学习系统>接口开发--用户 个人信息接口开发.这次我们去分享实战开发<在线课程学习系统>接口开发--修改密码 我们梳理一 ...
- FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
在之前的文章:FastAPI(六十七)实战开发<在线课程学习系统>接口开发--用户登陆接口开发,今天实战:用户 个人信息接口开发. 在开发个人信息接口的时候,我们要注意了,因为我们不一样的 ...
- FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...
随机推荐
- php 生成唯一订单号5种方法
第一种 private function doCreateOrderNumber($time){ $i=1; $dd = date('Ymd',$time); $aa = 'OH'.$dd; $res ...
- 面试官:Redis如何实现持久化的、主从哨兵又是什么?
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 作为一名Java程序员,Redi ...
- lgP6232题解
评蓝过分了吧,这题最多黄( 首先我们从挂钩的最上层向下走,假设这个挂杆的左边和右边一共有 \(k\) 件衣服. 若 \(k\) 是 \(2\) 的倍数,那么我们只能向左走(左边和右边的衣服一样多).反 ...
- OpenTracing 简介
自从 Google Dapper 的论文发布之后,各大互联网公司和开源社区开发的分布式链路追踪产品百花齐放,同时也给使用者带来了一个问题,各个分布式链路追踪产品的 API 并不兼容,如果用户在各个产品 ...
- 如何解决代码中if/else 过多的问题
前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护 ...
- new和@Autowired的区别
controller层: @RequestMapping("/payment") @RestController public class WxPayController { pu ...
- Linux系统配置(系统优化)
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 前言 系统安装完成后,需要基于系统做出一些调整来让系统使用起来更加顺手,可以根据个人喜好对linux进行调整,还有一些是linux的必要设置 一 ...
- 统计&分析 EXCEL:count、counta、countblank、countif和countifs函数分享
一.count 计算区域中包含数字的单元格的个数以及参数列表中的数字的个数. 利用函数COUNT可以计算单元格区域或数字数组中数字字段的输入项个数. 示例: 1.我要是写成=COUNT(B1,D1), ...
- 嵌入式Linux应用开发完全手册之环境搭建
@ 目录 0.下载源配置 1.电脑BIOS启动虚拟化 2.linux网卡查看与IP设置 3.windows NAT虚拟网络配置 4.修改 Ubuntu 的 mountd 端口 5.vim设置 6.Mo ...
- CVE-2019-0708 RCE复现
漏洞环境 192.168.91.136 windows7 6.1.7601 192.168.91.151 kali Windows7 SP1下载链接: ed2k://|file|cn ...