这是我参与「第五届青训营 」伴学笔记创作活动的第 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