syntax = "proto2";
package SongRequestCmd;

option java_package = "com.miaole.live.protocol.request";
option java_outer_classname = "SongRequestCmd";

// 获取歌单列表
// 返回: SongRequestResult.PlaylistResult
message getPlaylist {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID筛选
}


// 获取歌曲列表
// 返回: SongRequestResult.SongListResult
message getSongList {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID筛选
  optional string playlistId = 3;      // 歌单ID
}

// 获取点歌曲信息和需要消费的总钻石
// 返回：SongRequestResult.SongInfoResult
message getRequestSongInfo {
  optional string micUserId = 2;        // 麦位用户ID
  optional string songId = 3;           // 歌曲ID
}

// 点歌请求
// 返回: SongRequestResult.RequestSongResult
message requestSong {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID
  optional string songId = 3;           // 歌曲ID
  optional int32 consumeDiamond = 4;    // 消耗钻石数(用于判断展示的和实际扣除的是否一至)
}

// 冠歌请求
// 返回: SongRequestResult.CrownSongResult
message crownSong {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID
  optional string songId = 3;           // 歌曲ID
  optional int32 multiple = 4;          // 冠歌倍数(2/3/5/8)
}

// 获取演唱队列
// 返回: SongRequestResult.SingingQueueResult
message getSingingQueue {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID
}

// 获取冠名歌单
// 返回: SongRequestResult.CrownedPlaylistResult
message getCrownedPlaylist {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID
}

// 删除点歌
// 返回: SongRequestResult.OperationResult
message deleteSongRequest {
  optional string roomId = 1;           // 房间ID
  optional string orderId = 2;          // 订单ID
}

// 开始演唱
// 返回: SongRequestResult.OperationResult
// 说明: 自动按时间顺序演唱第一首待唱歌曲，演唱开始后300秒自动删除
message startSinging {
  optional string roomId = 1;           // 房间ID
}

// 加时
// 返回: SongRequestResult.OperationResult
// 说明: 为指定麦位用户当前演唱中的歌曲增加演唱时间
message addTime {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID
  optional int32 seconds = 3;           // 增加的秒数（如60秒、120秒等）
}

// 结束演唱
// 返回: SongRequestResult.OperationResult
message finishSinging {
  optional string roomId = 1;           // 房间ID
  optional string micUserId = 2;        // 麦位用户ID
  optional string orderId = 3;          // 订单ID
}
