You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

345 lines
8.9 KiB
Protocol Buffer

syntax = "proto3";
package pb;
option go_package = "./pb";
// model
message User {
int64 id = 1;
string username = 2;
// platform
string platform = 3;
string pUid = 4;
string pUname = 5;
string pAvatar = 6;
int32 nobilityLevel = 7; // 贵族等级
int64 integral = 8; // 用户积分(充值)
}
message Empty {}
// req
message PlatformUserReq {
string platform = 1;
string pUid = 2;
}
message PlatformUserResp {
User user = 1;
}
// 用户ID请求
message UserIdReq {
int64 userId = 1;
}
// 用户ID回复
message UserIdResp {
int64 userId = 1;
}
enum IntegralType {
Battle = 0; // 战斗
Gift = 1; // 礼物
Other = 10; // 其它积分
}
// 变更积分请求
message ChangeIntegralReq {
int64 userId = 1; // 系统用户ID
int64 battleId = 2; // 战斗ID(RPC内部)
int64 change = 3; // 变更数量
IntegralType integralType = 4; // 积分类型
}
// 变更积分回复
message ChangeIntegralResp {
int64 userId = 1; // 系统用户ID
int64 change = 2; // 本次变更积分数量,负数为扣减
int64 integral = 3; // 用户当前总积分
}
// 用户积分回复
message UserIntegralResp {
int64 userId = 1; // 用户ID
int64 integral = 2; // 用户当前总积分
}
// 用户打卡(签到)回复
message UserCheckInResp {
int32 code = 1;
string msg = 2; // 消息
int64 integralChange = 3; // 积分变动量
int64 integral = 4; // 变动后的积分量
bool isCritical = 5; // 是否发生了暴击奖励
}
// 转移用户积分
message TransferUserIntegralReq {
int64 userId = 1; // 源用户ID
int64 targetUserId = 2; // 目标用户
int64 transfer = 3; // 待转移量
}
message TransferUserIntegralResp {
int32 code = 1;
string msg = 2; // 消息
int64 userId = 3;
string uname = 4;
string avatar = 5;
int64 targetUserId = 6;
string targetUname = 7;
string targetAvatar = 8;
int64 userIntegral = 10; // 源用户积分剩余
int64 targetUserIntegral = 11; // 目标用户积分剩余
}
// 用户送礼请求
message UserSendGiftReq {
string platform = 1; // 平台
int64 userId = 2; // 系统用户ID
string pUid = 3; // 平台用户ID
string roomId = 4; // 直播间ID
int64 giftId = 5; // 礼物ID
string giftName = 6; // 礼物名
int64 num = 7; // 赠送数量
int64 price = 8; // 礼物单价(系统不存在对应礼物数据时使用)
bool isPaid = 9; // 是否收费礼物
int64 battleId = 10; // 战局ID
}
// 用户送礼回复
message UserSendGiftResp {
ChangeIntegralResp integral = 10; // 积分变动
}
// 用户购买舰长请求
message UserBuyNobilityReq {
string platform = 1; // 平台
int64 userId = 2; // 系统用户ID
string pUid = 3; // 平台用户ID
int64 battleId = 4; // 战局ID
string roomId = 5; // 直播间ID
int64 giftId = 6; // 礼物ID
string giftName = 7; // 礼物名
int64 num = 8; // 赠送数量
int64 price = 9; // 礼物单价(系统不存在对应礼物数据时使用)
int64 level = 10; // 贵族等级
int64 startTime = 11; // 开始时间
int64 endTime = 12; // 结束时间
}
// 用户购买舰长回复
message UserBuyNobilityResp {
ChangeIntegralResp integral = 10; // 积分变动
}
// 通知-PvP杀兵营(人) statistics.pvp.kill
message StatPvPKillReq {
int64 uid = 1; // 用户ID
int64 targetUid = 2; // 目标用户
bool isGeneral = 3; // targetUid是否名将
}
// 通知-PvP一血 statistics.pvp.first
message StatPvPFirstBloodReq {
int64 uid = 1; // 用户ID
int32 type = 2; // 1-拿到一血 2-被破一血
}
// 通知-PvP战报 statistics.pvp.report
message StatPvPReportReq {
message Item {
int64 uid = 1; // 用户ID
string uname = 2; // 用户名
int32 position = 3; // 名次(特指在某一方的名次)
int64 damage = 4; // 伤害量
int64 deDamage = 5; // 承受伤害
int64 killUnit = 6; // 击杀单位数量
int64 deKillUnit = 7; // 被杀单位数量
}
int32 winCamp = 1; // 获胜阵营 1-蓝 2-红
int64 battleId = 2; // 战斗ID
repeated Item winItems = 10; // 获胜方数据
repeated Item lostItems = 11; // 战败方数据
}
// 通知-PvP战报 回复
message StatPvPReportResp {
message Item {
int64 uid = 1; // 用户ID
string uname = 2; // 用户名
int32 position = 3; // 名次(特指在某一方的名次)
int64 returnsIntegral = 4; // 回收的积分获胜方才能回收0不要展示
int64 rewardPoolIntegral = 5; // 瓜分奖池分
int64 generalIntegral = 6; // 名将
int64 nobilityIntegral = 7; // 舰长|总督|贵族 加成分
int64 battleIntegral = 8; // 战斗结算奖励(普通)
int64 totalIntegral = 10; // 总计加分
}
repeated Item winItems = 1; // 获胜方数据
repeated Item lostItems = 2; // 战败方数据
}
//////////////////// 礼包
enum GiftType {
starter = 0; // 新手礼包
subsistence = 1; // 低保
}
message GiftPackItem {
string packType = 1; // 礼包类型 starter:新手礼包
string packName = 2; // 礼包名称
int64 integral = 3; // 获取的积分
repeated string title = 4; // 获取的称号
}
// 领取礼包
message DrawGiftPackReq {
int64 uid = 1;
string uname = 2;
string giftType = 3;
}
message DrawGiftPackResp {
int64 uid = 1;
string uname = 2;
int32 code = 3; // 领取结果 200:成功 201100:已经领取过 201101:已领取完
string msg = 4; // 消息 [领取成功|已经领取过|该用户已领取(当日|每周|每月)完所有礼包]
GiftPackItem item = 10;
}
////////////////////// drawPool
// 往福利池中添加福利,扣除自己积分
message IncreaseWelfareReq {
int64 uid = 1; // 用户ID
string uname = 2; // 用户名
int64 welfare = 3; // 投入值
}
////////////////////// rank
enum RankType {
Unknown = 0;
Damage = 1; // 伤害榜
DeDamage = 2; // 受伤榜
General = 3; // 名将榜
DeGeneral = 4; // 落马榜
KillUnit = 5; // 小兵击杀
DeKillUnit = 6; // 小兵被杀
KillPlayer = 7; // 击杀玩家
DeKillPlayer = 8; // 被杀榜
Win = 9; // 获胜榜
Lost = 10; // 战败榜
FirstBlood = 11; // 一血榜
DeFirstBlood = 12; // 被拿一血榜
}
message RankPvpReq {
int32 type = 1; // rank类型
int32 topN = 2; // TopN
}
message RankPvpResp {
message Item {
int64 uid = 1;
string uname = 2;
int64 score = 3;
string avatar = 4;
}
int32 type = 1; // rank类型
repeated Item items = 2; // rank数据
}
// RankPvpSubmitReq 手动排行榜结算
message RankPvpSubmitReq {
int32 rankType = 1; // 待结算的排行榜类型
bool allRankType = 2; // 是否直接结算所有排行类型
}
message RankPvpSubmitResp {
message Result {
int64 userId = 1;
string username = 2;
string avatar = 3;
int64 integral = 4; // 获取到的积分数
string title = 5; // 获取到的称号
int64 titleDuration = 6; // 称号持续时间(单位: 秒,负数为无限长)
}
message Item {
int32 rankType = 1; // 排行榜类型
repeated Result results = 2; // 上榜玩家?
}
repeated Item items = 1;
}
// UserRankReq 查询用户自己的排行
message UserRankReq {
int64 userId = 1; // 系统用户ID
string username = 2; // 用户名
int32 rankType = 3; // 排行榜类型
bool allRankType = 4; // 直接查询所有排行类型
}
message UserRankResp {
message Item {
int32 rankType = 1; // 排行类型
int32 pos = 2; // 名次
int64 score = 3; // 分数
}
repeated Item items = 1;
}
service userCenter {
/// @ZeroGroup: platform_user
// retrievePlatformUser 新增或获取用户
rpc retrievePlatformUser(PlatformUserReq) returns (PlatformUserResp);
// getUserIdByPUid 通过平台用户id获取系统用户ID
rpc getUserIdByPUid(PlatformUserReq) returns (UserIdResp);
/// @ZeroGroup: integral
//ChangeIntegral 新增用户积分
rpc changeIntegral(ChangeIntegralReq) returns (ChangeIntegralResp);
//GetUserIntegral 获取用户积分
rpc getUserIntegral(UserIdReq) returns (UserIntegralResp);
//UserCheckIn 用户签到|打卡
rpc userCheckIn(UserIdReq) returns (UserCheckInResp);
//TransferUserIntegral 转移积分
rpc transferUserIntegral(TransferUserIntegralReq) returns (TransferUserIntegralResp);
/// @ZeroGroup: gift
// UserSendGift 用户赠送礼物
rpc userSendGift(UserSendGiftReq) returns(UserSendGiftResp);
rpc userBuyNobility(UserBuyNobilityReq) returns(UserBuyNobilityResp);
/// @ZeroGroup: statistics
rpc statPvpKill(StatPvPKillReq) returns (Empty);
rpc statPvpFirstBlood(StatPvPFirstBloodReq) returns (Empty);
rpc statPvpReport(StatPvPReportReq) returns (StatPvPReportResp);
/// @ZeroGroup: giftPack
rpc drawGiftPack(DrawGiftPackReq) returns(DrawGiftPackResp);
/// @ZeroGroup: drawPool
rpc increaseWelfare(IncreaseWelfareReq) returns (Empty);
/// @ZeroGroup: rank
// rankPvp pvp排行
rpc rankPvp(RankPvpReq) returns(RankPvpResp);
rpc rankPvpSubmit(RankPvpSubmitReq) returns(RankPvpSubmitResp);
rpc userRankPvp(UserRankReq) returns (UserRankResp);
}