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

2 months ago
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";
} //返回评论列表
}