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

列表获取,也需要登录,根据登录用户来获取对应的留言。逻辑梳理如下。

1.判断用户是否登录
2.根据登录用户查询留言列表
3.留言列表中要根据是留言回复,进行列表重组

我们根据逻辑去梳理下对应的crud

def get_message_list(db: Session, userid: int):
return db.query(Message).filter(or_(Message.senduser.id == userid, Message.acceptusers.id == userid,Message.status==0)).all()

  我们根据逻辑去开发对应的代码。

@usersRouter.get(path="/messagelist")
async def messagelist(user: UsernameRole = Depends(get_cure_user),
db: Session = Depends(get_db)):
users = get_user_username(db, user.username)
messagelist = get_message_list(db=db, userid=users.id)
message_list = []
mainmessage = []
if len(messagelist) > 0:
for item in messagelist:
if item.pid == "":
messageone = MessageOne(id=item.id,
senduser=get_user(db,item.senduser).username,
acceptusers=get_user(db,item.acceptusers).username,
read=item.read,
sendtime=item.sendtime,
addtime=str(item.addtime),
context=item.context)
mainmessage.append(messageone.id)
all_pid = get_pid_message(db, item.id)
if len(all_pid) > 0:
allpidlist = []
for items in all_pid:
message = MessagePid(id=item.id,
senduser=get_user(db,items.senduser).username,
acceptusers=get_user(db,items.acceptusers).username,
read=items.read,
sendtime=items.sendtime,
addtime=str(items.addtime),
context=items.context,
pid=items.pid)
allpidlist.append(message)
messageone.pid = allpidlist
message_list.append(messageone)
else:
if item.pid not in mainmessage:
message = get_message(db, item.pid)
if 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:
messagepid = MessagePid(id=message.id,
senduser=get_user(db,item.senduser).username,
acceptusers=get_user(db,item.acceptusers).username,
read=item.read,
sendtime=item.sendtime,
addtime=str(item.addtime),
context=item.context, pid=item.pid)
allpidlist.append(messagepid)
messageone.pid = allpidlist
message_list.append(messageone)
return reponse(code=200, message='成功', data=jsonable_encoder(message_list))

FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发的更多相关文章

  1. FastAPI(六十二)实战开发《在线课程学习系统》需求分析

    前言 基础的分享我们已经分享了六十篇,那么我们这次分享开始将用一系列的文章分享实战课程.我们分享的系统是在线学习系统.我们会分成不同的模块进行分享.我们的目的是带着大家去用fastapi去实战一次,开 ...

  2. FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言

    之前文章FastAPI(七十三)实战开发<在线课程学习系统>接口开发-- 回复留言,那么我们这次分享删除留言接口的开发 可以对留言进行删除,这里的删除,我们使用的是逻辑的删除,不是物理删除 ...

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

    在之前的文章:FastAPI(六十九)实战开发<在线课程学习系统>接口开发--修改密码,这次分享留言功能开发 我们能梳理下对应的逻辑 1.校验用户是否登录 2.校验留言的用户是否存在 3. ...

  4. FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言

    之前文章分享FastAPI(七十二)实战开发<在线课程学习系统>接口开发-- 留言列表开发,这次我们分享如何回复留言 按照惯例,我们还是去分析这里面的逻辑. 1.判断用户是否登录 2.用户 ...

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

    之前FastAPI(七十)实战开发<在线课程学习系统>接口开发--留言功能开发分享了留言开发,这次我们分享查看留言 梳理这里的逻辑,这个接口要依赖登录. 1.判断用户是否登录 2.判断对应 ...

  6. FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码

    之前我们分享了FastAPI(六十八)实战开发<在线课程学习系统>接口开发--用户 个人信息接口开发.这次我们去分享实战开发<在线课程学习系统>接口开发--修改密码 我们梳理一 ...

  7. FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发

    在之前的文章:FastAPI(六十七)实战开发<在线课程学习系统>接口开发--用户登陆接口开发,今天实战:用户 个人信息接口开发. 在开发个人信息接口的时候,我们要注意了,因为我们不一样的 ...

  8. FastAPI(六十三)实战开发《在线课程学习系统》梳理系统需要接口

    针对上一篇FastAPI(六十二)实战开发<在线课程学习系统>需求分析需求的功能,我们对需要的接口进行梳理,大概的规划出来现有的接口,作为我们第一版的接口的设计出版,然后我们根据设计的接口 ...

  9. FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

    接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...

随机推荐

  1. gitee的使用

    git clone git add . # 跟踪所有改动过的文件 git commit -m "commit message" # 提交所有更新过的文件 git checkout ...

  2. CF877F题解

    题目大意 有一个序列,每个位置上有 \(1\) 或 \(2\) 两种元素若干,每次询问一个区间,求这个区间有多少个子区间满足 \(1\) 类元素恰好比 \(2\) 类元素多 \(k\) 个. 莫队 要 ...

  3. 大数据教程-01HDFS的基本组成和原理

    一 Hadoop历史背景 起源于2003年谷歌的Google File System相关论文,随后Doug Cutting(我们下面就叫他切哥吧)基于GFS的论文实现了分布式文件系统,并把它命名为ND ...

  4. Java实例变量、局部变量、静态变量

    实例变量(成员变量) 成员变量定义在类中,在整个类中都可以被访问,但在方法.构造方法和语句块之外 当一个对象被实例化之后,每个实例变量的值就跟着确定 实例变量在对象创建的时候创建,在对象被销毁时销毁 ...

  5. Mybatis——一级缓存与二级缓存

    关于Mybatis的学习主要参考了狂神的视频 一级缓存 (1).使用范围:从sqlSession会话开始到结束 (2).使用:默认打开,无法关闭 (3).测试使用(需要打开日志观察数据库的连接情况): ...

  6. 模块 序列化模块:json pickle

    模块:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀 模块的形象: 内置模块:安装Python解释器的时候一起安装上的 第三方模块(扩展模块):需要自己安装 自 ...

  7. springcloud学习00-开发工具相关准备

    用maven构建springcloud项目,目录结构(图片来源:https://blog.csdn.net/qq_36688143/article/details/82755492) 1.maven ...

  8. CF1504X Codeforces Round #712

    CF1504D Flip the Cards(找规律+贪心) 题目大意:给你n张牌,正反面都有数字,保证所有牌上的数字在$[1,2n]$内且互不相同.你可以翻转任意张牌,接下来需要把牌按正面的数字从小 ...

  9. 在Windows11使用WSA运行Google play会遇到的问题

    前提一是要有adb工具 网盘链接:https://pan.baidu.com/s/1MAdq4GsxkW7dqq689d_gQw 提取码:24q2 前提二是会使用 MagiskOnWSA--解决了两个 ...

  10. Redis数据结构详解(1)-redis中的字符串(SDS)

    前提知识 我们先从百科上摘下Redis的解释: Redis是一个使用ANSI C编写的开源.支持网络.基于内存.分布式.可选持久性的键值对存储数据库. (不用过多在意ANSI,它只是一个标准,你可以理 ...