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

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统"

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

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

1.判断用户是否登录

2.根据登录用户查询留言列表

3.留言列表中要根据是留言回复,进行列表重组

首先,在message_method.py中实现主要逻辑

def get_msg_list(db: Session, uid: int):# 查询留言+回复return db.query(Message).filter(or_(Message.send_user == uid, Message.accept_user == uid)).filter(Message.status == 0).all()def list_msg_method(user: UsernameRole, db: Session):"""获取留言列表"""db_user = get_by_username(db, user.username)msg_list = get_msg_list(db, db_user.id)  # 获取与当前用户相关留言/回复to_client = []main_msg_id_list = []if msg_list:for _ in msg_list:# ① 如果是留言if _.pid is None:message_one = MessageOne(id=_.id,send_user=get_by_uid(db, _.send_user).username,accept_user=get_by_uid(db, _.accept_user).username,read=_.read,send_time=_.send_time,add_time=str(_.add_time),context=_.context)main_msg_id_list.append(_.id)  # 保存非回复信息的id,即留言信息的id# 查询该留言信息的所有回复信息,并将回复信息一并返回all_pid_messages = get_pid_message(db, _.id)if all_pid_messages:to_client_pid_msgs = []for _ in all_pid_messages:message_pid = MessagePid(id=_.id,send_user=get_by_uid(db, _.send_user).username,accept_user=get_by_uid(db, _.accept_user).username,read=_.read,send_time=_.send_time,add_time=str(_.add_time),context=_.context,pid=_.pid)to_client_pid_msgs.append(message_pid.dict())message_one.pid = to_client_pid_msgsto_client.append(message_one.dict())# ② 如果是回复,查询该回复信息是否有主留言信息,如果有同上else:if _.pid not in main_msg_id_list:_msg = get_msg_by_id(db, _.pid)if _msg:_all_pid_messages = get_pid_message(db, _msg.id)_message_one = MessageOne(id=_msg.id,send_user=get_by_uid(db, _msg.send_user).username,accept_user=get_by_uid(db, _msg.accept_user).username,read=_msg.read,send_time=_msg.send_time,add_time=str(_msg.add_time),context=_msg.context)if _all_pid_messages:_pid_list = []for each in _all_pid_messages:_message_pid = MessagePid(id=each.id,send_user=get_by_uid(db, each.send_user).username,accept_user=get_by_uid(db, each.accept_user).username,read=each.read,send_time=each.send_time,add_time=str(each.acc_time),context=each.context,pid=each.pid)_pid_list.append(_message_pid.dict())_message_one.pid = _pid_listto_client.append(_message_one.dict())return response(data=to_client)

然后在message.py中实现接口:

@message_router.get("/list", summary="查询留言列表")
def view_message_list(user: UsernameRole = Depends(get_current_user),db: Session = Depends(create_db)
):return list_msg_method(user, db)

测试

查询留言列表完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda Python环境版本管理工具

download Anaconda 会默认安装pip和conda 安装参考:Anaconda安装教程(超详细版)-CSDN博客

Git 创建分支进行写作开发

第一次链接仓库提交 and 有SSH公匙 第一步&#xff1a; git clone 远程仓库链接clone 远程已有仓库到本地 第二部&#xff1a; cd 文件夹 第三步&#xff1a; git checkout -b <your_branch_name> 创建分支 第四步&#xff1a; git add . 将目前目录下的所有文件…

用frp内网穿透https网站

场景说明 在微信小程序上线测试的时候&#xff0c;自主开发的后端服务在公司局域网&#xff0c;小程序前端在微信公众平台只支持配置https协议的域名来访问服务端。公司一直在使用frp内网穿透工具实现公网访问公司局域网服务&#xff0c;因此&#xff0c;研究如何实现frp代理h…

基于需求电路的 OSPF

注&#xff1a;机翻&#xff0c;未校对。一个小众的功能。 OSPF over a Demand Circuit What is a Demand Circuit? 什么是需求电路&#xff1f; OSPF can be tuned to better handle demand circuits. But what are demand circuits? Are they still relevant today? 可以…

上传视频到阿里云OSS并获取视频时长

使用阿里云sdk&#xff0c;前端页面直传视频文件阿里云OSS存储&#xff0c;文件不需要经过服务端。 技术栈 前端&#xff1a;html、js、layui 服务端&#xff1a;Springboot 1、html页面创建元素 <input type"hidden" name"videoUrl" id"video…

在CentOS 7上安装和使用Webmin的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Webmin 是一个现代的、适用于任何 Linux 机器的 Web 控制面板。它允许您通过一个简单的界面来管理服务器。使用 Webmin&#xff0…

Java高手之路:每日一练,技能精进秘籍

目录 一、题目知识点java中有两种方式实现线程Servlet生命周期总结 一、题目 选自牛客网 1.后端获取数据&#xff0c;向前端输出过程中&#xff0c;以下描述正确的是 A.对于前端过滤过的参数&#xff0c;属于可信数据&#xff0c;可以直接输出到前端页面 B.对于从数据库获得的…

软件看门狗的设计与实现

在软件开发中&#xff0c;特别是在嵌入式系统、实时系统或任何需要高可靠性和故障恢复能力的领域&#xff0c;看门狗&#xff08;Watchdog&#xff09;机制扮演着至关重要的角色。 看门狗通过监控系统的运行状态&#xff0c;并在系统出现故障或停止响应时采取相应措施&#xf…

【SpringBoot整合系列】SpringBoot+Vue3实现在线编辑Excel

目录 基本实现后端 - Spring Boot依赖创建Controller&#xff08;demo&#xff09; 前端 - Vue 3 Vuetify安装Vuetify和Axios&#xff1a;创建组件 注意事项 基本实现 实现在线预览和编辑Excel的功能&#xff0c;尤其是编辑功能&#xff0c;涉及到更复杂的操作&#xff0c;因…

【YOLOv5/v7改进系列】引入YOLOv9的RepNCSPELAN4

一、导言 YOLOv9的几个主要创新点&#xff1a; Programmable Gradient Information (PGI): PGI是一种机制&#xff0c;用于应对深度网络中实现多目标所需要的多种变化。PGI提供完整的输入信息来计算目标函数&#xff0c;从而获得可靠的梯度信息以更新网络权重。PGI可以自由选择…

python统计文档词数

题目1 莎士比亚的经典悲剧Hamlet&#xff0c;获取该故事的文本文件&#xff0c;保存为hamlet.txt&#xff0c;统计该故事的英文词频。 提示&#xff1a; &#xff08;1&#xff09;处理文本&#xff0c;统一格式。英文单词一般以空格、标点符号或特殊符号进行分割&#xff0c;…

TCP/IP协议——使用Socket套接字实现

目录 Socket 使用Socket实现TCP客户端和服务器的过程 使用Socket搭建TCP服务器 线程优化 向客户端发送消息 连接的断开 客户端主动断开 服务端主动断开 服务器完整的程序 使用Socket编写客户端程序连接TCP服务器 Socket Socket是一种网络通信协议&#xff0c;它允许…

x-cmd pkg | yazi - 超快终端文件管理器

目录 简介快速入门功能特点竞品和相关项目进一步阅读 简介 yazi 是由 github.com/sxyazi 用 Rust 开发的终端文件管理器&#xff0c;支持预览文本文件、pdf 文件、图像、视频&#xff0c;内置代码高亮功能。在内部&#xff0c;它使用 Tokio 作为其异步运行时&#xff0c;以非阻…

【Vue3】watch 监视多种类型数据

【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…

大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

实战:Zookeeper 简介和单点部署ZooKeeper

Zookeeper 简介 ZooKeeper是一个开源的分布式协调服务&#xff0c;它是Apache软件基金会下的一个项目&#xff0c;旨在解决分布式系统中的协调和管理问题。以下是ZooKeeper的详细简介&#xff1a; 一、基本定义 ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&a…

系统架构师考点--系统架构设计(下)

大家好。今天总结一下系统架构设计的最后一部分知识点。 一、软件系统的质量属性 软件系统的质量属性 软件系统的质量属性可分为开发期质量属性和运行期质量属性2个部分。 1、开发期质量属性主要指在软件开发阶段所关注的质量属性&#xff0c;主要包含6个方面&#xff1a; …

C++ 关键字与库函数 学习总结

sizeof与strlen 含义 sizeof&#xff1a;是一个操作符&#xff0c;用于计算数据类型或变量的大小&#xff08;以字节为单位&#xff09;。在编译时求值strlen&#xff1a; 是一个函数&#xff0c;用于计算字符串的长度&#xff08;不包括终止符 \0&#xff09;。在运行时求值不…

【Code】Street-Gaussian代码复现笔记

文章目录 1. EnvironmentBug 1 2. TrainingBug 2Bug 3 1. Environment Follow the original instructions, conda create --name street-gaussians-ns -y python3.8 conda activate street-gaussians-ns pip install --upgrade pippip install torch2.1.2cu118 torchvision0.…

深度解析程序员面试中的“八股文”:助力还是阻力?

深度解析程序员面试中的“八股文”&#xff1a;助力还是阻力&#xff1f; 引言 在如今的求职市场中&#xff0c;程序员面试中的“八股文”几乎成为了一种必考内容。所谓“八股文”&#xff0c;指的是一系列标准化的技术面试题目&#xff0c;这些题目涵盖了算法、数据结构、操…