|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
package pb;
|
|
|
|
|
|
|
|
import "vars/vars.proto";
|
|
|
|
|
|
|
|
option go_package = "./pb";
|
|
|
|
|
|
|
|
// model
|
|
|
|
message Empty {}
|
|
|
|
|
|
|
|
message Response {
|
|
|
|
int32 code = 1; // code
|
|
|
|
string msg = 2; // msg
|
|
|
|
}
|
|
|
|
|
|
|
|
// req
|
|
|
|
message PlatformUserReq {
|
|
|
|
string platform = 1;
|
|
|
|
string pUid = 2;
|
|
|
|
string pUname = 3;
|
|
|
|
string pAvatar = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PlatformUserResp {
|
|
|
|
int64 id = 1;
|
|
|
|
// platform
|
|
|
|
string platform = 3;
|
|
|
|
string pUid = 4;
|
|
|
|
string pUname = 5;
|
|
|
|
string pAvatar = 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 用户详细信息返回
|
|
|
|
message UserDetailsResp {
|
|
|
|
// TitleItem 称号
|
|
|
|
message TitleItem {
|
|
|
|
int64 id = 1; // ID
|
|
|
|
string name = 2; // 名
|
|
|
|
int32 sort = 3; // 排序号
|
|
|
|
int32 remain = 4; // 剩余时长(单位:小时)
|
|
|
|
}
|
|
|
|
// 精英单位
|
|
|
|
message EliteItem {
|
|
|
|
int64 id = 1; // ID 1000(普通x) 1001(弓骑兵) 1002(牧师)
|
|
|
|
int32 sort = 2; // 排序号
|
|
|
|
int32 remain = 3; // 剩余时长(单位:天)-1无限制
|
|
|
|
}
|
|
|
|
|
|
|
|
int64 userId = 1; // 系统用户ID
|
|
|
|
int32 nobilityLevel = 2; // 贵族等级
|
|
|
|
int64 coin = 3; // 金币
|
|
|
|
|
|
|
|
TitleItem currentTitle = 4; // 当前佩戴的称号ID
|
|
|
|
EliteItem currentElite = 5; // 当前使用的精英单位ID
|
|
|
|
repeated TitleItem titles = 6; // 拥有的称号列表
|
|
|
|
repeated EliteItem elites = 7; // 拥有的精英单位列表
|
|
|
|
}
|
|
|
|
|
|
|
|
// 用户ID请求
|
|
|
|
message UserIdReq {
|
|
|
|
int64 userId = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 用户ID回复
|
|
|
|
message UserIdResp {
|
|
|
|
int64 userId = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetUserCoinResp {
|
|
|
|
int64 userId = 1;
|
|
|
|
int64 current = 2; // 当前量
|
|
|
|
}
|
|
|
|
|
|
|
|
// 变更弹币请求
|
|
|
|
message ChangeCoinReq {
|
|
|
|
int64 userId = 1; // 系统用户ID
|
|
|
|
int64 battleId = 2; // 战局ID
|
|
|
|
int64 change = 3; // 变更数量
|
|
|
|
pb.vars.UserCoinChangedReason reason = 4; // 原因
|
|
|
|
}
|
|
|
|
|
|
|
|
// 转移用户弹币
|
|
|
|
message TransferUserCoinReq {
|
|
|
|
int64 userId = 1; // 源用户ID
|
|
|
|
int64 targetUserId = 2; // 目标用户
|
|
|
|
int64 transfer = 3; // 待转移量
|
|
|
|
}
|
|
|
|
|
|
|
|
// 转移用户弹币 回复
|
|
|
|
message TransferUserCoinResp {
|
|
|
|
int64 userId = 1;
|
|
|
|
string uname = 2;
|
|
|
|
string avatar = 3;
|
|
|
|
|
|
|
|
int64 targetUserId = 4;
|
|
|
|
string targetUname = 5;
|
|
|
|
string targetAvatar = 6;
|
|
|
|
|
|
|
|
int64 userCoin = 10; // 源用户剩余
|
|
|
|
int64 targetUserCoin = 11; // 目标用户剩余
|
|
|
|
}
|
|
|
|
|
|
|
|
// 用户打卡(签到)回复
|
|
|
|
message UserCheckInResp {
|
|
|
|
int64 coinChange = 1; // 弹币变更量
|
|
|
|
int64 currentCoin = 2; // 现有弹币量
|
|
|
|
bool isCritical = 3; // 是否发生了暴击奖励
|
|
|
|
}
|
|
|
|
|
|
|
|
// 用户送礼请求
|
|
|
|
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 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; // 结束时间
|
|
|
|
}
|
|
|
|
|
|
|
|
// 通知-PvP战报 statistics.pvp.report
|
|
|
|
message StatPvPReportReq {
|
|
|
|
message Item {
|
|
|
|
int64 uid = 1; // 用户ID
|
|
|
|
string uname = 2; // 用户名
|
|
|
|
int64 damage = 3; // 伤害量
|
|
|
|
int64 deDamage = 4; // 承受伤害
|
|
|
|
int64 killUnit = 5; // 击杀单位数量
|
|
|
|
int64 deKillUnit = 6; // 被杀单位数量
|
|
|
|
bool firstBlood = 7; // 拿到一血
|
|
|
|
bool deFirstBlood = 8; // 被拿一血
|
|
|
|
int64 killPlayer = 9; // 击杀玩家数
|
|
|
|
bool deKillPlayer = 10; // 是否被击杀
|
|
|
|
bool isGeneral = 11; // 是否上一把名将?
|
|
|
|
}
|
|
|
|
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; // 名次(特指在某一方的名次)
|
|
|
|
float score = 4; // 评分(一位小数)
|
|
|
|
}
|
|
|
|
int32 winCamp = 1; // 获胜阵营 1-蓝 2-红
|
|
|
|
int64 battleId = 2; // 战斗ID
|
|
|
|
repeated Item winItems = 10; // 获胜方数据
|
|
|
|
repeated Item lostItems = 11; // 战败方数据
|
|
|
|
}
|
|
|
|
|
|
|
|
//////////////////// 礼包
|
|
|
|
|
|
|
|
enum GiftType {
|
|
|
|
starter = 0; // 新手礼包
|
|
|
|
subsistence = 1; // 低保
|
|
|
|
}
|
|
|
|
|
|
|
|
message GiftPackItem {
|
|
|
|
string packType = 1; // 礼包类型 starter:新手礼包
|
|
|
|
string packName = 2; // 礼包名称
|
|
|
|
int64 coin = 3; // 获取的弹币
|
|
|
|
repeated string title = 4; // 获取的称号
|
|
|
|
}
|
|
|
|
|
|
|
|
// 领取礼包
|
|
|
|
message DrawGiftPackReq {
|
|
|
|
int64 uid = 1;
|
|
|
|
string uname = 2;
|
|
|
|
string giftType = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message DrawGiftPackResp {
|
|
|
|
int64 uid = 1;
|
|
|
|
string uname = 2;
|
|
|
|
|
|
|
|
GiftPackItem item = 10;
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////// drawPool
|
|
|
|
|
|
|
|
// 往福利池中添加福利,扣除自己积分
|
|
|
|
message IncreaseWelfareReq {
|
|
|
|
int64 uid = 1; // 用户ID
|
|
|
|
string uname = 2; // 用户名
|
|
|
|
int64 welfare = 3; // 投入值
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////// rank
|
|
|
|
|
|
|
|
message RankPvpReq {
|
|
|
|
pb.vars.RankType type = 1; // rank类型
|
|
|
|
int32 topN = 2; // TopN
|
|
|
|
}
|
|
|
|
|
|
|
|
message RankPvpResp {
|
|
|
|
message Item {
|
|
|
|
int64 uid = 1;
|
|
|
|
string uname = 2;
|
|
|
|
int64 score = 3;
|
|
|
|
string avatar = 4;
|
|
|
|
}
|
|
|
|
pb.vars.RankType type = 1; // rank类型
|
|
|
|
repeated Item items = 2; // rank数据
|
|
|
|
}
|
|
|
|
|
|
|
|
// RankPvpSubmitReq 手动排行榜结算
|
|
|
|
message RankPvpSubmitReq {
|
|
|
|
pb.vars.RankType rankType = 1; // 待结算的排行榜类型
|
|
|
|
bool allRankType = 2; // 是否直接结算所有排行类型
|
|
|
|
}
|
|
|
|
|
|
|
|
message RankPvpSubmitResp {
|
|
|
|
message Result {
|
|
|
|
int64 userId = 1;
|
|
|
|
string username = 2;
|
|
|
|
string avatar = 3;
|
|
|
|
int64 coin = 4; // 获取到的积分数
|
|
|
|
int64 title = 5; // 获取到的称号ID
|
|
|
|
}
|
|
|
|
message Item {
|
|
|
|
pb.vars.RankType rankType = 1; // 排行榜类型
|
|
|
|
repeated Result results = 2; // 上榜玩家?
|
|
|
|
}
|
|
|
|
|
|
|
|
repeated Item items = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// UserRankReq 查询用户自己的排行
|
|
|
|
message UserRankReq {
|
|
|
|
int64 userId = 1; // 系统用户ID
|
|
|
|
string username = 2; // 用户名
|
|
|
|
pb.vars.RankType rankType = 3; // 排行榜类型
|
|
|
|
bool allRankType = 4; // 直接查询所有排行类型
|
|
|
|
}
|
|
|
|
|
|
|
|
message UserRankResp {
|
|
|
|
message Item {
|
|
|
|
pb.vars.RankType rankType = 1; // 排行类型
|
|
|
|
int32 pos = 2; // 名次
|
|
|
|
int64 score = 3; // 分数
|
|
|
|
}
|
|
|
|
repeated Item items = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////// zhg
|
|
|
|
message EliteReq {
|
|
|
|
int64 userId = 1; // ID
|
|
|
|
int32 sort = 2; // 序号
|
|
|
|
}
|
|
|
|
|
|
|
|
message GiveEliteReq {
|
|
|
|
int64 userId = 1; // ID
|
|
|
|
int64 eliteId = 2; // 精英单位ID
|
|
|
|
int32 duration = 3; // 赠送时长(天)
|
|
|
|
bool forever = 4; // 永久赠送
|
|
|
|
}
|
|
|
|
|
|
|
|
message BuyEliteResp {
|
|
|
|
int64 userId = 1; // ID
|
|
|
|
int64 eliteId = 2; // 精英单位ID
|
|
|
|
int64 cost = 3; // 花费
|
|
|
|
int32 duration = 4; // 持续时间 单位(day)
|
|
|
|
}
|
|
|
|
|
|
|
|
message GiveTitleReq {
|
|
|
|
int64 userId = 1; // ID
|
|
|
|
int64 titleId = 2; // 精英单位ID
|
|
|
|
int32 duration = 3; // 赠送时长(天)
|
|
|
|
bool forever = 4; // 永久赠送
|
|
|
|
}
|
|
|
|
|
|
|
|
message BuyTitleResp {
|
|
|
|
int64 userId = 1; // ID
|
|
|
|
int64 titleId = 2; // 称号ID
|
|
|
|
string name = 3; // 称号名
|
|
|
|
int64 cost = 4; // 花费
|
|
|
|
int32 duration = 5; // 持续时间 单位(day)
|
|
|
|
}
|
|
|
|
|
|
|
|
message ChangeEliteResp {
|
|
|
|
int64 userId = 1;
|
|
|
|
int64 eliteId = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TitleReq {
|
|
|
|
int64 userId = 1; // ID
|
|
|
|
int32 sort = 2; // 序号
|
|
|
|
}
|
|
|
|
|
|
|
|
message ChangeTitleResp {
|
|
|
|
int64 userId = 1;
|
|
|
|
int64 titleId = 2;
|
|
|
|
string name = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
service userCenter {
|
|
|
|
/// @ZeroGroup: platform_user
|
|
|
|
|
|
|
|
// retrievePlatformUser 新增或获取用户
|
|
|
|
rpc retrievePlatformUser(PlatformUserReq) returns (PlatformUserResp);
|
|
|
|
//getUserDetails 获取用户详细信息
|
|
|
|
rpc getUserDetails(UserIdReq) returns (UserDetailsResp);
|
|
|
|
// getUserIdByPUid 通过平台用户id获取系统用户ID
|
|
|
|
rpc getUserIdByPUid(PlatformUserReq) returns (UserIdResp);
|
|
|
|
//UserCheckIn 用户签到|打卡
|
|
|
|
rpc userCheckIn(UserIdReq) returns (UserCheckInResp);
|
|
|
|
|
|
|
|
/// @ZeroGroup: coin
|
|
|
|
|
|
|
|
//changeCoin 新增或扣减用户弹币
|
|
|
|
rpc changeCoin(ChangeCoinReq) returns (Empty);
|
|
|
|
//getUserCoin 获取用户弹币
|
|
|
|
rpc getUserCoin(UserIdReq) returns (GetUserCoinResp);
|
|
|
|
//transferUserCoin 转移用户弹币
|
|
|
|
rpc transferUserCoin(TransferUserCoinReq) returns (TransferUserCoinResp);
|
|
|
|
|
|
|
|
/// @ZeroGroup: gift
|
|
|
|
|
|
|
|
// UserSendGift 用户赠送礼物
|
|
|
|
rpc userSendGift(UserSendGiftReq) returns(Empty);
|
|
|
|
rpc userBuyNobility(UserBuyNobilityReq) returns(Empty);
|
|
|
|
|
|
|
|
/// @ZeroGroup: statistics
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
/// @ZeroGroup: zhg
|
|
|
|
|
|
|
|
rpc giveElite(GiveEliteReq) returns(BuyEliteResp);
|
|
|
|
rpc buyElite(EliteReq) returns(BuyEliteResp);
|
|
|
|
rpc giveTitle(GiveTitleReq) returns(BuyTitleResp);
|
|
|
|
rpc buyTitle(TitleReq) returns(BuyTitleResp);
|
|
|
|
rpc changeElite(EliteReq) returns(ChangeEliteResp);
|
|
|
|
rpc changeTitle(TitleReq) returns(ChangeTitleResp);
|
|
|
|
}
|