syntax = "proto2";

package FunRoomResult;

//option optimize_for = LITE_RUNTIME;
import "MedalResult.proto";
import "LiveBgResult.proto";
import "CommonResult.proto";
import "UserResult.proto";

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

//房间数据
message RoomData {
  optional string roomId = 1;//房间ID
  optional int32 type = 2;//分类（-3是音视频房）
  optional string createId = 3;//房主ID
  optional string notic = 4;//公告内容（小黑板）
  repeated MicInfo infos = 5;//麦位数据
  optional string bg = 6;//背景图片地址
  optional string zone = 7;//区服
  optional string os = 8;//操作系统
  optional int64 myForbid = 10;//我被禁言过期时间(时间戳)
  optional int32 onlineNum = 11;//在线人数
  optional string roomName = 12;//房间名字(要做UrlDecode)
  optional bool needPassword = 13;//是否需要密码s
  optional bool createOnline = 14;//房主是否在线
  optional bool myForbidMic = 15;//我是否被禁麦（废弃）
  optional string pushUrl = 16;//推流地址(房主才会返回)
  optional int64 myForbidTime = 17;//我被禁麦过期时间(时间戳) 0为没有禁麦
  optional int32 income = 18;//魅力值
  optional string fansGroupName = 19;//当前主播的粉丝团名称
  optional int32 fansGroupCount = 20;//当前主播的粉丝团数量
  optional int32 micQueueCount = 21;//连麦数量
  optional int64 myMicState = 22;//0:无状态 1：排麦中,2:已上麦
  optional int32 myJobId = 23;//我的角色职位ID
  optional int64 freeGiftOverTime = 24;//免费礼物倒计时结束时间(时间戳),(取服务器当前时间-freeGiftOverTime)/1000 得到倒计时
  repeated MedalResult.MedalInfo medals = 25; //勋章列表（以适应多勋章的情况）
  optional bool pcMode = 26;//主播是否PC开播（推流）
  optional bool simpleMode = 27;// 简洁模式
  optional string unionId = 28;//公会ID,(有值代表该房间为公会语音频道)
  optional string logoPath = 29;//房间封面图片路径(如：app/logo/xxx),前端只需拼接上请求资源的域名
  optional MicInfo createInfo = 30;// 房主麦位信息
  optional int64 incomeNew = 31;// 语音房魅力总值新字段（房间榜单总值）
  optional bool openFight = 32; // 是否开启PK开关
  optional CommonResult.CuteInfo roomIdCuteInfo = 33;//房间ID-靓号信息
  optional bool isFocusRoom = 34 ; //是否关注公会房
  
  optional bool isOpenParty = 35;// 是否开启派对房视频（type=-3），只有音视频房才有效
  optional MicInfo partyMicInfo = 36;// 派对房连麦数据
  
  optional int32 allowCount = 37;// 房间人数上限(酒吧房返回)，-1代表不设上限
  optional bool locationShowFlag = 38; // 房间地理位置icon是否符合房型
  optional string country = 39; // 国家
  optional string countryI18n = 40; // 国家国际化
  optional string countryIcon = 41; // 国家图标emoji
  optional int32 micPositionType = 42;//麦位类型 麦位类型 9:9人麦（含大头） 20：20人麦（含大头）
}

//房间Mic位据
message RoomMicData {
  repeated MicInfo infos = 1;//麦位数据
  optional bool locationShowFlag = 2; // 房间地理位置icon是否符合房型
}

// 房间麦位广播
message RoomMicDataBroadcast{
  repeated MicInfo infos = 1;//麦位数据
}

//房间数据
message MicInfo {
  optional string userId = 1;//用户(空为没有人)
  optional string nickName = 2;//用户昵称
  optional int32 logoTime = 3;//用户头像修改logo的时间 0为没修改过
  optional int32 position = 4;//麦位1-N
  optional bool lock = 5;//是否上锁
  optional bool forbidMic = 6;//被禁麦
  optional bool isVip = 7;//是否VIP
  optional string thirdIconurl = 8;//第三方头象
  optional string friendRemark = 9;//好友备注名
  optional string headFrameId = 10;//头象框ID
  optional int32 sex = 11;//性别
  optional bool openMic = 12;//是否开麦中
  optional int64 forbidTime = 13;//被禁麦过期时间(时间戳) 0为没有禁麦
  optional int32 jobId = 14;//麦位角色职位ID
  optional bool pcMode = 15;//是否PC推流
  optional string headStampId = 16; //头像表情id
  optional bool isWarriorCloak = 17;// 是否开启勇者斗篷
  optional int32 vipType = 18; //VIP类型  30:月度会员 90:季度会员 180:半年度会员 360:年度会员
  optional bool canCountDown = 19;//是否可开启麦位倒计时
  optional int64 countDownTimestamp = 20;//麦位倒计时结束时间戳 1666339417000
  optional string  haloAnimationFile = 21; //头像光圈动画
  optional string micShadowFile = 22; //麦位光影动画文件
  
  optional UserResult.UserCloakInfo cloakInfo = 23;// 隐身斗篷信息

  optional string geoLocation = 24; // 地理位置
  optional bool userOpenShowLocation = 25; // 个人是否打开地理位置
  optional bool roomOpenShowLocation = 26; // 房间是否打开地理位置
}

//房间配置数据
message RoomConfigData {
  optional bool password = 1;//是否设置了密码
  optional bool autoMic = 2;//自动连麦开关(寻友)
  optional bool viewCenter = 3;//是否展示在大厅（目前就公会语音频道使用）
  optional bool autoSayHi = 4;//自动打招呼
  optional string autoSayHiContent = 5;//自动打招呼内容
}

//房间列表
message RoomList {
  repeated RoomInfo list = 1;
  optional string lobbyType = 2; // 大厅样式
  repeated RoomRecommendSeatInfo recommendSeatList = 3;//推荐橱窗数据
  optional bool isShowFunRoomTab = 4; //主页tab展示开关：false-关闭，true-打开
}

//房间信息
message RoomInfo {
  optional string roomId = 1;//房间id
  optional string roomName = 2;//房间名字
  optional string createId = 3;//房主ID
  optional int32 onlineNum = 4;//在线人数
  optional string nickName = 5;//用户昵称
  optional int32 logoTime = 6;//用户头像修改logo的时间 0为没修改过
  optional int32 sex = 7;//性别
  optional int32 age = 8;//年龄
  optional int32 vipLv = 9;//VIP
  optional string gameId = 10;//游戏分类ID(游戏分类才有)
  optional string os = 11;//操作系统(游戏分类才有)
  optional string zone = 12;//区服(微信,QQ)(游戏分类才有)
  optional string thirdIconurl = 13;//第三方头象
  optional int32 type = 14;//房间类型
  optional string labelType = 15;//标签类型
  optional string labelName = 16;//标签名称
  optional string typeName = 17;//房间类型名
  optional bool needPwd = 18;//是否需要密码
  optional bool isWeekStar = 19;// 是否周星达人
  repeated MedalResult.MedalInfo medals = 20; //勋章列表（以适应多勋章的情况）
  optional bool isGuardAngel = 21;//是否是守护天使
  optional string spLiveTag = 22;//专属开播标签
  repeated FunRoomUserInfo userInfos = 23; // 封面的用户头像列表
  optional string logoPath = 24;//房间封面图片路径(如：/app/logo/xxx),前端只需拼接上请求资源的域名
  optional string unionId = 25;//公会ID,(有值代表该房间为公会语音频道)
  optional bool inPk = 26; // 是否在1v1PK中 true为PK中 false
  optional CommonResult.CuteInfo createIdCuteInfo = 27;//房主ID-靓号信息
  optional string anchorLabelName = 28;   // 标签名称
  optional string anchorLabelImgUrl = 29; // 标签url
  optional string cdnUrl = 30; // cdn地址
  optional int32 pkMode = 31; // pk 模式 1：跨房间1v1 2：同房间4v4
  optional int32 annualGiftType = 32;//分类 年度礼物类型 0:没有 1:号角 2:火箭
  optional string roomFrame = 33; // 房间框资源
  optional string anchorPointDiagram = 34;// 房间框锚点图
  optional string thumbnail = 35; // 房间框缩略图（新）
  optional CommonResult.StringArrayResult onlineUserHead =36; // 在线用户头像
  optional string notice = 37; // 黑板 /公告
  optional string micUser =38; // 大头麦用户
  optional int32 lastWeekFightRank = 39;// 上周排名，只有前3名
  optional string gameLabel = 40; //厅游戏label
  optional string countryIcon = 41;//国旗图标emoji
  optional int32 allowCount = 42;// 房间人数上限(酒吧房返回)，-1代表不设上限
}

//关注房间列表数据
message FollowRoomList {
  repeated RoomInfo list = 1;//关注的房间列表
  repeated RoomInfo recommends = 2;//推荐的列表
}


//房间成员列表
message MemberList {
  repeated MemberInfo list = 1;//在线用户数据
  optional int32 onlineNum = 2;//在线人数
}

//房间成员信息
message MemberInfo {
  optional string userId = 1;
  optional string nickName = 2;
  optional int32 sex = 3;
  optional bool isVip = 4;//是否VIP
  optional int32 funLevel = 5;// 财富等级
  optional int64 loginTime = 6;
  optional string thirdIconurl = 7;
  optional int32 jobId = 8;
  optional string friendRemark = 9;//好友备注名
  optional string headFrameId = 10;//头象框ID
  optional int32 logoTime = 11;//用户头像修改logo的时间 0为没修改过
  optional string carId = 12;//座驾ID
  repeated MedalResult.MedalInfo medals = 13; //勋章列表（以适应多勋章的情况）
  optional bool hasFreeGift = 14;//是否还有免费礼物
  optional string fontColor = 15;//昵称/字体颜色
  optional int32 nobleId = 16;//当前贵族 0 为没有贵族
  optional string headStampId = 17; //头像贴，头像表情id
  optional int32 vipType = 18; //VIP类型  30:月度会员 90:季度会员 180:半年度会员 360:年度会员
}

// 语音房分成列表
message FunRoomDividedRateInfos {
  repeated FunRoomDividedRateInfo list = 1;
}

// 语音房分成明细
message FunRoomDividedRateInfo {
  optional string dividedId = 1;// 分成id
  optional string desc = 2;// 房间分成描述
  optional string detail = 3;// 房间分成详细描述
  optional bool isShow = 4;// 是否展示
  optional bool isSelected = 5;// 当前选中比率
}

// 开播房间信息
message OpenLiveFunRoomInfo {
  optional int32 type = 1;//分类
  optional string roomName = 2;//房间名
  optional string bg = 3;//背景ID
  optional string gameId = 4;//选择的游戏
  optional string os = 5;//操作系统
  optional string zone = 6;// 区服
}

// 小程序卡片房间信息
message FunRoomCardInfoList {
  repeated FunRoomCardInfo cardInfo = 1; // 房间信息
}

// 小程序房间卡片信息
message FunRoomCardInfo {
  optional string roomId = 1; // 房间ID
  optional string roomTip = 2; // 房间标签
  optional string roomName = 3; // 房间名称
  optional string userName = 4; // 主播名称
  optional string thirdIconurl = 5; // 主播第三方头像
  optional int32 userLogo = 6; // 主播头像
  optional string cardImgUrl = 7; // 卡片背景
  repeated RankInfo userInfo = 8; // 日榜前三用户信息
  optional int32 onlinePeople = 9; //  房间在线人数
  optional int32 roomTipNum = 10; // 房间标签
  optional string userId = 11; // 用户ID
  optional CommonResult.CuteInfo roomIdCuteInfo = 12;//房间ID-靓号信息
}

// 小程序卡片信息中的RankInfo的用户信息
message RankInfo {
  optional string userId = 1; //
  optional int32 logoTime = 2; //
  optional string headUrl = 3; //
}

// 换房后的房间ID（即将要进入的房间号）
message changedRoomId {
  optional string roomId = 1; // 房间id
}

//专属开播背景列表
message SpBgList{
  repeated LiveBgResult.FunRoomSpBg spBgList = 1;
  optional bool isDefault = 2;//是否默认选择专属开播背景
  optional LiveBgResult.FunRoomSpBg customizeBg = 3;//自定义背景
}

// 用户头像信息
message FunRoomUserInfo {
  optional string userId = 1;
  optional string headUrl = 2;
}

// 语音开播模式列表
message FunRoomTypeList {
  repeated FunRoomTypeInfo list = 1;// 列表
}

// 语音开播模式信息
message FunRoomTypeInfo {
  optional int32 typeId = 1;// 开播模式id
  optional string typeName = 2;// 开播模式名称
  optional string typeNameI18n = 3;// 开播模式名称
}

// 相亲模式广播
message MiaiStateBroadcast {
  optional int32 miaiState = 1;// 当前相亲状态，0-未开始（结束重置）；1-开始（自我介绍）；2-选择心动；3-公布心动；4-浪漫告白；-1-主播强制回收
}

// 相亲浪漫告白结果广播
message MiaiSpeechBroadcast {
  repeated MiaiCPInfo cpList = 1;// cp列表
  repeated MiaiAloneInfo aloneList = 2;// 落单列表
}

// 选择相亲对象信息(广播通用)
message ChooseMiaiInfo {
  optional string userId = 1;// 用户id
  optional int32 position = 2;// 用户麦位
  optional string targetId = 3;// 目标id，可以为空，代表没有选择
  optional int32 targetPosition = 4;// 目标麦位
  optional bool isOpen = 5;// 是否公布
  optional int32 sex = 6;// 性别
  optional string headStampId = 7; //头像贴， 头像表情id
}

// 相亲揭晓组成cp广播，TODO特效返回信息待定
message MiaiCPBroadcast {
  optional MiaiCPInfo cpInfo = 1;// cp信息
  optional string roomId = 2;// 房间id
  optional string cpDateStr = 3;// 组成cp日期
  optional int64 totalHeartbeatValue = 4;// 双方心动总值
  optional string effectId = 5;// 牵手特效id
  optional string effectDesc = 6;// 特效说明
  optional string image = 7;// 动效静态图片
  optional string version = 8;// 动效版本号
  optional int32 effectSecond = 9;// 动态时长
  optional bool hasHeart = 10;// 特效额外心
  optional CommonResult.CuteInfo roomIdCuteInfo = 11;// 房间id-靓号信息
  optional int64 overTime = 12; // cp结束时间
}

// 相亲cp信息
message MiaiCPInfo {
  optional string maleUserId = 1;// 男方id
  optional string maleName = 2;// 男方昵称
  optional string maleHeadUrl = 3;// 男方头像
  optional int32 malePosition = 4;// 男方麦位
  optional int64 maleHeartbeatValue = 5;// 男方心动值
  optional int32 maleHatLevel = 6;// 男方帽子等级，0代表没有戴帽子
  optional string femaleUserId = 7;// 女方id
  optional string femaleName = 8;// 女方昵称
  optional string femaleHeadUrl = 9;// 女方头像
  optional int32 femalePosition = 10;// 女方麦位
  optional int64 femaleHeartbeatValue = 11;// 女方心动值
  optional int32 femaleHatLevel = 12;// 女方帽子等级，0代表没有戴帽子
  optional int32 leftSex = 13;// cp左方性别
  optional int32 rightSex = 14;// cp右方性别
  optional string maleHeadStampId = 15; //男方头像贴， 头像表情id
  optional string femaleHeadStampId = 16; //女方头像贴， 头像表情id

}

// 相亲落单信息
message MiaiAloneInfo {
  optional string userId = 1;// 用户id
  optional string userName = 2;// 用户昵称
  optional string headUrl = 3;// 用户头像
  optional int32 sex = 4;// 性别
  optional int32 hatLevel = 5;// 帽子等级，0代表没有戴帽子
  optional string headStampId = 6; //头像贴， 头像表情
}

// 相亲模式房间信息
message MiaiDataInfo {
  optional int32 miaiState = 1;// 当前相亲状态
  repeated MiaiMicInfo micList = 2;// 相亲麦位信息列表，未开始或者告白环节为空
  repeated MiaiCPInfo cpList = 3;// cp列表，告白环节才使用
  repeated MiaiAloneInfo aloneList = 4;// 落单列表，告白环节才使用
  optional string mvpId = 5;// mvp用户id，空代表还没有mvp
  optional int64 mvpScore = 6; // mvp贡献值，mvp为空，展示最高贡献值
  optional int64 mvpHeartbeatValue = 7; // mvp心动分数
  optional int32 mvpDiamondLimit = 8;// mvp上榜所需钻石下限
  optional string mvpNickName = 9; // mvp用户昵称
  optional int32 mvpLogoTime = 10; // mvp修改logo的时间 0为没修改过
  optional string mvpHeadUrl = 11; // mvp第三方头象
  optional int32 mvpSex = 12; // mvp性别
  optional int32 mvpHatLevel = 13;// mvp帽子等级，0代表没有戴帽子
  optional string headStampId = 14; //mvp头像贴， 头像表情id
}

// 相亲麦位信息
message MiaiMicInfo {
  optional string userId = 1; //用户Id
  optional int32 hatLevel = 2;// 帽子等级，0代表没有戴帽子
  optional int64 heartbeatValue = 3; //分数
  optional int32 sex = 4;// 性别
  optional ChooseMiaiInfo chooseInfo = 5;// 选择相亲对象信息
  optional string headStampId = 6; //头像贴， 头像表情id
}

// CP聊天室的图片等信息
message MiaiCPChatInfo {
  optional string cpImages = 1; // 组成CP的场景图
  optional string cpWord = 2; // 组成CP的文案
  optional int64 cpTime = 3; // 组成CP的时间
  optional string roomId = 4; // 组成CP所在的房间
  optional int32 personalHatLevel = 5; // 自己帽子等级，0表示没有帽子
  optional int32 targetHatLevel = 6; // 对方帽子等级，0表示没有帽子
  optional string cpChatImg = 7; // 聊天图片
  optional bool isLeft = 8;// 是否左方
  optional CommonResult.CuteInfo roomIdCuteInfo = 9;// 房间id-靓号信息
}

// 语音房进房记录
message VoiceRoomEnterRoomInfos{
  repeated VoiceRoomEnterRoomInfo list = 1; // 进房记录列表
}

message VoiceRoomEnterRoomInfo{
  optional int64 id = 1;            // 记录id，分页使用
  optional string userId = 2;       // 进房用户id
  optional string nickname = 3;     // 进房用户昵称
  optional string headUrl = 4;      // 进房用户头像
  optional int64 enterRoomTime = 5; // 进房时间点
  optional bool isWarriorCloak = 6;// 是否开启勇者斗篷
  optional int32 vipType = 7;//VIP类型  30:月度会员 90:季度会员 180:半年度会员 360:年度会员
}

message VoiceRoomNameAndLogo{
  optional string name = 1;//房间名字
  optional string roomUrl = 2;// 直播封面
  optional bool hadApplyLogo = 3;// 有待审核的封面
}

//房间推荐橱窗数据
message RoomRecommendSeatResult {
  repeated RoomRecommendSeatInfo list = 1;//推荐橱窗数据
}

message RoomRecommendSeatInfo {
  repeated RoomInfo roomList = 1;//推荐橱窗中的房间列表
  required int32 seat = 2;//橱窗位置 从1到N
}

// 婚礼房信息，RoomCmd.enter返回
message WeddingRoomInfo {
  optional string roomId = 1;// 房间Id
  optional string bridegroomId = 2;// 新郎id
  optional string brideId = 3;// 新娘id
  optional int32 weddingType = 4;// 婚礼房样式，1-中式，2-西式
  optional int64 weddingWarnTime = 5;// 婚礼可入场时间
  optional int64 weddingStartTime = 6;// 婚礼开始时间
  optional int64 weddingEndTime = 7;// 婚礼结束时间
  optional string unionId = 8;// 公会id
}

// 连麦用户麦序列表广播
message MicQueueBroadcast {
  repeated UserResult.UserBase list = 1;
}