syntax = "proto2";
package SongManageResult;

option java_package = "com.miaole.live.protocol.response";
option java_outer_classname = "SongManageResult";


// ==================== 数据模型 ====================


// 歌曲模型
message Song {
  optional string songId = 1;           // 歌曲ID
  optional string songName = 2;         // 歌曲名称
  optional string singerName = 3;       // 歌手名称
  optional int32 isNamed = 4;           // 是否冠名：0=否，1=是
  optional bool inPlaylist = 5;   // 是否已添加到歌单(推荐歌曲中返回)
}

// 歌单中的歌曲（简化版）
message PlaylistSong {
  optional string songId = 1;           // 歌曲ID
  optional string songName = 2;         // 歌曲名称
  optional string singerName = 3;       // 歌手名称
  optional int32 isNamed = 4;           // 是否冠名：0=否，1=是
  optional int32 order = 5;             // 排序序号
  optional CrownInfo crownInfo = 6;     //冠名信息
}

// 歌单模型（完整版）
message Playlist {
  optional string id = 1;                                 // 歌单ID
  optional string name = 2;                               // 歌单名称（最多8字符）
  optional string coverId = 3;                            // 封面ID
  optional string coverUrl = 4;                           // 封面URL
  optional string userId = 5;                             // 创建用户ID
  repeated PlaylistSong songs = 6;                        // 歌曲列表
  optional int32 status = 7;                              // 状态：1=审核中，2=已通过，3=已拒绝
  optional bool hasCrownedSong = 8;                       // 是否包含被冠歌曲
}

// 歌单列表项（简化版，不包含歌曲列表）
message PlaylistSummary {
  optional string id = 1;                                 // 歌单ID
  optional string name = 2;                               // 歌单名称
  optional string coverId = 3;                            // 封面ID
  optional string coverUrl = 4;                           // 封面URL
  optional string userId = 5;                             // 创建用户ID
  optional int32 songCount = 6;                           // 歌曲数量
  optional int32 status = 7;                              // 状态：1=审核中，2=已通过，3=已拒绝
  optional bool hasCrownedSong = 8;                       // 是否包含被冠歌曲
}

// 封面模型
message Cover {
  optional string id = 1;               // 封面ID
  optional string url = 2;              // 封面URL
  optional string thumbnailUrl = 3;     // 缩略图URL
  optional int32 order = 4;             // 排序序号
  optional bool isDefault = 5;          // 是否默认封面
}

// 冠款价设置模型
message CrownPriceSetting {
  optional double basePrice = 1;                          // 基础价格
}

// 搜索结果中的歌曲（包含额外字段）
message SearchSong {
  optional string songId = 1;                   // 歌曲ID
  optional string songName = 2;                 // 歌曲名称
  optional string singerName = 3;               // 歌手名称
  optional int32 isNamed = 4;                   // 是否冠名：0=否，1=是
  optional bool inPlaylist = 5;   // 是否已添加到歌单
}

// ==================== 响应消息 ====================

// 获取歌单列表响应
message PlaylistList {
  optional int32 total = 1;                         // 总数
  optional int32 page = 2;                          // 当前页码
  optional int32 pageSize = 3;                      // 每页数量
  repeated PlaylistSummary playlists = 4;           // 歌单列表
  optional Playlist firstPayList = 5;               // 第一个歌单的详细数据（包含歌曲列表）
}

// 获取歌单列表和冠款价设置响应
message PlaylistListWithCrownPrice {
  optional int32 total = 1;                         // 总数
  optional int32 page = 2;                          // 当前页码
  optional int32 pageSize = 3;                      // 每页数量
  repeated PlaylistSummary playlists = 4;           // 歌单列表
  optional CrownPriceSetting crownPriceSetting = 5; // 冠款价设置
  optional Playlist firstPayList = 6;               // 第一个歌单的详细数据（包含歌曲列表）
}

// 获取歌单详情响应
message PlaylistDetail {
  optional Playlist playlist = 1;                   // 歌单详情
}

// 创建歌单响应
message PlaylistCreated {
  optional Playlist playlist = 1;                   // 创建的歌单
}

// 更新歌单响应
message PlaylistUpdated {
  optional Playlist playlist = 1;                   // 更新后的歌单
}

// 删除歌单响应
message PlaylistDeleted {
  optional string message = 1;                      // 成功消息
}

// 从歌单移除歌曲响应
message SongsRemovedFromPlaylist {
  optional Playlist playlist = 1;                   // 更新后的歌单
}

// 添加歌曲到歌单响应
message SongsAddedToPlaylist {
  optional Playlist playlist = 1;                   // 更新后的歌单（包含新添加的歌曲）
}

// 搜索歌曲响应
message SongSearchResult {
  optional int32 total = 1;                         // 总数
  optional int32 page = 2;                          // 当前页码
  optional int32 pageSize = 3;                      // 每页数量
  repeated SearchSong songs = 4;                    // 歌曲列表
}

// 获取推荐歌曲响应
message RecommendedSongs {
  repeated Song songs = 1;                          // 推荐歌曲列表
}

// 获取封面列表响应
message CoverList {
  optional int32 total = 1;         // 总数
  optional int32 page = 2;          // 当前页码
  optional int32 pageSize = 3;      // 每页数量
  repeated Cover covers = 4;        // 封面列表
}

// 获取冠款价设置响应
message CrownPriceSettingData {
  optional CrownPriceSetting setting = 1;           // 冠款价设置
}

// 更新冠款价设置响应
message CrownPriceSettingUpdated {
  optional CrownPriceSetting setting = 1;           // 更新后的设置
}


// 冠名信息
message CrownInfo {
  optional string userId = 1;           // 冠名用户ID
  optional string userName = 2;         // 冠名用户名
  optional string userAvatar = 3;       // 冠名用户头像
  optional int32 multiple = 4;          // 冠名倍数
  optional int32 crownPrice = 5;        // 冠名价格(蓝钻)
}
