具体功能内容参考飞书说明文档
工程除了go.mod包含的依赖外,还使用ffmpeg以生成视频缩略图,需要另外安装并配置进%path%在服务器上
ffmpeg地址:https://ffbinaries.com/downloads
其中go-ffmpeg为私人库,开发时不一定能同步到依赖,需要手动操作
go build && ./Momotok-Server
接口功能正在开发中
- 用户登录数据保存在MySQL数据库中
- 视频上传后会保存到本地 public 目录中,访问时用 127.0.0.1:8080/static/hashed256_video_name 即可
- 服务器存在配置文件,在system的config.yaml中定义了
- extra apis - II
- basic apis
- controller.Feed
- controller.UserInfo
- controller.Register
- controller.Login
- controller.Publish
- controller.PublishList
- extra apis - I
- apiRouter.POST("/favorite/action/", controller.FavoriteAction)
- apiRouter.GET("/favorite/list/", controller.FavoriteList)
- apiRouter.POST("/comment/action/", controller.CommentAction)
- apiRouter.GET("/comment/list/", controller.CommentList)
- extra apis - II
- apiRouter.POST("/relation/action/", controller.RelationAction)
- apiRouter.GET("/relation/follow/list/", controller.FollowList)
- apiRouter.GET("/relation/follower/list/", controller.FollowerList)
- apiRouter.GET("/relation/friend/list/", controller.FriendList)
- apiRouter.GET("/message/chat/", controller.MessageChat)
- apiRouter.POST("/message/action/", controller.MessageAction)
test 目录下为不同场景的功能测试case,可用于验证功能实现正确性
其中 common.go 中的 serverAddr 为服务部署的地址,默认为本机地址,可以根据实际情况修改
测试数据写在 demo_data.go 中,用于列表接口的 mock 测试
create table user
(
id int auto_increment
primary key,
username varchar(50) not null,
ip varchar(15) null,
password varchar(60) null,
created_at timestamp default CURRENT_TIMESTAMP not null,
total_received_likes int default 0 null,
work_count int default 0 null,
total_likes int default 0 null,
constraint name
unique (username)
)
engine = InnoDB;
create table video
(
id int auto_increment
primary key,
author_id int null,
play_url varchar(255) null,
cover_url varchar(255) null,
favourite_count int null,
comment_count int null,
title varchar(72) null,
publish_time timestamp default CURRENT_TIMESTAMP null,
constraint cover_url
unique (cover_url),
constraint play_url
unique (play_url),
constraint video_ibfk_1
foreign key (author_id) references user (id)
)
engine = InnoDB;
create index author_id
on video (author_id);
create table likes
(
id int auto_increment
primary key,
video_id int null,
liked_at timestamp default CURRENT_TIMESTAMP not null,
user_id int null,
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (video_id) REFERENCES video(id)
)ENGINE = InnoDB;
create index user_id
on likes (user_id);
create index video_id
on likes (video_id);
create table comments
(
id int auto_increment primary key,
video_id int ,
commenter_id int ,
content text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ,
create_date timestamp default CURRENT_TIMESTAMP ,
FOREIGN KEY (commenter_id) REFERENCES user(id),
FOREIGN KEY (video_id) REFERENCES video(id)
)ENGINE = InnoDB;
create index commenter_id
on comments (commenter_id);
create index video_id
on comments (video_id);