syntax = "proto2";

package RoomResult;

//option optimize_for = LITE_RUNTIME;

import "UserResult.proto";
import "MedalResult.proto";
import "CommonResult.proto";
import "ActivityResult.proto";

option java_package = "com.miaole.live.protocol.response";
option java_outer_classname = "RoomResult";

//创建成功返回的数据
message CreateData {
  optional string roomId = 1; //房间id
}

//大厅获取开黑房间列表
message RoomList {
  repeated RoomInfo list = 1;
}

//开黑房间列表信息
message RoomInfo {
  optional string roomId = 1; //房间id
  optional string roomName = 2; //房间名字
  optional string gameId = 3; //房间绑定的游戏
  optional string zone = 4; //区服
  optional bool fullForbid = 5; //是否禁言所有
  optional bool needPwd = 6; //是否已设密码
  repeated string onMicMemberIds = 7; //mic上最前的5位成员
  optional string gameBg = 8; //游戏背景图
  optional string os = 9; //操作系统
}

//公会活跃频道列表(逻辑服获取,根据不同的类型返回不同的列表数据)
message ChannelList {
  repeated ChannelInfo creates = 1; //创建
  repeated ChannelInfo joins = 2; //加入
  repeated ChannelInfo applys = 3; //申请
  repeated ChannelInfo loves = 4; //收藏
  repeated ChannelInfo channels = 5; //频道列表
}

//公会群组列表(逻辑服获取)
message GroupList {
  repeated GroupInfo groups = 1;
  optional int32 groupTotal = 2; //总群组数
}

//公会活跃频道
message ChannelInfo {
  optional string roomId = 1; //房间id
  optional string roomName = 2; //房间名字
  optional int32 online = 3; //在线人数
  optional string gameId = 4; //绑定的游戏Id
  optional bool needPwd = 5; //是否需要密码(上锁)
  optional int32 roomMode = 6; //发言模式(设置页)
  optional int32 dispatchNum = 7; //一键调度剩余次数
  optional bool open = 8; //是否游客可进
  optional string unionId = 9; //公会id(暂时没用)
  optional int32 logoTime = 10; //公会修改logo的时间 0为没修改过
  optional int32 jobId = 11; //职位
  repeated ChannelInfo channels = 12; //下级频道列表
  optional bool showNotice = 13; //是否需要显示公告
  optional bool vistorChannel = 14; //是否接待频道
  optional bool openMusic = 15; //是否开启音乐功能
  optional int32 micTime = 16; //麦序时长(秒)
  optional int32 type = 17; //公会类型
  optional int32 pchatMinSpend = 18; //私聊最低消费门槛
  optional string unionName = 19; //公会名字
  optional string logoUrl = 20; // 房间url
  optional int32 status = 21; // 房间状态 0 等待审核 1 审核通过 2 拒绝
  optional CommonResult.CuteInfo roomIdCuteInfo = 22; //房间id-靓号信息
}

//已没用
message MyGroupList {
  repeated MyGroupInfo groups = 1;
}

//我的群组信息(已没用)
message MyGroupInfo {
  optional string roomId = 1; //房间id
  optional string roomName = 2; //房间名字
  optional string unionId = 3; //公会ID
  optional string gameId = 4; //绑定的游戏id
  optional int32 logoTime = 5; //头像修改时间(群组)
}

//公会或群组信息
message GroupInfo {
  optional string roomId = 1; //房间id
  optional string roomName = 2; //房间名字
  optional string gameId = 3; //绑定的游戏id
  optional bool check = 4; //是否需要验证
  optional int32 members = 5; // 成员数量
  optional int32 onlines = 6; //在线人数
  optional int32 logoTime = 7; //头像修改时间(群组)
  optional int32 jobId = 8; //职位
  optional int32 admins = 9; //管理员数(群组)
  optional int64 enterTime = 10; //进入时间
  repeated GroupInfo channels = 11; //下级房间列表
  optional bool fullForbid = 12; //全员禁言
  optional int32 forbidCount = 13; //禁言人数
  optional bool myForbid = 14; //去的禁言状态
  optional int32 unionLogoTime = 15; //公会头像修改时间
  optional string unionId = 16; //公会ID
  optional bool showNotice = 17; //是否需要显示公告
  optional int64 lastApplyTime = 18; //最后申请入群的时间
  optional bool myMsgFlags = 19; //我的消息免打扰设置(是|否)
  optional bool active = 20; //活跃
  repeated string headUrls = 21;//用户头象URL(4个)
  repeated string titles = 22;// 头衔列表
  optional int32 liveingCount = 23;//开播人数
  optional bool defaultGroup = 24;//是否为公会群
  optional bool groupNickNameTips = 25;//是否已经在群组中提示设置公会马甲
  optional bool isFull = 26; // 群是否已满
  optional bool isChildGroup = 27; // 是否是子群
}

//房间名字
message RoomBase {
  optional string roomId = 1; //房间id
  optional string roomName = 2; //房间名字
  optional string unionId = 3; //所属公会ID
}

message MemberList {
  repeated MemberInfo members = 1;
}

message MemberInfo {
  optional string memberId = 1; // 成员id
  optional string nameCard = 2; // 群片名
  optional int32 jobId = 3; // 职位id:EJobType
  optional bool online = 4; // 是否在线
  optional string roomMemberId = 5; // 语音房间ID
  optional int64 dayContribute = 6; //日消费贡献
  optional string fontColor = 7;//昵称/字体颜色
  repeated MyFansDataVo fansList = 8;//守护天数

  optional string nickName = 9;// 用户昵称
  optional int32 sex = 10;// 性别
  optional string headUrl = 11;// 用户头像
  optional bool isVip = 12;// 是否vip
  optional int32 nobleId = 13;// 当前贵族 0为没有贵族
  optional int32 funLevel = 14;// 财富等级
  optional int32 anchorLevel = 15;// 主播等级
  optional string headFrameId = 16;// 头像框Id
  optional int32 stampId = 17;// 盖章Id

  optional string carId = 18; //坐驾Id
  repeated MedalResult.MedalInfo medals = 19; //勋章列表（以适应多勋章的情况）

  optional int64 score = 20;// 在线排序分数
  repeated string newFMMedals = 21; // 新电台勋章数据
  optional string memberIdCute = 22; // 成员id-靓号
  optional string headStampId = 23; //头像表情id
  optional bool isWarriorCloak = 24;// 是否开启勇者斗篷
  optional int32 achievementLevel = 25;// 成就等级
  //是否是兄弟团用户
  optional bool isBroUser = 26;
  //兄弟团等级
  optional int32  broGroupLevel = 27;
  //兄弟团名称
  optional string broGroupName = 28;
  //是否佩戴勋章
  optional bool  showBroMedal = 29 ;
  optional int32 vipType = 30; //VIP类型  30:月度会员 90:季度会员 180:半年度会员 360:年度会员
  //兄弟团勋章
  optional string broMedalIcon = 31;

  optional string streamColor = 32; //流光进场秀替换颜色
  optional string stampIcon = 33; //印章缩略图
  optional double stampIconWidth = 34; //印章宽度
  optional double stampIconHeight = 35; //印章高度
  optional int64 stampIconUpdateTime = 36; //印章更新时间

  optional string virtualRoleImageUrl = 37;//用户的虚拟形象uri(不含域名) 未创建虚拟用户时为空
  optional bool roleImageOverTime = 38;//用户的虚拟形象是否过期
  optional ActivityResult.takeBabyMedalInfo takeBabyMedalInfo = 39;//携带baby信息

  optional int32 age = 40;// 年龄
  optional int32 virtualRoleSex = 41;// 用户的虚拟形象性别
  
  optional UserResult.UserCloakInfo cloakInfo = 42;// 隐身斗篷信息

  optional int32 level = 43;//平台等级
  optional int32 charmLevel = 44;//魅力等级
  optional string countryIcon = 45;//用户所在国家国旗emoji
  
  optional int32 partyLevel = 46;// 酒吧贵气等级（酒吧专用）
  optional bool isClosedVoice = 47;// 用户是否屏蔽了对象音源（酒吧专用）
}

//我的守护信息数据
message MyFansDataVo {
  optional string anchorId = 1;//主播ID
  optional int32 buyFansMaxDay = 2;//购买守护团的最大天数30,180,360
}


//返回房间状态
message RoomState {
  optional int32 status = 1; //1需要密码,2可直接进,3没有权限
  optional int32 blackTime = 2; //黑名单剩余时间
  optional bool isPCMode = 3; // 是否pc播放模式
  optional int32 aspectRatioType = 4; // 屏幕比率类型，0-默认app，1-4：3，2-16:9
}

//返回房间名字
message RoomName {
  optional string name = 1; //房间名字
}

//返回jobId
message RoomJobId {
  repeated string userIds = 1;
  repeated int32 jobIds = 2;
}

//在线成员列表
message RoomOnlineMemberList {
  repeated RoomOnlineMemberInfo list = 1;
}

message RoomOnlineMemberInfo {
  optional string roomId = 1;
  repeated string userIds = 2;
}

message RoomMicQueueInfo {
  repeated RoomMicMemberInfo micMemberList = 1; //麦序用户数据数组
  optional string firstMicUserId = 2; //首麦用户ID
  optional int32 firstMicSurplusTime = 3; //首麦用户剩余时间(ms)
  optional bool firstMicforbid = 4; //首麦是否被禁言
  optional int32 myMicState = 5; //0:无状态 1:上麦队列处理中 2:已在麦序队列 3:已上麦
}

message RoomMicMemberInfo {
  optional string userId = 1; //用户ID
  optional int32 jobId = 2; //职位ID
  optional bool forbid = 3; //是否被禁言
}

message RoomMicMemberList {
  repeated RoomMicMemberInfo micMemberList = 1; //上麦用户数据列表
}

//麦位列表
message RoomMicData {
  repeated RoomMicInfo roomInfos = 1;
}

//麦位数据
message RoomMicInfo {
  optional string memberId = 1; //玩家Id
  optional int32 position = 2; //位置
}

//房间操作通知
message RoomActionBroadcast {
  optional string roomId = 1; //房间ID
  optional int32 actType = 2; //操作类型:见ERoomActionType
  optional string userId = 3; //操作者ID
  optional string targetId = 4; //操作对象
  optional int32 position = 5; //mic的位置( ,解锁,邀请好友)；actType为25、28，此字段代表pc模式，0代表app，1代表pc
  optional string param = 6; //扩展参数
  optional int32 mainType = 7; //房间类型
  optional string totalValue = 8; //人气魅力总值
  optional string paramI18n = 9; //国际化扩展参数
}

//用户进入房间通知
message EnterRoomBroadcast {
  optional string roomId = 1; //房间ID
  optional int32 mainType = 2; //房间类型
  optional string userId = 3; //用户ID
  optional string nickName = 4; //用户昵称
  optional int32 onlineNum = 5; //在线成员数
  optional int32 index = 6; //位置
  optional int32 jobId = 7; //成员身份ID
  optional string carId = 8; //坐驾ID
  optional int32 funLevel = 9; //娱乐等级
  optional int32 liveLevel = 10; //主播等级
  optional int32 petLevel = 11; //宠物等级
  optional bool openMirror = 12; //是否开启镜像
  optional string rtmpUrl = 13; //推流地址
  optional bool pigHead = 14; //是否顶猪头
  optional int32 identity = 15; // 1-普通用户，2-vip，3-富豪
  optional int32 sex = 16; //性别
  optional string fansGroupName = 17; //粉丝团名称
  optional bool isVip = 18; //是否为VIP
  optional int32 source = 19; //来源 1：寻友
  optional int32 logoTime = 20; //修改logo的时间 0为没修改过 -1为第三方头象
  optional string thirdIconurl = 21; //第三方头象地址
  optional string headFrameId = 22; //头象框ID
  optional int64 loginTime = 23; //登陆房间时间

  optional string channelTag = 24; // 渠道标签
  optional bool isNewUser = 25; // 是否新注册用户

  optional int32 activityMedalId = 26; //活动勋章id(默认为0,即没有勋章)
  optional int32 activityUniqueMedalId = 27; //活动专属勋章id(默认为0,即没有勋章)
  optional string activityAwardEffectId = 28; //活动特效id(没有则为空)
  repeated MedalResult.MedalInfo medals = 29; //勋章列表（以适应多勋章的情况）
  optional string activityEffectTargetId = 30; //特效展示目标对象（主播id）,若不为空,则只对目标展示,否则相反

  optional bool hasFreeGift = 31;//是否还有免费礼物
  optional string forWhoUserId = 32;//为谁而来的UserID
  optional string forWhoNickName = 33;//为谁而来的昵称
  optional string fontColor = 34;//昵称/字体颜色
  optional int32 buyFansMaxDay = 35;//购买守护团的最大天数30,180,360
  repeated MyFansDataVo fansList = 36;//购买守护团的最大天数30,180,360

  optional bool isFirstEnter = 37; // 是否第一次进房
  optional string welcomeWord = 38; // 房间欢迎语

  optional string from = 39; // 跟随（nickName）
  optional int32 nobleId = 40;//当前贵族 0 为没有贵族
  optional int32 level = 41;//平台等级
  optional int32 charmLevel = 42;// 魅力等级

  optional int32 anchorLevel = 43;// 视频主播等级

  optional int32 stampId = 44;// 盖章Id

  optional int64 score = 45;// 在线排序分数

  optional bool isTyrant = 46;// 是否房间土豪

  optional bool isWeekStar = 47;// 是否周星
  optional string anchorId = 48; // 主播id
  optional string sourceParam = 49;//来源参数
  optional string userIdCute = 50; //用户ID-靓号
  optional CommonResult.CuteInfo cuteInfo = 51;//靓号信息

  optional int32 currNobleId = 52;//当前贵族 0 为没有贵族 新增超新星

  optional bool isWarriorCloak = 53;//是否开启勇者斗篷
  optional int32 warriorLevel = 54;//勇士等级
  optional int32 privilegeId = 55;//特权ID
  optional string streamShowFlash = 56; //流光进场秀资源
  optional int32 achievementLevel = 57;//成就等级
  optional string levelMedalIcon = 58; // 等级勋章背景图
  optional string levelMedalSize = 59; // 等级勋章背景图大小
  optional int32 userLevel = 60; // 等级勋章上的等级
  optional EnterRoomCarInfo carInfo = 61; // 用户使用中的座驾信息
  //是否兄弟团召唤入场
  optional bool  isBroSummon = 62;
  //入场顺序
  optional int32  summonOrder = 63;
  //兄弟团等级
  optional int32  broGroupLevel = 64;
  //兄弟团名称
  optional string broGroupName = 65;
  //是否佩戴勋章
  optional bool  showBroMedal = 66 ;
  optional int32 vipType = 67; //VIP类型  30:月度会员 90:季度会员 180:半年度会员 360:年度会员

  //兄弟团勋章
  optional string broMedalIcon = 68;

  optional string effectIcon = 69; //活动特效icon(没有则为空)
  optional int64 effectVersion = 70; //活动特效时间戳(没有则为空)
  optional string effectDescs = 71; //活动特效文案(没有则为空)
  optional string effectFlash= 72; //活动特效动画(没有则为空)

  optional int32 roomType = 73; //房间类型

  optional string streamText = 74; //流光进场秀文案

  optional string streamColor = 75; //流光进场秀替换颜色
  optional string stampIcon = 76; //印章缩略图
  optional double stampIconWidth = 78; //印章宽度
  optional double stampIconHeight = 79; //印章高度
  optional int64 stampIconUpdateTime = 80; //印章更新时间
  optional bool isRecommendUser = 81; //是否推荐用户(新OA推荐用户功能)
  optional int32 rtcType = 82;// 当前RTC类型 0:TRTC 1:ARTC
  optional EnterRoomCpCarInfo cpCarInfo = 83; // 用户使用中的CP座驾信息
  repeated string recommendAnchorIds = 84;//该用户被推荐给的主播(新OA推荐用户功能)
  optional EnterRoomInteractCarInfo interactCarInfo = 85; // 用户使用中的互动座驾信息
  optional EnterRoomCPStreamInfo streamInfo = 86; // 用户进场流光秀 fetch
  optional string u3dCarInfo = 87; //虚拟形象座驾信息
  optional bool isFirstInThisUnionVoiceRoom = 88;// 用户是否首次进入此公会语音房
  optional EnterRoomCpInteractCarInfo cpInteractCarInfo = 89;
  optional EnterRoomCpCarInfo newCpCarInfo = 90; // 用户使用中的CP座驾信息 双昵称双头像后续的cp座驾使用 与cpCarInfo互斥
  optional EnterRoomCpEffectInfo cpEffectInfo = 91; // 用户使用中的CP进场横幅信息
  optional bool playSound= 92;//播放声效
  optional string welcomeAnimationFile = 93;//欢迎动画文件名
  repeated string welcomeAnimationChip = 94;//欢迎动画碎片列表
  
  optional UserResult.UserCloakInfo cloakInfo = 95;// 隐身斗篷信息

  optional int32 age = 96;//年龄
  optional string countryIcon = 97;//国旗emoji

  optional string effectDescsI18n = 98; //活动特效文案(没有则为空)
  optional string streamTextI18n = 99; //流光进场秀文案
  optional bool showCarEffect = 100; //是否展示座驾进房动画
  
  optional int32 partyLevel = 101; // 酒吧贵气等级
}

message EnterRoomCarInfo {
  optional string carId = 1; // 座驾id
  optional string leftUserHeadUrl = 2; // 左边用户头像,拥有者
  optional string rightUserHeadUrl = 3; // 右边用户头像, CP
}

//用户离开房间通知
message LeaveRoomBroadcast {
  optional string roomId = 1; //房间ID
  optional int32 mainType = 3; //房间类型
  optional string userId = 4; //用户ID
  optional int32 onlineNum = 5; //在线成员数
  optional bool isWarriorCloak = 6;//是否开启勇者斗篷
  optional int32 warriorLevel = 7;//勇士等级
  optional string userIdCute = 8; //用户ID-靓号
  optional CommonResult.CuteInfo cuteInfo = 9;//靓号信息
  optional UserResult.UserCloakInfo cloakInfo = 10;// 隐身斗篷信息
  optional int32 funLevel = 11; //娱乐等级
  optional string nickName = 12; //用户昵称
}

//更新麦位上下麦通知
message UpdateMicBroadcast {
  optional string roomId = 1; //房间ID
  optional string userId = 2; //用户ID
  optional int32 position = 3; //mic的位置(针对上锁,解锁,邀请好友)
  optional bool up = 4; //是否为上麦，否为下麦
  optional string opUserId = 5; //操作者用户ID
  optional int32 actType = 6; //操作类型:见ERoomActionType
}

message OnlineMemberList {
  repeated MemberInfo members = 1; //在线成员列表
  optional int32 onlineNum = 2; //在线数量
}

message MatchRoomData {
  optional int32 matchNum = 1; //寻找开黑队友的人数
}

//房间解散
message RoomDestroyBroadcast {
  optional string roomId = 1; //房间ID
}

message RoomLikeBroadcast {
  optional string roomId = 1; //播间ID
  optional string userId = 2; //点赞的用户
  optional int32 type = 3; //点赞类型
}

//@房间用户的广播
message AtRoomUserBroadcast {
  optional string roomId = 1; //房间ID
  optional string userId = 2; //@你的用户ID
}

//群级成员添加删除通知
message UpdateGroupMemberBroadcast {
  optional string unionId = 1; //公会ID
  optional string groupId = 2; //群组ID
  optional string userId = 3; //用户ID
  optional bool add = 4; //添加 还是删除

}

// 处理举报房间广播
message HandleRoomReportBroadcast {
  optional string roomId = 1;               // 房间ID
  optional int32 handType = 2;              // 举报处理类型消息提示，1075：发送警告；1076：解散房间；1077：关闭直播间并封禁主播
  optional string userId = 3;               // 被举报用户
  optional int32 prohibitionType = 4;       // 禁播类型，仅官方以及家族禁播有效，
  optional string content = 5;              // 展示文案
  optional bool showH5 = 6;                // 是否显示H5对应的文明公约
  optional string contentI18n = 7;         // 展示文案国际化
}

// 房间点赞批量处理广播
message RoomLikeBatchBroadcast {
  optional string roomId = 1; //播间ID
  optional string types = 2; //点赞类型，由1-4，组成字符串，最大长度为60
}

// 进出直播间批量广播
message InOrOutRoomBroadcast {
  optional string roomId = 1; // 房间ID
  optional int32 mainType = 2; // 房间类型
  optional int32 onlineNum = 3; // 在线成员数
  repeated InOrOutRoomInfo list = 4; // 进出信息记录列表
}

// 进出直播间消息内容
message InOrOutRoomInfo {
  optional bool isEnter = 1; // 是否进入直播间
  optional string userId = 2; //用户ID
  optional string nickName = 3; //用户昵称
  optional int32 onlineNum = 4; // 在线成员数
  optional int32 index = 5; //位置
  optional int32 jobId = 6; //成员身份ID
  optional string carId = 7; //坐驾ID
  optional int32 funLevel = 8; //娱乐等级
  optional int32 liveLevel = 9; //主播等级
  optional int32 petLevel = 10; //宠物等级
  optional bool openMirror = 11; //是否开启镜像
  optional string rtmpUrl = 12; //推流地址
  optional bool pigHead = 13; //是否顶猪头
  optional int32 identity = 15; // 1-普通用户，2-vip，3-富豪
}

//直播间开播模式
message LiveRoomModelBroadcast {
  optional string roomId = 1; //直播间ID
  optional bool isPc = 2; //是否是pc端，true是pc，false是app
  optional int32 aspectRatioType = 13; // 屏幕比率类型，0-默认app，1-4：3，2-16:9
}

//娱乐玩法/魔法表情广播通知
message RecreationBroadcast {
  optional string roomId = 1; //房间id
  optional string userId = 2; //触发的用户id
  optional string recreationId = 3; //配置id
  repeated int32 results = 4; //结果
}

//直播间机器人自动回复弹幕广播
message RobotBarrageBroadcast {
  optional string roomId = 1; //房间id
  optional string userId = 2; //机器人id
  repeated string barrage = 3; //弹幕内容
}

message NewFollowRoomList {
  repeated NewFollowRoomInfo list = 1; //主播开播列表
  optional int32 totalSize = 2; //数据总量
}

message NewFollowRoomInfo {
  optional UserResult.UserBase baseVo = 1; //用户基础数据
  optional string roomId = 2; //房间ID
  optional int32 roomType = 3; //房间类型
  optional int32 onlineNum = 4; //在线人数
  optional int32 status = 5; //0:未开播 1:开播中 2:回放
  optional string title = 6; //标题
}
//开播广播
message OpenLiveBroadcast {
  optional string userId = 1;
  optional string roomId = 2; //房间ID
  optional int32 roomType = 3; //房间类型
  optional string unionId = 4; //公会id
  optional string activityAwardEffectId = 5; //活动特效id(没有则为空)
  optional string effectIcon = 6; //活动特效icon(没有则为空)
  optional int64 effectVersion = 7; //活动特效时间戳(没有则为空)
  optional string effectDescs = 8; //活动特效文案(没有则为空)
  optional string effectFlash= 9; //活动特效动画(没有则为空)
  optional string nickName = 10; //用户昵称
  optional string headUrl = 11;// 用户头像
  optional string effectDescsI18n = 12; //活动特效文案(没有则为空)
}
//主播参与活动数据,主要用于开播操作的全服横幅通知
message ActivityData {
  optional string index = 1; //当前活动,如:A21
  optional int32 rankType = 2; //榜单（1:送礼榜,2:收礼榜）
  optional int32 rank = 3; //活动排名
}

// 后台重置房间信息广播
message resetRoomInfoBroadcast {
  optional int32 action = 1;// 10-重置房间标题，11-重置房间黑板，12-重置房间公告
  optional string roomInfo = 2;// 重置的内容
}
//返回协议与广播
message HeartBeatValueTime{
  optional int64 endTime = 1;
}
//心动值 广播
message HeartBeatValueInfoBroadcast{
  optional int64 incrHeartbeatValue = 1; //增长心动值
  optional int64 time = 2; // 增长时间
  optional string userId = 3;
}

//心动值 广播
message HeartBeatValueRestartBroadcast{
  optional int32 status = 1; //1:重新开始
}

// 该房间被封禁的用户信息
message kickMemberInfo {
  optional string userId = 1; // 用户id（被封禁的用户）
  optional string userName = 2; // 用户昵称
  optional string userImg = 3; // 用户头像路径
  optional string operateName = 4; // 封禁别人的用户(房主/管理员)昵称
  optional string kickTime = 5; // 总被封禁时间
  optional string leftTime = 6; // 剩余封禁时间
  optional int64 operationTime = 7; // 操作时间，分页使用
}

// 该房间所有被封禁的用户信息
message kickMemberInfoList {
  repeated kickMemberInfo kickInfos = 1; // 黑名单用户列表
}

// 我的足迹信息
message MyFootMarkInfoList {
  repeated MyFootMarkInfo info = 1;
}

// 足迹信息
message MyFootMarkInfo {
  optional string roomId = 1; // 房间ID
  optional string userName = 2; // 用户昵称
  optional string roomTitle = 3; // 直播间名称
  optional int32 logoTime = 4; // 开播时为房间图片，下播时为主播头像
  optional int32 roomStatus = 5; //开播与否
  optional int32 onlinePeople = 6; // 在线人数，开播时才存在
  // 公会主播开播时需要公会ID获取房间图片
  optional string unionId = 7; // 公会Id
  // 音频房的主播头像参数
  optional string headUrl = 8; //

  optional string userId = 9; // 用户id
}

// 公会视频房部分频道
message UnionChannelList {
  repeated UnionChannelInfo channelInfo = 1;
}

message UnionChannelInfo {
  optional string roomId = 1; //房间id
  optional string roomName = 2; //房间名字
  optional int32 online = 3; //在线人数
  optional string unionId = 4; //公会id
  optional int32 type = 5; //公会类型
  optional string unionName = 6; //公会名字
  optional string anchorHeadUrl = 7; // 主播头像
  optional string unionLogo = 8; // 频道公会头像路径
  optional bool needPwd = 9; //是否需要密码(上锁)
  optional bool vistorChannel = 10; //是否接待频道
  optional bool open = 11; //是否游客可进
  optional string roomIdCute = 12; //房间id-靓号
}

//
message UserRoomInfo {
  optional string roomId = 1;
  optional string logoUrl = 2; //
  optional int32 roomType = 3;
  optional string unionId = 4; //
  optional string thirdIconurl = 5;
}

message GruopRoomData {
  optional int32 online = 1; //在线人数
  optional int32 liveingCount = 2;//开播人数
}

message UnionLiveingListResult {
  repeated UnionLiveingVo vos = 1;//公会开播的人员列表
}

message UnionLiveingVo {
  optional string roomId = 1;
  optional string roomName = 2;
  optional UserResult.UserBase userVo = 3; //用户基础数据
  optional string unionId = 4;//主播开播所在的娱乐公会
}

message UpdateJobIdActionBroadcast {
  optional string actionUserId = 1;//操作人ID
  optional string actionNickName = 2;//操作人昵称
  optional string targetUserId = 3;//被操作人ID
  optional string targetNickName = 4;//被操作人昵称
  optional int32 targetJobId = 5;//被操作人JobId
  optional int32 actionType = 6;//操作类型 1:设置管理员 2：取消管理员
  optional string roomId = 7;//房间ID
}

message RoomMembers{
  optional int32 total = 1; // 总数量
  repeated RoomMember roomMembers = 2; // 房间角色列表
}

message RoomMember{
  optional string userId = 1;   // 用户id
  optional string nickname = 2; // 用户昵称
  optional int32 jobId = 3;     // 用户角色：用于展示马甲
  optional string headUrl = 4; // 用户头像
  optional int32 sex = 5; // 用户性别
  optional string headFrameId = 6; // 头像框id
}

message EnterRoomData {
  optional string roomId = 1;//房间ID
  optional int32 roomType = 2;//房间类型
  optional string unionId = 3;//该房间所属的公会ID
}

message GroupMemberList {
  repeated MemberInfo members = 1;
  repeated string memberList = 2;
  optional int32 memberSize = 3;//成员数量
  optional int32 myJobId = 4;//我的职位ID
}

message GroupMemberInfo {
  optional string memberId = 1; // 成员
  optional string nameCard = 2; // 群片名
  optional int32 jobId = 3; // 职位id:EJobType
  optional bool online = 4; // 是否在线
  optional string roomMemberId = 5; // 语音房间ID
  optional int64 dayContribute = 6; //日消费贡献
  optional string fontColor = 7;//昵称/字体颜色
  repeated MyFansDataVo fansList = 8;//守护天数
}

// 修正房间在线人数
message AmendRoomOnlinesBroadcast {
  optional string roomId = 1;// 房间id
  optional int32 onlineNum = 2;// 在线成员数(含机器人)
}

// 房间投票配置
message RoomVoteConfig {
  optional VoteConfig config = 1;// 投票配置
  repeated VoteOption options = 2;// 投票项
  optional int32 configStatus = 3;// 投票状态，审核不通过:-1, 待审核:0，进行中:1，已完结:2
}

// 投票配置
message VoteConfig {
  optional string voteId = 1;// 投票id
  optional string roomId = 2;// 房间id
  required int32 subjectType = 3;// 主题类型（1：主题投票  2：主播投票，公会房专用）
  optional string title = 4;// 投票标题
  required int32 votingType = 5;// 投票形式（1：单选，2：多选，3：单一送礼投票，4：多礼物送礼投票，5：钻石投票）
  optional int32 mulipleLimit = 6;// 多选限定次数
  repeated VoteGiftTicket giftTickets = 7;// 礼物票数映射
  optional int64 diamondThreshold = 8;// 送礼钻石阈值
  optional int64 diamondTicket = 9;// 送礼达到阈值送出票
  optional int32 freeTicket = 10;// 用户拥有免费票数
  optional int32 autoOverDuration = 11;// 自动过期时长，单位分
  optional int32 status = 12;// 状态，审核不通过:-1, 待审核:0，进行中:1，已完结:2
  optional int64 createTime = 13;// 开始时间
  optional int64 planOverTime = 14;// 计划结束时间
  optional int64 realOverTime = 15;// 实际结束时间
}

// 投票选项信息
message VoteOption {
  optional string optionId = 1;// 选项id（主题项id/主播id）
  optional string content = 2;// 选项内容（内容文案/主播昵称）
}

// 投票选项信息（带投票信息）
message VoteOptionWithTicket {
  optional VoteOption option = 1;// 选项信息
  optional int64 optionTicket = 2;// 选项票数
  optional int64 userJoinTicket = 3;// 用户投票
  optional string headUrl = 4;// 主播头像（只有主播投票，才返回值）
  optional int32 rank = 5;// 投票排名
}

// 投票礼物信息
message VoteGiftTicket {
  optional string giftId = 1;// 礼物id
  optional int32 ticket = 2;// 送礼可获得票数
}

// 投票信息
message RoomVoteSubjectInfo {
  optional VoteConfig config = 1;// 投票配置
  repeated VoteOptionWithTicket options = 2;// 投票项
  optional int32 voteMore = 3;// 用户已投票次数，判断用户是否投票（历史记录取值，只有0/1；投票中状态，单选时返回尝试投票次数，只需判断是否大于0，多选时，返回选了项数）
  optional int32 lessFreeTicket = 4;// 用户剩余免费票数
  optional int64 totalTicket = 5;// 总票数
  optional int32 totalJoinNum = 6;// 总参与人数
  optional bool isHidden = 7;// 是否隐藏
}

// 历史投票记录
message RoomVoteSubjectInfosHistory {
  repeated RoomVoteSubjectInfo votes = 1;
}

// 房间投票广播
message RoomVoteBroadcast {
  optional string voteId = 1;// 投票id
  optional string roomId = 2; //房间id
  optional int32 type = 3;// 类型，0：待审核投票（只发给创建人），1：发起投票，2：定时结束投票，3：手动结束投票
  optional string userId = 4;// 用户id
  optional string nickName = 5;// 用户昵称
  optional string title = 6;// 投票主题
}

// 参与投票广播
message JoinVoteTicketBroadcast  {
  optional string voteId = 1;// 投票id
  optional string roomId = 2;// 房间id
  required int32 subjectType = 3;// 主题类型（1：主题投票  2：主播投票，公会房专用）
  optional string userId = 4;// 用户id
  optional string nickName = 5;// 用户昵称
  optional string optionId = 6;// 选项id（主题项id/主播id）
  optional string content = 7;// 选项内容（内容文案/主播昵称）
  optional int64 ticketNum = 8;// 贡献票数
  optional bool isFreeTicket = 9;// 是否免费投票
}

// 房间当前投票用户参与排行榜
message RoomVoteJoinRank {
  repeated RoomVoteJoinUserInfo ranks = 1;
}

// 房间当前投票用户参与情况
message RoomVoteJoinUserInfo {
  optional string userId = 1; // 用户ID
  optional string headUrl = 2;// 用户头像url
  optional string nickName = 3;// 用户昵称
  optional int64 ticketNum = 4;// 贡献票数
}


//房间封禁状态
message RoomBanStatusInfo {
  repeated UserBanMaskInfo maskInfos = 1;//被遮罩的用户列表
}

//房间用户遮罩状态数据
message UserBanMaskInfo {
  optional string userId = 1;//被遮罩的用户ID
  optional int32 maskTime = 2;//遮罩时间
}

//推荐主播列表信息
message recommendedRoomInfo {
  repeated recommendedAnchorRoomInfo info = 1;
}

//推荐主播列表信息
message recommendedAnchorRoomInfo {
  optional string roomId = 1; //房间id
  optional string nickname = 2; //主播名字
  optional string anchorId = 3;//主播ID
  optional string subtitle = 4;//副标题
  optional string headUrl = 5;//主播头像
}

// 用户最近访问房间信息列表
message RecentRoomInfos {
  repeated RecentRoomInfo roomInfos = 1;
}

// 最近访问房间信息
message RecentRoomInfo {
	optional string roomId = 1;// 房间id
	optional int32 roomType = 2;// 房间类型，2-个人视频，3-公会视频，4-个人语音，5-公会语音
	optional int32 labelType = 3;// 开播标签类型
	optional string labelName = 4;// 开播标签名称
	optional string roomLogo = 5;// 房间封面
	optional string roomName = 6;// 房间名称
	optional string anchorId = 7;// 主播id,有主播id说明当前在开播
	optional int32 onlineNumber = 8;// 在线人数，开播时才有
	optional bool isAttention = 9;// 是否已关注，只有个人房（roomType为2/4）才有
	optional int64 visitTime = 10;// 访问时间
  optional bool isLive = 11; //是否开播中
  optional string labelNameI18n = 12;// 开播标签国标化
  optional string country = 13; // 国家
  optional string countryI18n = 14; // 国家国际化
  optional string countryIcon = 15; // 国家图标emoji
}

message EnterRoomCpCarInfo {
  optional string carId = 1; // 座驾id
  optional string leftUserHeadUrl = 2; // 左边用户头像,拥有者
  optional string rightUserHeadUrl = 3; // 右边用户头像, CP
  optional string leftUserName = 4; // 左边用户名称,拥有者
  optional string rightUserName = 5; // 右边用户名称, CP
}


message EnterRoomInteractCarInfo {
  optional string carId = 1; // 座驾id
  optional bool isExist = 2; //房间存在虚拟CP关系
  optional string leftUserHeadUrl = 3; // 左边用户头像,拥有者
  optional string leftUserName = 4; // 左边用户名称,拥有者
  optional string rightUserHeadUrl = 5; // 右边用户头像, CP
  optional string rightUserName = 6; // 右边用户名称, CP
  optional string relationType = 7; // 虚拟CP关系类型 1、恋人 2、兄弟 3、闺蜜
}


message EnterRoomCpInteractCarInfo {
  optional string carId = 1; // 座驾id
  optional bool inRoom = 2; //CP是否在房
  optional string leftUserHeadUrl = 3; // 左边用户头像,拥有者
  optional string leftUserName = 4; // 左边用户名称,拥有者
  optional string rightUserHeadUrl = 5; // 右边用户头像, CP
  optional string rightUserName = 6; // 右边用户名称, CP
}

message EnterRoomCpEffectInfo {
  optional string leftUserHeadUrl = 1; // 左边用户头像,拥有者
  optional string rightUserHeadUrl = 2; // 右边用户头像, CP
  optional string leftUserName = 3; // 左边用户名称,拥有者
  optional string rightUserName = 4; // 右边用户名称, CP
  optional int32 styleType = 5; // 横幅样式类型：1、常规 2、CP
}


message EnterRoomCPStreamInfo {
  optional string streamId = 1; // 流光秀id
  optional string leftUserHeadUrl = 2; // 左边用户头像,拥有者
  optional string rightUserHeadUrl = 3; // 右边用户头像, CP
  optional string leftUserName = 4; // 左边用户名称,拥有者
  optional string rightUserName = 5; // 右边用户名称, CP
  optional bool hasStream = 6;// 是否cp流光秀
  optional int32 version = 7;// 流光秀类型 1 普通 2延时
  optional int32 type = 8;// 流光秀类型 0 普通 1延时
  optional int32 delayTime = 9;// 延时时间(秒)
  optional string newStreamShowFlash = 10; //流光进场秀资源
  optional string name = 11; // 流光秀名称
  optional int32 styleType = 12; // 流光秀类型 1、常规 2、CP
  optional string icon = 13; //流光秀icon(没有则为空)
  optional string desc = 14; //流光秀文案(没有则为空)
  optional string flash= 15; //流光秀动画(没有则为空)
  optional string color = 16; //流光进场秀替换颜色
  optional int32 levelType = 17; //  1、活动 2、贵族3、财富等级
  optional string shortIcon = 18; // 流光秀缩略图(短款)
  optional string shortFlash = 19; // 流光秀动态图文件名(短款)
  optional string shortFlashUrl = 20; // 流光秀动态图地址(短款)
  optional string nameI18n = 21; // 流光秀名称
  optional string descI18n = 22; //流光秀文案(没有则为空)

}

message EnterRoomTakeBabyInfo {
  optional int32 level = 1; // 等级 2-幼儿,3-孩童
  optional int32 babySex = 2; // 性别 1.男：0.女
  optional string babyName = 3; // 宝宝昵称
  optional string effectId = 4; // 特效
  optional string userId = 5; // 携带者
}

// 好友所在房间广播
message FriendInRoomBroadcast {
  optional string userId = 1;// 用户id
  optional string roomId = 2;// 房间id，有值代表在房，空代表退房
}

// 切换RTC广播
message ConvertRtcBroadcast {
  optional string roomId = 1;// 房间id
  optional string rtcType = 2;// Rtc类型 trtc=腾讯云RTC artc=声网rtc
  optional string userId = 3;//指定的用户ID，负责切换成功后通知后端，设置后端接口 RoomCmd.setRoomConfig
}

// 公会成员信息变化广播
message UnionMemberChangeBroadcast {
  optional string unionId = 1;// 公会ID
  optional int32 type = 2;// 广播类型，1-群组成员人数变化，2-群组在线人数变化，3-公会开播人数变化
  optional string groupId = 3;// 群组ID，与成员人数/在线人数一同返回
  optional int32 memberCount = 4;// 群组成员人数
  optional int32 onlineCount = 5;// 群组在线人数
  optional int32 livingCount = 6;// 公会开播人数
  repeated UnionLiveingVo livingVOs = 7;// 公会开播的人员列表，与开播人数一同返回
}

//房间配置
message RoomConfigResult {
  optional string roomId = 1;
  optional string rtcType = 2;//返回当前需要使用rtc类型 trtc=腾讯云RTC artc=声网rtc
  optional string currRtcType = 3;//当前房间使用中的RTC类型
}


//橱窗人气值 广播
message WindowsPopularityInfoBroadcast{
  optional int64 incrPopularity = 1; //增长人气值
  optional int64 time = 2; // 增长时间
  optional string userId = 3;
}

// 语音房地位位置展示状态变更广播
message RoomLocationShowBroadcast {
}

message FunctionSwitchResult {
  repeated FunctionSwitchInfo functionSwitchInfos = 1;
}

message FunctionSwitchInfo {
  optional int64 functionId = 1;
  optional bool view = 2;//中否展示
}