syntax = "proto3"; package ranking_service; option go_package = "./ranking"; message Request { string ping = 1; } message Response { string pong = 1; } // 定义SetUserGameScoreRequest消息类型 message SetUserGameScoreRequest { uint32 score = 1; // 对应json的"score" uint32 type = 2; // 对应json的"type", 带默认值0 uint64 userId = 3; // 用户id uint32 appId = 4; // 小程序id } // 定义RankingData消息类型 message RankingList { string nickname = 1; // 昵称,对应db:"nickname" string avatar = 2; // 头像,对应db:"avatar" uint32 score = 3; // 得分,对应db:"score" uint64 user_id = 4; // 用户ID,对应db:"app_user_id" uint32 rank = 5; // 排名,对应db:"rank" bool self = 6; // 是否自我判断 } message GetRankingListResponse { repeated RankingList rankingData = 1; } message GetRankingListRequest { uint32 appId = 1; uint32 type = 2; uint64 userId = 3; } // 定义Base响应结构 message BaseResult { int32 error_code = 1; // 错误码 string error_msg = 2; // 错误信息 } message AddUserGameScoreRequest{ uint32 type = 1; uint32 appId = 2; uint64 userId = 3; uint32 score = 4; } message RemoveRankingRequest{ uint32 appId = 1; uint32 type = 2; } message AtomicGetHigherUserRequest{ uint32 appId = 1; uint32 score = 2; uint32 type = 3; uint64 userId = 4; } message SettlementResponse{ RankingList higher = 1; RankingList mineMax = 2; RankingList mine = 3; } service ranking_service { rpc Ping(Request) returns(Response); rpc SetUserGameScore (SetUserGameScoreRequest) returns (BaseResult); rpc GetRankingList (GetRankingListRequest) returns (GetRankingListResponse); rpc AddUserGameScore(AddUserGameScoreRequest) returns(BaseResult); rpc RemoveRanking(RemoveRankingRequest) returns(BaseResult); rpc AtomicGetHigherUser(AtomicGetHigherUserRequest) returns(RankingList); rpc Settlement(AtomicGetHigherUserRequest) returns(SettlementResponse); }