当前位置: 首页 > news >正文

18. 查看帖子详情

文章目录

  • 一、建立路由
  • 二、开发GetPostDetailHandler
  • 三、编写logic
  • 四、编写dao层
  • 五、编译测试运行

在这里插入图片描述

一、建立路由

router/route.go

	v1.GET("/post/:id", controller.GetPostDetailHandler)

二、开发GetPostDetailHandler

controller/post.go

func GetPostDetailHandler(c *gin.Context) {postIdStr := c.Param("id")postId, err := strconv.ParseInt(postIdStr, 10, 64)if err != nil {zap.L().Error("get post detail with invalid param", zap.Error(err))ResponseError(c, CodeInvalidParam)return}data, err := logic.GetPostById(postId)if err != nil {zap.L().Error("logic.GetPostById() failed", zap.Error(err))ResponseError(c, CodeServerBusy)return}ResponseSuccess(c, data)

三、编写logic

logic/post.go

package logicimport ("bluebell/dao/mysql""bluebell/models""go.uber.org/zap"
)// GetPostById 根据帖子id查询帖子详情数据
func GetPostById(pid int64) (data *models.ApiPostDetail, err error) {// 查询并组合我们接口想用的数据post, err := mysql.GetPostById(pid)if err != nil {zap.L().Error("mysql.GetPostById(pid) failed",zap.Int64("pid", pid),zap.Error(err))return}// 根据作者id查询作者信息user, err := mysql.GetUserById(post.AuthorId)fmt.Println(user.UserId, user.Username, *user)if err != nil {zap.L().Error("mysql.GetUserById(post.AuthorID) failed",zap.Int64("author_id", post.AuthorId),zap.Error(err))return}// 根据社区id查询社区详细信息community, err := mysql.GetCommunityDetailByID(post.CommunityId)if err != nil {zap.L().Error("mysql.GetUserById(post.AuthorID) failed",zap.Int64("community_id", post.CommunityId),zap.Error(err))return}// 接口数据拼接data = &models.ApiPostDetail{AuthorName: user.Username,Post:       post,Community:  community,}return
}

四、编写dao层

mysql/post.go:增加获取帖子详情函数

func GetPostById(id int64) (*models.Post, error) {post := &models.Post{}err := db.Where("id = ?", id).Find(&post).Errorreturn post, err
}

五、编译测试运行

在这里插入图片描述

http://www.lryc.cn/news/317213.html

相关文章:

  • 【算法刷题】Day30
  • docker容器镜像管理+compose容器编排(持续更新中)
  • 【Greenhills】MULTIIDE集成第三方的编辑器进行源文件编辑工作
  • 【Flutter】 search_page使用心得
  • 前端Vue列表组件 list组件:实现高效数据展示与交互
  • 每日OJ题_哈希表⑤_力扣49. 字母异位词分组
  • 【Linux】-Linux下的软件商店yum工具介绍(linux和windows互传文件仅仅一个拖拽搞定!!!!)
  • 320: 鸡兔同笼(python)
  • CentOS 8启动流程
  • js【详解】原型 vs 原型链
  • 贪心算法: 奶牛做题
  • go语言tcp协议实现文件上传
  • 【Unity】利用二进制数据持久化 【练习学习项目/有不足之处欢迎斧正/侵删】
  • 做伦敦银要等怎样的价格与行情?
  • SpringBoot多数据源切换 多数据源事务解决方案 二
  • ElasticSearch 搜索推荐
  • Linux纯命令行查看文本文件
  • 解决前端项目中Node.js版本不一致导致的依赖安装错误
  • IIoT 与 IoT 之间的区别
  • spring boot3token拦截器链的设计与实现
  • LeetCode543题:二叉树的直径(python3)
  • zabbix 7.0编译部署教程
  • Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda
  • Docker 配置阿里云镜像加速器
  • [Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库
  • 实用指南!2024年度计划怎么写?工作学习必备!
  • js的事件有哪些?
  • Mock.js 基本语法与应用笔记
  • vue从零到一创建项目?
  • 安装PyTorch详细过程