You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
318 lines
11 KiB
318 lines
11 KiB
syntax = "proto3";
|
|
|
|
package api;
|
|
|
|
option go_package = "api.yaml";
|
|
|
|
import "hz.proto";
|
|
|
|
// user
|
|
message DouyinUserRegisterRequest {
|
|
string username = 1[(api.vd) = "len($) < 32"]; // 注册用户名,最长32个字符
|
|
string password = 2[(api.vd) = "len($) < 32"]; // 密码,最长32个字符
|
|
}
|
|
|
|
message DouyinUserRegisterResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
int64 user_id = 3; // 用户id
|
|
string token = 4; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinUserLoginRequest {
|
|
string username = 1[(api.vd) = "len($) < 32"]; // 登陆用户名,最长32个字符
|
|
string password = 2[(api.vd) = "len($) < 32"]; // 密码,最长32个字符
|
|
}
|
|
|
|
message DouyinUserLoginResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
int64 user_id = 3; // 用户id
|
|
string token = 4; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinUserRequest {
|
|
int64 user_id = 1; // 用户id
|
|
string token = 2; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinUserResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
User user = 3; // 用户信息
|
|
}
|
|
|
|
message User {
|
|
int64 id = 1; // 用户id
|
|
string name = 2; // 用户名称
|
|
int64 follow_count = 3; // 关注总数
|
|
int64 follower_count = 4; // 粉丝总数
|
|
bool is_follow = 5; // true-已关注,false-未关注
|
|
string avatar = 6; // 用户头像Url
|
|
string background_image = 7; // 用户个人页顶部大图
|
|
string signature = 8; // 个人简介
|
|
int64 total_favorited = 9; // 获赞数量
|
|
int64 work_count = 10; // 作品数量
|
|
int64 favorite_count = 11; // 点赞数量
|
|
}
|
|
|
|
service UserService{
|
|
rpc Register (DouyinUserRegisterRequest) returns (DouyinUserRegisterResponse){
|
|
option (api.post) = "/douyin/user/register";
|
|
}
|
|
rpc Login (DouyinUserLoginRequest) returns (DouyinUserLoginResponse){
|
|
option (api.post) = "/douyin/user/login";
|
|
}
|
|
rpc GetUserById (DouyinUserRequest) returns (DouyinUserResponse){
|
|
option (api.get) = "/douyin/user";
|
|
}
|
|
}
|
|
|
|
// relation
|
|
message DouyinRelationActionRequest {
|
|
string token = 1; // 用户鉴权token
|
|
int64 to_user_id = 2; // 对方用户id
|
|
int32 action_type = 3; // 1-关注,2-取消关注
|
|
}
|
|
|
|
message DouyinRelationActionResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
}
|
|
|
|
message DouyinRelationFollowListRequest {
|
|
int64 user_id = 1; // 用户id
|
|
string token = 2; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinRelationFollowListResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated User user_list = 3; // 用户信息列表
|
|
}
|
|
|
|
message DouyinRelationFollowerListRequest {
|
|
int64 user_id = 1; // 用户id
|
|
string token = 2; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinRelationFollowerListResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated User user_list = 3; // 用户列表
|
|
}
|
|
|
|
message DouyinRelationFriendListRequest {
|
|
int64 user_id = 1; // 用户id
|
|
string token = 2; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinRelationFriendListResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated FriendUser user_list = 3; // 用户列表
|
|
}
|
|
|
|
message FriendUser {
|
|
User user = 1; // 评论用户信息
|
|
string message = 2; // 和该好友的最新聊天消息
|
|
int64 msgType = 3; // message消息的类型,0 => 当前请求用户接收的消息, 1 => 当前请求用户发送的消息(用于聊天框显示一条信息)
|
|
}
|
|
|
|
service RelationService{
|
|
rpc RelationAction(DouyinRelationActionRequest) returns (DouyinRelationActionResponse){
|
|
option (api.post) = "/douyin/relation/action";
|
|
} //关注或取消关注
|
|
rpc RelationFollowList(DouyinRelationFollowListRequest) returns (DouyinRelationFollowListResponse){
|
|
option (api.get) = "/douyin/relation/follow/list";
|
|
} //获取已关注用户的列表
|
|
rpc RelationFollowerList(DouyinRelationFollowerListRequest) returns (DouyinRelationFollowerListResponse){
|
|
option (api.get) = "/douyin/relation/follower/list";
|
|
} //获取粉丝用户列表
|
|
rpc RelationFriendList(DouyinRelationFriendListRequest) returns (DouyinRelationFriendListResponse){
|
|
option (api.get) = "/douyin/relation/friend/list";
|
|
} //获取好友列表
|
|
}
|
|
|
|
// feed
|
|
message DouyinFeedRequest {
|
|
int64 latest_time = 1; // 可选参数,限制返回视频的最新投稿时间戳,精确到秒,不填表示当前时间
|
|
string token = 2; // 可选参数,登录用户设置
|
|
}
|
|
|
|
// 例如当前请求的latest_time为9:00,那么返回的视频列表时间戳为[8:55,7:40, 6:30, 6:00]
|
|
// 所有这些视频中,最早发布的是 6:00的视频,那么6:00作为下一次请求时的latest_time
|
|
// 那么下次请求返回的视频时间戳就会小于6:00
|
|
message DouyinFeedResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated Video video_list = 3; // 视频列表
|
|
int64 next_time = 4; // 本次返回的视频中,发布最早的时间,作为下次请求时的latest_time
|
|
}
|
|
|
|
message Video {
|
|
int64 id = 1; // 视频唯一标识
|
|
User author = 2; // 视频作者信息
|
|
string play_url = 3; // 视频播放地址
|
|
string cover_url = 4; // 视频封面地址
|
|
int64 favorite_count = 5; // 视频的点赞总数
|
|
int64 comment_count = 6; // 视频的评论总数
|
|
bool is_favorite = 7; // true-已点赞,false-未点赞
|
|
string title = 8; // 视频标题
|
|
}
|
|
|
|
service FeedService{
|
|
rpc GetUserFeed (DouyinFeedRequest) returns (DouyinFeedResponse){
|
|
option (api.get) = "/douyin/feed";
|
|
} //返回一个视频列表
|
|
}
|
|
|
|
// publish
|
|
message DouyinPublishActionRequest {
|
|
string token = 1; // 用户鉴权token
|
|
bytes data = 2; // 视频数据
|
|
string title = 3; // 视频标题
|
|
}
|
|
|
|
message DouyinPublishActionResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
}
|
|
|
|
message DouyinPublishListRequest {
|
|
int64 user_id = 1; // 用户id
|
|
string token = 2; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinPublishListResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated Video video_list = 3; // 用户发布的视频列表
|
|
}
|
|
|
|
service PublishService{
|
|
rpc PublishAction(DouyinPublishActionRequest) returns (DouyinPublishActionResponse){
|
|
option (api.post) = "/douyin/publish/action";
|
|
} //发布视频操作
|
|
rpc PublishList(DouyinPublishListRequest) returns (DouyinPublishListResponse){
|
|
option (api.get) = "/douyin/publish/list";
|
|
} // 获取用户已发布视频的列表
|
|
}
|
|
|
|
// message
|
|
message DouyinMessageChatRequest {
|
|
string token = 1; // 用户鉴权token
|
|
int64 to_user_id = 2; // 对方用户id
|
|
int64 pre_msg_time = 3; // 上次最新消息的时间
|
|
}
|
|
|
|
message DouyinMessageChatResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated Message message_list = 3; // 消息列表
|
|
}
|
|
|
|
message Message {
|
|
int64 id = 1; // 消息id
|
|
int64 to_user_id = 2; // 该消息接收者的id
|
|
int64 from_user_id =3; // 该消息发送者的id
|
|
string content = 4; // 消息内容
|
|
string create_time = 5; // 消息创建时间
|
|
}
|
|
|
|
message DouyinMessageActionRequest {
|
|
string token = 1; // 用户鉴权token
|
|
int64 to_user_id = 2; // 对方用户id
|
|
int32 action_type = 3; // 1-发送消息
|
|
string content = 4; // 消息内容
|
|
}
|
|
|
|
message DouyinMessageActionResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
}
|
|
|
|
service MessageService {
|
|
rpc MessageChat(DouyinMessageChatRequest) returns (DouyinMessageChatResponse){
|
|
option (api.get) = "/douyin/message/chat";
|
|
} // 聊天记录
|
|
rpc MessageAction(DouyinMessageActionRequest) returns (DouyinMessageActionResponse){
|
|
option (api.post) = "/douyin/message/action";
|
|
} // 消息操作
|
|
}
|
|
|
|
// favorite
|
|
message DouyinFavoriteActionRequest {
|
|
string token = 1; // 用户鉴权token
|
|
int64 video_id = 2; // 视频id
|
|
int32 action_type = 3; // 1-点赞,2-取消点赞
|
|
}
|
|
|
|
message DouyinFavoriteActionResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
}
|
|
|
|
message DouyinFavoriteListRequest {
|
|
int64 user_id = 1; // 用户id
|
|
string token = 2; // 用户鉴权token
|
|
}
|
|
|
|
message DouyinFavoriteListResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated Video video_list = 3; // 用户点赞视频列表
|
|
}
|
|
|
|
service FavoriteService{
|
|
rpc FavoriteAction(DouyinFavoriteActionRequest) returns (DouyinFavoriteActionResponse){
|
|
option (api.post) = "/douyin/favorite/action";
|
|
} //点赞或取消点赞
|
|
rpc FavoriteList(DouyinFavoriteListRequest) returns (DouyinFavoriteListResponse){
|
|
option (api.get) = "/douyin/favorite/list";
|
|
} // 返回点赞视频列表
|
|
}
|
|
|
|
// comment
|
|
message DouyinCommentActionRequest {
|
|
string token = 1; // 用户鉴权token
|
|
int64 video_id = 2; // 视频id
|
|
int32 action_type = 3; // 1-发布评论,2-删除评论
|
|
string comment_text = 4; // 用户填写的评论内容,在action_type=1的时候使用
|
|
int64 comment_id = 5; // 要删除的评论id,在action_type=2的时候使用
|
|
}
|
|
|
|
message DouyinCommentActionResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
Comment comment = 3; // 评论成功返回评论内容,不需要重新拉取整个列表
|
|
}
|
|
|
|
message DouyinCommentListRequest {
|
|
string token = 1; // 用户鉴权token
|
|
int64 video_id = 2; // 视频id
|
|
}
|
|
|
|
message DouyinCommentListResponse {
|
|
int32 status_code = 1; // 状态码,0-成功,其他值-失败
|
|
string status_msg = 2; // 返回状态描述
|
|
repeated Comment comment_list = 3; // 评论列表
|
|
}
|
|
|
|
message Comment {
|
|
int64 id = 1; // 视频评论id
|
|
User user =2; // 评论用户信息
|
|
string content = 3; // 评论内容
|
|
string create_date = 4; // 评论发布日期,格式 mm-dd
|
|
int64 like_count = 5; // 该评论点赞数
|
|
int64 tease_count = 6; // 该评论diss数
|
|
}
|
|
|
|
service CommentService{
|
|
rpc CommentAction(DouyinCommentActionRequest) returns (DouyinCommentActionResponse){
|
|
option (api.post) = "/douyin/comment/action";
|
|
} //评论操作
|
|
rpc CommentList(DouyinCommentListRequest) returns (DouyinCommentListResponse){
|
|
option (api.get) = "/douyin/comment/list";
|
|
} //返回评论列表
|
|
}
|