项目实践| 青训营笔记

51 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天

技术选型与相关开发文档

项目采用三层架构设计,分别为entity,service,controller,结构清晰,代码耦合度低。

架构设计

entity包包括了实体类的定义,对数据库的操作等功能。

service包中实现对entity的调用,完善业务的逻辑,调用对数据库的操作来修改数据库。

controller为路由到具体功能实现,在controller中调用service服务实现业务场景。

中间件使用JWT鉴权。

数据库ER图如下:

项目代码介绍

目录结构清晰,具体说明如下

Configure

  • configure.go 读取configure内的项目相关配置
  • configure.yml 项目有关配置均在此文件内,运行前请先修改其中配置,设置为本地

Constant

  • constant.go 存储项目的一些全局变量,使得开发更加规范有效

Controller

  • comment.go 实现评论操作接口
  • favorite.go 实现喜欢操作接口
  • feed.go 实现视频流接口
  • publish.go 实现发布操作接口
  • relation.go 实现关系操作接口
  • user.go 实现用户接口

Entity

  • comment.go 评论实体类与Dao实现,包含若干数据库操作
  • favourite.go 喜欢实体类与Dao实现,包含若干数据库操作
  • follow.go 关注实体类与Dao实现,包含若干数据库操作
  • init.go 对mySql,Redis进行初始化,在main函数中调用
  • user.go 用户实体类与Dao实现,包含若干数据库操作
  • video.go 评论实体类与Dao实现,包含若干数据库操作

Log

  • log.txt 记录项目运行中的日志,方便调试以及运行中的错误定位

Middleware

  • TokenJWT.go 实现JWT生成token
  • TokenParse.go 中间件函数,进行token鉴权

Public

  • Video 存放视频
  • Cover 存放由ffmpeg生成的封面

Service

  • commentService.go 评论业务逻辑实现
  • favouriteService.go 喜欢业务逻辑实现
  • redisService.go 其他service中调用,存数据到内存,减少对数据库的访问次数,业务加速
  • relationService.go 关注业务逻辑实现
  • userService.go 用户业务逻辑实现
  • videoService.go 视频业务逻辑实现

Test

Util

  • 包含了建表sql语句
  • ffmpeg工具使用
  • log日志函数

main.go

router.go