Full Code of Alex-LiSun/vibe-music-server for AI

main d2dfe3843bf5 cached
148 files
585.0 KB
208.6k tokens
419 symbols
1 requests
Download .txt
Showing preview only (689K chars total). Download the full file or copy to clipboard to get everything.
Repository: Alex-LiSun/vibe-music-server
Branch: main
Commit: d2dfe3843bf5
Files: 148
Total size: 585.0 KB

Directory structure:
gitextract_iwruxmra/

├── .gitattributes
├── .gitignore
├── .mvn/
│   └── wrapper/
│       └── maven-wrapper.properties
├── LICENSE
├── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── sql/
│   └── vibe_music.sql
└── src/
    ├── main/
    │   ├── java/
    │   │   └── cn/
    │   │       └── edu/
    │   │           └── seig/
    │   │               └── vibemusic/
    │   │                   ├── VibeMusicServerApplication.java
    │   │                   ├── config/
    │   │                   │   ├── CorsConfig.java
    │   │                   │   ├── MinioConfig.java
    │   │                   │   ├── MyBatisPlusConfig.java
    │   │                   │   ├── RedisConfig.java
    │   │                   │   ├── RolePathPermissionsConfig.java
    │   │                   │   ├── RolePermissionManager.java
    │   │                   │   └── WebConfig.java
    │   │                   ├── constant/
    │   │                   │   ├── JwtClaimsConstant.java
    │   │                   │   ├── MessageConstant.java
    │   │                   │   └── PathConstant.java
    │   │                   ├── controller/
    │   │                   │   ├── AdminController.java
    │   │                   │   ├── ArtistController.java
    │   │                   │   ├── BannerController.java
    │   │                   │   ├── CommentController.java
    │   │                   │   ├── FeedbackController.java
    │   │                   │   ├── GenreController.java
    │   │                   │   ├── PlaylistBindingController.java
    │   │                   │   ├── PlaylistController.java
    │   │                   │   ├── SongController.java
    │   │                   │   ├── StyleController.java
    │   │                   │   ├── UserController.java
    │   │                   │   └── UserFavoriteController.java
    │   │                   ├── enumeration/
    │   │                   │   ├── BannerStatusEnum.java
    │   │                   │   ├── CommentTypeEnum.java
    │   │                   │   ├── FavoriteTypeEnum.java
    │   │                   │   ├── LikeStatusEnum.java
    │   │                   │   ├── RoleEnum.java
    │   │                   │   └── UserStatusEnum.java
    │   │                   ├── handler/
    │   │                   │   └── GlobalExceptionHandler.java
    │   │                   ├── interceptor/
    │   │                   │   └── LoginInterceptor.java
    │   │                   ├── mapper/
    │   │                   │   ├── AdminMapper.java
    │   │                   │   ├── ArtistMapper.java
    │   │                   │   ├── BannerMapper.java
    │   │                   │   ├── CommentMapper.java
    │   │                   │   ├── FeedbackMapper.java
    │   │                   │   ├── GenreMapper.java
    │   │                   │   ├── PlaylistBindingMapper.java
    │   │                   │   ├── PlaylistMapper.java
    │   │                   │   ├── SongMapper.java
    │   │                   │   ├── StyleMapper.java
    │   │                   │   ├── UserFavoriteMapper.java
    │   │                   │   └── UserMapper.java
    │   │                   ├── model/
    │   │                   │   ├── dto/
    │   │                   │   │   ├── AdminDTO.java
    │   │                   │   │   ├── ArtistAddDTO.java
    │   │                   │   │   ├── ArtistDTO.java
    │   │                   │   │   ├── ArtistUpdateDTO.java
    │   │                   │   │   ├── BannerDTO.java
    │   │                   │   │   ├── CommentPlaylistDTO.java
    │   │                   │   │   ├── CommentSongDTO.java
    │   │                   │   │   ├── FeedbackDTO.java
    │   │                   │   │   ├── PlaylistAddDTO.java
    │   │                   │   │   ├── PlaylistDTO.java
    │   │                   │   │   ├── PlaylistUpdateDTO.java
    │   │                   │   │   ├── SongAddDTO.java
    │   │                   │   │   ├── SongAndArtistDTO.java
    │   │                   │   │   ├── SongDTO.java
    │   │                   │   │   ├── SongUpdateDTO.java
    │   │                   │   │   ├── UserAddDTO.java
    │   │                   │   │   ├── UserDTO.java
    │   │                   │   │   ├── UserLoginDTO.java
    │   │                   │   │   ├── UserPasswordDTO.java
    │   │                   │   │   ├── UserRegisterDTO.java
    │   │                   │   │   ├── UserResetPasswordDTO.java
    │   │                   │   │   └── UserSearchDTO.java
    │   │                   │   ├── entity/
    │   │                   │   │   ├── Admin.java
    │   │                   │   │   ├── Artist.java
    │   │                   │   │   ├── Banner.java
    │   │                   │   │   ├── Comment.java
    │   │                   │   │   ├── Feedback.java
    │   │                   │   │   ├── Genre.java
    │   │                   │   │   ├── Playlist.java
    │   │                   │   │   ├── PlaylistBinding.java
    │   │                   │   │   ├── Song.java
    │   │                   │   │   ├── Style.java
    │   │                   │   │   ├── User.java
    │   │                   │   │   └── UserFavorite.java
    │   │                   │   └── vo/
    │   │                   │       ├── ArtistDetailVO.java
    │   │                   │       ├── ArtistNameVO.java
    │   │                   │       ├── ArtistVO.java
    │   │                   │       ├── BannerVO.java
    │   │                   │       ├── CommentVO.java
    │   │                   │       ├── PlaylistDetailVO.java
    │   │                   │       ├── PlaylistVO.java
    │   │                   │       ├── SongAdminVO.java
    │   │                   │       ├── SongDetailVO.java
    │   │                   │       ├── SongVO.java
    │   │                   │       ├── UserManagementVO.java
    │   │                   │       └── UserVO.java
    │   │                   ├── result/
    │   │                   │   ├── PageResult.java
    │   │                   │   └── Result.java
    │   │                   ├── service/
    │   │                   │   ├── EmailService.java
    │   │                   │   ├── IAdminService.java
    │   │                   │   ├── IArtistService.java
    │   │                   │   ├── IBannerService.java
    │   │                   │   ├── ICommentService.java
    │   │                   │   ├── IFeedbackService.java
    │   │                   │   ├── IGenreService.java
    │   │                   │   ├── IPlaylistBindingService.java
    │   │                   │   ├── IPlaylistService.java
    │   │                   │   ├── ISongService.java
    │   │                   │   ├── IStyleService.java
    │   │                   │   ├── IUserFavoriteService.java
    │   │                   │   ├── IUserService.java
    │   │                   │   ├── MinioService.java
    │   │                   │   └── impl/
    │   │                   │       ├── AdminServiceImpl.java
    │   │                   │       ├── ArtistServiceImpl.java
    │   │                   │       ├── BannerServiceImpl.java
    │   │                   │       ├── CommentServiceImpl.java
    │   │                   │       ├── EmailServiceImpl.java
    │   │                   │       ├── FeedbackServiceImpl.java
    │   │                   │       ├── GenreServiceImpl.java
    │   │                   │       ├── MinioServiceImpl.java
    │   │                   │       ├── PlaylistBindingServiceImpl.java
    │   │                   │       ├── PlaylistServiceImpl.java
    │   │                   │       ├── SongServiceImpl.java
    │   │                   │       ├── StyleServiceImpl.java
    │   │                   │       ├── UserFavoriteServiceImpl.java
    │   │                   │       └── UserServiceImpl.java
    │   │                   └── util/
    │   │                       ├── BindingResultUtil.java
    │   │                       ├── JwtUtil.java
    │   │                       ├── RandomCodeUtil.java
    │   │                       ├── ThreadLocalUtil.java
    │   │                       └── TypeConversionUtil.java
    │   └── resources/
    │       ├── application.yml
    │       └── mapper/
    │           ├── AdminMapper.xml
    │           ├── ArtistMapper.xml
    │           ├── BannerMapper.xml
    │           ├── CommentMapper.xml
    │           ├── FeedbackMapper.xml
    │           ├── GenreMapper.xml
    │           ├── PlaylistBindingMapper.xml
    │           ├── PlaylistMapper.xml
    │           ├── SongMapper.xml
    │           ├── StyleMapper.xml
    │           ├── UserFavoriteMapper.xml
    │           └── UserMapper.xml
    └── test/
        └── java/
            └── cn/
                └── edu/
                    └── seig/
                        └── vibemusic/
                            ├── RedisConnectionTest.java
                            └── VibeMusicServerApplicationTests.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
/mvnw text eol=lf
*.cmd text eol=crlf


================================================
FILE: .gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/


================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
wrapperVersion=3.3.2
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2025 Alex-LiSun

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Vibe Music Server 🎶

## 介绍 📖

**Vibe Music Server** 是 Vibe Music 项目的后端 API 服务。本项目基于 **Spring Boot 3** 构建,采用 **Java 17**、**Maven**、**MyBatis-Plus**、**MySQL**、**Redis** 和 **MinIO** 等技术,为 Vibe Music 的客户端和管理端提供稳定、高效的数据支持和业务逻辑处理。

## 主要功能 ✨

本服务提供以下核心功能 API:

- **用户认证与管理**: 提供用户注册、登录、信息修改、头像上传、注销等接口,支持管理员对用户进行管理(查询、禁用/启用)。
- **内容管理**:
    - **歌手管理**: 添加、编辑、删除歌手信息。
    - **歌曲管理**: 添加、编辑、删除歌曲信息,处理歌曲文件上传。
    - **歌单管理**: 创建、编辑、删除歌单,管理歌单歌曲。
    - **轮播图管理**: 添加、编辑、删除首页轮播图。
- **用户互动**:
    - **评论管理**: 发表、查看、删除歌曲或歌单的评论。
    - **收藏管理**: 用户收藏/取消收藏歌曲、歌单。
    - **反馈管理**: 提交、查看、处理用户反馈。
- **文件服务**: 使用 MinIO 存储和管理音乐文件、图片(如头像、封面)等静态资源。
- **权限控制**: 基于 JWT 和角色进行 API 访问权限控制。
- **数据缓存**: 利用 Redis 缓存热点数据,提高访问速度。
- **邮件服务**: 支持发送验证码等邮件通知。

## 技术栈 🛠️

- **后端框架**: [Spring Boot 3](https://spring.io/projects/spring-boot)
- **开发语言**: [Java 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- **构建工具**: [Maven](https://maven.apache.org/)
- **数据库**: [MySQL](https://www.mysql.com/) (推荐 8.0+)
- **ORM**: [MyBatis-Plus](https://baomidou.com/)
- **缓存**: [Redis](https://redis.io/)
- **对象存储**: [MinIO](https://min.io/)
- **认证**: [JWT (java-jwt)](https://github.com/auth0/java-jwt)
- **数据库连接池**: [Druid](https://github.com/alibaba/druid)
- **工具库**: Lombok, Spring Boot Validation, Java Mail

## 系统需求 ⚙️

- **JDK**: `17` 或更高版本
- **Maven**: `3.6` 或更高版本
- **MySQL**: `8.0` 或更高版本
- **Redis**: 推荐 `6.0` 或更高版本
- **MinIO**: 最新稳定版

## 代码仓库 ⭐

- [GitHub 代码仓库](https://github.com/Alex-LiSun/vibe-music-server.git)

## 文件下载 📥

本项目包含的所有文件,均已通过MinIO存储桶的形式进行分享,并提供百度网盘的下载链接。
- vibe-music-data: [https://pan.baidu.com/s/1IHU2EBodNmmjCeYi7_Tw5g?pwd=1234] (提取码: `1234`)

![vibe-music-data](https://github.com/Alex-LiSun/vibe-music-server/blob/main/img/vibe-music-data.png)
![vibe-music-data](https://github.com/Alex-LiSun/vibe-music-server/blob/main/img/vibe-music-data-songs.png)

## 安装与启动 🚀

1.  **克隆项目**

    ```bash
    # GitHub (示例)
    git clone https://github.com/Alex-LiSun/vibe-music-server.git

    cd vibe-music-server
    ```

2.  **环境准备**

    - 确保已安装并运行 **MySQL 8.0+** 数据库服务。
    - 创建名为 `vibe_music` 的数据库 (或与配置文件中名称一致),并使用 `UTF-8` 字符集。
        ```sql
        CREATE DATABASE vibe_music CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
        ```
    - 确保已安装并运行 **Redis** 服务。
    - 确保已安装并运行 **MinIO** 服务。
    - 在 MinIO 中创建一个名为 `vibe-music-data` 的 Bucket (或与配置文件中名称一致),并确保服务具有读写权限。

3.  **配置应用**

    - 找到并修改 `src/main/resources/application.yml` 文件。
    - **数据库配置**: 修改 `spring.datasource` 下的 `url`, `username`, `password` 以匹配你的 MySQL 环境。
    - **Redis 配置**: 修改 `spring.data.redis` 下的 `host`, `port`, `password` (如果需要) 以匹配你的 Redis 环境。
    - **MinIO 配置**: 修改 `minio` 下的 `endpoint`, `accessKey`, `secretKey`, `bucket` 以匹配你的 MinIO 环境。
    - **邮件服务配置 (可选)**: 如果需要邮件功能(如验证码),修改 `spring.mail` 下的 `host`, `username`, `password`。 **注意:请勿将生产环境的敏感密码直接提交到代码库。** 建议使用环境变量或配置中心管理。

    ```yaml
    # src/main/resources/application.yml (部分示例)

    spring:
      datasource:
        url: jdbc:mysql://YOUR_MYSQL_HOST:3306/vibe_music?useUnicode=true&characterEncoding=utf-8&useSSL=false # 修改你的 MySQL 地址和库名
        username: YOUR_MYSQL_USER # 修改你的 MySQL 用户名
        password: YOUR_MYSQL_PASSWORD # 修改你的 MySQL 密码
        # ...

      data:
        redis:
          host: YOUR_REDIS_HOST # 修改你的 Redis 地址
          port: 6379
          password: YOUR_REDIS_PASSWORD # 如果 Redis 有密码,取消注释并修改
          database: 1
          # ...

      mail:
        host: smtp.example.com # 修改你的 SMTP 服务器地址
        username: your-email@example.com # 修改你的邮箱账号
        password: YOUR_EMAIL_APP_PASSWORD # 修改你的邮箱应用密码或授权码
        # ...

    minio:
      endpoint: http://YOUR_MINIO_HOST:9000 # 修改你的 MinIO 端点
      accessKey: YOUR_MINIO_ACCESS_KEY # 修改你的 MinIO Access Key
      secretKey: YOUR_MINIO_SECRET_KEY # 修改你的 MinIO Secret Key
      bucket: vibe-music-data # 确认 Bucket 名称与你创建的一致
    ```

4.  **构建项目** (使用 Maven)

    在项目根目录下执行:
    ```bash
    mvn clean package -DskipTests
    ```
    这将在 `target` 目录下生成一个可执行的 JAR 文件 (例如 `vibe-music-server-0.0.1-SNAPSHOT.jar`)。

5.  **运行服务**

    ```bash
    java -jar target/vibe-music-server-*.jar
    ```
    服务默认启动在 `8080` 端口 (Spring Boot 默认端口,可在 `application.yml` 中通过 `server.port` 修改)。

## 项目脚本 📜 (Maven)

- `mvn clean`: 清理构建产物。
- `mvn compile`: 编译项目源代码。
- `mvn test`: 运行单元测试。
- `mvn package`: 打包项目为可执行 JAR 文件。
- `mvn spring-boot:run`: 启动 Spring Boot 应用 (用于开发)。
- `java -jar target/*.jar`: 运行打包后的 JAR 文件。

## 项目演示 📺

视频地址:[https://www.bilibili.com/video/BV1tKJ8z8E6z/]

## API 文档 接口

本项目旨在为 [Vibe Music Client](https://github.com/Alex-LiSun/vibe-music-client) (客户端) 和 [Vibe Music Admin](https://github.com/Alex-LiSun/vibe-music-admin) (管理端) 提供后端支持。具体的 API 接口定义和使用方式,请参考项目源代码中的 Controller 层代码,或使用 API 文档工具 (如 Swagger,如果项目中集成了的话) 查看。

## 依赖服务说明 🔗

本项目运行依赖以下外部服务,请确保它们已正确安装、配置并正在运行:

- **MySQL**: 用于持久化存储核心业务数据。
- **Redis**: 用于数据缓存,提升性能。
- **MinIO**: 用于存储音乐文件、图片等静态资源。

## 免责声明 ⚠️

**Vibe Music Server** 项目仅供学习和技术研究使用。所有由本服务管理和存储的数据(包括用户信息、音乐文件、图片等)均由您自行配置和运行的 **MySQL**, **Redis**, **MinIO** 服务承载。请在遵守相关国家和地区的法律法规以及版权政策的前提下使用。

- **请勿用于任何商业用途。**
- 对于因使用本项目而可能产生的任何直接或间接问题、数据安全风险、版权纠纷或经济损失,项目作者不承担任何责任。
- 用户需自行承担所有使用风险,包括确保数据来源合法合规,以及所依赖服务的安全稳定运行。

在您部署和使用本软件前,请仔细阅读并理解本免责声明。继续使用即表示您同意本声明的所有条款。

## 许可证 📄

本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情

## 贡献 ❤️

欢迎各种形式的贡献,包括提交 Issue、Pull Request 或提出建议!

## 常见问题 (FAQ) ❓

- **启动失败,提示数据库连接错误?**
    - 检查 `application.yml` 中的 `spring.datasource` 配置是否正确 (URL、用户名、密码)。
    - 确认 MySQL 服务是否正在运行,并且网络可达。
    - 确认数据库 `vibe_music` 是否已创建,并且字符集正确。
    - 检查 MySQL 用户是否有权限访问该数据库。

- **启动失败,提示 Redis 连接错误?**
    - 检查 `application.yml` 中的 `spring.data.redis` 配置是否正确 (host, port, password)。
    - 确认 Redis 服务是否正在运行,并且网络可达。

- **文件上传失败或无法访问?**
    - 检查 `application.yml` 中的 `minio` 配置是否正确 (endpoint, accessKey, secretKey, bucket)。
    - 确认 MinIO 服务是否正在运行,并且网络可达。
    - 确认 MinIO 中名为 `vibe-music-data` (或你配置的名称) 的 Bucket 是否已创建。
    - 检查 MinIO 的 Bucket 策略或服务权限设置,确保应用有读写权限。
    - 检查 `spring.servlet.multipart` 的 `max-file-size` 和 `max-request-size` 是否足够大。

- **端口冲突 (Port already in use)?**
    - 检查是否有其他程序占用了 `8080` 端口 (或其他你在 `application.yml` 中配置的 `server.port`)。
    - 你可以修改 `application.yml` 中的 `server.port` 来使用其他端口。

- **如何查看 API 接口?**
    - 如果项目集成了 Swagger 或 SpringDoc,启动服务后通常可以通过访问 `/swagger-ui.html` 或 `/v3/api-docs` 来查看和测试 API。
    - 如果没有集成文档工具,需要直接查看 `src/main/java/.../controller` 目录下的 Java 代码来了解接口定义。

================================================
FILE: mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.3.2
#
# Optional ENV vars
# -----------------
#   JAVA_HOME - location of a JDK home dir, required when download maven via java source
#   MVNW_REPOURL - repo url base for downloading maven distribution
#   MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
#   MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------

set -euf
[ "${MVNW_VERBOSE-}" != debug ] || set -x

# OS specific support.
native_path() { printf %s\\n "$1"; }
case "$(uname)" in
CYGWIN* | MINGW*)
  [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
  native_path() { cygpath --path --windows "$1"; }
  ;;
esac

# set JAVACMD and JAVACCMD
set_java_home() {
  # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
  if [ -n "${JAVA_HOME-}" ]; then
    if [ -x "$JAVA_HOME/jre/sh/java" ]; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
      JAVACCMD="$JAVA_HOME/jre/sh/javac"
    else
      JAVACMD="$JAVA_HOME/bin/java"
      JAVACCMD="$JAVA_HOME/bin/javac"

      if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
        echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
        echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
        return 1
      fi
    fi
  else
    JAVACMD="$(
      'set' +e
      'unset' -f command 2>/dev/null
      'command' -v java
    )" || :
    JAVACCMD="$(
      'set' +e
      'unset' -f command 2>/dev/null
      'command' -v javac
    )" || :

    if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
      echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
      return 1
    fi
  fi
}

# hash string like Java String::hashCode
hash_string() {
  str="${1:-}" h=0
  while [ -n "$str" ]; do
    char="${str%"${str#?}"}"
    h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
    str="${str#?}"
  done
  printf %x\\n $h
}

verbose() { :; }
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }

die() {
  printf %s\\n "$1" >&2
  exit 1
}

trim() {
  # MWRAPPER-139:
  #   Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
  #   Needed for removing poorly interpreted newline sequences when running in more
  #   exotic environments such as mingw bash on Windows.
  printf "%s" "${1}" | tr -d '[:space:]'
}

# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
while IFS="=" read -r key value; do
  case "${key-}" in
  distributionUrl) distributionUrl=$(trim "${value-}") ;;
  distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
  esac
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"

case "${distributionUrl##*/}" in
maven-mvnd-*bin.*)
  MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
  case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
  *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
  :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
  :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
  :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
  *)
    echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
    distributionPlatform=linux-amd64
    ;;
  esac
  distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
  ;;
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
esac

# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
distributionUrlName="${distributionUrl##*/}"
distributionUrlNameMain="${distributionUrlName%.*}"
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"

exec_maven() {
  unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
  exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
}

if [ -d "$MAVEN_HOME" ]; then
  verbose "found existing MAVEN_HOME at $MAVEN_HOME"
  exec_maven "$@"
fi

case "${distributionUrl-}" in
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
esac

# prepare tmp dir
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
  clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
  trap clean HUP INT TERM EXIT
else
  die "cannot create temp dir"
fi

mkdir -p -- "${MAVEN_HOME%/*}"

# Download and Install Apache Maven
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
verbose "Downloading from: $distributionUrl"
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"

# select .zip or .tar.gz
if ! command -v unzip >/dev/null; then
  distributionUrl="${distributionUrl%.zip}.tar.gz"
  distributionUrlName="${distributionUrl##*/}"
fi

# verbose opt
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v

# normalize http auth
case "${MVNW_PASSWORD:+has-password}" in
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
esac

if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
  verbose "Found wget ... using wget"
  wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
  verbose "Found curl ... using curl"
  curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
elif set_java_home; then
  verbose "Falling back to use Java to download"
  javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
  targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
  cat >"$javaSource" <<-END
	public class Downloader extends java.net.Authenticator
	{
	  protected java.net.PasswordAuthentication getPasswordAuthentication()
	  {
	    return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
	  }
	  public static void main( String[] args ) throws Exception
	  {
	    setDefault( new Downloader() );
	    java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
	  }
	}
	END
  # For Cygwin/MinGW, switch paths to Windows format before running javac and java
  verbose " - Compiling Downloader.java ..."
  "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
  verbose " - Running Downloader.java ..."
  "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
fi

# If specified, validate the SHA-256 sum of the Maven distribution zip file
if [ -n "${distributionSha256Sum-}" ]; then
  distributionSha256Result=false
  if [ "$MVN_CMD" = mvnd.sh ]; then
    echo "Checksum validation is not supported for maven-mvnd." >&2
    echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
    exit 1
  elif command -v sha256sum >/dev/null; then
    if echo "$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
      distributionSha256Result=true
    fi
  elif command -v shasum >/dev/null; then
    if echo "$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
      distributionSha256Result=true
    fi
  else
    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
    echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
    exit 1
  fi
  if [ $distributionSha256Result = false ]; then
    echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
    echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
    exit 1
  fi
fi

# unzip and move
if command -v unzip >/dev/null; then
  unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
else
  tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
fi
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"

clean || :
exec_maven "$@"


================================================
FILE: mvnw.cmd
================================================
<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.3.2
@REM
@REM Optional ENV vars
@REM   MVNW_REPOURL - repo url base for downloading maven distribution
@REM   MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@REM   MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------

@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
@SET __MVNW_CMD__=
@SET __MVNW_ERROR__=
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
@SET PSModulePath=
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
  IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
@SET __MVNW_PSMODULEP_SAVE=
@SET __MVNW_ARG0_NAME__=
@SET MVNW_USERNAME=
@SET MVNW_PASSWORD=
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
@echo Cannot start maven from wrapper >&2 && exit /b 1
@GOTO :EOF
: end batch / begin powershell #>

$ErrorActionPreference = "Stop"
if ($env:MVNW_VERBOSE -eq "true") {
  $VerbosePreference = "Continue"
}

# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
  Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
}

switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
  "maven-mvnd-*" {
    $USE_MVND = $true
    $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
    $MVN_CMD = "mvnd.cmd"
    break
  }
  default {
    $USE_MVND = $false
    $MVN_CMD = $script -replace '^mvnw','mvn'
    break
  }
}

# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
if ($env:MVNW_REPOURL) {
  $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
  $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
}
$distributionUrlName = $distributionUrl -replace '^.*/',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
if ($env:MAVEN_USER_HOME) {
  $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
}
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"

if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
  Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
  Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
  exit $?
}

if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
  Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
}

# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
  if ($TMP_DOWNLOAD_DIR.Exists) {
    try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
    catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
  }
}

New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null

# Download and Install Apache Maven
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
Write-Verbose "Downloading from: $distributionUrl"
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"

$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
  $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null

# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
  if ($USE_MVND) {
    Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
  }
  Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
  if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
    Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
  }
}

# unzip and move
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
try {
  Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
  if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
    Write-Error "fail to move MAVEN_HOME"
  }
} finally {
  try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
  catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}

Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"


================================================
FILE: pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>cn.edu.seig</groupId>
    <artifactId>vibe-music-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>vibe-music-server</name>
    <description>vibe-music-server</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--configuration processor依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!--devtools热部署依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <!--单元测试依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.9</version>
        </dependency>

        <!--mybatis-plus分页插件依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser</artifactId>
            <version>3.5.9</version>
        </dependency>

        <!--redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!--mysql驱动依赖-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>

        <!--druid数据库连接池依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.18</version>
        </dependency>

        <!--lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--validation依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <!--jwt依赖-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>4.4.0</version>
        </dependency>

        <!--java mail依赖-->
        <dependency>
            <groupId>org.eclipse.angus</groupId>
            <artifactId>jakarta.mail</artifactId>
        </dependency>

        <!--minio依赖-->
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.5.9</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: sql/vibe_music.sql
================================================
/*
 Navicat Premium Data Transfer

 Source Server         : MySQL80
 Source Server Type    : MySQL
 Source Server Version : 80030
 Source Host           : localhost:3306
 Source Schema         : vibe_music

 Target Server Type    : MySQL
 Target Server Version : 80030
 File Encoding         : 65001

 Date: 30/04/2025 16:06:31
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for tb_admin
-- ----------------------------
DROP TABLE IF EXISTS `tb_admin`;
CREATE TABLE `tb_admin`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '管理员 id',
  `username` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '管理员用户名',
  `password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '管理员密码',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 170 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_admin
-- ----------------------------
INSERT INTO `tb_admin` VALUES (58, 'admin_172', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (59, 'admin_888', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (60, 'admin_926', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (61, 'admin_966', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (62, 'admin_52', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (65, 'admin_1', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (66, 'admin_494', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (67, 'admin_465', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (68, 'admin_843', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (69, 'admin_820', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (72, 'admin_580', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (73, 'admin_423', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (74, 'admin_375', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (75, 'admin_607', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (76, 'admin_910', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (79, 'admin_110', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (80, 'admin_434', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (81, 'admin_841', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (82, 'admin_901', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (83, 'admin_983', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (86, 'admin_630', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (87, 'admin_865', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (88, 'admin_435', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (89, 'admin_581', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (90, 'admin_601', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (93, 'admin_8', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (94, 'admin_493', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (95, 'admin_445', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (96, 'admin_746', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (97, 'admin_395', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (103, 'admin_59', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (104, 'admin_990', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (105, 'admin_775', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (106, 'admin_905', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (107, 'admin_201', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (110, 'admin_851', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (111, 'admin_463', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (112, 'admin_765', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (113, 'admin_433', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (114, 'admin_874', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (117, 'admin_621', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (118, 'admin_32', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (119, 'admin_295', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (120, 'admin_379', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (121, 'admin_10', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (124, 'admin_572', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (125, 'admin_509', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (126, 'admin_828', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (127, 'admin_616', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (128, 'admin_593', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (131, 'admin_490', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (132, 'admin_107', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (133, 'admin_64', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (134, 'admin_999', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (135, 'admin_805', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (138, 'admin_61', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (139, 'admin_263', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (140, 'admin_132', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (141, 'admin_871', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (142, 'admin_959', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (145, 'admin_450', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (146, 'admin_684', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (147, 'admin_68', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (148, 'admin_287', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (149, 'admin_235', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (152, 'admin_886', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (153, 'admin_135', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (154, 'admin_18', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (155, 'admin_685', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (156, 'admin_371', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (159, 'admin_816', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (160, 'admin_137', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (161, 'admin_239', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (162, 'admin_782', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (163, 'admin_193', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (166, 'admin_613', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (167, 'admin_798', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (168, 'admin_152', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (169, 'admin_365', 'df10ef8509dc176d733d59549e7dbfaf');
INSERT INTO `tb_admin` VALUES (170, 'admin_372', 'df10ef8509dc176d733d59549e7dbfaf');

-- ----------------------------
-- Table structure for tb_artist
-- ----------------------------
DROP TABLE IF EXISTS `tb_artist`;
CREATE TABLE `tb_artist`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '歌手 id',
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '歌手姓名',
  `gender` int(0) NULL DEFAULT NULL COMMENT '歌手性别:0-男,1-女,2-组合/乐队',
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌手头像',
  `birth` date NULL DEFAULT NULL COMMENT '歌手出生日期',
  `area` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌手国籍',
  `introduction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌手简介',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `name`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 142 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_artist
-- ----------------------------
INSERT INTO `tb_artist` VALUES (2, '何真真', 1, 'http://localhost:9000/vibe-music-data/artists/98b29849-aa07-4d91-b23f-e10ff91807cc-blob', NULL, '美国', '何真真,美国Berklee音乐院“商业编曲”最高荣誉──昆西·琼斯奖(学士文凭第一名毕业)、美国Berklee音乐院“爵士作曲硕士”,更在美国西雅图歌剧院指挥演出个人创作。');
INSERT INTO `tb_artist` VALUES (3, '接个吻,开一枪', NULL, 'http://localhost:9000/vibe-music-data/artists/6ed73c09-6e2d-4630-a506-e33e8f3daf88-blob', NULL, '中国', '电子乐制作人/DJ/吉他手');
INSERT INTO `tb_artist` VALUES (4, 'LANY', 0, 'http://localhost:9000/vibe-music-data/artists/70dece9e-debc-4a3b-ba56-0742ed95ebe9-blob', NULL, '美国', 'LANY,这个蕴含着“Los Angeles,New York”深情的首字母缩写,是一支源自洛杉矶的璀璨美国流行摇滚乐队。2014年,在充满音乐氛围的纳什维尔,吉他手兼主唱Paul Jason Klein与鼓手Jake Clifford Goss携手,共同铸就了LANY的辉煌起点。');
INSERT INTO `tb_artist` VALUES (5, '孝敏 (효민)', 1, 'http://localhost:9000/vibe-music-data/artists/ee425603-fa15-454f-925e-b8fdf4a19add-blob', '1989-05-30', '韩国', '孝敏(효민),本名为朴宣映,韩国人气女歌手、演员。韩国女子组合T-ara第三任队长,在队内司职主唱、主领舞、Rapper ,是队中的时尚担当、性感担当、形象担当。');
INSERT INTO `tb_artist` VALUES (6, '智妍 (지연)', 1, 'http://localhost:9000/vibe-music-data/artists/10838e3a-5887-42bd-99e2-da8d66c76611-blob', '1993-06-07', '韩国', '芝妍(지연),本名为朴芝妍,韩国女歌手、演员、主持人、模特,女子演唱团体T-ara成员之一。');
INSERT INTO `tb_artist` VALUES (7, 'Bandari', 0, 'http://localhost:9000/vibe-music-data/artists/793eebd7-cef1-4d81-839c-dee662dcb050-blob', NULL, '瑞士', '班得瑞(Bandari),这个来自瑞士音乐公司Audio Video Communications AG的新纪元音乐项目,以其独特的音乐魅力在亚洲地区,特别是中国台湾和中国大陆,赢得了无数乐迷的喜爱。尽管常被媒体和唱片公司描绘成一个低调的音乐团体,但他们的作品却以其深邃的环境音乐和冥想音乐风格,成为了许多人寻求睡眠与减压的良伴。');
INSERT INTO `tb_artist` VALUES (8, '吕思清', 0, 'http://localhost:9000/vibe-music-data/artists/ea7d385e-645f-4f48-af0b-fc48ce0d5007-blob', '1969-11-26', '中国', '吕思清,1969年11月26日出生于中国山东省青岛市,小提琴演奏者,毕业于美国茱莉亚音乐学院。是第一位夺得意大利帕格尼尼国际小提琴大赛金奖的东方人。作为中国最具影响力的杰出小提琴家,吕思清长期受邀与全球知名乐团合作巡演、参加世界各地艺术节及音乐节活动,同时带领他于2011年创办的”美杰三重奏”举行室内乐音乐会,足迹遍布世界四十多个国家和地区。');
INSERT INTO `tb_artist` VALUES (9, 'Hedwig Bilgram', NULL, 'http://localhost:9000/vibe-music-data/artists/6cce9040-63d5-42a2-ba54-aaad77c2f7a3-blob', NULL, NULL, NULL);
INSERT INTO `tb_artist` VALUES (10, 'OneRepublic', 2, 'http://localhost:9000/vibe-music-data/artists/83949fbb-23ec-49db-9c46-50cbd75ea5fa-blob', NULL, '美国', 'OneRepublic(共和时代),一支来自美国科罗拉多州的流行摇滚乐队,以其独特的pop-rock/indie/alternative曲风征服了无数乐迷。自2004年成立以来,乐队成员们在灵魂人物Ryan Tedder的引领下,共同追求音乐的极致。Ryan自幼受到音乐家父亲的熏陶,5岁便开始学习钢琴,他的音乐理念是让乐队的作品像U2一样,给人们带来宗教般的感悟。');
INSERT INTO `tb_artist` VALUES (11, 'Piggy Chu', NULL, 'http://localhost:9000/vibe-music-data/artists/0cceba90-23d6-43e7-992e-8d82b2511039-blob', NULL, NULL, 'Piggy Chu简介\r\n\r\n只是高中开始写歌,高考结束之后开始独立制作音乐啦~~~\r\n\r\n除了Pop songs也为古典重奏、合唱团和管弦乐团写作~~~\r\n\r\n没办法像乐队里的吉他手一样Cool,那就只能用旋律说说自己想说的话咯~');
INSERT INTO `tb_artist` VALUES (12, '白光', 1, 'http://localhost:9000/vibe-music-data/artists/ccd799a2-98e4-445f-be89-fff275f42def-blob', '1921-06-27', '中国', '白光,原名史永芬,河北涿县人,1921年6月27日生于北平,歌星、影星。');
INSERT INTO `tb_artist` VALUES (13, 'Daoko', 1, 'http://localhost:9000/vibe-music-data/artists/2819f722-62c2-4637-988c-f7712b41c112-blob', '1997-03-04', '日本', 'DAOKO,1997年出生于日本东京都,是一位备受瞩目的日本女性MC和歌手。她的音乐之路始于2012年,当时她发布了专辑《HYPER GIRL- 向こう侧の女の子 -》,展现了她独特的音乐才华。2013年,DAOKO与m-flo合作推出了歌曲《IRONY》,将她的音乐风格推向了一个新的高度。');
INSERT INTO `tb_artist` VALUES (14, 'Wolfgang Amadeus Mozart', 0, 'http://localhost:9000/vibe-music-data/artists/4dc2b08a-cebe-4111-982c-cb3ddc975610-blob', '1756-01-27', '奥地利', '沃尔夫冈·阿马德乌斯·莫扎特(1756年1月27日-1791年12月5日),这位诞生于神圣罗马帝国时期萨尔兹堡的音乐奇才,被誉为欧洲古典主义音乐的杰出代表之一。');
INSERT INTO `tb_artist` VALUES (15, 'Charli XCX', 1, 'http://localhost:9000/vibe-music-data/artists/99509118-6885-411d-835f-749d4d8d8209-blob', '1992-08-02', '英国', 'Charli XCX,来自英国的才华横溢的创作型女歌手,自2014年起便以其独特的音乐风格在乐坛崭露头角。2月17日,她携手合作的单曲《Fancy》一经发布便引发热议,成功获得第57届格莱美奖年度制作和最佳流行组合的提名。紧接着,她在同年12月15日发行了第二张录音室专辑《Sucker》,为乐迷带来了更多惊喜。');
INSERT INTO `tb_artist` VALUES (16, 'Vexento', 0, 'http://localhost:9000/vibe-music-data/artists/bf682fae-e656-44ec-9d4e-f75bd3411a90-blob', NULL, '挪威', 'Vexento,一位来自挪威的崭露头角电子音乐才子,本名Alexander Hansen,1997年诞生,以他独特的音乐魅力征服了无数听众的心。他的曲风多变,既正面又俏皮,总能在不经意间带给人们意想不到的惊喜。');
INSERT INTO `tb_artist` VALUES (17, 'IU (아이유)', 1, 'http://localhost:9000/vibe-music-data/artists/cd398aad-f0fa-4e31-a256-35d3b78b7391-blob', NULL, '韩国', 'IU(아이유),本名李知恩,韩国女歌手、演员、主持人。自2007年加入Loen Entertainment 成为练习生以来,她的音乐之路便一发不可收拾。15岁那年,IU发行首张迷你专辑《Lost and Found》,正式踏入歌坛。然而,真正让她崭露头角的是2010年的神曲《好日子》,那惊艳的三段高音不仅展示了她卓越的唱功,更让她在各大榜单上屡获殊荣,荣获MMA年度歌曲奖。');
INSERT INTO `tb_artist` VALUES (18, 'G.E.M.邓紫棋', 1, 'http://localhost:9000/vibe-music-data/artists/71bff6e1-e4cf-41ca-bfce-29a1c8439651-blob', '1991-08-16', '中国', '邓紫棋(Gloria Tang Tsz-Kei),又名G.E.M.,是中国香港的创作型女歌手、词曲创作人。2008年,年仅16岁的邓紫棋出道,并于同年10月发行首张EP《G.E.M.》,凭借这张作品迅速在香港乐坛崭露头角,获得各大颁奖礼新人金奖。');
INSERT INTO `tb_artist` VALUES (19, 'RADWIMPS (ラッドウィンプス)', 0, 'http://localhost:9000/vibe-music-data/artists/2f832e3e-1169-4bc5-9519-b5f7e0b743a3-blob', NULL, '日本', '乐队以其不拘泥于既存风格的音乐性,以及从恋爱观到生死观充满哲理又不乏感性的歌词,得到了以青春期人群为中心的广大受众群体的支持。');
INSERT INTO `tb_artist` VALUES (20, '凤箫和鸣', 0, 'http://localhost:9000/vibe-music-data/artists/7a9c9108-32d2-41d3-9cc9-47c29fdebf3d-blob', NULL, '中国', NULL);
INSERT INTO `tb_artist` VALUES (21, 'Mr.Cali', 0, 'http://localhost:9000/vibe-music-data/artists/f7fa0587-e7c9-4325-a451-8b513cdbecf2-blob', '1995-11-20', '中国', 'Mr.Cali(郭晓楠),男,1995年11月20日出生于中国深圳。是深圳一名业余说唱、R&B歌手。');
INSERT INTO `tb_artist` VALUES (22, 'Jacques Offenbach', 0, 'http://localhost:9000/vibe-music-data/artists/18e8172e-e197-43d4-8fbc-90c2495c5f1a-blob', NULL, '法国', '雅克·奥芬巴赫(法语:Jacques Offenbach,1819年6月20日-1880年10月5日),出生于德国的法国作曲家。代表作为歌剧《霍夫曼的故事》。');
INSERT INTO `tb_artist` VALUES (23, '徐梦圆', 0, 'http://localhost:9000/vibe-music-data/artists/bf87e7aa-7ed4-4fa9-97bb-c601a03449b4-blob', '1992-10-22', '中国', '徐梦圆,音乐制作人,擅长中国风电子音乐的制作,2018年,作为首位在CCTV1官方节目中表演的90后DJ,被央视誉为“中国新时代电音领军人物”;同年,获PYRO百大DJ榜单冠军。');
INSERT INTO `tb_artist` VALUES (24, '尤大淳', 0, 'http://localhost:9000/vibe-music-data/artists/cfc5febc-e3fe-4a20-982b-13157666cd46-blob', NULL, '中国', '尤大淳,上海交响乐团的钢琴演奏家,任教于上海音乐学院。1994年发表专辑《世界钢琴名曲精选 少女的祈祷》(《A Selection of Worlds Masterpices of the Piano - The Maiden’s Prayer》)。');
INSERT INTO `tb_artist` VALUES (25, 'Various Artists', NULL, 'http://localhost:9000/vibe-music-data/artists/ac464c59-6e0f-4edd-a83f-293ac4cb265a-blob', NULL, NULL, 'Various Artists,一个简洁而富有深意的称谓,常以VA或V.A.的缩写形式出现在我们的视野中,它犹如夜空中璀璨的群星,闪耀着多元与包容的光芒,特指那些汇聚了欧美乐坛众多杰出艺术家的阵容。每当你在音乐专辑的封面上瞥见这几个字母时,心中便会涌起一股期待,因为你知道,这不仅仅是一位歌手的独白,而是一场由众多音乐才子共同演绎的音乐盛宴,就如同中文专辑里那熟悉的“群星”二字,预示着接下来将是一场耳目的盛宴。');
INSERT INTO `tb_artist` VALUES (26, 'Oregon Symphony', 2, 'http://localhost:9000/vibe-music-data/artists/3f534cf9-aff1-4a97-a3fa-f06944928bfc-blob', '1896-01-01', '美国', '俄勒冈交响乐团是美国交响乐团,总部位于美国俄勒冈州波特兰市。该乐团成立于 1896 年,原名“波特兰交响乐团”,是美国第六古老的乐团,也是美国西部最古老的乐团。该乐团的主场是波特兰市中心文化区 的阿琳·施尼策音乐厅。');
INSERT INTO `tb_artist` VALUES (27, '李荣浩', 0, 'http://localhost:9000/vibe-music-data/artists/f43cd77b-3343-4143-95cb-714606f25198-blob', '1985-07-11', '中国', '李荣浩,中国流行乐男歌手、音乐制作人、演员、吉他手。');
INSERT INTO `tb_artist` VALUES (28, 'AniFace', NULL, 'http://localhost:9000/vibe-music-data/artists/a14ce140-e6ee-47c3-8910-a59629741fcd-blob', NULL, NULL, '独立音乐人,毕业于美国西北大学计算机系,现居西雅图,故乡南京,微博@A8级的AniFace');
INSERT INTO `tb_artist` VALUES (29, 'Khalid', 0, 'http://localhost:9000/vibe-music-data/artists/598ea48e-d359-4819-9519-744826f92b92-blob', '1998-02-11', '美国', '哈立德(Khalid),原名哈立德·唐纳尔·罗宾逊(Khalid Donnel Robinson),是一位才华横溢的美国创作型歌手,隶属于Right Hand和RCA唱片公司。2016年7月,他的首支单曲《Location》一经发布便迅速崭露头角,攀升至美国公告牌百强单曲榜第16位,并荣获美国唱片业协会的四白金单曲认证。');
INSERT INTO `tb_artist` VALUES (30, '张杰', 0, 'http://localhost:9000/vibe-music-data/artists/715b1fc6-e310-4fef-91e0-5d4f029a4b6d-blob', '1982-12-20', '中国', '杰(Jason Zhang),1982年12月20日出生于四川省成都市,是中国流行男歌手。2004年,他通过歌唱类选秀节目《我型我秀》获得全国总冠军正式出道。2007年,参加《快乐男生》并获得总决赛第四名,随后发行的EP《最美的太阳》拿下亚马逊年度唱片销量冠军。');
INSERT INTO `tb_artist` VALUES (31, '郎朗', 0, 'http://localhost:9000/vibe-music-data/artists/e2f1cc12-28b3-4e91-aeae-b26b51ed7e78-blob', '1982-06-14', '中国', '郎朗,1982年6月14日出生于辽宁省沈阳市沈河区,国际著名钢琴家。他是第一位受聘于世界顶级的柏林爱乐乐团和美国五大交响乐团的中国钢琴家,获得古典音乐类多项权威奖项,包括德国古典回声大奖,全英古典音乐奖,伯恩斯坦艺术成就大奖,国际门德尔松大奖等。');
INSERT INTO `tb_artist` VALUES (32, 'Gewandhausorchester Leipzig', 2, 'http://localhost:9000/vibe-music-data/artists/855c8bb6-1e8e-4732-8bd2-e5bcb7a92dad-blob', NULL, '德国', '莱比锡布商大厦管弦乐团(德语:Gewandhausorchester Leipzig,又译莱比锡布业大厅管弦乐团或音译为莱比锡格万豪斯管弦乐团)是以德国莱比锡为基地的世界知名管弦乐团,现有175名全职乐手,是当今全世界人数最多的专业管弦乐团之一。');
INSERT INTO `tb_artist` VALUES (33, 'Dan Gibson\'s Solitudes', 0, 'http://localhost:9000/vibe-music-data/artists/0c428376-ecd0-434d-9ab3-57135bacd422-blob', '1922-01-19', '加拿大', 'Dan Gibson,这位1922年1月19日在加拿大蒙特利尔诞生的自然录音大师,他的生命轨迹如同一首悠扬的旋律,与大自然紧密相连。自幼在尼加拉瀑布附近的农庄成长,那片被自然之美环绕的土地,仿佛为他播下了一颗热爱自然的种子。');
INSERT INTO `tb_artist` VALUES (34, '张学友', 0, 'http://localhost:9000/vibe-music-data/artists/fb015187-1d97-4c6c-9398-27760d461d48-blob', '1961-07-10', '中国', '张学友(Jacky Cheung),中国香港流行乐男歌手、影视演员、作曲人,毕业于香港崇文英文书院。1984年因获得首届香港十八区业余歌唱大赛冠军而出道。1985年发行个人首张专辑《Smile》。');
INSERT INTO `tb_artist` VALUES (35, '张宇', 0, 'http://localhost:9000/vibe-music-data/artists/9cc3d593-fc69-4e64-9813-ae063bcd3af1-blob', '1967-04-30', '中国', '张宇,华语男歌手、音乐创作人、主持人。代表作为《雨一直下》、《月亮惹的祸》、《小小的太阳》、《一个人的天荒地老》等。');
INSERT INTO `tb_artist` VALUES (36, 'Ludwig van Beethoven', 0, 'http://localhost:9000/vibe-music-data/artists/b7d8e72f-5506-4761-8adb-f6c7b4fc0a3b-blob', '1770-12-16', '德国', '路德维希•凡•贝多芬(Ludwig van Beethoven,1770—1827),身兼作曲家、钢琴家、指挥家多重身份,稳稳地站在维也纳古典乐派的巅峰,成为了音乐史上一座不朽的丰碑。');
INSERT INTO `tb_artist` VALUES (37, 'Wiener Philharmoniker', 2, 'http://localhost:9000/vibe-music-data/artists/177c656f-1781-4c05-a7c4-941ae9cb4ef1-blob', '1842-01-01', '奥地利', '维也纳爱乐乐团,自1842年起便以其卓越的音乐才能和独特的维也纳音色征服了世界。这个由维也纳国家歌剧院精英组成的私人乐团,在音乐会舞台上华丽转身,展现出无与伦比的魅力。作为全球最顶尖的乐团之一,维也纳爱乐乐团不仅在国际乐坛享有盛誉,更是以其高贵的艺术气质和自主管理的经营模式独树一帜。');
INSERT INTO `tb_artist` VALUES (38, 'Beyond', 2, 'http://localhost:9000/vibe-music-data/artists/132d45db-3425-484c-97c4-ac6828d98394-blob', NULL, '中国', 'Beyond,中国香港摇滚乐队,由黄家驹、黄贯中、黄家强、叶世荣组成。');
INSERT INTO `tb_artist` VALUES (39, '林俊杰', 0, 'http://localhost:9000/vibe-music-data/artists/556a8890-3b18-455c-b222-8b615cf347c1-blob', '1981-03-27', '新加坡', '林俊杰(JJ Lin),1981年3月27日出生于新加坡,祖籍中国福建省厦门市同安区,是华语流行乐男歌手、音乐人及潮牌主理人。2003年,他发行首张创作专辑《乐行者》,凭借该专辑获得第15届台湾金曲奖最佳新人奖。2004年,凭借专辑《第二天堂》中的主打歌《江南》获得广泛关注,正式开启音乐事业新篇章。');
INSERT INTO `tb_artist` VALUES (40, '王菲', 1, 'http://localhost:9000/vibe-music-data/artists/94acfdf9-ab0c-4ea6-b788-dc1301207fca-blob', '1969-08-08', '中国', '王菲(Faye Wong),1969年8月8日出生于北京,中国流行乐女歌手、影视演员,中国国家一级演员。');
INSERT INTO `tb_artist` VALUES (41, 'Lauv', 0, 'http://localhost:9000/vibe-music-data/artists/3f433f89-767e-4937-b958-da46d190b711-blob', '1994-08-08', '美国', '莱奥夫(Lauv),原名阿里·史塔布兰斯·莱夫,1994年8月8日出生于美国加州旧金山,是一位才华横溢的美国创作歌手。他的艺名Lauv源自拉脱维亚语的“雄狮”,与他的希伯来语名字Ari(意为狮子)相呼应。2015年,莱奥夫凭借在Sound Cloud上发布的单曲《The Other》一举成名,随后签约唱片公司并发行个人首张EP《Lost in the Light》。');
INSERT INTO `tb_artist` VALUES (43, '许嵩', 0, 'http://localhost:9000/vibe-music-data/artists/c9a32b99-7ffa-4ce3-b5cf-3fd5bc665fe5-blob', '1986-05-14', '中国', '许嵩(Vae),1986年5月14日出生于安徽省合肥市,是中国内地创作型男歌手,毕业于安徽医科大学。2006年,许嵩开始发表音乐作品,正式出道。此后,他陆续发行了多张词曲全创作专辑,展现了其深厚的音乐才华。');
INSERT INTO `tb_artist` VALUES (44, '花儿乐队', 2, 'http://localhost:9000/vibe-music-data/artists/a9529817-4cfb-46fd-bd65-fb82cd07f734-blob', NULL, '中国', '花儿乐队是1998年2月成立的当时中国第一支未成年摇滚乐队,主唱大张伟、鼓手王文博、贝斯手郭阳,后又加入吉他手石醒宇。\r\n\r\n花儿乐队是1998年2月成立的当时中国第一支未成年摇滚乐队,主唱大张伟、鼓手王文博、贝斯手郭阳,后又加入吉他手石醒宇。\r\n\r\n花儿乐队是1998年2月成立的当时中国第一支未成年摇滚乐队,主唱大张伟、鼓手王文博、贝斯手郭阳,后又加入吉他手石醒宇。');
INSERT INTO `tb_artist` VALUES (45, '涛李TAOLEE', NULL, 'http://localhost:9000/vibe-music-data/artists/6ec32f9a-d99d-4464-88e7-5d4ede4e5e10-blob', NULL, '中国', '···【非著名吉艺人】···');
INSERT INTO `tb_artist` VALUES (46, '叶健', 0, 'http://localhost:9000/vibe-music-data/artists/cb3aa00e-83f6-43ac-9ddc-c806381324f7-blob', NULL, '中国', '编曲,音乐制作人。合作过的艺人:鬼卞,苏星婕,阎琪儿,李熙凝,封茗囧菌等,');
INSERT INTO `tb_artist` VALUES (47, '土星皇家交响乐团', 2, 'http://localhost:9000/vibe-music-data/artists/4519aeb7-4bf8-4a3c-a3bf-cae2d2fd9c0c-blob', '2016-10-06', NULL, '该乐团成立于2016年10月6号。每一个人都来自五湖四海,我们不但演奏一些经典的作品,同时也会自己创作新的音乐。');
INSERT INTO `tb_artist` VALUES (48, 'Jonas Brothers', 2, 'http://localhost:9000/vibe-music-data/artists/e5c80b82-b84b-4baf-af43-391249c8acaa-blob', NULL, '美国', '乔纳斯兄弟(Jonas Brothers),这支享誉美国的流行摇滚乐队,由三位才华横溢的兄弟——凯文·乔纳斯、乔·乔纳斯和尼克·乔纳斯携手组建。他们的音乐旅程,如同一部充满转折与辉煌的乐章,引人入胜。');
INSERT INTO `tb_artist` VALUES (49, 'Martin Garrix', 0, 'http://localhost:9000/vibe-music-data/artists/3e282fbf-bc01-4e96-bec7-85efc15dc998-blob', '1996-05-14', '荷兰', 'Martin Garrix(马汀·盖瑞克斯),原名Martijn Gerard Garritsen(马亭·杰拉德·嘉伟森),荷兰籍DJ兼音乐制作人。他以一曲《Animals》红遍全球,横扫十几个国家的音乐排行榜前十名,比利时和英国更是荣登冠军宝座,爱尔兰也取得了第三名的佳绩。');
INSERT INTO `tb_artist` VALUES (50, 'The Chainsmokers', 2, 'http://localhost:9000/vibe-music-data/artists/27c9f3f1-87ba-46c8-aaae-849c0ec86408-blob', NULL, '美国', 'The Chainsmokers(烟鬼组合),这个由美国DJ Andrew Taggart和Alex Pall组成的双人组合,自2012年起便在纽约市崭露头角。最初由博尔和前成员Rhett Bixler共同创建,2014年凭借一首《#Selfie》迅速走红。紧接着,2015年的《Roses》成为他们首支冲进Billboard Top10的热门单曲。');
INSERT INTO `tb_artist` VALUES (51, '王华', 0, 'http://localhost:9000/vibe-music-data/artists/163dfacc-7990-4536-9fa4-897bc9445fbd-blob', NULL, '中国', '华语歌手,演唱了《祝福留给你》、《月亮亮光光》、《叶儿黄》等广受喜爱的歌曲。');
INSERT INTO `tb_artist` VALUES (52, 'Gioachino Rossini', 0, 'http://localhost:9000/vibe-music-data/artists/1450b990-e987-42c2-a644-f6d655d9041b-blob', '1792-02-29', '意大利', '焦阿基诺·安东尼奥·罗西尼(意大利语:Gioachino Antonio Rossini,1792年2月29日-1868年11月13日),又译卓阿基诺·罗西尼,意大利作曲家,他生前创作了39部歌剧以及宗教音乐和室内乐。以喜歌剧而名垂青史,其喜歌剧既有反映贫民生活的内容,又有对贵族浮华百态的描绘,内容生动、明快,人物的刻划个性鲜明。');
INSERT INTO `tb_artist` VALUES (53, '谢明祥', 0, 'http://localhost:9000/vibe-music-data/artists/9c746b73-f9d0-49f8-97d2-e93ef74122c4-blob', NULL, NULL, '谢明祥,知名台湾编曲家、音乐制作人,代表作《初夏雨后》(纪录片《舌尖上的中国》配乐)。');
INSERT INTO `tb_artist` VALUES (54, '王華宇', 0, 'http://localhost:9000/vibe-music-data/artists/e189e21a-9607-44af-89b3-c9a00bcb3584-blob', NULL, NULL, '2013年毕业于江苏省戏剧学校竹笛表演专业 2017年毕业于上海音乐学院笛子专业');
INSERT INTO `tb_artist` VALUES (55, 'Christopher', 0, 'http://localhost:9000/vibe-music-data/artists/c7d6521a-bd35-43d3-9243-59c5f3dfe6e9-blob', '1992-01-31', '丹麦', '克里斯托弗·尼森(Christopher Nissen),丹麦男歌手兼作曲家。');
INSERT INTO `tb_artist` VALUES (56, 'DAISHI DANCE (ダイシ・ダンス)', 0, 'http://localhost:9000/vibe-music-data/artists/35b0e375-0ad5-4af7-8104-7eb2cd526567-blob', NULL, '日本', 'DAISHI DANCE(ダイシ・ダンス,1976年 - ),日本北海道出生的世界级DJ,在日本乃至全球都享有盛誉。他的音乐作品如涓涓流水般细腻,流畅的钢琴伴奏令人陶醉。曾为滨崎步、中岛美嘉打造过mix版本的《HEAVEN》和《SAKURA~花霞》,展现了他在音乐上的非凡才华。');
INSERT INTO `tb_artist` VALUES (57, 'Motohiko Hirami', NULL, 'http://localhost:9000/vibe-music-data/artists/c8d24e4d-296d-401b-a5c1-c586b61506af-blob', NULL, '日本', 'Motohiko Hirami是来自日本的独立音乐制作人。');
INSERT INTO `tb_artist` VALUES (58, 'Troye Sivan', 0, 'http://localhost:9000/vibe-music-data/artists/07ce832c-9400-49ed-9b88-5534af3ccd29-blob', '1995-06-05', '澳大利亚', '特洛耶·希文(Troye Sivan),1995年6月5日出生于南非约翰内斯堡,后成为澳大利亚流行乐坛的耀眼新星。早在2009年,他就在电影《金刚狼》中展现了出色的演技,饰演少年时期的詹姆斯·豪利特。之后,他凭借电影《马铃薯》在2011年提名南非电影电视奖“电影长片类最佳男主角奖”。');
INSERT INTO `tb_artist` VALUES (59, '中国爱乐乐团', 2, 'http://localhost:9000/vibe-music-data/artists/aa0b468b-7b33-449e-af2e-8c6d7a93d4be-blob', '2000-05-25', '中国', '中国爱乐乐团,是在中国广播交响乐团基础上组建的国家级交响乐团,成立于2000年5月25日,直属于中国国家广播电影电视总局。由中央电视台管理。');
INSERT INTO `tb_artist` VALUES (60, 'Pyotr Ilyich Tchaikovsky', 0, 'http://localhost:9000/vibe-music-data/artists/06b06034-4453-4e66-b6b7-7ba411714932-blob', '1840-05-07', '俄罗斯', '在俄罗斯那片广袤且充满艺术底蕴的土地上,诞生了一位音乐巨匠——彼得·伊里奇·柴可夫斯基(俄语:Пётр Ильич Чайковский,1840年5月7日-1893年11月6日)。闪耀于浪漫乐派的浩瀚夜空,虽作品带有民族乐派的独特印记,却始终以浪漫风格为根基,熠熠生辉,其音乐魅力如涟漪般,直接或间接地润泽了无数后来者的音乐之路。');
INSERT INTO `tb_artist` VALUES (61, '琥珀琴师Louis', 0, 'http://localhost:9000/vibe-music-data/artists/849171bb-cbf7-4dbe-a50c-50091689bd9f-blob', NULL, NULL, '一个来自2.5次元的钢琴师,曲谱请看wb:琥珀琴师Louis。雅马哈音乐形象大使,签约原创音乐人,沐云华乐团创始成员。擅长流行、NewAge与古典音乐的跨界演奏风格,不定期更新原创&钢琴改编作品。');
INSERT INTO `tb_artist` VALUES (62, 'Halsey', 1, 'http://localhost:9000/vibe-music-data/artists/39557f38-5016-4300-a63a-684ae95e3496-blob', '1994-09-29', '美国', '海尔希(Halsey),1994年9月29日出生于美国新泽西州华盛顿市,是一位才华横溢的美国创作型歌手。2014年7月,她与Astralwerks唱片签约后,迅速崭露头角,发布首支个人单曲《Ghost》。紧接着,她发行了首张迷你专辑《Room 93》,为乐坛注入了一股新势力。');
INSERT INTO `tb_artist` VALUES (63, 'Vladimir Ashkenazy', 0, 'http://localhost:9000/vibe-music-data/artists/b17db203-b7ac-421d-988e-e6e74d41f68f-blob', '1937-07-06', '冰岛', '弗拉基米尔·阿什肯纳齐,这位英籍前苏联的钢琴演奏巨匠,自幼便与音乐结下了不解之缘。在莫斯科那座充满艺术氛围的城市中,他踏入了中心音乐学校的大门,从此,一颗音乐的种子在他心中悄然萌芽。在莫斯科音乐学院的深造,更是为他日后的辉煌奠定了坚实的基础。');
INSERT INTO `tb_artist` VALUES (64, '中国交响乐团', 2, 'http://localhost:9000/vibe-music-data/artists/4d57ff54-ede9-495d-927e-378601f8292b-blob', '1956-07-03', '中国', '中国交响乐团是中华人民共和国文化和旅游部直属的国家艺术院团,在原中央乐团(1956年成立)基础上组建而成,下设交响乐队、合唱团和北京音乐厅。');
INSERT INTO `tb_artist` VALUES (65, 'XYLØ', 1, 'http://localhost:9000/vibe-music-data/artists/d4a2e1d4-4751-4868-a1ea-ae589afccd9a-blob', '1994-08-08', '美国', 'XYLØ,本名佩奇·达迪(Paige Duddy),出生于洛杉矶这座星光熠熠的城市中。自幼沐浴在音乐氛围中的她,注定要走上一条不凡的音乐之路。2015年,XYLØ以一张充满沉思与深邃氛围的首张EP《America》惊艳亮相,仿佛一颗音乐新星在夜空中璀璨绽放。其中的热门单曲《Afterlife》更是如磁石般吸引了无数听众,其在网络上的广泛传播,让XYLØ的名字开始在音乐界崭露头角。');
INSERT INTO `tb_artist` VALUES (66, 'Jake Miller', 0, 'http://localhost:9000/vibe-music-data/artists/1dee8d21-ca90-48a9-ab07-30390527dfeb-blob', '1992-11-28', '美国', '杰克·米勒,1992年11月28日出生于华盛顿特区,是一位才华横溢的美国歌手、唱作人和音乐制作人。');
INSERT INTO `tb_artist` VALUES (67, 'Dua Lipa', 1, 'http://localhost:9000/vibe-music-data/artists/364bebb9-229d-49c2-8b2d-718c7acfcc13-blob', '1995-08-22', '英国', 'Dua Lipa,阿尔巴尼亚裔英国歌手、词曲作者,自2015年通过华纳唱片发行首支个人单曲《New Love》正式踏入乐坛以来,便凭借独特的嗓音和才华迅速崭露头角。同年12月,她更是入围BBC年度新声,展现了她的音乐潜力。');
INSERT INTO `tb_artist` VALUES (68, 'Edda Moser', 1, 'http://localhost:9000/vibe-music-data/artists/f05e5078-bf60-4598-84d0-a9114f68fd83-blob', NULL, NULL, NULL);
INSERT INTO `tb_artist` VALUES (69, 'Imagine Dragons', 2, 'http://localhost:9000/vibe-music-data/artists/73d719f5-ea4e-4125-821b-5d0c0b276111-blob', NULL, '美国', 'Imagine Dragons,这支被誉为“梦龙”的美国独立摇滚乐队,自2008年于犹他州普洛佛成立以来,便以其独特的音乐风格吸引了无数乐迷。他们的音乐之旅始于拉斯维加斯,并在2012年凭借专辑《Night Visions》一举成名。');
INSERT INTO `tb_artist` VALUES (70, '陈奕迅', 0, 'http://localhost:9000/vibe-music-data/artists/39ff395f-e4b1-4de5-beba-627278a00121-blob', '1974-07-27', '中国', '陈奕迅(Eason Chan),1974年7月27日出生于中国香港,是中国香港男歌手、演员,毕业于英国金斯顿大学。1995年,凭借第14届新秀歌唱大赛冠军正式出道。1996年发行首张个人专辑《陈奕迅》,1997年主演个人首部电影《旺角大家姐》。1998年,凭借歌曲《天下无双》在乐坛崭露头角,2000年,歌曲《K歌之王》奠定了他在歌坛的地位。');
INSERT INTO `tb_artist` VALUES (71, 'Neo Retros', 2, 'http://localhost:9000/vibe-music-data/artists/2c76f05a-3f2c-48e7-9da2-cf16c5e4521f-blob', NULL, '波兰', 'Neo Retros是一支来自波兰华沙的小众乐队,活泼又调皮,主唱是典型的清新少年嗓。');
INSERT INTO `tb_artist` VALUES (72, 'Machine Gun Kelly', 0, 'http://localhost:9000/vibe-music-data/artists/4aea37f2-e274-4bc4-b1b2-63778d169eba-blob', '1990-04-22', '美国', 'Machine Gun Kelly,一位备受瞩目的美国说唱歌手,他的音乐之旅如同一幅绚丽多彩的画卷,充满了多元文化的交融与独特的个人经历。GK的父母是传教士,并且曾经在埃及,德国,芝加哥,洛杉矶,丹佛和俄亥俄州定居过。MGK出生后的4年都在埃及度过,所以最初学习的语言是阿拉伯语。MGK从6年级开始听说唱歌曲,14岁时搬到了现在的家乡克里夫兰。');
INSERT INTO `tb_artist` VALUES (73, '薛之谦', 0, 'http://localhost:9000/vibe-music-data/artists/bbbce46a-a80c-41c3-8f93-a575b78a5c02-blob', '1983-07-17', '中国', '薛之谦,1983年7月17日出生于上海市,中国内地流行乐男歌手、音乐制作人、影视演员,毕业于格里昂酒店管理学院。');
INSERT INTO `tb_artist` VALUES (74, 'Michael Cramtu', NULL, 'http://localhost:9000/vibe-music-data/artists/6b75860a-ae46-4122-a11c-b0a7e2aa984e-blob', NULL, NULL, 'Michael Cramtu,排箫演奏家。班得瑞的成员之一。代表作《Big Big World》。');
INSERT INTO `tb_artist` VALUES (75, 'T-ara', 2, 'http://localhost:9000/vibe-music-data/artists/39d3c7c9-d22c-4e94-8b43-58f1b1106c9e-blob', NULL, '韩国', 'T-ara(티아라),这支充满魅力的韩国女子音乐组合,自MBK娱乐旗下脱颖而出,以“Tiara”为名,寓意着她们歌谣界的女王之梦。她们的首次亮相并非在音乐节目,而是在MBC综艺节目《Radio Star》中,这一独特的出道方式让她们迅速吸引了外界的目光。');
INSERT INTO `tb_artist` VALUES (76, 'The Piano Guys', 2, 'http://localhost:9000/vibe-music-data/artists/6c775b1c-991e-4660-ad94-c39d6bc3f1ac-blob', NULL, '美国', 'The Piano Guys,这个来自美国的音乐团体,由才华横溢的钢琴家Jon Schmidt、深情的大提琴家Steven Sharp Nelson、技艺高超的摄像师Paul Anderson以及音乐鬼才Al van der Beek共同组成。');
INSERT INTO `tb_artist` VALUES (77, 'Claude Debussy', 0, 'http://localhost:9000/vibe-music-data/artists/d25f9a6e-dfba-4e5b-ae8a-52b7c940225d-blob', NULL, '法国', '阿希尔-克劳德·德彪西(法语:Achille-Claude Debussy,1862年8月22日—1918年3月25日),一位屹立在法国音乐史上的璀璨作曲家。他虽有时被冠以“第一位印象派作曲家”的头衔,却对此标签持以坚决的反对态度。然而,无可否认的是,他是19世纪末至20世纪初最具影响力的作曲家之一,其音乐才华如同璀璨星辰,照亮了音乐的天空。');
INSERT INTO `tb_artist` VALUES (78, '李香兰', 1, 'http://localhost:9000/vibe-music-data/artists/8fc0333d-48fb-441a-8302-09ffaf44cc29-blob', '1920-02-12', '日本', '李香兰,1920年2月12日出生于辽宁省灯塔市,祖籍日本佐贺县,本名山口淑子,歌手。');
INSERT INTO `tb_artist` VALUES (79, 'The Shanghai Restoration Project', 2, 'http://localhost:9000/vibe-music-data/artists/83ffbf69-5f84-4d53-86e0-a4ad67ee7220-blob', NULL, '美国', '上海复兴方案(The Shanghai Restoration Project,又译作“上海复兴计划”),是由美籍华人梁戴夫和孙云帆组成的当代电子音乐二人组,成立于2005年,现有成员包括梁文伟(Dave Liang)、孙云帆。');
INSERT INTO `tb_artist` VALUES (80, 'Ethno Music Project', 2, 'http://localhost:9000/vibe-music-data/artists/561990a9-ab42-4768-abae-6128b07e8726-blob', NULL, NULL, '瑞士AVC公司的一个音乐项目。跟Bandari(班得瑞)相似。');
INSERT INTO `tb_artist` VALUES (81, 'Martynas Levickis', 0, 'http://localhost:9000/vibe-music-data/artists/c0640dd3-13e6-4194-9c9e-aa4209df7696-blob', '0990-06-11', '立陶宛', '在立陶宛这片充满艺术气息的土地上,孕育了一位才华横溢的手风琴演奏家——马蒂内斯(Martynas)。1990年6月11日,他带着对音乐的无限热爱与憧憬降临人世,用他那双灵巧的手,拨动着无数人的心弦。');
INSERT INTO `tb_artist` VALUES (82, '王力宏', 0, 'http://localhost:9000/vibe-music-data/artists/ad8ffed3-a1bc-4565-932c-83c55194a95c-blob', '1976-05-17', '美国', '王力宏(Wang Leehom),1976年5月17日出生于美国纽约罗切斯特,祖籍中国浙江义乌,华语流行乐男歌手、音乐制作人、演员、导演,拥有威廉姆斯大学和伯克利音乐学院双荣誉博士的学历。');
INSERT INTO `tb_artist` VALUES (83, 'Bebe Rexha', 1, 'http://localhost:9000/vibe-music-data/artists/ce84779b-8e11-4c29-b4c4-0812421a1b25-blob', '1989-08-30', '美国', 'Bebe Rexha(碧碧·雷克萨),原名布蕾塔·杰妮娅·雷克萨,1989年8月30日出生于美国纽约市布鲁克林区,是一位才华横溢的美国歌手和词曲作者。她毕业于塔腾维尔高中,2010年以黑卡乐队主唱的身份正式出道。然而,在2012年乐队解散后,她选择单飞,踏上了属于自己的音乐之路。');
INSERT INTO `tb_artist` VALUES (85, '贵族乐团', 2, 'http://localhost:9000/vibe-music-data/artists/8b85d961-92e0-4134-a8ab-3d07a3238e20-blob', '2007-11-11', '中国', '贵族乐团,台湾Noble Music贵族唱片旗下乐团。英文名称“Noble”撷取“New Original Label of Limpid Echo”而成,强调“无瑕优质的原味音乐”,期望每一张精心制作出版的专辑,都能如悠扬回声般,于乐迷耳中久久不散。');
INSERT INTO `tb_artist` VALUES (86, 'Lazer Boomerang', 0, 'http://localhost:9000/vibe-music-data/artists/2b946694-0233-4aa9-a411-2bd16462dc4b-blob', NULL, '瑞士', '瑞士音乐家Lazer Boomerang有自己的方法来应对至亲的离去,抑郁症和心理疾病。作为一个失去至亲的孤儿,他不得不在生活的潮水中挣扎。也许这就是为什么他的音乐总是让人感觉真诚和乐观,即使在最黑暗的郊游(Darkest Outings)这首歌中也是如此。');
INSERT INTO `tb_artist` VALUES (87, 'Katy Perry', 1, 'http://localhost:9000/vibe-music-data/artists/f14f98b9-b2cb-48a5-8a77-bc498b5e5c87-blob', '1984-10-25', '美国', 'Katy Perry(凯蒂·佩里),美国著名创作型女歌手,以独特的音乐风格和鲜明的个性脱颖而出。她的成名之路始于YouTube上一首自拍的音乐录像带《Ur So Gay》,得到了Madonna的力挺。2008年,她推出了首张专辑《One of the Boys》,取得了不俗的销售成绩,其中的《I Kissed a Girl》和《Hot \'N\' Cold》成为了广受欢迎的热门歌曲。');
INSERT INTO `tb_artist` VALUES (88, 'V.K克', 0, 'http://localhost:9000/vibe-music-data/artists/9181f1a2-a5cb-4ede-a928-52ff1906cc20-blob', '1982-11-18', '中国', 'V.K克,配乐作曲家、流行钢琴家。音乐风格:新世纪、POP、交响乐。');
INSERT INTO `tb_artist` VALUES (89, '巫娜', 1, 'http://localhost:9000/vibe-music-data/artists/3612a0af-20d3-486a-bcd9-4542b49b297f-blob', '1979-01-14', '中国', '巫娜,内地古琴演奏家。她是活跃的跨界演奏者。常年往来演出于亚洲、欧洲、美洲等各个国家,曾获得了这个冷僻专业所有比赛的最高奖项。');
INSERT INTO `tb_artist` VALUES (90, 'Charlie Puth', 0, 'http://localhost:9000/vibe-music-data/artists/e2b02070-9177-47d5-8c51-a91e0d6cfd9d-blob', '1991-12-02', '美国', '查理·普斯(Charlie Puth),来自新泽西的音乐才子,伯克利音乐学院科班出身,以其深厚的音乐功底和干净悠扬的嗓音,在美国音乐界崭露头角。');
INSERT INTO `tb_artist` VALUES (91, 'Justin Bieber', 0, 'http://localhost:9000/vibe-music-data/artists/756bc859-cf54-486d-b2a0-c9a7b534d5b2-blob', '1994-03-01', '加拿大', '贾斯汀·比伯,这位1994年3月1日出生的加拿大歌手,早在YouTube上翻唱他人歌曲时就展现出了非凡的音乐才华,吸引了Usher的注意并签约小岛唱片。2009年,他的首张专辑《MY WORLDS》的第一部分《MY WORLD》一经发行,便在美国售出百万张,迅速成为白金唱片。');
INSERT INTO `tb_artist` VALUES (92, '丝国兰', 1, 'http://localhost:9000/vibe-music-data/artists/713e235e-88f3-4a5a-9c23-c7f88f7a6ee1-blob', NULL, '中国', '丝国兰,苗栗县南庄客籍人,师事卢俊政、陈盘安、张彩湘、吴季札等名师。');
INSERT INTO `tb_artist` VALUES (93, 'Ed Sheeran', 0, 'http://localhost:9000/vibe-music-data/artists/8662be81-a893-47cf-adee-6933e12557fe-blob', '1991-02-17', '英国', 'Ed Sheeran(艾德·希兰),原名Edward Christopher Sheeran,1991年2月17日出生于英国英格兰西约克郡,是一位才华横溢的英国流行乐男歌手、音乐创作人及演员,隶属于大西洋唱片。2011年6月,他凭借首支单曲《The A Team》一举夺得英国单曲榜第三名,并在第55届格莱美颁奖典礼中荣获年度最佳歌曲提名。');
INSERT INTO `tb_artist` VALUES (94, 'Richard Strauss', 0, 'http://localhost:9000/vibe-music-data/artists/79cb3bbe-1716-456c-9a92-45b116de80b2-blob', '1864-06-11', '德国', '理查德·格奥尔格·施特劳斯(德语:Richard Georg Strauss,1864年6月11日-1949年9月8日),德国作曲家、指挥家。他与以写圆舞曲著称的小约翰·施特劳斯为代表的维也纳施特劳斯家族完全没有关系,一般都以全名理查德·施特劳斯(R. Strauss)称呼,以与该家族的众多成员相区分。');
INSERT INTO `tb_artist` VALUES (95, 'Bronn Journey', 0, 'http://localhost:9000/vibe-music-data/artists/317f78f1-52e5-41c2-acdb-e81488c124e5-blob', NULL, '美国', 'Bronn Journey是美国著名的民谣竖琴演奏大师。');
INSERT INTO `tb_artist` VALUES (96, '骆集益', 0, 'http://localhost:9000/vibe-music-data/artists/7025b0bd-4f2f-44b0-b31c-753d35352b55-blob', NULL, '中国', '骆集益(Chi-Yi Lo),作曲家、音乐制作人,台湾缪斯特(Musit)音乐工作室成员。他是《仙剑奇侠传》,《古剑奇谭》游戏系列的音乐制作人之一,游戏中很多优美动听的旋律都是他创作的。');
INSERT INTO `tb_artist` VALUES (97, '白虹', 1, 'http://localhost:9000/vibe-music-data/artists/0188c2f7-635d-4d7f-abb8-509e65e53966-blob', '1920-02-24', '中国', '白虹(1920年2月24日-1992年5月28日),原名白丽珠,民国时期著名歌唱家、演员。1931年成为明月歌舞团成员,1934年在大晚报举办的广播歌星竞选中获得最多选票,成为中国流行音乐史上第一位“歌唱皇后”。');
INSERT INTO `tb_artist` VALUES (98, '郭富城', 0, 'http://localhost:9000/vibe-music-data/artists/bfbcf3ac-df36-4dcc-9073-82d809d5ead2-blob', '1965-10-26', '中国', '郭富城(Aaron Kwok),1965年10月26日出生于香港,华语流行男歌手、演员、舞蹈总监,也是华语歌坛劲歌热舞代表人物之一。');
INSERT INTO `tb_artist` VALUES (99, 'Kygo', 0, 'http://localhost:9000/vibe-music-data/artists/d64bdf3d-7bef-4824-afc1-5ca5160d9db8-blob', '1991-09-11', '挪威', 'Kygo,这位来自挪威的才华横溢的DJ、歌手、词曲作者及唱片制作人,更是热带浩室曲风的领航者,以其独特的音乐魅力在全球范围内掀起了一股清新风暴。2013年12月,他凭借对Ed Sheeran经典曲目《I See Fire》的精湛混音,初次崭露头角,展现了他对旋律与节奏的敏锐洞察力。');
INSERT INTO `tb_artist` VALUES (100, 'Maksim', 0, 'http://localhost:9000/vibe-music-data/artists/ca1dc1e0-6b1d-4e0c-bb60-e9ca04ced1ff-blob', '1975-05-03', '克罗地亚', '马克西姆·姆尔维察(Maksim Mrvica),这位来自克罗地亚的钢琴奇才,以其独特的音乐风格和精湛的演奏技巧,赢得了全球乐迷的喜爱。他的作品跨越古典与现代,既有融合古典钢琴与流行元素的跨界之作,也有对经典古典乐曲的完美诠释,更有当代作曲大师Tonči Huljić(赫吉克)的现代作品,每一首都充满了魅力与创新。');
INSERT INTO `tb_artist` VALUES (101, '南征北战NZBZ', 0, 'http://localhost:9000/vibe-music-data/artists/18b9c620-c1b7-4300-a3e7-3bf9e8bcdb85-blob', NULL, '中国', '南征北战(NZBZ),中国内地组合,其名寓意为:年轻人要为自己的梦想和爱去努力征战拼搏。其成员来自于祖国的大江南北,由此得名南征北战,由汀洋、赵辰龙、尼成三人组成。南征北战创造出V-Pop(Various Pop Music),即多元化流行音乐,制作出“南征北战”式的流行表达,重新定位新一代的流行音乐。');
INSERT INTO `tb_artist` VALUES (102, 'MrLi小哥', 0, 'http://localhost:9000/vibe-music-data/artists/5deb5bc8-c3da-44f0-b82e-78b80b7f24e7-blob', NULL, NULL, NULL);
INSERT INTO `tb_artist` VALUES (103, 'R3HAB', 0, 'http://localhost:9000/vibe-music-data/artists/d8bd6412-bfa0-40a3-b38d-7a4b1aba4589-blob', '1986-04-02', '荷兰', '荷兰籍摩洛哥裔DJ兼制作人R3HAB(Fadil El Ghoul),凭借其多白金荣誉和卓越才华,在过去十年里不断引领电子舞曲界的创新潮流。他曾为Rihanna、Drake、Taylor Swift等大牌音乐人混音,更发行了黄金及铂金双认证的热门单曲《All Around The World (La La La)》与《Lullaby》。近期,他还与Luis Fonsi、Sean Paul等多位音乐人合作,展现了其多元化的音乐才华。');
INSERT INTO `tb_artist` VALUES (104, '曾沛慈', 1, 'http://localhost:9000/vibe-music-data/artists/a8d46755-289e-46d6-a74d-76617a0a9200-blob', '1984-10-21', '中国', '曾沛慈(Pets),1984年10月21日生于台湾台北市,中国女歌手,演员。');
INSERT INTO `tb_artist` VALUES (105, '那只肥羊', 0, 'http://localhost:9000/vibe-music-data/artists/72ef2a73-950c-487f-ad43-726455b38fdf-blob', NULL, '中国', '那只肥羊,中国网络男歌手,代表作《难念的经》。');
INSERT INTO `tb_artist` VALUES (106, '五月天', 2, 'http://localhost:9000/vibe-music-data/artists/f65a1fe0-588b-415d-9d80-ed56f4049cf5-blob', '1997-03-29', '中国', '五月天,台湾摇滚乐团,由乐队团长兼吉他手怪兽(温尚翊)、主唱阿信(陈信宏)、吉他手石头(石锦航)、贝斯玛莎(蔡升晏)和鼓手冠佑(刘谚明)组成,前身为“So Band”乐团,在1997年3月29日更名为“五月天”。至2016年,四次拿下\"台湾金曲奖\"和“最佳乐团奖”。');
INSERT INTO `tb_artist` VALUES (107, 'Aaron Carter', 0, 'http://localhost:9000/vibe-music-data/artists/49a41856-3d82-4f97-ba55-f715b4b03ccb-blob', '1987-12-07', '美国', '亚伦·卡特是美国音乐史上拥有连续五首十大金曲的最年轻的歌手,被人誉为“流行乐小王子”。');
INSERT INTO `tb_artist` VALUES (108, 'Taylor Swift', 1, 'http://localhost:9000/vibe-music-data/artists/ae0a613c-0430-478f-b6e8-1d35747fe9a2-blob', '1989-12-13', '美国', 'Taylor Swift(泰勒·斯威夫特),1989年12月13日出生于美国宾夕法尼亚州,是美国著名的女歌手、词曲作者、音乐制作人及演员。自2006年发行首张专辑《Taylor Swift》起,她就以其出色的音乐才华和独特的创作风格吸引了无数粉丝。');
INSERT INTO `tb_artist` VALUES (109, 'Ariana Grande', 1, 'http://localhost:9000/vibe-music-data/artists/1c6671a4-a3d3-4272-aef8-dbb04358ad24-blob', '1993-06-26', '美国', 'Ariana Grande(爱莉安娜·格兰德),1993年6月26日出生于美国佛罗里达州博卡拉顿市,是美国备受瞩目的流行乐女歌手兼影视演员。2013年,她凭借首张音乐专辑《Yours Truly》一举夺得美国公告牌200强专辑榜冠军,并荣获第41届全美音乐奖“年度最佳新人奖”。');
INSERT INTO `tb_artist` VALUES (110, 'Bruno Mars', 0, 'http://localhost:9000/vibe-music-data/artists/ad626971-a528-4913-a34c-9b21f8fc6717-blob', '1985-10-08', '美国', 'Bruno Mars(布鲁诺·马尔斯),原名彼得·基恩·埃尔南德斯,是一位多才多艺的美国创作型歌手兼音乐制作人。他的音乐风格独具匠心,舞台表演丰富多彩,复古风格魅力四溢。这位才华横溢的艺人共获得18项格莱美奖提名,并成功斩获两座大奖,全球专辑销量高达60白金,单曲销量更是突破1.3亿,成为继“猫王”之后,五首Billboard Hot 100单曲榜冠军速度最快的男歌手。');
INSERT INTO `tb_artist` VALUES (111, '寻道树', NULL, 'http://localhost:9000/vibe-music-data/artists/9c7abc83-6834-4424-8183-0faf6b8f94fd-blob', NULL, '中国', '一名95后口琴演奏者,非常感谢你对我作品的喜欢和支持~');
INSERT INTO `tb_artist` VALUES (112, '逃跑计划', 2, 'http://localhost:9000/vibe-music-data/artists/3a9fe545-d03d-4417-8825-e79919a8dc9b-blob', NULL, '中国', '逃跑计划乐队(EscapePlan),中国内地流行摇滚乐队,由主唱毛川、吉他手马晓东、贝斯手刚昂、鼓手王非凡组成。');
INSERT INTO `tb_artist` VALUES (113, 'Selena Gomez', 1, 'http://localhost:9000/vibe-music-data/artists/fa5ab52b-ef0c-4bed-a9d9-c4f5c14a6714-blob', '1992-07-22', '美国', 'Selena Gomez(赛琳娜·戈麦斯),1992年7月22日出生于美国得克萨斯州,是一位多才多艺的美国女演员、歌手和制片人。2004年,她因参加迪士尼全球才艺计划而脱颖而出,被迪士尼公司相中并签约。随后,她在2007年主演了原创魔幻喜剧《少年魔法师》,并在2008年主演了迪士尼原创电影《灰姑娘之舞动奇迹》。');
INSERT INTO `tb_artist` VALUES (114, '徐嘉良', 0, 'http://localhost:9000/vibe-music-data/artists/e0bfbb0d-d893-441b-a345-c7b0187b0e6c-blob', NULL, '中国', '徐嘉良,台湾著名唱片制作、编曲、配乐、作曲创作人。曾担任无数台湾、香港艺人的唱片制作编曲人。');
INSERT INTO `tb_artist` VALUES (115, '张震岳', 0, 'http://localhost:9000/vibe-music-data/artists/00f14885-300a-476e-98ff-f9afa08d34dd-blob', '1974-05-02', '中国', '张震岳(Chenyue Chang),1974年5月2日出生于台湾省宜兰县苏澳镇,中国台湾男歌手、音乐人。');
INSERT INTO `tb_artist` VALUES (116, 'CliQ', 0, 'http://localhost:9000/vibe-music-data/artists/2cccdf4c-b1cb-4313-b3fb-129977965126-blob', NULL, NULL, NULL);
INSERT INTO `tb_artist` VALUES (117, 'George Szell', 0, 'http://localhost:9000/vibe-music-data/artists/9fe97b2b-3088-4c92-a3e4-ff00069f5809-blob', '1897-06-07', '美国', '乔治·赛尔 (George Szell,1897—1970)是一位十分全面的音乐指挥家,他在一生中曾指挥过各类体裁的大量作品,他不但精于指挥古典和浪漫主义的经典作品,对于现代主义作品,他也有着十分令人信服的演释能力,在其指挥生涯中,曾经指挥首演过利怕曼的歌剧《佩内洛普》和埃克的歌剧《爱尔兰的传奇》。');
INSERT INTO `tb_artist` VALUES (118, '张艺兴', 0, 'http://localhost:9000/vibe-music-data/artists/ea0c9a54-6979-42e3-9aae-cf1272cf372d-blob', '1991-10-07', '中国', '张艺兴(LAY),中国内地流行男歌手、影视演员,男子演唱组合EXO/EXO-M中国籍成员。2005年,张艺兴参加湖南经视《明星学院》比赛并获得总决赛季军。2008年,通过S.M. Casting System在中国的选拔成为韩国SM公司旗下练习生。2012年4月,以EXO团体和其子队EXO-M成员身份正式出道。');
INSERT INTO `tb_artist` VALUES (119, 'DJ Snake', 0, 'http://localhost:9000/vibe-music-data/artists/4d466996-a8fe-453f-8eef-ec9f4fcb20da-blob', '1986-06-13', '法国', 'DJ Snake,本名William Sami Etienne Grigahcine,但在音乐界,他更为人所熟知的是那个充满动感与魅力的艺名——DJ Snake。作为法国电子音乐界的佼佼者,他不仅是一位才华横溢的DJ,更是rap歌手与制片人多重身份的完美融合,以其独特的音乐风格和无限创意,在全球范围内赢得了无数乐迷的喜爱。');
INSERT INTO `tb_artist` VALUES (120, '周璇', 1, 'http://localhost:9000/vibe-music-data/artists/05df10a5-6da8-4924-a12d-f8fdb7fe2f99-blob', '1920-08-01', '中国', '周璇,常州人,中国最早的两栖明星。作为一代歌后,她的名字是国语流行歌曲史上一个金字招牌,被誉为“金嗓子”。她最大的优势就是拥有一副名副其实的好歌喉,不仅音色甜美、音质细腻,而且吐字清晰,经过麦克风传将出来更是委婉动人,就是不爱听国语流行歌曲的人,也会对她燕语莺声一般的歌喉留下难忘印象。作为影后,她是典型的感觉派明星,表演生动自然。');
INSERT INTO `tb_artist` VALUES (121, '吴宇深', 0, 'http://localhost:9000/vibe-music-data/artists/91dc4bc0-45e7-4904-ada9-952cb0fb7f89-blob', NULL, '中国', '吴宇深,太声文化独立音乐人,华语男作曲家,代表作《忆》。');
INSERT INTO `tb_artist` VALUES (122, 'Maroon 5', 2, 'http://localhost:9000/vibe-music-data/artists/4e4b1fa4-e344-4f28-98ee-932fa8424ae0-blob', NULL, '美国', '魔力红(Maroon 5),一支成立于1994年的美国流行摇滚乐队,汇聚了亚当·莱文、詹姆斯·瓦伦汀、杰西·卡麦可、米基·麦登、马特·弗林、PJ Morton、山姆·法拉尔等一众才华横溢的音乐家。自出道以来,他们的音乐作品屡获殊荣,成为乐坛的佼佼者。');
INSERT INTO `tb_artist` VALUES (123, '姚莉', 1, 'http://localhost:9000/vibe-music-data/artists/cc858970-f61c-4e07-b2aa-4c70c4e03911-blob', NULL, '中国', '姚莉(1922年9月-2019年7月19日),原名姚秀云,是上海滩时期知名女歌手之一,与周璇、白虹、白光、龚秋霞、李香兰、吴莺音等齐名,并称为1940年代上海歌坛七大歌星。');
INSERT INTO `tb_artist` VALUES (124, '王备', 0, 'http://localhost:9000/vibe-music-data/artists/5fd401e2-7799-4afe-aeb6-409ad34b1512-blob', NULL, '中国', '王备,内地作曲家、华语音乐家协会理事,低调的音乐和艺术大师,曾为多部热门影视大片创作原声音乐。代表音乐作品有:《大旗英雄传》、《倚天屠龙记》、《香粉传奇》、《芈月传》等。');
INSERT INTO `tb_artist` VALUES (125, '中国广播民族乐团', 2, 'http://localhost:9000/vibe-music-data/artists/7de9aa4c-b87d-4423-bcb8-0678bf2d07ee-blob', NULL, '中国', '中国广播民族乐团在1953年创立于北京,2004年与中国电影乐团民族乐团重组,与中国电影交响乐团、中国广播说唱团、中国广播合唱团、中国广播电声乐团从属于中国广播艺术团。');
INSERT INTO `tb_artist` VALUES (134, 'Rihanna', 1, 'http://localhost:9000/vibe-music-data/artists/a2cf1ad0-9402-4f7f-86c6-bf5591e10749-blob', '1988-02-20', '巴巴多斯', '蕾哈娜(Rihanna),原名罗比恩·蕾哈娜·芬缇,1988年2月20日生于巴巴多斯圣迈克尔区,是一位在美国崭露头角的巴巴多斯籍流行乐女歌手、影视演员及时尚模特。2005年,她凭借首张音乐专辑《Music of the Sun》正式开启歌唱生涯。紧接着,2006年的《A Girl Like Me》和2007年的《Good Girl Gone Bad》相继问世,展现了她日益成熟的音乐风格。');

-- ----------------------------
-- Table structure for tb_banner
-- ----------------------------
DROP TABLE IF EXISTS `tb_banner`;
CREATE TABLE `tb_banner`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '轮播图 id',
  `banner_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '轮播图 url',
  `status` tinyint(0) NOT NULL COMMENT '轮播图状态:0-启用,1-禁用',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_banner
-- ----------------------------
INSERT INTO `tb_banner` VALUES (1, 'http://localhost:9000/vibe-music-data/banners/c5174745-763c-482f-8ba2-2d5ed715cd12-banner_1743606119458.png', 1);
INSERT INTO `tb_banner` VALUES (2, 'http://localhost:9000/vibe-music-data/banners/a11b799d-07b1-4536-a44f-1aa022527cc4-banner_1743606509944.png', 0);
INSERT INTO `tb_banner` VALUES (3, 'http://localhost:9000/vibe-music-data/banners/49546c6e-f323-41f7-b378-a246d79bfdc0-banner_1743606538969.png', 0);
INSERT INTO `tb_banner` VALUES (4, 'http://localhost:9000/vibe-music-data/banners/c9e034da-da51-43a1-a2e8-cc61947d2caf-banner_1743606551324.png', 0);
INSERT INTO `tb_banner` VALUES (5, 'http://localhost:9000/vibe-music-data/banners/edf8a95e-243a-4489-8f21-d6645a07b3af-banner_1743606574495.png', 0);
INSERT INTO `tb_banner` VALUES (6, 'http://localhost:9000/vibe-music-data/banners/4d9c633b-9ccf-4b2a-9282-76d88dcfef75-banner_1743606587507.png', 0);
INSERT INTO `tb_banner` VALUES (7, 'http://localhost:9000/vibe-music-data/banners/5fcb6754-1851-41c8-b939-c1e3073cdcd5-banner_1743606598489.png', 0);
INSERT INTO `tb_banner` VALUES (8, 'http://localhost:9000/vibe-music-data/banners/db3de2a0-8339-4fe7-896e-3b78c2944091-banner_1743606615526.png', 0);
INSERT INTO `tb_banner` VALUES (9, 'http://localhost:9000/vibe-music-data/banners/f3a8c0d0-9e51-4a84-a59f-57a4a87ee7d1-banner_1743606626078.png', 0);
INSERT INTO `tb_banner` VALUES (10, 'http://localhost:9000/vibe-music-data/banners/a8cb5a2f-79ea-4e94-ad2a-697164056295-banner_1743606638688.png', 0);

-- ----------------------------
-- Table structure for tb_comment
-- ----------------------------
DROP TABLE IF EXISTS `tb_comment`;
CREATE TABLE `tb_comment`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '评论 id',
  `user_id` bigint(0) NOT NULL COMMENT '用户 id',
  `song_id` bigint(0) NULL DEFAULT NULL COMMENT '歌曲 id',
  `playlist_id` bigint(0) NULL DEFAULT NULL COMMENT '歌单 id',
  `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '评论内容',
  `create_time` datetime(0) NOT NULL COMMENT '评论时间',
  `type` tinyint(0) NOT NULL COMMENT '评论类型:0-歌曲评论,1-歌单评论',
  `like_count` bigint(0) NULL DEFAULT NULL COMMENT '点赞数量',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `fk_comment_song_id`(`song_id`) USING BTREE,
  INDEX `fk_comment_user_id`(`user_id`) USING BTREE,
  INDEX `fk_comment_playlist_id`(`playlist_id`) USING BTREE,
  CONSTRAINT `fk_comment_playlist_id` FOREIGN KEY (`playlist_id`) REFERENCES `tb_playlist` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_comment_song_id` FOREIGN KEY (`song_id`) REFERENCES `tb_song` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_comment_user_id` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 194 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_comment
-- ----------------------------
INSERT INTO `tb_comment` VALUES (17, 27, 185, NULL, '这是一个随机评论 184', '2025-01-26 14:18:05', 0, 908);
INSERT INTO `tb_comment` VALUES (18, 27, 464, NULL, '这是一个随机评论 522', '2025-01-26 14:18:05', 0, 280);
INSERT INTO `tb_comment` VALUES (19, 27, 452, NULL, '这是一个随机评论 53', '2025-01-26 14:18:05', 0, 231);
INSERT INTO `tb_comment` VALUES (20, 27, 198, NULL, '这是一个随机评论 900', '2025-01-26 14:18:05', 0, 589);
INSERT INTO `tb_comment` VALUES (21, 30, 182, NULL, '这是一个随机评论 763', '2025-01-26 14:18:05', 0, 241);
INSERT INTO `tb_comment` VALUES (24, 38, 264, NULL, '这是一个随机评论 944', '2025-01-26 14:19:42', 0, 621);
INSERT INTO `tb_comment` VALUES (25, 31, 424, NULL, '这是一个随机评论 237', '2025-01-26 14:19:42', 0, 754);
INSERT INTO `tb_comment` VALUES (26, 28, 217, NULL, '这是一个随机评论 698', '2025-01-26 14:19:42', 0, 800);
INSERT INTO `tb_comment` VALUES (27, 29, 40, NULL, '这是一个随机评论 629', '2025-01-26 14:19:42', 0, 174);
INSERT INTO `tb_comment` VALUES (28, 27, 440, NULL, '这是一个随机评论 406', '2025-01-26 14:19:42', 0, 613);
INSERT INTO `tb_comment` VALUES (31, 42, 302, NULL, '这是一个随机歌曲评论 509', '2025-01-26 14:25:56', 0, 908);
INSERT INTO `tb_comment` VALUES (32, 28, 450, NULL, '这是一个随机歌曲评论 418', '2025-01-26 14:25:56', 0, 280);
INSERT INTO `tb_comment` VALUES (33, 29, 190, NULL, '这是一个随机歌曲评论 66', '2025-01-26 14:25:56', 0, 231);
INSERT INTO `tb_comment` VALUES (34, 38, 134, NULL, '这是一个随机歌曲评论 391', '2025-01-26 14:25:56', 0, 589);
INSERT INTO `tb_comment` VALUES (35, 36, 195, NULL, '这是一个随机歌曲评论 531', '2025-01-26 14:25:56', 0, 241);
INSERT INTO `tb_comment` VALUES (38, 30, NULL, 18, '这是一个随机歌单评论 329', '2025-01-26 14:25:56', 1, 621);
INSERT INTO `tb_comment` VALUES (39, 43, NULL, 16, '这是一个随机歌单评论 671', '2025-01-26 14:25:56', 1, 754);
INSERT INTO `tb_comment` VALUES (40, 42, NULL, 5, '这是一个随机歌单评论 948', '2025-01-26 14:25:56', 1, 845);
INSERT INTO `tb_comment` VALUES (41, 31, NULL, 17, '这是一个随机歌单评论 401', '2025-01-26 14:25:56', 1, 174);
INSERT INTO `tb_comment` VALUES (42, 34, NULL, 11, '这是一个随机歌单评论 706', '2025-01-26 14:25:56', 1, 613);
INSERT INTO `tb_comment` VALUES (45, 30, 446, NULL, '这是一个随机歌曲评论 226', '2025-01-26 14:28:13', 0, 166);
INSERT INTO `tb_comment` VALUES (46, 29, 70, NULL, '这是一个随机歌曲评论 753', '2025-01-26 14:28:13', 0, 71);
INSERT INTO `tb_comment` VALUES (47, 41, 411, NULL, '这是一个随机歌曲评论 466', '2025-01-26 14:28:13', 0, 800);
INSERT INTO `tb_comment` VALUES (48, 49, 227, NULL, '这是一个随机歌曲评论 881', '2025-01-26 14:28:13', 0, 174);
INSERT INTO `tb_comment` VALUES (49, 34, 184, NULL, '这是一个随机歌曲评论 428', '2025-01-26 14:28:13', 0, 613);
INSERT INTO `tb_comment` VALUES (52, 28, 8, NULL, '这是一个随机歌曲评论 60', '2025-01-26 14:31:33', 0, 908);
INSERT INTO `tb_comment` VALUES (53, 72, 334, NULL, '这是一个随机歌曲评论 179', '2025-01-26 14:31:33', 0, 280);
INSERT INTO `tb_comment` VALUES (54, 42, 433, NULL, '这是一个随机歌曲评论 471', '2025-01-26 14:31:33', 0, 231);
INSERT INTO `tb_comment` VALUES (55, 28, 37, NULL, '这是一个随机歌曲评论 91', '2025-01-26 14:31:33', 0, 589);
INSERT INTO `tb_comment` VALUES (56, 77, 165, NULL, '这是一个随机歌曲评论 538', '2025-01-26 14:31:33', 0, 241);
INSERT INTO `tb_comment` VALUES (59, 70, NULL, 10, '这是一个随机歌单评论 805', '2025-01-26 14:31:33', 1, 621);
INSERT INTO `tb_comment` VALUES (60, 35, NULL, 12, '这是一个随机歌单评论 23', '2025-01-26 14:31:33', 1, 754);
INSERT INTO `tb_comment` VALUES (61, 64, NULL, 10, '这是一个随机歌单评论 256', '2025-01-26 14:31:33', 1, 800);
INSERT INTO `tb_comment` VALUES (62, 70, NULL, 17, '这是一个随机歌单评论 228', '2025-01-26 14:31:33', 1, 174);
INSERT INTO `tb_comment` VALUES (63, 70, NULL, 12, '这是一个随机歌单评论 756', '2025-01-26 14:31:33', 1, 613);
INSERT INTO `tb_comment` VALUES (66, 76, 263, NULL, '这是一个随机歌曲评论 136', '2025-01-26 14:31:33', 0, 166);
INSERT INTO `tb_comment` VALUES (67, 45, 427, NULL, '这是一个随机歌曲评论 586', '2025-01-26 14:31:33', 0, 71);
INSERT INTO `tb_comment` VALUES (68, 42, 358, NULL, '这是一个随机歌曲评论 376', '2025-01-26 14:31:33', 0, 727);
INSERT INTO `tb_comment` VALUES (69, 52, 251, NULL, '这是一个随机歌曲评论 727', '2025-01-26 14:31:33', 0, 415);
INSERT INTO `tb_comment` VALUES (70, 38, 215, NULL, '这是一个随机歌曲评论 593', '2025-01-26 14:31:33', 0, 81);
INSERT INTO `tb_comment` VALUES (73, 42, NULL, 13, '这是一个随机歌单评论 782', '2025-01-26 14:31:33', 1, 762);
INSERT INTO `tb_comment` VALUES (74, 71, NULL, 10, '这是一个随机歌单评论 174', '2025-01-26 14:31:33', 1, 204);
INSERT INTO `tb_comment` VALUES (75, 30, NULL, 14, '这是一个随机歌单评论 2', '2025-01-26 14:31:33', 1, 128);
INSERT INTO `tb_comment` VALUES (76, 45, NULL, 4, '这是一个随机歌单评论 248', '2025-01-26 14:31:33', 1, 723);
INSERT INTO `tb_comment` VALUES (77, 58, NULL, 5, '这是一个随机歌单评论 417', '2025-01-26 14:31:33', 1, 663);
INSERT INTO `tb_comment` VALUES (81, 48, 148, NULL, '这是一个随机歌曲评论 971', '2025-01-26 14:35:28', 0, 614);
INSERT INTO `tb_comment` VALUES (82, 80, 154, NULL, '这是一个随机歌曲评论 850', '2025-01-26 14:35:28', 0, 658);
INSERT INTO `tb_comment` VALUES (83, 36, 4, NULL, '这是一个随机歌曲评论 865', '2025-01-26 14:35:28', 0, 328);
INSERT INTO `tb_comment` VALUES (84, 43, 438, NULL, '这是一个随机歌曲评论 895', '2025-01-26 14:35:28', 0, 792);
INSERT INTO `tb_comment` VALUES (88, 78, NULL, 18, '这是一个随机歌单评论 913', '2025-01-26 14:35:28', 1, 262);
INSERT INTO `tb_comment` VALUES (89, 44, NULL, 10, '这是一个随机歌单评论 810', '2025-01-26 14:35:28', 1, 256);
INSERT INTO `tb_comment` VALUES (90, 34, NULL, 9, '这是一个随机歌单评论 330', '2025-01-26 14:35:28', 1, 740);
INSERT INTO `tb_comment` VALUES (91, 43, NULL, 16, '这是一个随机歌单评论 928', '2025-01-26 14:35:28', 1, 229);
INSERT INTO `tb_comment` VALUES (94, 55, 212, NULL, '这是一个随机歌曲评论 546', '2025-01-26 14:54:51', 0, 851);
INSERT INTO `tb_comment` VALUES (95, 58, 238, NULL, '这是一个随机歌曲评论 11', '2025-01-26 14:54:51', 0, 50);
INSERT INTO `tb_comment` VALUES (96, 29, 112, NULL, '这是一个随机歌曲评论 503', '2025-01-26 14:54:51', 0, 840);
INSERT INTO `tb_comment` VALUES (97, 44, 193, NULL, '这是一个随机歌曲评论 319', '2025-01-26 14:54:51', 0, 237);
INSERT INTO `tb_comment` VALUES (98, 63, 440, NULL, '这是一个随机歌曲评论 180', '2025-01-26 14:54:51', 0, 47);
INSERT INTO `tb_comment` VALUES (101, 83, NULL, 17, '这是一个随机歌单评论 521', '2025-01-26 14:54:51', 1, 870);
INSERT INTO `tb_comment` VALUES (102, 93, NULL, 13, '这是一个随机歌单评论 820', '2025-01-26 14:54:51', 1, 976);
INSERT INTO `tb_comment` VALUES (103, 90, NULL, 3, '这是一个随机歌单评论 359', '2025-01-26 14:54:51', 1, 45);
INSERT INTO `tb_comment` VALUES (104, 76, NULL, 13, '这是一个随机歌单评论 931', '2025-01-26 14:54:51', 1, 340);
INSERT INTO `tb_comment` VALUES (105, 91, NULL, 14, '这是一个随机歌单评论 599', '2025-01-26 14:54:51', 1, 63);
INSERT INTO `tb_comment` VALUES (108, 83, 130, NULL, '这是一个随机歌曲评论 691', '2025-01-26 14:54:51', 0, 677);
INSERT INTO `tb_comment` VALUES (109, 85, 249, NULL, '这是一个随机歌曲评论 538', '2025-01-26 14:54:51', 0, 798);
INSERT INTO `tb_comment` VALUES (110, 43, 145, NULL, '这是一个随机歌曲评论 466', '2025-01-26 14:54:51', 0, 396);
INSERT INTO `tb_comment` VALUES (111, 76, 358, NULL, '这是一个随机歌曲评论 956', '2025-01-26 14:54:51', 0, 711);
INSERT INTO `tb_comment` VALUES (112, 86, 21, NULL, '这是一个随机歌曲评论 937', '2025-01-26 14:54:51', 0, 136);
INSERT INTO `tb_comment` VALUES (115, 77, NULL, 3, '这是一个随机歌单评论 102', '2025-01-26 14:54:51', 1, 630);
INSERT INTO `tb_comment` VALUES (116, 113, NULL, 2, '这是一个随机歌单评论 718', '2025-01-26 14:54:51', 1, 291);
INSERT INTO `tb_comment` VALUES (117, 90, NULL, 16, '这是一个随机歌单评论 579', '2025-01-26 14:54:51', 1, 596);
INSERT INTO `tb_comment` VALUES (118, 90, NULL, 5, '这是一个随机歌单评论 609', '2025-01-26 14:54:51', 1, 924);
INSERT INTO `tb_comment` VALUES (119, 80, NULL, 3, '这是一个随机歌单评论 551', '2025-01-26 14:54:51', 1, 463);
INSERT INTO `tb_comment` VALUES (122, 45, 365, NULL, '这是一个随机歌曲评论 439', '2025-01-26 14:55:14', 0, 751);
INSERT INTO `tb_comment` VALUES (123, 51, 109, NULL, '这是一个随机歌曲评论 52', '2025-01-26 14:55:14', 0, 425);
INSERT INTO `tb_comment` VALUES (125, 114, 142, NULL, '这是一个随机歌曲评论 873', '2025-01-26 14:55:14', 0, 349);
INSERT INTO `tb_comment` VALUES (126, 117, 67, NULL, '这是一个随机歌曲评论 484', '2025-01-26 14:55:14', 0, 453);
INSERT INTO `tb_comment` VALUES (129, 42, NULL, 8, '这是一个随机歌单评论 398', '2025-01-26 14:55:14', 1, 126);
INSERT INTO `tb_comment` VALUES (130, 63, NULL, 10, '这是一个随机歌单评论 205', '2025-01-26 14:55:14', 1, 977);
INSERT INTO `tb_comment` VALUES (131, 57, NULL, 14, '这是一个随机歌单评论 767', '2025-01-26 14:55:14', 1, 983);
INSERT INTO `tb_comment` VALUES (132, 59, NULL, 16, '这是一个随机歌单评论 711', '2025-01-26 14:55:14', 1, 63);
INSERT INTO `tb_comment` VALUES (133, 49, NULL, 18, '这是一个随机歌单评论 246', '2025-01-26 14:55:14', 1, 226);
INSERT INTO `tb_comment` VALUES (134, 127, NULL, 5, '\"True friendship is when you\'re laughing, she\'s laughing too. When you\'re sad, she comforts you. Goo', '2025-03-20 21:35:23', 1, 0);
INSERT INTO `tb_comment` VALUES (135, 127, NULL, 5, '\"True friendship is when you\'re laughing, she\'s laughing too. When you\'re sad, she comforts you. Good friends care for each other, sometimes even hurt each other. They understand your unhappiness and', '2025-03-20 21:37:41', 1, 0);
INSERT INTO `tb_comment` VALUES (136, 127, NULL, 5, '\"True friendship is when you\'re laughing, she\'s laughing too. When you\'re sad, she comforts you. Good friends care for each other, sometimes even hurt each other. They understand your unhappiness and', '2025-03-20 21:37:52', 1, 0);
INSERT INTO `tb_comment` VALUES (137, 127, NULL, 5, '夏天,就是要在热的要命的天跑去小卖部买根冰棍,在回去的路上边走边吃,爽死我夏天,就是要在热的要命的天跑去小卖部买根冰棍,在回去的路上边走边吃,爽死我夏天,就是要在热的要命的天跑去小卖部买根冰棍,在回去的路上边走边吃,爽死我夏天,就是要在热的要命的天跑去小卖部买根冰棍,在回去的路上边走边吃,爽死我夏天,就是要在热的要命的天跑去小卖部买根冰棍,在回去的路上边走边吃,爽死我夏天,就是要在热的要命的天跑去', '2025-03-20 21:40:36', 1, 1);
INSERT INTO `tb_comment` VALUES (138, 127, NULL, 5, '\"True friendship is when you\'re laughing, she\'s laughing too. When you\'re sad, she com夏天,就是要在热的要命的天跑去小卖部买根冰棍,在回去的路上边走边吃,爽死我', '2025-03-20 21:42:40', 1, 1);
INSERT INTO `tb_comment` VALUES (139, 127, 118, NULL, '哈哈', '2025-03-20 21:48:29', 0, 1);
INSERT INTO `tb_comment` VALUES (140, 127, 34, NULL, 'next', '2025-03-20 21:50:08', 0, 0);
INSERT INTO `tb_comment` VALUES (141, 127, 34, NULL, '777777777777777777777777777', '2025-03-20 21:50:22', 0, 0);
INSERT INTO `tb_comment` VALUES (158, 127, 35, NULL, '123', '2025-03-20 22:08:04', 0, 1);
INSERT INTO `tb_comment` VALUES (166, 127, 7, NULL, '123', '2025-03-20 22:14:22', 0, 0);
INSERT INTO `tb_comment` VALUES (167, 127, 7, NULL, 'good', '2025-03-20 22:14:28', 0, 1);
INSERT INTO `tb_comment` VALUES (168, 127, NULL, 5, '123456', '2025-03-20 22:28:55', 1, 0);
INSERT INTO `tb_comment` VALUES (171, 127, NULL, 18, '很棒!首推', '2025-03-25 17:34:21', 1, 908);
INSERT INTO `tb_comment` VALUES (172, 127, NULL, 18, '这是最棒的歌单啦加油!!!!!!!!!!!!', '2025-03-25 17:34:33', 1, 880);
INSERT INTO `tb_comment` VALUES (173, 127, NULL, 18, '柔美音乐流泄满室,清新悠扬的旋律,彷佛送来阵阵自然芳香。', '2025-03-25 17:34:58', 1, 1633);
INSERT INTO `tb_comment` VALUES (174, 126, NULL, 18, '谢谢大家,今天很荣幸拿到与Taylor Swift、Billie Eillish、Ariana Grande、Post Malone、Olivia Rodrigo等前辈一样多的格莱美,将来我会继续努力深耕音乐作品以更好地与这份荣誉相配。', '2025-03-25 17:37:42', 1, 2);
INSERT INTO `tb_comment` VALUES (175, 127, 340, NULL, '我觉得这首歌很好听啊(。•ˇ‸ˇ•。)而且和打雷的还是有本质区别的啊毕竟打雷的很多歌调子都不会这么明显的(。•ˇ‸ˇ•。)而且声音的话霉的声音更澈一点打雷的很朦胧qaaaaq', '2025-03-25 17:45:49', 0, 6);
INSERT INTO `tb_comment` VALUES (176, 127, 340, NULL, 'Taylor Swift是你今年最喜欢的歌手\nTA的歌你今年一共听了7503次\n1.《Love Story》511次\n2.《Enchanted》495次\n3.《Style》492次\n5.《You Need To Calm Dow...》401次\n6《Wildest Dreams》369次', '2025-03-25 17:46:19', 0, 0);
INSERT INTO `tb_comment` VALUES (177, 127, 340, NULL, '野梦就是上个世纪好莱坞黄金年代的感觉,风华绝代的女明星和英俊潇洒的男明星,在辽阔的非洲草原相爱,大自然的壮阔让爱情更加恢宏、狂野,给人一种Love that burns to death的错觉。', '2025-03-25 17:46:42', 0, 0);
INSERT INTO `tb_comment` VALUES (179, 127, 340, NULL, '感觉自己很久没说出过这么强硬的祈使句了,Say you\'ll remember me.听了太多如何收敛自己的情感,久了好像丧失了热烈地去爱的能力。\nSay you\'ll see me again,\nEven if it\'s just in your wildest dreams.\n这种表达真的很酷,说你爱我,不要等你爱我。', '2025-03-25 17:47:06', 0, 3977);
INSERT INTO `tb_comment` VALUES (180, 126, 340, NULL, '红唇坐在镜前化妆的,是艾娃加德纳。荒野中的一吻,是梅里尔斯特里普。披着黄纱迎风飞翔,是琼芳登。床前褪下褐色的丝绸,是丽塔海华丝。带着头巾墨镜坐在滑翔机上吹风,是英格丽褒曼。聚光灯下走上红毯,是伊丽莎白泰勒。隔着车窗看雨的,是玛丽昂歌迪亚。一个好莱坞式复古MV里独占鳌头的,是霉霉。', '2025-03-25 17:47:24', 0, 986);
INSERT INTO `tb_comment` VALUES (181, 126, 340, NULL, 'Wildest Dreams有着与霉霉许多的其他歌不一样的感觉,她在MV里拍出了好莱坞式的浪漫,至今还是许多粉丝心中最爱的MV。在释出重录的时候我真的很感动,这首歌的歌词写出了心中对爱情的痴迷,鼓点采样自她的心跳,配以婉转的旋律,是我最喜欢她的一首歌。', '2025-03-25 17:47:43', 0, 66);
INSERT INTO `tb_comment` VALUES (186, 126, 34, NULL, 'like it', '2025-04-07 18:03:38', 0, 0);
INSERT INTO `tb_comment` VALUES (188, 126, 34, NULL, 'excellent', '2025-04-07 18:17:37', 0, 0);
INSERT INTO `tb_comment` VALUES (190, 126, 346, NULL, '111', '2025-04-15 21:44:39', 0, 0);
INSERT INTO `tb_comment` VALUES (191, 118, 359, NULL, 'The Chainsmokers联手Phoebe Ryan新单All We Know已上线,成员Drew再次献声,而且这次帮帮唱小伙伴还是Phoebe Ryan,新歌依旧洗脑好听,看来又是一首大火的歌~', '2025-04-18 20:36:15', 0, 77116);
INSERT INTO `tb_comment` VALUES (192, 127, 359, NULL, '就是莫名好喜欢\"From Chicago to the coast.\"这一句啊,从芝加哥到西海岸的尽头,想想就觉得很美好', '2025-04-18 20:37:51', 0, 9025);

-- ----------------------------
-- Table structure for tb_feedback
-- ----------------------------
DROP TABLE IF EXISTS `tb_feedback`;
CREATE TABLE `tb_feedback`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '反馈 id',
  `user_id` bigint(0) NOT NULL COMMENT '用户 id',
  `feedback` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '反馈内容',
  `create_time` datetime(0) NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `fk_feedback_user_id`(`user_id`) USING BTREE,
  CONSTRAINT `fk_feedback_user_id` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 73 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_feedback
-- ----------------------------
INSERT INTO `tb_feedback` VALUES (2, 31, '这是一个随机反馈 431', '2025-01-26 14:18:05');
INSERT INTO `tb_feedback` VALUES (3, 30, '这是一个随机反馈 707', '2025-01-26 14:18:05');
INSERT INTO `tb_feedback` VALUES (8, 30, '这是一个随机反馈 360', '2025-01-26 14:18:58');
INSERT INTO `tb_feedback` VALUES (9, 31, '这是一个随机反馈 727', '2025-01-26 14:18:58');
INSERT INTO `tb_feedback` VALUES (10, 27, '这是一个随机反馈 824', '2025-01-26 14:18:58');
INSERT INTO `tb_feedback` VALUES (11, 29, '这是一个随机反馈 711', '2025-01-26 14:18:58');
INSERT INTO `tb_feedback` VALUES (12, 28, '这是一个随机反馈 172', '2025-01-26 14:18:58');
INSERT INTO `tb_feedback` VALUES (15, 35, '这是一个随机反馈 17', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (16, 80, '这是一个随机反馈 853', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (17, 55, '这是一个随机反馈 431', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (18, 79, '这是一个随机反馈 838', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (19, 73, '这是一个随机反馈 358', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (22, 79, '这是一个随机反馈 83', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (23, 52, '这是一个随机反馈 123', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (24, 36, '这是一个随机反馈 744', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (25, 62, '这是一个随机反馈 766', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (26, 58, '这是一个随机反馈 648', '2025-01-26 14:31:33');
INSERT INTO `tb_feedback` VALUES (29, 87, '这是一个随机反馈 565', '2025-01-26 14:35:28');
INSERT INTO `tb_feedback` VALUES (30, 73, '这是一个随机反馈 294', '2025-01-26 14:35:28');
INSERT INTO `tb_feedback` VALUES (31, 62, '这是一个随机反馈 213', '2025-01-26 14:35:28');
INSERT INTO `tb_feedback` VALUES (32, 64, '这是一个随机反馈 296', '2025-01-26 14:35:28');
INSERT INTO `tb_feedback` VALUES (33, 86, '这是一个随机反馈 782', '2025-01-26 14:35:28');
INSERT INTO `tb_feedback` VALUES (36, 63, '这是一个随机反馈 570', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (37, 105, '这是一个随机反馈 840', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (38, 59, '这是一个随机反馈 750', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (39, 57, '这是一个随机反馈 659', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (40, 104, '这是一个随机反馈 98', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (43, 44, '这是一个随机反馈 58', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (44, 41, '这是一个随机反馈 140', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (47, 104, '这是一个随机反馈 700', '2025-01-26 14:54:51');
INSERT INTO `tb_feedback` VALUES (53, 107, '这是一个随机反馈 402', '2025-01-26 14:55:14');
INSERT INTO `tb_feedback` VALUES (59, 126, '哇,今天的推荐太棒了!发现了好几首我超喜欢的冷门歌曲!', '2025-04-03 15:47:45');
INSERT INTO `tb_feedback` VALUES (60, 30, '感觉推荐的音乐越来越符合我的口味了,继续保持!', '2025-04-03 15:48:45');
INSERT INTO `tb_feedback` VALUES (61, 27, '搜索功能有点不太好用,输入歌手名字经常找不到对应的歌曲。', '2025-04-03 15:48:54');
INSERT INTO `tb_feedback` VALUES (62, 29, '希望可以增加一个‘不再推荐这个歌手/歌曲’的功能。', '2025-04-03 15:49:03');
INSERT INTO `tb_feedback` VALUES (63, 30, '我经常使用你们的歌单功能,但是感觉歌单的分类和管理还不够灵活。希望能增加自定义标签的功能,并且可以按照创建时间、歌曲数量等进行排序,方便我更好地整理自己的音乐库。', '2025-04-03 15:49:10');
INSERT INTO `tb_feedback` VALUES (64, 31, '很喜欢每日推荐歌单,每天都有新的惊喜。', '2025-04-03 15:49:20');
INSERT INTO `tb_feedback` VALUES (65, 27, '总的来说,这个音乐推荐网站还是非常不错的,为我发现了许多新的音乐。希望你们能持续优化和改进,推出更多有趣和实用的功能,成为我日常听歌的首选平台。', '2025-04-03 15:49:29');
INSERT INTO `tb_feedback` VALUES (66, 107, '希望可以支持更多音乐平台导入歌单。', '2025-04-03 15:49:41');
INSERT INTO `tb_feedback` VALUES (67, 28, '希望可以增加歌词显示功能。', '2025-04-03 15:49:57');
INSERT INTO `tb_feedback` VALUES (68, 35, '整体来说还不错,会继续使用下去。', '2025-04-03 15:50:25');
INSERT INTO `tb_feedback` VALUES (69, 80, '界面设计很简洁,用起来很舒服。', '2025-04-03 15:51:26');
INSERT INTO `tb_feedback` VALUES (70, 55, '我希望网站能提供更详细的歌曲和专辑信息,比如歌曲的创作背景、制作团队、所属专辑的评价等等。这能帮助我们更深入地了解音乐背后的故事,增加听歌的乐趣。', '2025-04-03 15:51:44');
INSERT INTO `tb_feedback` VALUES (71, 126, '能不能增加一些排行榜单,比如不同风格的热门歌曲?', '2025-04-03 15:51:59');
INSERT INTO `tb_feedback` VALUES (72, 66, '我非常喜欢这个网站的整体设计风格,简约大气,操作起来也很流畅。特别是夜间模式,对眼睛非常友好。如果能在播放界面增加一些可视化的效果,比如动态频谱或者专辑封面动画,就更完美了。', '2025-04-03 15:52:09');

-- ----------------------------
-- Table structure for tb_genre
-- ----------------------------
DROP TABLE IF EXISTS `tb_genre`;
CREATE TABLE `tb_genre`  (
  `song_id` bigint(0) NOT NULL COMMENT '歌曲 id',
  `style_id` bigint(0) NOT NULL COMMENT '风格 id',
  PRIMARY KEY (`song_id`, `style_id`) USING BTREE,
  INDEX `fk_genre_style_id`(`style_id`) USING BTREE,
  CONSTRAINT `fk_genre_song_id` FOREIGN KEY (`song_id`) REFERENCES `tb_song` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT,
  CONSTRAINT `fk_genre_style_id` FOREIGN KEY (`style_id`) REFERENCES `tb_style` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_genre
-- ----------------------------
INSERT INTO `tb_genre` VALUES (65, 1);
INSERT INTO `tb_genre` VALUES (315, 1);
INSERT INTO `tb_genre` VALUES (325, 1);
INSERT INTO `tb_genre` VALUES (332, 1);
INSERT INTO `tb_genre` VALUES (336, 1);
INSERT INTO `tb_genre` VALUES (343, 1);
INSERT INTO `tb_genre` VALUES (135, 2);
INSERT INTO `tb_genre` VALUES (136, 2);
INSERT INTO `tb_genre` VALUES (137, 2);
INSERT INTO `tb_genre` VALUES (138, 2);
INSERT INTO `tb_genre` VALUES (140, 2);
INSERT INTO `tb_genre` VALUES (141, 2);
INSERT INTO `tb_genre` VALUES (142, 2);
INSERT INTO `tb_genre` VALUES (143, 2);
INSERT INTO `tb_genre` VALUES (144, 2);
INSERT INTO `tb_genre` VALUES (145, 2);
INSERT INTO `tb_genre` VALUES (146, 2);
INSERT INTO `tb_genre` VALUES (147, 2);
INSERT INTO `tb_genre` VALUES (410, 2);
INSERT INTO `tb_genre` VALUES (427, 2);
INSERT INTO `tb_genre` VALUES (428, 2);
INSERT INTO `tb_genre` VALUES (430, 2);
INSERT INTO `tb_genre` VALUES (431, 2);
INSERT INTO `tb_genre` VALUES (432, 2);
INSERT INTO `tb_genre` VALUES (433, 2);
INSERT INTO `tb_genre` VALUES (434, 2);
INSERT INTO `tb_genre` VALUES (435, 2);
INSERT INTO `tb_genre` VALUES (436, 2);
INSERT INTO `tb_genre` VALUES (437, 2);
INSERT INTO `tb_genre` VALUES (448, 2);
INSERT INTO `tb_genre` VALUES (449, 2);
INSERT INTO `tb_genre` VALUES (451, 2);
INSERT INTO `tb_genre` VALUES (452, 2);
INSERT INTO `tb_genre` VALUES (453, 2);
INSERT INTO `tb_genre` VALUES (454, 2);
INSERT INTO `tb_genre` VALUES (455, 2);
INSERT INTO `tb_genre` VALUES (457, 2);
INSERT INTO `tb_genre` VALUES (462, 2);
INSERT INTO `tb_genre` VALUES (467, 2);
INSERT INTO `tb_genre` VALUES (468, 2);
INSERT INTO `tb_genre` VALUES (469, 2);
INSERT INTO `tb_genre` VALUES (470, 2);
INSERT INTO `tb_genre` VALUES (471, 2);
INSERT INTO `tb_genre` VALUES (472, 2);
INSERT INTO `tb_genre` VALUES (473, 2);
INSERT INTO `tb_genre` VALUES (474, 2);
INSERT INTO `tb_genre` VALUES (475, 2);
INSERT INTO `tb_genre` VALUES (476, 2);
INSERT INTO `tb_genre` VALUES (477, 2);
INSERT INTO `tb_genre` VALUES (478, 2);
INSERT INTO `tb_genre` VALUES (479, 2);
INSERT INTO `tb_genre` VALUES (480, 2);
INSERT INTO `tb_genre` VALUES (481, 2);
INSERT INTO `tb_genre` VALUES (482, 2);
INSERT INTO `tb_genre` VALUES (483, 2);
INSERT INTO `tb_genre` VALUES (484, 2);
INSERT INTO `tb_genre` VALUES (485, 2);
INSERT INTO `tb_genre` VALUES (489, 2);
INSERT INTO `tb_genre` VALUES (493, 2);
INSERT INTO `tb_genre` VALUES (494, 2);
INSERT INTO `tb_genre` VALUES (495, 2);
INSERT INTO `tb_genre` VALUES (497, 2);
INSERT INTO `tb_genre` VALUES (499, 2);
INSERT INTO `tb_genre` VALUES (42, 3);
INSERT INTO `tb_genre` VALUES (54, 3);
INSERT INTO `tb_genre` VALUES (68, 3);
INSERT INTO `tb_genre` VALUES (90, 3);
INSERT INTO `tb_genre` VALUES (137, 3);
INSERT INTO `tb_genre` VALUES (151, 3);
INSERT INTO `tb_genre` VALUES (220, 3);
INSERT INTO `tb_genre` VALUES (273, 3);
INSERT INTO `tb_genre` VALUES (283, 3);
INSERT INTO `tb_genre` VALUES (291, 3);
INSERT INTO `tb_genre` VALUES (298, 3);
INSERT INTO `tb_genre` VALUES (300, 3);
INSERT INTO `tb_genre` VALUES (302, 3);
INSERT INTO `tb_genre` VALUES (363, 3);
INSERT INTO `tb_genre` VALUES (388, 3);
INSERT INTO `tb_genre` VALUES (389, 3);
INSERT INTO `tb_genre` VALUES (430, 3);
INSERT INTO `tb_genre` VALUES (439, 3);
INSERT INTO `tb_genre` VALUES (448, 3);
INSERT INTO `tb_genre` VALUES (451, 3);
INSERT INTO `tb_genre` VALUES (455, 3);
INSERT INTO `tb_genre` VALUES (457, 3);
INSERT INTO `tb_genre` VALUES (459, 3);
INSERT INTO `tb_genre` VALUES (463, 3);
INSERT INTO `tb_genre` VALUES (489, 3);
INSERT INTO `tb_genre` VALUES (497, 3);
INSERT INTO `tb_genre` VALUES (500, 3);
INSERT INTO `tb_genre` VALUES (62, 4);
INSERT INTO `tb_genre` VALUES (129, 4);
INSERT INTO `tb_genre` VALUES (132, 4);
INSERT INTO `tb_genre` VALUES (149, 4);
INSERT INTO `tb_genre` VALUES (150, 4);
INSERT INTO `tb_genre` VALUES (151, 4);
INSERT INTO `tb_genre` VALUES (168, 4);
INSERT INTO `tb_genre` VALUES (180, 4);
INSERT INTO `tb_genre` VALUES (226, 4);
INSERT INTO `tb_genre` VALUES (227, 4);
INSERT INTO `tb_genre` VALUES (228, 4);
INSERT INTO `tb_genre` VALUES (229, 4);
INSERT INTO `tb_genre` VALUES (230, 4);
INSERT INTO `tb_genre` VALUES (271, 4);
INSERT INTO `tb_genre` VALUES (272, 4);
INSERT INTO `tb_genre` VALUES (277, 4);
INSERT INTO `tb_genre` VALUES (278, 4);
INSERT INTO `tb_genre` VALUES (292, 4);
INSERT INTO `tb_genre` VALUES (293, 4);
INSERT INTO `tb_genre` VALUES (294, 4);
INSERT INTO `tb_genre` VALUES (295, 4);
INSERT INTO `tb_genre` VALUES (300, 4);
INSERT INTO `tb_genre` VALUES (363, 4);
INSERT INTO `tb_genre` VALUES (390, 4);
INSERT INTO `tb_genre` VALUES (391, 4);
INSERT INTO `tb_genre` VALUES (393, 4);
INSERT INTO `tb_genre` VALUES (394, 4);
INSERT INTO `tb_genre` VALUES (396, 4);
INSERT INTO `tb_genre` VALUES (397, 4);
INSERT INTO `tb_genre` VALUES (398, 4);
INSERT INTO `tb_genre` VALUES (399, 4);
INSERT INTO `tb_genre` VALUES (400, 4);
INSERT INTO `tb_genre` VALUES (401, 4);
INSERT INTO `tb_genre` VALUES (405, 4);
INSERT INTO `tb_genre` VALUES (406, 4);
INSERT INTO `tb_genre` VALUES (407, 4);
INSERT INTO `tb_genre` VALUES (408, 4);
INSERT INTO `tb_genre` VALUES (409, 4);
INSERT INTO `tb_genre` VALUES (416, 4);
INSERT INTO `tb_genre` VALUES (420, 4);
INSERT INTO `tb_genre` VALUES (424, 4);
INSERT INTO `tb_genre` VALUES (488, 4);
INSERT INTO `tb_genre` VALUES (492, 4);
INSERT INTO `tb_genre` VALUES (34, 5);
INSERT INTO `tb_genre` VALUES (83, 5);
INSERT INTO `tb_genre` VALUES (124, 5);
INSERT INTO `tb_genre` VALUES (126, 5);
INSERT INTO `tb_genre` VALUES (174, 5);
INSERT INTO `tb_genre` VALUES (181, 5);
INSERT INTO `tb_genre` VALUES (187, 5);
INSERT INTO `tb_genre` VALUES (189, 5);
INSERT INTO `tb_genre` VALUES (195, 5);
INSERT INTO `tb_genre` VALUES (196, 5);
INSERT INTO `tb_genre` VALUES (273, 5);
INSERT INTO `tb_genre` VALUES (290, 5);
INSERT INTO `tb_genre` VALUES (414, 5);
INSERT INTO `tb_genre` VALUES (438, 5);
INSERT INTO `tb_genre` VALUES (411, 6);
INSERT INTO `tb_genre` VALUES (412, 6);
INSERT INTO `tb_genre` VALUES (415, 6);
INSERT INTO `tb_genre` VALUES (417, 6);
INSERT INTO `tb_genre` VALUES (418, 6);
INSERT INTO `tb_genre` VALUES (439, 6);
INSERT INTO `tb_genre` VALUES (440, 6);
INSERT INTO `tb_genre` VALUES (441, 6);
INSERT INTO `tb_genre` VALUES (456, 6);
INSERT INTO `tb_genre` VALUES (458, 6);
INSERT INTO `tb_genre` VALUES (486, 6);
INSERT INTO `tb_genre` VALUES (487, 6);
INSERT INTO `tb_genre` VALUES (491, 6);
INSERT INTO `tb_genre` VALUES (500, 6);
INSERT INTO `tb_genre` VALUES (454, 7);
INSERT INTO `tb_genre` VALUES (4, 8);
INSERT INTO `tb_genre` VALUES (43, 8);
INSERT INTO `tb_genre` VALUES (44, 8);
INSERT INTO `tb_genre` VALUES (45, 8);
INSERT INTO `tb_genre` VALUES (46, 8);
INSERT INTO `tb_genre` VALUES (47, 8);
INSERT INTO `tb_genre` VALUES (48, 8);
INSERT INTO `tb_genre` VALUES (49, 8);
INSERT INTO `tb_genre` VALUES (50, 8);
INSERT INTO `tb_genre` VALUES (51, 8);
INSERT INTO `tb_genre` VALUES (52, 8);
INSERT INTO `tb_genre` VALUES (53, 8);
INSERT INTO `tb_genre` VALUES (84, 8);
INSERT INTO `tb_genre` VALUES (139, 8);
INSERT INTO `tb_genre` VALUES (170, 8);
INSERT INTO `tb_genre` VALUES (171, 8);
INSERT INTO `tb_genre` VALUES (172, 8);
INSERT INTO `tb_genre` VALUES (173, 8);
INSERT INTO `tb_genre` VALUES (174, 8);
INSERT INTO `tb_genre` VALUES (231, 8);
INSERT INTO `tb_genre` VALUES (232, 8);
INSERT INTO `tb_genre` VALUES (233, 8);
INSERT INTO `tb_genre` VALUES (234, 8);
INSERT INTO `tb_genre` VALUES (235, 8);
INSERT INTO `tb_genre` VALUES (236, 8);
INSERT INTO `tb_genre` VALUES (237, 8);
INSERT INTO `tb_genre` VALUES (238, 8);
INSERT INTO `tb_genre` VALUES (239, 8);
INSERT INTO `tb_genre` VALUES (240, 8);
INSERT INTO `tb_genre` VALUES (241, 8);
INSERT INTO `tb_genre` VALUES (242, 8);
INSERT INTO `tb_genre` VALUES (243, 8);
INSERT INTO `tb_genre` VALUES (244, 8);
INSERT INTO `tb_genre` VALUES (245, 8);
INSERT INTO `tb_genre` VALUES (246, 8);
INSERT INTO `tb_genre` VALUES (247, 8);
INSERT INTO `tb_genre` VALUES (248, 8);
INSERT INTO `tb_genre` VALUES (249, 8);
INSERT INTO `tb_genre` VALUES (250, 8);
INSERT INTO `tb_genre` VALUES (251, 8);
INSERT INTO `tb_genre` VALUES (252, 8);
INSERT INTO `tb_genre` VALUES (253, 8);
INSERT INTO `tb_genre` VALUES (254, 8);
INSERT INTO `tb_genre` VALUES (255, 8);
INSERT INTO `tb_genre` VALUES (256, 8);
INSERT INTO `tb_genre` VALUES (257, 8);
INSERT INTO `tb_genre` VALUES (258, 8);
INSERT INTO `tb_genre` VALUES (259, 8);
INSERT INTO `tb_genre` VALUES (260, 8);
INSERT INTO `tb_genre` VALUES (261, 8);
INSERT INTO `tb_genre` VALUES (262, 8);
INSERT INTO `tb_genre` VALUES (263, 8);
INSERT INTO `tb_genre` VALUES (264, 8);
INSERT INTO `tb_genre` VALUES (265, 8);
INSERT INTO `tb_genre` VALUES (266, 8);
INSERT INTO `tb_genre` VALUES (279, 8);
INSERT INTO `tb_genre` VALUES (282, 8);
INSERT INTO `tb_genre` VALUES (284, 8);
INSERT INTO `tb_genre` VALUES (285, 8);
INSERT INTO `tb_genre` VALUES (286, 8);
INSERT INTO `tb_genre` VALUES (288, 8);
INSERT INTO `tb_genre` VALUES (352, 8);
INSERT INTO `tb_genre` VALUES (410, 8);
INSERT INTO `tb_genre` VALUES (429, 8);
INSERT INTO `tb_genre` VALUES (490, 8);
INSERT INTO `tb_genre` VALUES (68, 9);
INSERT INTO `tb_genre` VALUES (298, 9);
INSERT INTO `tb_genre` VALUES (466, 10);
INSERT INTO `tb_genre` VALUES (2, 11);
INSERT INTO `tb_genre` VALUES (3, 11);
INSERT INTO `tb_genre` VALUES (4, 11);
INSERT INTO `tb_genre` VALUES (6, 11);
INSERT INTO `tb_genre` VALUES (7, 11);
INSERT INTO `tb_genre` VALUES (8, 11);
INSERT INTO `tb_genre` VALUES (9, 11);
INSERT INTO `tb_genre` VALUES (10, 11);
INSERT INTO `tb_genre` VALUES (11, 11);
INSERT INTO `tb_genre` VALUES (12, 11);
INSERT INTO `tb_genre` VALUES (13, 11);
INSERT INTO `tb_genre` VALUES (14, 11);
INSERT INTO `tb_genre` VALUES (15, 11);
INSERT INTO `tb_genre` VALUES (16, 11);
INSERT INTO `tb_genre` VALUES (17, 11);
INSERT INTO `tb_genre` VALUES (18, 11);
INSERT INTO `tb_genre` VALUES (19, 11);
INSERT INTO `tb_genre` VALUES (20, 11);
INSERT INTO `tb_genre` VALUES (21, 11);
INSERT INTO `tb_genre` VALUES (22, 11);
INSERT INTO `tb_genre` VALUES (23, 11);
INSERT INTO `tb_genre` VALUES (24, 11);
INSERT INTO `tb_genre` VALUES (25, 11);
INSERT INTO `tb_genre` VALUES (26, 11);
INSERT INTO `tb_genre` VALUES (27, 11);
INSERT INTO `tb_genre` VALUES (28, 11);
INSERT INTO `tb_genre` VALUES (29, 11);
INSERT INTO `tb_genre` VALUES (30, 11);
INSERT INTO `tb_genre` VALUES (31, 11);
INSERT INTO `tb_genre` VALUES (32, 11);
INSERT INTO `tb_genre` VALUES (33, 11);
INSERT INTO `tb_genre` VALUES (34, 11);
INSERT INTO `tb_genre` VALUES (35, 11);
INSERT INTO `tb_genre` VALUES (36, 11);
INSERT INTO `tb_genre` VALUES (37, 11);
INSERT INTO `tb_genre` VALUES (38, 11);
INSERT INTO `tb_genre` VALUES (39, 11);
INSERT INTO `tb_genre` VALUES (41, 11);
INSERT INTO `tb_genre` VALUES (42, 11);
INSERT INTO `tb_genre` VALUES (55, 11);
INSERT INTO `tb_genre` VALUES (56, 11);
INSERT INTO `tb_genre` VALUES (57, 11);
INSERT INTO `tb_genre` VALUES (58, 11);
INSERT INTO `tb_genre` VALUES (59, 11);
INSERT INTO `tb_genre` VALUES (60, 11);
INSERT INTO `tb_genre` VALUES (61, 11);
INSERT INTO `tb_genre` VALUES (65, 11);
INSERT INTO `tb_genre` VALUES (70, 11);
INSERT INTO `tb_genre` VALUES (71, 11);
INSERT INTO `tb_genre` VALUES (72, 11);
INSERT INTO `tb_genre` VALUES (73, 11);
INSERT INTO `tb_genre` VALUES (75, 11);
INSERT INTO `tb_genre` VALUES (76, 11);
INSERT INTO `tb_genre` VALUES (77, 11);
INSERT INTO `tb_genre` VALUES (78, 11);
INSERT INTO `tb_genre` VALUES (79, 11);
INSERT INTO `tb_genre` VALUES (80, 11);
INSERT INTO `tb_genre` VALUES (81, 11);
INSERT INTO `tb_genre` VALUES (82, 11);
INSERT INTO `tb_genre` VALUES (84, 11);
INSERT INTO `tb_genre` VALUES (85, 11);
INSERT INTO `tb_genre` VALUES (86, 11);
INSERT INTO `tb_genre` VALUES (87, 11);
INSERT INTO `tb_genre` VALUES (88, 11);
INSERT INTO `tb_genre` VALUES (89, 11);
INSERT INTO `tb_genre` VALUES (90, 11);
INSERT INTO `tb_genre` VALUES (91, 11);
INSERT INTO `tb_genre` VALUES (92, 11);
INSERT INTO `tb_genre` VALUES (93, 11);
INSERT INTO `tb_genre` VALUES (95, 11);
INSERT INTO `tb_genre` VALUES (96, 11);
INSERT INTO `tb_genre` VALUES (97, 11);
INSERT INTO `tb_genre` VALUES (98, 11);
INSERT INTO `tb_genre` VALUES (99, 11);
INSERT INTO `tb_genre` VALUES (100, 11);
INSERT INTO `tb_genre` VALUES (101, 11);
INSERT INTO `tb_genre` VALUES (102, 11);
INSERT INTO `tb_genre` VALUES (103, 11);
INSERT INTO `tb_genre` VALUES (104, 11);
INSERT INTO `tb_genre` VALUES (105, 11);
INSERT INTO `tb_genre` VALUES (106, 11);
INSERT INTO `tb_genre` VALUES (107, 11);
INSERT INTO `tb_genre` VALUES (108, 11);
INSERT INTO `tb_genre` VALUES (109, 11);
INSERT INTO `tb_genre` VALUES (110, 11);
INSERT INTO `tb_genre` VALUES (111, 11);
INSERT INTO `tb_genre` VALUES (112, 11);
INSERT INTO `tb_genre` VALUES (113, 11);
INSERT INTO `tb_genre` VALUES (114, 11);
INSERT INTO `tb_genre` VALUES (115, 11);
INSERT INTO `tb_genre` VALUES (116, 11);
INSERT INTO `tb_genre` VALUES (117, 11);
INSERT INTO `tb_genre` VALUES (118, 11);
INSERT INTO `tb_genre` VALUES (119, 11);
INSERT INTO `tb_genre` VALUES (120, 11);
INSERT INTO `tb_genre` VALUES (121, 11);
INSERT INTO `tb_genre` VALUES (122, 11);
INSERT INTO `tb_genre` VALUES (123, 11);
INSERT INTO `tb_genre` VALUES (124, 11);
INSERT INTO `tb_genre` VALUES (125, 11);
INSERT INTO `tb_genre` VALUES (126, 11);
INSERT INTO `tb_genre` VALUES (127, 11);
INSERT INTO `tb_genre` VALUES (128, 11);
INSERT INTO `tb_genre` VALUES (130, 11);
INSERT INTO `tb_genre` VALUES (152, 11);
INSERT INTO `tb_genre` VALUES (153, 11);
INSERT INTO `tb_genre` VALUES (154, 11);
INSERT INTO `tb_genre` VALUES (155, 11);
INSERT INTO `tb_genre` VALUES (156, 11);
INSERT INTO `tb_genre` VALUES (157, 11);
INSERT INTO `tb_genre` VALUES (158, 11);
INSERT INTO `tb_genre` VALUES (159, 11);
INSERT INTO `tb_genre` VALUES (160, 11);
INSERT INTO `tb_genre` VALUES (161, 11);
INSERT INTO `tb_genre` VALUES (162, 11);
INSERT INTO `tb_genre` VALUES (163, 11);
INSERT INTO `tb_genre` VALUES (164, 11);
INSERT INTO `tb_genre` VALUES (165, 11);
INSERT INTO `tb_genre` VALUES (166, 11);
INSERT INTO `tb_genre` VALUES (167, 11);
INSERT INTO `tb_genre` VALUES (169, 11);
INSERT INTO `tb_genre` VALUES (181, 11);
INSERT INTO `tb_genre` VALUES (182, 11);
INSERT INTO `tb_genre` VALUES (183, 11);
INSERT INTO `tb_genre` VALUES (184, 11);
INSERT INTO `tb_genre` VALUES (185, 11);
INSERT INTO `tb_genre` VALUES (186, 11);
INSERT INTO `tb_genre` VALUES (188, 11);
INSERT INTO `tb_genre` VALUES (189, 11);
INSERT INTO `tb_genre` VALUES (190, 11);
INSERT INTO `tb_genre` VALUES (191, 11);
INSERT INTO `tb_genre` VALUES (192, 11);
INSERT INTO `tb_genre` VALUES (193, 11);
INSERT INTO `tb_genre` VALUES (194, 11);
INSERT INTO `tb_genre` VALUES (196, 11);
INSERT INTO `tb_genre` VALUES (197, 11);
INSERT INTO `tb_genre` VALUES (199, 11);
INSERT INTO `tb_genre` VALUES (200, 11);
INSERT INTO `tb_genre` VALUES (202, 11);
INSERT INTO `tb_genre` VALUES (205, 11);
INSERT INTO `tb_genre` VALUES (207, 11);
INSERT INTO `tb_genre` VALUES (208, 11);
INSERT INTO `tb_genre` VALUES (210, 11);
INSERT INTO `tb_genre` VALUES (211, 11);
INSERT INTO `tb_genre` VALUES (212, 11);
INSERT INTO `tb_genre` VALUES (213, 11);
INSERT INTO `tb_genre` VALUES (214, 11);
INSERT INTO `tb_genre` VALUES (215, 11);
INSERT INTO `tb_genre` VALUES (216, 11);
INSERT INTO `tb_genre` VALUES (217, 11);
INSERT INTO `tb_genre` VALUES (218, 11);
INSERT INTO `tb_genre` VALUES (219, 11);
INSERT INTO `tb_genre` VALUES (220, 11);
INSERT INTO `tb_genre` VALUES (221, 11);
INSERT INTO `tb_genre` VALUES (222, 11);
INSERT INTO `tb_genre` VALUES (223, 11);
INSERT INTO `tb_genre` VALUES (224, 11);
INSERT INTO `tb_genre` VALUES (231, 11);
INSERT INTO `tb_genre` VALUES (232, 11);
INSERT INTO `tb_genre` VALUES (233, 11);
INSERT INTO `tb_genre` VALUES (234, 11);
INSERT INTO `tb_genre` VALUES (235, 11);
INSERT INTO `tb_genre` VALUES (236, 11);
INSERT INTO `tb_genre` VALUES (237, 11);
INSERT INTO `tb_genre` VALUES (238, 11);
INSERT INTO `tb_genre` VALUES (239, 11);
INSERT INTO `tb_genre` VALUES (240, 11);
INSERT INTO `tb_genre` VALUES (241, 11);
INSERT INTO `tb_genre` VALUES (242, 11);
INSERT INTO `tb_genre` VALUES (243, 11);
INSERT INTO `tb_genre` VALUES (244, 11);
INSERT INTO `tb_genre` VALUES (245, 11);
INSERT INTO `tb_genre` VALUES (246, 11);
INSERT INTO `tb_genre` VALUES (247, 11);
INSERT INTO `tb_genre` VALUES (248, 11);
INSERT INTO `tb_genre` VALUES (249, 11);
INSERT INTO `tb_genre` VALUES (250, 11);
INSERT INTO `tb_genre` VALUES (251, 11);
INSERT INTO `tb_genre` VALUES (252, 11);
INSERT INTO `tb_genre` VALUES (253, 11);
INSERT INTO `tb_genre` VALUES (254, 11);
INSERT INTO `tb_genre` VALUES (255, 11);
INSERT INTO `tb_genre` VALUES (256, 11);
INSERT INTO `tb_genre` VALUES (257, 11);
INSERT INTO `tb_genre` VALUES (258, 11);
INSERT INTO `tb_genre` VALUES (259, 11);
INSERT INTO `tb_genre` VALUES (260, 11);
INSERT INTO `tb_genre` VALUES (261, 11);
INSERT INTO `tb_genre` VALUES (262, 11);
INSERT INTO `tb_genre` VALUES (263, 11);
INSERT INTO `tb_genre` VALUES (264, 11);
INSERT INTO `tb_genre` VALUES (265, 11);
INSERT INTO `tb_genre` VALUES (266, 11);
INSERT INTO `tb_genre` VALUES (280, 11);
INSERT INTO `tb_genre` VALUES (281, 11);
INSERT INTO `tb_genre` VALUES (283, 11);
INSERT INTO `tb_genre` VALUES (286, 11);
INSERT INTO `tb_genre` VALUES (287, 11);
INSERT INTO `tb_genre` VALUES (289, 11);
INSERT INTO `tb_genre` VALUES (290, 11);
INSERT INTO `tb_genre` VALUES (291, 11);
INSERT INTO `tb_genre` VALUES (301, 11);
INSERT INTO `tb_genre` VALUES (302, 11);
INSERT INTO `tb_genre` VALUES (303, 11);
INSERT INTO `tb_genre` VALUES (304, 11);
INSERT INTO `tb_genre` VALUES (305, 11);
INSERT INTO `tb_genre` VALUES (306, 11);
INSERT INTO `tb_genre` VALUES (307, 11);
INSERT INTO `tb_genre` VALUES (308, 11);
INSERT INTO `tb_genre` VALUES (310, 11);
INSERT INTO `tb_genre` VALUES (314, 11);
INSERT INTO `tb_genre` VALUES (316, 11);
INSERT INTO `tb_genre` VALUES (317, 11);
INSERT INTO `tb_genre` VALUES (318, 11);
INSERT INTO `tb_genre` VALUES (319, 11);
INSERT INTO `tb_genre` VALUES (320, 11);
INSERT INTO `tb_genre` VALUES (321, 11);
INSERT INTO `tb_genre` VALUES (322, 11);
INSERT INTO `tb_genre` VALUES (323, 11);
INSERT INTO `tb_genre` VALUES (324, 11);
INSERT INTO `tb_genre` VALUES (326, 11);
INSERT INTO `tb_genre` VALUES (327, 11);
INSERT INTO `tb_genre` VALUES (328, 11);
INSERT INTO `tb_genre` VALUES (329, 11);
INSERT INTO `tb_genre` VALUES (330, 11);
INSERT INTO `tb_genre` VALUES (331, 11);
INSERT INTO `tb_genre` VALUES (332, 11);
INSERT INTO `tb_genre` VALUES (333, 11);
INSERT INTO `tb_genre` VALUES (334, 11);
INSERT INTO `tb_genre` VALUES (335, 11);
INSERT INTO `tb_genre` VALUES (337, 11);
INSERT INTO `tb_genre` VALUES (338, 11);
INSERT INTO `tb_genre` VALUES (339, 11);
INSERT INTO `tb_genre` VALUES (340, 11);
INSERT INTO `tb_genre` VALUES (341, 11);
INSERT INTO `tb_genre` VALUES (342, 11);
INSERT INTO `tb_genre` VALUES (343, 11);
INSERT INTO `tb_genre` VALUES (344, 11);
INSERT INTO `tb_genre` VALUES (345, 11);
INSERT INTO `tb_genre` VALUES (346, 11);
INSERT INTO `tb_genre` VALUES (348, 11);
INSERT INTO `tb_genre` VALUES (349, 11);
INSERT INTO `tb_genre` VALUES (353, 11);
INSERT INTO `tb_genre` VALUES (358, 11);
INSERT INTO `tb_genre` VALUES (359, 11);
INSERT INTO `tb_genre` VALUES (360, 11);
INSERT INTO `tb_genre` VALUES (362, 11);
INSERT INTO `tb_genre` VALUES (369, 11);
INSERT INTO `tb_genre` VALUES (370, 11);
INSERT INTO `tb_genre` VALUES (371, 11);
INSERT INTO `tb_genre` VALUES (372, 11);
INSERT INTO `tb_genre` VALUES (373, 11);
INSERT INTO `tb_genre` VALUES (374, 11);
INSERT INTO `tb_genre` VALUES (375, 11);
INSERT INTO `tb_genre` VALUES (376, 11);
INSERT INTO `tb_genre` VALUES (377, 11);
INSERT INTO `tb_genre` VALUES (378, 11);
INSERT INTO `tb_genre` VALUES (379, 11);
INSERT INTO `tb_genre` VALUES (380, 11);
INSERT INTO `tb_genre` VALUES (381, 11);
INSERT INTO `tb_genre` VALUES (382, 11);
INSERT INTO `tb_genre` VALUES (383, 11);
INSERT INTO `tb_genre` VALUES (384, 11);
INSERT INTO `tb_genre` VALUES (385, 11);
INSERT INTO `tb_genre` VALUES (386, 11);
INSERT INTO `tb_genre` VALUES (387, 11);
INSERT INTO `tb_genre` VALUES (395, 11);
INSERT INTO `tb_genre` VALUES (402, 11);
INSERT INTO `tb_genre` VALUES (403, 11);
INSERT INTO `tb_genre` VALUES (404, 11);
INSERT INTO `tb_genre` VALUES (529, 11);
INSERT INTO `tb_genre` VALUES (56, 12);
INSERT INTO `tb_genre` VALUES (59, 12);
INSERT INTO `tb_genre` VALUES (63, 12);
INSERT INTO `tb_genre` VALUES (64, 12);
INSERT INTO `tb_genre` VALUES (69, 12);
INSERT INTO `tb_genre` VALUES (71, 12);
INSERT INTO `tb_genre` VALUES (74, 12);
INSERT INTO `tb_genre` VALUES (81, 12);
INSERT INTO `tb_genre` VALUES (83, 12);
INSERT INTO `tb_genre` VALUES (86, 12);
INSERT INTO `tb_genre` VALUES (94, 12);
INSERT INTO `tb_genre` VALUES (100, 12);
INSERT INTO `tb_genre` VALUES (153, 12);
INSERT INTO `tb_genre` VALUES (158, 12);
INSERT INTO `tb_genre` VALUES (159, 12);
INSERT INTO `tb_genre` VALUES (160, 12);
INSERT INTO `tb_genre` VALUES (175, 12);
INSERT INTO `tb_genre` VALUES (192, 12);
INSERT INTO `tb_genre` VALUES (198, 12);
INSERT INTO `tb_genre` VALUES (203, 12);
INSERT INTO `tb_genre` VALUES (204, 12);
INSERT INTO `tb_genre` VALUES (206, 12);
INSERT INTO `tb_genre` VALUES (208, 12);
INSERT INTO `tb_genre` VALUES (209, 12);
INSERT INTO `tb_genre` VALUES (210, 12);
INSERT INTO `tb_genre` VALUES (211, 12);
INSERT INTO `tb_genre` VALUES (212, 12);
INSERT INTO `tb_genre` VALUES (225, 12);
INSERT INTO `tb_genre` VALUES (267, 12);
INSERT INTO `tb_genre` VALUES (268, 12);
INSERT INTO `tb_genre` VALUES (269, 12);
INSERT INTO `tb_genre` VALUES (270, 12);
INSERT INTO `tb_genre` VALUES (275, 12);
INSERT INTO `tb_genre` VALUES (282, 12);
INSERT INTO `tb_genre` VALUES (284, 12);
INSERT INTO `tb_genre` VALUES (296, 12);
INSERT INTO `tb_genre` VALUES (297, 12);
INSERT INTO `tb_genre` VALUES (299, 12);
INSERT INTO `tb_genre` VALUES (301, 12);
INSERT INTO `tb_genre` VALUES (304, 12);
INSERT INTO `tb_genre` VALUES (309, 12);
INSERT INTO `tb_genre` VALUES (310, 12);
INSERT INTO `tb_genre` VALUES (334, 12);
INSERT INTO `tb_genre` VALUES (337, 12);
INSERT INTO `tb_genre` VALUES (345, 12);
INSERT INTO `tb_genre` VALUES (346, 12);
INSERT INTO `tb_genre` VALUES (347, 12);
INSERT INTO `tb_genre` VALUES (348, 12);
INSERT INTO `tb_genre` VALUES (349, 12);
INSERT INTO `tb_genre` VALUES (350, 12);
INSERT INTO `tb_genre` VALUES (351, 12);
INSERT INTO `tb_genre` VALUES (353, 12);
INSERT INTO `tb_genre` VALUES (354, 12);
INSERT INTO `tb_genre` VALUES (355, 12);
INSERT INTO `tb_genre` VALUES (356, 12);
INSERT INTO `tb_genre` VALUES (357, 12);
INSERT INTO `tb_genre` VALUES (358, 12);
INSERT INTO `tb_genre` VALUES (359, 12);
INSERT INTO `tb_genre` VALUES (360, 12);
INSERT INTO `tb_genre` VALUES (361, 12);
INSERT INTO `tb_genre` VALUES (362, 12);
INSERT INTO `tb_genre` VALUES (364, 12);
INSERT INTO `tb_genre` VALUES (365, 12);
INSERT INTO `tb_genre` VALUES (366, 12);
INSERT INTO `tb_genre` VALUES (367, 12);
INSERT INTO `tb_genre` VALUES (368, 12);
INSERT INTO `tb_genre` VALUES (370, 12);
INSERT INTO `tb_genre` VALUES (373, 12);
INSERT INTO `tb_genre` VALUES (378, 12);
INSERT INTO `tb_genre` VALUES (381, 12);
INSERT INTO `tb_genre` VALUES (384, 12);
INSERT INTO `tb_genre` VALUES (386, 12);
INSERT INTO `tb_genre` VALUES (392, 12);
INSERT INTO `tb_genre` VALUES (404, 12);
INSERT INTO `tb_genre` VALUES (415, 12);
INSERT INTO `tb_genre` VALUES (419, 12);
INSERT INTO `tb_genre` VALUES (421, 12);
INSERT INTO `tb_genre` VALUES (440, 12);
INSERT INTO `tb_genre` VALUES (441, 12);
INSERT INTO `tb_genre` VALUES (450, 12);
INSERT INTO `tb_genre` VALUES (464, 12);
INSERT INTO `tb_genre` VALUES (465, 12);
INSERT INTO `tb_genre` VALUES (43, 13);
INSERT INTO `tb_genre` VALUES (44, 13);
INSERT INTO `tb_genre` VALUES (45, 13);
INSERT INTO `tb_genre` VALUES (46, 13);
INSERT INTO `tb_genre` VALUES (47, 13);
INSERT INTO `tb_genre` VALUES (48, 13);
INSERT INTO `tb_genre` VALUES (49, 13);
INSERT INTO `tb_genre` VALUES (50, 13);
INSERT INTO `tb_genre` VALUES (51, 13);
INSERT INTO `tb_genre` VALUES (52, 13);
INSERT INTO `tb_genre` VALUES (53, 13);
INSERT INTO `tb_genre` VALUES (134, 13);
INSERT INTO `tb_genre` VALUES (139, 13);
INSERT INTO `tb_genre` VALUES (148, 13);
INSERT INTO `tb_genre` VALUES (426, 13);
INSERT INTO `tb_genre` VALUES (429, 13);
INSERT INTO `tb_genre` VALUES (449, 13);
INSERT INTO `tb_genre` VALUES (461, 13);
INSERT INTO `tb_genre` VALUES (496, 13);
INSERT INTO `tb_genre` VALUES (498, 13);
INSERT INTO `tb_genre` VALUES (6, 14);
INSERT INTO `tb_genre` VALUES (7, 14);
INSERT INTO `tb_genre` VALUES (8, 14);
INSERT INTO `tb_genre` VALUES (9, 14);
INSERT INTO `tb_genre` VALUES (10, 14);
INSERT INTO `tb_genre` VALUES (11, 14);
INSERT INTO `tb_genre` VALUES (12, 14);
INSERT INTO `tb_genre` VALUES (13, 14);
INSERT INTO `tb_genre` VALUES (14, 14);
INSERT INTO `tb_genre` VALUES (16, 14);
INSERT INTO `tb_genre` VALUES (18, 14);
INSERT INTO `tb_genre` VALUES (19, 14);
INSERT INTO `tb_genre` VALUES (20, 14);
INSERT INTO `tb_genre` VALUES (22, 14);
INSERT INTO `tb_genre` VALUES (31, 14);
INSERT INTO `tb_genre` VALUES (37, 14);
INSERT INTO `tb_genre` VALUES (38, 14);
INSERT INTO `tb_genre` VALUES (193, 14);
INSERT INTO `tb_genre` VALUES (200, 14);
INSERT INTO `tb_genre` VALUES (201, 14);
INSERT INTO `tb_genre` VALUES (202, 14);
INSERT INTO `tb_genre` VALUES (231, 14);
INSERT INTO `tb_genre` VALUES (233, 14);
INSERT INTO `tb_genre` VALUES (234, 14);
INSERT INTO `tb_genre` VALUES (235, 14);
INSERT INTO `tb_genre` VALUES (237, 14);
INSERT INTO `tb_genre` VALUES (238, 14);
INSERT INTO `tb_genre` VALUES (240, 14);
INSERT INTO `tb_genre` VALUES (244, 14);
INSERT INTO `tb_genre` VALUES (247, 14);
INSERT INTO `tb_genre` VALUES (249, 14);
INSERT INTO `tb_genre` VALUES (251, 14);
INSERT INTO `tb_genre` VALUES (254, 14);
INSERT INTO `tb_genre` VALUES (256, 14);
INSERT INTO `tb_genre` VALUES (258, 14);
INSERT INTO `tb_genre` VALUES (259, 14);
INSERT INTO `tb_genre` VALUES (260, 14);
INSERT INTO `tb_genre` VALUES (261, 14);
INSERT INTO `tb_genre` VALUES (262, 14);
INSERT INTO `tb_genre` VALUES (264, 14);
INSERT INTO `tb_genre` VALUES (265, 14);
INSERT INTO `tb_genre` VALUES (266, 14);
INSERT INTO `tb_genre` VALUES (352, 14);
INSERT INTO `tb_genre` VALUES (356, 14);
INSERT INTO `tb_genre` VALUES (361, 14);
INSERT INTO `tb_genre` VALUES (435, 14);
INSERT INTO `tb_genre` VALUES (454, 14);
INSERT INTO `tb_genre` VALUES (529, 14);
INSERT INTO `tb_genre` VALUES (5, 15);
INSERT INTO `tb_genre` VALUES (40, 15);
INSERT INTO `tb_genre` VALUES (54, 15);
INSERT INTO `tb_genre` VALUES (66, 15);
INSERT INTO `tb_genre` VALUES (67, 15);
INSERT INTO `tb_genre` VALUES (133, 15);
INSERT INTO `tb_genre` VALUES (274, 15);
INSERT INTO `tb_genre` VALUES (276, 15);
INSERT INTO `tb_genre` VALUES (388, 15);
INSERT INTO `tb_genre` VALUES (389, 15);
INSERT INTO `tb_genre` VALUES (411, 15);
INSERT INTO `tb_genre` VALUES (412, 15);
INSERT INTO `tb_genre` VALUES (413, 15);
INSERT INTO `tb_genre` VALUES (417, 15);
INSERT INTO `tb_genre` VALUES (418, 15);
INSERT INTO `tb_genre` VALUES (423, 15);
INSERT INTO `tb_genre` VALUES (425, 15);
INSERT INTO `tb_genre` VALUES (439, 15);
INSERT INTO `tb_genre` VALUES (458, 15);
INSERT INTO `tb_genre` VALUES (459, 15);
INSERT INTO `tb_genre` VALUES (460, 15);
INSERT INTO `tb_genre` VALUES (463, 15);
INSERT INTO `tb_genre` VALUES (486, 15);
INSERT INTO `tb_genre` VALUES (487, 15);
INSERT INTO `tb_genre` VALUES (491, 15);
INSERT INTO `tb_genre` VALUES (500, 15);
INSERT INTO `tb_genre` VALUES (299, 16);
INSERT INTO `tb_genre` VALUES (176, 17);
INSERT INTO `tb_genre` VALUES (177, 17);
INSERT INTO `tb_genre` VALUES (178, 17);
INSERT INTO `tb_genre` VALUES (179, 17);
INSERT INTO `tb_genre` VALUES (311, 17);
INSERT INTO `tb_genre` VALUES (312, 17);
INSERT INTO `tb_genre` VALUES (313, 17);
INSERT INTO `tb_genre` VALUES (422, 17);
INSERT INTO `tb_genre` VALUES (442, 17);
INSERT INTO `tb_genre` VALUES (443, 17);
INSERT INTO `tb_genre` VALUES (444, 17);
INSERT INTO `tb_genre` VALUES (445, 17);
INSERT INTO `tb_genre` VALUES (446, 17);
INSERT INTO `tb_genre` VALUES (447, 17);

-- ----------------------------
-- Table structure for tb_playlist
-- ----------------------------
DROP TABLE IF EXISTS `tb_playlist`;
CREATE TABLE `tb_playlist`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '歌单 id',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '歌单标题',
  `cover_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌单封面',
  `introduction` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '歌单简介',
  `style` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌单风格',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_playlist
-- ----------------------------
INSERT INTO `tb_playlist` VALUES (2, '朋克摇滚 | 简单直接的原始呐喊', 'http://localhost:9000/vibe-music-data/playlists/c2590654-e457-4ab8-b8cd-3d2af7eca80a-blob', '朋克起源于1960年代的车库摇滚,诞生于1970年代中后期,创作者因为拒绝1970年代主流摇滚的过度感知,转而制作短且快节奏的歌曲。', '朋克');
INSERT INTO `tb_playlist` VALUES (3, '经典回顾:怀旧粤语经典老歌', 'http://localhost:9000/vibe-music-data/playlists/efd336c0-8883-47ec-b38b-71cb92c6b0fa-blob', '那些辗转反侧的夜晚,粤语抒情歌陪我度过,它防佛有灵性,知晓你我心事,如一杯长岛冰茶让你我安睡,它更是有画面,往事...', '粤语流行');
INSERT INTO `tb_playlist` VALUES (4, '国风纯音乐精选集', 'http://localhost:9000/vibe-music-data/playlists/5b67d810-7e21-4064-86ae-a1760a3d674d-blob', '国风音乐精选集', '国风');
INSERT INTO `tb_playlist` VALUES (5, '【电子】节奏感电子音乐', 'http://localhost:9000/vibe-music-data/playlists/4b6d1894-4ccc-4d3c-97ed-aac14e88a608-blob', '各种风格都汇集在一起了,只挑精选,各种史诗级别的震撼你的心灵。', '电子');
INSERT INTO `tb_playlist` VALUES (6, 'Afro/Dancehall【非洲×牙买加狂热节拍】', 'http://localhost:9000/vibe-music-data/playlists/6a84926a-48af-4370-aaaa-bb52a8f539d4-blob', '往下翻翻有更多好听的音乐哦 有很多风格,都放在这个歌单里了 近几年收集的dancehall和afro的舞蹈音乐 持续更新中……', '非洲节拍');
INSERT INTO `tb_playlist` VALUES (7, '节奏控 | 嘻哈 说唱', 'http://localhost:9000/vibe-music-data/playlists/97dfcac8-504c-4f0d-930d-b80e41f25316-blob', 'Rap is a black slang word, which is equivalent to \"talking\". In Chinese, it means rap, which is a special form of singing with rhy...', '嘻哈说唱');
INSERT INTO `tb_playlist` VALUES (8, '【韩流】韩国流行热门歌曲', 'http://localhost:9000/vibe-music-data/playlists/022ae029-ba8e-4dab-b2fc-36a85c271512-blob', '韩国合唱团数不胜数 有些虽然解散 但仍给我们留下了很多美好回忆 有些刚刚出道 正向着“一位”努力前进 有些天团正站在世界的舞台 散发着无穷的魅力 不论你什么职业 任何年龄 不论你喜欢什么团队 深深地...', '韩国流行');
INSERT INTO `tb_playlist` VALUES (9, '世界级古典钢琴曲音乐珍藏', 'http://localhost:9000/vibe-music-data/playlists/6959d662-dc4b-4063-9df1-36ba0c19255a-blob', '钢琴,乐器之皇,钢琴文化发展至今,已经有不计其数的脍炙人口的钢琴曲流传下来,其中一些流传至今,仍是社会上流人士的...', '古典');
INSERT INTO `tb_playlist` VALUES (10, '欧美氛围R&B | 听节奏布鲁斯才是正经事', 'http://localhost:9000/vibe-music-data/playlists/8c74ab2f-9053-4ffc-b15a-169c2234d5a3-blob', '节奏布鲁斯(英语:Rhythm and Blues,简称:R&B或RnB,中国台湾、中国港澳、马新称作节奏蓝调 ),又称节奏怨曲。', '节奏布鲁斯');
INSERT INTO `tb_playlist` VALUES (11, '那些只听前奏就会上瘾的华语流行歌曲', 'http://localhost:9000/vibe-music-data/playlists/c2d1ebca-5af9-4d3f-947d-c67ce8193712-blob', '趁你现在还有时间 仅你自己最大的努力 努力做成你最想做的那件事 成为你最想成为的那种人 过着你最想过的那种生活 ', '华语流行');
INSERT INTO `tb_playlist` VALUES (12, '国风流行|路过山水千城,与古风相伴', 'http://localhost:9000/vibe-music-data/playlists/d1bfa550-8b71-4a52-a2fe-73cc416c08d7-blob', '古风音乐自诞生以来,其隽永的歌词、典雅的曲调被视为 21 世纪的一种新音乐风格,由此受到许多听众的喜爱。', '国风流行');
INSERT INTO `tb_playlist` VALUES (13, '摇滚专属 | 为你定制的摇滚必听曲', 'http://localhost:9000/vibe-music-data/playlists/cb6163c5-bc56-4ac3-819d-44ff1ba83ca5-blob', '经典 摇滚 另类 迷幻 独立 …… 热爱摇滚乐 离开世俗烦恼,在音乐中狂欢…… 生活中应该有音乐……', '摇滚');
INSERT INTO `tb_playlist` VALUES (14, '轻音乐|安静温柔|缓解压力|舒适睡眠', 'http://localhost:9000/vibe-music-data/playlists/04863936-7e68-477f-822f-544d07e32bea-blob', '*偏安静.治愈.温柔.伤感.孤独的轻音乐!很适合回忆! *愿这些旋律能治愈你! *早睡其实不会错过重要的消息哦! *', '轻音乐');
INSERT INTO `tb_playlist` VALUES (15, '『日本ACG/流行』感受日语音乐的魅力', 'http://localhost:9000/vibe-music-data/playlists/26a09113-1f0a-4fbe-a12a-96291c4dacf8-blob', '日本流行音乐精选集', '日本流行');
INSERT INTO `tb_playlist` VALUES (16, '原声带 精选', 'http://localhost:9000/vibe-music-data/playlists/c8c0e239-206d-43c9-818b-1f48e8f79cc6-blob', '原声带音乐精选集', '原声带');
INSERT INTO `tb_playlist` VALUES (17, '欧美乡村音乐[内心的净土]', 'http://localhost:9000/vibe-music-data/playlists/a3620a49-c07e-4d46-9cb5-ff0be30f9bba-blob', '古老的生命,比树龄更久远 比群山年轻 像和风一样慢慢生长 乡村路,带我回家 围绕着她的,是我所有记忆。', '乡村');
INSERT INTO `tb_playlist` VALUES (18, '「欧美流行」听完感觉人生都亮堂起来了', 'http://localhost:9000/vibe-music-data/playlists/f6010c21-a2c3-4c11-a24e-b82a3f3a36e3-blob', '旋律控,踩点,耳熟能详的你绝对听过的那些英文流行歌曲。', '欧美流行');

-- ----------------------------
-- Table structure for tb_playlist_binding
-- ----------------------------
DROP TABLE IF EXISTS `tb_playlist_binding`;
CREATE TABLE `tb_playlist_binding`  (
  `playlist_id` bigint(0) NOT NULL COMMENT '歌单 id',
  `song_id` bigint(0) NOT NULL COMMENT '歌曲 id',
  PRIMARY KEY (`playlist_id`, `song_id`) USING BTREE,
  INDEX `fk_playlist_binding_song_id`(`song_id`) USING BTREE,
  CONSTRAINT `fk_playlist_binding_playlist_id` FOREIGN KEY (`playlist_id`) REFERENCES `tb_playlist` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT,
  CONSTRAINT `fk_playlist_binding_song_id` FOREIGN KEY (`song_id`) REFERENCES `tb_song` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_playlist_binding
-- ----------------------------
INSERT INTO `tb_playlist_binding` VALUES (18, 2);
INSERT INTO `tb_playlist_binding` VALUES (18, 3);
INSERT INTO `tb_playlist_binding` VALUES (13, 4);
INSERT INTO `tb_playlist_binding` VALUES (18, 4);
INSERT INTO `tb_playlist_binding` VALUES (14, 5);
INSERT INTO `tb_playlist_binding` VALUES (10, 6);
INSERT INTO `tb_playlist_binding` VALUES (18, 6);
INSERT INTO `tb_playlist_binding` VALUES (10, 7);
INSERT INTO `tb_playlist_binding` VALUES (18, 7);
INSERT INTO `tb_playlist_binding` VALUES (10, 8);
INSERT INTO `tb_playlist_binding` VALUES (18, 8);
INSERT INTO `tb_playlist_binding` VALUES (10, 9);
INSERT INTO `tb_playlist_binding` VALUES (18, 9);
INSERT INTO `tb_playlist_binding` VALUES (10, 10);
INSERT INTO `tb_playlist_binding` VALUES (18, 10);
INSERT INTO `tb_playlist_binding` VALUES (10, 11);
INSERT INTO `tb_playlist_binding` VALUES (18, 11);
INSERT INTO `tb_playlist_binding` VALUES (10, 12);
INSERT INTO `tb_playlist_binding` VALUES (18, 12);
INSERT INTO `tb_playlist_binding` VALUES (10, 13);
INSERT INTO `tb_playlist_binding` VALUES (18, 13);
INSERT INTO `tb_playlist_binding` VALUES (10, 14);
INSERT INTO `tb_playlist_binding` VALUES (18, 14);
INSERT INTO `tb_playlist_binding` VALUES (18, 15);
INSERT INTO `tb_playlist_binding` VALUES (10, 16);
INSERT INTO `tb_playlist_binding` VALUES (18, 16);
INSERT INTO `tb_playlist_binding` VALUES (18, 17);
INSERT INTO `tb_playlist_binding` VALUES (10, 18);
INSERT INTO `tb_playlist_binding` VALUES (18, 18);
INSERT INTO `tb_playlist_binding` VALUES (10, 19);
INSERT INTO `tb_playlist_binding` VALUES (18, 19);
INSERT INTO `tb_playlist_binding` VALUES (10, 20);
INSERT INTO `tb_playlist_binding` VALUES (18, 20);
INSERT INTO `tb_playlist_binding` VALUES (18, 21);
INSERT INTO `tb_playlist_binding` VALUES (10, 22);
INSERT INTO `tb_playlist_binding` VALUES (18, 22);
INSERT INTO `tb_playlist_binding` VALUES (18, 23);
INSERT INTO `tb_playlist_binding` VALUES (18, 24);
INSERT INTO `tb_playlist_binding` VALUES (18, 25);
INSERT INTO `tb_playlist_binding` VALUES (18, 26);
INSERT INTO `tb_playlist_binding` VALUES (18, 27);
INSERT INTO `tb_playlist_binding` VALUES (18, 28);
INSERT INTO `tb_playlist_binding` VALUES (18, 29);
INSERT INTO `tb_playlist_binding` VALUES (18, 30);
INSERT INTO `tb_playlist_binding` VALUES (10, 31);
INSERT INTO `tb_playlist_binding` VALUES (18, 31);
INSERT INTO `tb_playlist_binding` VALUES (18, 32);
INSERT INTO `tb_playlist_binding` VALUES (18, 33);
INSERT INTO `tb_playlist_binding` VALUES (7, 34);
INSERT INTO `tb_playlist_binding` VALUES (18, 34);
INSERT INTO `tb_playlist_binding` VALUES (18, 35);
INSERT INTO `tb_playlist_binding` VALUES (18, 36);
INSERT INTO `tb_playlist_binding` VALUES (10, 37);
INSERT INTO `tb_playlist_binding` VALUES (18, 37);
INSERT INTO `tb_playlist_binding` VALUES (10, 38);
INSERT INTO `tb_playlist_binding` VALUES (18, 38);
INSERT INTO `tb_playlist_binding` VALUES (18, 39);
INSERT INTO `tb_playlist_binding` VALUES (14, 40);
INSERT INTO `tb_playlist_binding` VALUES (18, 41);
INSERT INTO `tb_playlist_binding` VALUES (16, 42);
INSERT INTO `tb_playlist_binding` VALUES (18, 42);
INSERT INTO `tb_playlist_binding` VALUES (3, 43);
INSERT INTO `tb_playlist_binding` VALUES (13, 43);
INSERT INTO `tb_playlist_binding` VALUES (3, 44);
INSERT INTO `tb_playlist_binding` VALUES (13, 44);
INSERT INTO `tb_playlist_binding` VALUES (3, 45);
INSERT INTO `tb_playlist_binding` VALUES (13, 45);
INSERT INTO `tb_playlist_binding` VALUES (3, 46);
INSERT INTO `tb_playlist_binding` VALUES (13, 46);
INSERT INTO `tb_playlist_binding` VALUES (3, 47);
INSERT INTO `tb_playlist_binding` VALUES (13, 47);
INSERT INTO `tb_playlist_binding` VALUES (3, 48);
INSERT INTO `tb_playlist_binding` VALUES (13, 48);
INSERT INTO `tb_playlist_binding` VALUES (3, 49);
INSERT INTO `tb_playlist_binding` VALUES (13, 49);
INSERT INTO `tb_playlist_binding` VALUES (3, 50);
INSERT INTO `tb_playlist_binding` VALUES (13, 50);
INSERT INTO `tb_playlist_binding` VALUES (3, 51);
INSERT INTO `tb_playlist_binding` VALUES (13, 51);
INSERT INTO `tb_playlist_binding` VALUES (3, 52);
INSERT INTO `tb_playlist_binding` VALUES (13, 52);
INSERT INTO `tb_playlist_binding` VALUES (3, 53);
INSERT INTO `tb_playlist_binding` VALUES (13, 53);
INSERT INTO `tb_playlist_binding` VALUES (14, 54);
INSERT INTO `tb_playlist_binding` VALUES (16, 54);
INSERT INTO `tb_playlist_binding` VALUES (18, 55);
INSERT INTO `tb_playlist_binding` VALUES (5, 56);
INSERT INTO `tb_playlist_binding` VALUES (18, 56);
INSERT INTO `tb_playlist_binding` VALUES (18, 57);
INSERT INTO `tb_playlist_binding` VALUES (18, 58);
INSERT INTO `tb_playlist_binding` VALUES (5, 59);
INSERT INTO `tb_playlist_binding` VALUES (18, 59);
INSERT INTO `tb_playlist_binding` VALUES (18, 60);
INSERT INTO `tb_playlist_binding` VALUES (18, 61);
INSERT INTO `tb_playlist_binding` VALUES (9, 62);
INSERT INTO `tb_playlist_binding` VALUES (5, 63);
INSERT INTO `tb_playlist_binding` VALUES (5, 64);
INSERT INTO `tb_playlist_binding` VALUES (17, 65);
INSERT INTO `tb_playlist_binding` VALUES (18, 65);
INSERT INTO `tb_playlist_binding` VALUES (14, 66);
INSERT INTO `tb_playlist_binding` VALUES (14, 67);
INSERT INTO `tb_playlist_binding` VALUES (15, 68);
INSERT INTO `tb_playlist_binding` VALUES (16, 68);
INSERT INTO `tb_playlist_binding` VALUES (5, 69);
INSERT INTO `tb_playlist_binding` VALUES (18, 70);
INSERT INTO `tb_playlist_binding` VALUES (5, 71);
INSERT INTO `tb_playlist_binding` VALUES (18, 71);
INSERT INTO `tb_playlist_binding` VALUES (18, 72);
INSERT INTO `tb_playlist_binding` VALUES (18, 73);
INSERT INTO `tb_playlist_binding` VALUES (5, 74);
INSERT INTO `tb_playlist_binding` VALUES (18, 75);
INSERT INTO `tb_playlist_binding` VALUES (18, 76);
INSERT INTO `tb_playlist_binding` VALUES (18, 77);
INSERT INTO `tb_playlist_binding` VALUES (18, 78);
INSERT INTO `tb_playlist_binding` VALUES (18, 79);
INSERT INTO `tb_playlist_binding` VALUES (18, 80);
INSERT INTO `tb_playlist_binding` VALUES (5, 81);
INSERT INTO `tb_playlist_binding` VALUES (18, 81);
INSERT INTO `tb_playlist_binding` VALUES (18, 82);
INSERT INTO `tb_playlist_binding` VALUES (5, 83);
INSERT INTO `tb_playlist_binding` VALUES (7, 83);
INSERT INTO `tb_playlist_binding` VALUES (13, 84);
INSERT INTO `tb_playlist_binding` VALUES (18, 84);
INSERT INTO `tb_playlist_binding` VALUES (18, 85);
INSERT INTO `tb_playlist_binding` VALUES (5, 86);
INSERT INTO `tb_playlist_binding` VALUES (18, 86);
INSERT INTO `tb_playlist_binding` VALUES (18, 87);
INSERT INTO `tb_playlist_binding` VALUES (18, 88);
INSERT INTO `tb_playlist_binding` VALUES (18, 89);
INSERT INTO `tb_playlist_binding` VALUES (16, 90);
INSERT INTO `tb_playlist_binding` VALUES (18, 90);
INSERT INTO `tb_playlist_binding` VALUES (18, 91);
INSERT INTO `tb_playlist_binding` VALUES (18, 92);
INSERT INTO `tb_playlist_binding` VALUES (18, 93);
INSERT INTO `tb_playlist_binding` VALUES (5, 94);
INSERT INTO `tb_playlist_binding` VALUES (18, 95);
INSERT INTO `tb_playlist_binding` VALUES (18, 96);
INSERT INTO `tb_playlist_binding` VALUES (18, 97);
INSERT INTO `tb_playlist_binding` VALUES (18, 98);
INSERT INTO `tb_playlist_binding` VALUES (18, 99);
INSERT INTO `tb_playlist_binding` VALUES (5, 100);
INSERT INTO `tb_playlist_binding` VALUES (18, 100);
INSERT INTO `tb_playlist_binding` VALUES (18, 101);
INSERT INTO `tb_playlist_binding` VALUES (18, 102);
INSERT INTO `tb_playlist_binding` VALUES (18, 103);
INSERT INTO `tb_playlist_binding` VALUES (18, 104);
INSERT INTO `tb_playlist_binding` VALUES (18, 105);
INSERT INTO `tb_playlist_binding` VALUES (18, 106);
INSERT INTO `tb_playlist_binding` VALUES (18, 107);
INSERT INTO `tb_playlist_binding` VALUES (18, 108);
INSERT INTO `tb_playlist_binding` VALUES (18, 109);
INSERT INTO `tb_playlist_binding` VALUES (18, 110);
INSERT INTO `tb_playlist_binding` VALUES (18, 111);
INSERT INTO `tb_playlist_binding` VALUES (18, 112);
INSERT INTO `tb_playlist_binding` VALUES (18, 113);
INSERT INTO `tb_playlist_binding` VALUES (18, 114);
INSERT INTO `tb_playlist_binding` VALUES (18, 115);
INSERT INTO `tb_playlist_binding` VALUES (18, 116);
INSERT INTO `tb_playlist_binding` VALUES (18, 117);
INSERT INTO `tb_playlist_binding` VALUES (18, 118);
INSERT INTO `tb_playlist_binding` VALUES (18, 119);
INSERT INTO `tb_playlist_binding` VALUES (18, 120);
INSERT INTO `tb_playlist_binding` VALUES (18, 121);
INSERT INTO `tb_playlist_binding` VALUES (18, 122);
INSERT INTO `tb_playlist_binding` VALUES (18, 123);
INSERT INTO `tb_playlist_binding` VALUES (7, 124);
INSERT INTO `tb_playlist_binding` VALUES (18, 124);
INSERT INTO `tb_playlist_binding` VALUES (18, 125);
INSERT INTO `tb_playlist_binding` VALUES (7, 126);
INSERT INTO `tb_playlist_binding` VALUES (18, 126);
INSERT INTO `tb_playlist_binding` VALUES (18, 127);
INSERT INTO `tb_playlist_binding` VALUES (18, 128);
INSERT INTO `tb_playlist_binding` VALUES (9, 129);
INSERT INTO `tb_playlist_binding` VALUES (18, 130);
INSERT INTO `tb_playlist_binding` VALUES (9, 132);
INSERT INTO `tb_playlist_binding` VALUES (14, 133);
INSERT INTO `tb_playlist_binding` VALUES (3, 134);
INSERT INTO `tb_playlist_binding` VALUES (11, 135);
INSERT INTO `tb_playlist_binding` VALUES (11, 136);
INSERT INTO `tb_playlist_binding` VALUES (11, 137);
INSERT INTO `tb_playlist_binding` VALUES (16, 137);
INSERT INTO `tb_playlist_binding` VALUES (11, 138);
INSERT INTO `tb_playlist_binding` VALUES (3, 139);
INSERT INTO `tb_playlist_binding` VALUES (13, 139);
INSERT INTO `tb_playlist_binding` VALUES (11, 140);
INSERT INTO `tb_playlist_binding` VALUES (11, 141);
INSERT INTO `tb_playlist_binding` VALUES (11, 142);
INSERT INTO `tb_playlist_binding` VALUES (11, 143);
INSERT INTO `tb_playlist_binding` VALUES (11, 144);
INSERT INTO `tb_playlist_binding` VALUES (11, 145);
INSERT INTO `tb_playlist_binding` VALUES (11, 146);
INSERT INTO `tb_playlist_binding` VALUES (11, 147);
INSERT INTO `tb_playlist_binding` VALUES (3, 148);
INSERT INTO `tb_playlist_binding` VALUES (9, 149);
INSERT INTO `tb_playlist_binding` VALUES (9, 150);
INSERT INTO `tb_playlist_binding` VALUES (9, 151);
INSERT INTO `tb_playlist_binding` VALUES (16, 151);
INSERT INTO `tb_playlist_binding` VALUES (18, 152);
INSERT INTO `tb_playlist_binding` VALUES (5, 153);
INSERT INTO `tb_playlist_binding` VALUES (18, 153);
INSERT INTO `tb_playlist_binding` VALUES (18, 154);
INSERT INTO `tb_playlist_binding` VALUES (18, 155);
INSERT INTO `tb_playlist_binding` VALUES (18, 156);
INSERT INTO `tb_playlist_binding` VALUES (18, 157);
INSERT INTO `tb_playlist_binding` VALUES (5, 158);
INSERT INTO `tb_playlist_binding` VALUES (18, 158);
INSERT INTO `tb_playlist_binding` VALUES (5, 159);
INSERT INTO `tb_playlist_binding` VALUES (18, 159);
INSERT INTO `tb_playlist_binding` VALUES (5, 160);
INSERT INTO `tb_playlist_binding` VALUES (18, 160);
INSERT INTO `tb_playlist_binding` VALUES (18, 161);
INSERT INTO `tb_playlist_binding` VALUES (18, 162);
INSERT INTO `tb_playlist_binding` VALUES (18, 163);
INSERT INTO `tb_playlist_binding` VALUES (18, 164);
INSERT INTO `tb_playlist_binding` VALUES (18, 165);
INSERT INTO `tb_playlist_binding` VALUES (18, 166);
INSERT INTO `tb_playlist_binding` VALUES (18, 167);
INSERT INTO `tb_playlist_binding` VALUES (9, 168);
INSERT INTO `tb_playlist_binding` VALUES (18, 169);
INSERT INTO `tb_playlist_binding` VALUES (13, 170);
INSERT INTO `tb_playlist_binding` VALUES (13, 171);
INSERT INTO `tb_playlist_binding` VALUES (13, 172);
INSERT INTO `tb_playlist_binding` VALUES (13, 173);
INSERT INTO `tb_playlist_binding` VALUES (7, 174);
INSERT INTO `tb_playlist_binding` VALUES (13, 174);
INSERT INTO `tb_playlist_binding` VALUES (5, 175);
INSERT INTO `tb_playlist_binding` VALUES (8, 176);
INSERT INTO `tb_playlist_binding` VALUES (8, 177);
INSERT INTO `tb_playlist_binding` VALUES (8, 178);
INSERT INTO `tb_playlist_binding` VALUES (8, 179);
INSERT INTO `tb_playlist_binding` VALUES (9, 180);
INSERT INTO `tb_playlist_binding` VALUES (7, 181);
INSERT INTO `tb_playlist_binding` VALUES (18, 181);
INSERT INTO `tb_playlist_binding` VALUES (18, 182);
INSERT INTO `tb_playlist_binding` VALUES (18, 183);
INSERT INTO `tb_playlist_binding` VALUES (18, 184);
INSERT INTO `tb_playlist_binding` VALUES (18, 185);
INSERT INTO `tb_playlist_binding` VALUES (18, 186);
INSERT INTO `tb_playlist_binding` VALUES (7, 187);
INSERT INTO `tb_playlist_binding` VALUES (18, 188);
INSERT INTO `tb_playlist_binding` VALUES (7, 189);
INSERT INTO `tb_playlist_binding` VALUES (18, 189);
INSERT INTO `tb_playlist_binding` VALUES (18, 190);
INSERT INTO `tb_playlist_binding` VALUES (18, 191);
INSERT INTO `tb_playlist_binding` VALUES (5, 192);
INSERT INTO `tb_playlist_binding` VALUES (18, 192);
INSERT INTO `tb_playlist_binding` VALUES (10, 193);
INSERT INTO `tb_playlist_binding` VALUES (18, 193);
INSERT INTO `tb_playlist_binding` VALUES (18, 194);
INSERT INTO `tb_playlist_binding` VALUES (7, 195);
INSERT INTO `tb_playlist_binding` VALUES (7, 196);
INSERT INTO `tb_playlist_binding` VALUES (18, 196);
INSERT INTO `tb_playlist_binding` VALUES (18, 197);
INSERT INTO `tb_playlist_binding` VALUES (5, 198);
INSERT INTO `tb_playlist_binding` VALUES (18, 199);
INSERT INTO `tb_playlist_binding` VALUES (10, 200);
INSERT INTO `tb_playlist_binding` VALUES (18, 200);
INSERT INTO `tb_playlist_binding` VALUES (10, 201);
INSERT INTO `tb_playlist_binding` VALUES (10, 202);
INSERT INTO `tb_playlist_binding` VALUES (18, 202);
INSERT INTO `tb_playlist_binding` VALUES (5, 203);
INSERT INTO `tb_playlist_binding` VALUES (5, 204);
INSERT INTO `tb_playlist_binding` VALUES (18, 205);
INSERT INTO `tb_playlist_binding` VALUES (5, 206);
INSERT INTO `tb_playlist_binding` VALUES (18, 207);
INSERT INTO `tb_playlist_binding` VALUES (5, 208);
INSERT INTO `tb_playlist_binding` VALUES (18, 208);
INSERT INTO `tb_playlist_binding` VALUES (5, 209);
INSERT INTO `tb_playlist_binding` VALUES (5, 210);
INSERT INTO `tb_playlist_binding` VALUES (18, 210);
INSERT INTO `tb_playlist_binding` VALUES (5, 211);
INSERT INTO `tb_playlist_binding` VALUES (18, 211);
INSERT INTO `tb_playlist_binding` VALUES (5, 212);
INSERT INTO `tb_playlist_binding` VALUES (18, 212);
INSERT INTO `tb_playlist_binding` VALUES (18, 213);
INSERT INTO `tb_playlist_binding` VALUES (18, 214);
INSERT INTO `tb_playlist_binding` VALUES (18, 215);
INSERT INTO `tb_playlist_binding` VALUES (18, 216);
INSERT INTO `tb_playlist_binding` VALUES (18, 217);
INSERT INTO `tb_playlist_binding` VALUES (18, 218);
INSERT INTO `tb_playlist_binding` VALUES (18, 219);
INSERT INTO `tb_playlist_binding` VALUES (16, 220);
INSERT INTO `tb_playlist_binding` VALUES (18, 220);
INSERT INTO `tb_playlist_binding` VALUES (18, 221);
INSERT INTO `tb_playlist_binding` VALUES (18, 222);
INSERT INTO `tb_playlist_binding` VALUES (18, 223);
INSERT INTO `tb_playlist_binding` VALUES (18, 224);
INSERT INTO `tb_playlist_binding` VALUES (5, 225);
INSERT INTO `tb_playlist_binding` VALUES (9, 226);
INSERT INTO `tb_playlist_binding` VALUES (9, 227);
INSERT INTO `tb_playlist_binding` VALUES (9, 228);
INSERT INTO `tb_playlist_binding` VALUES (9, 229);
INSERT INTO `tb_playlist_binding` VALUES (9, 230);
INSERT INTO `tb_playlist_binding` VALUES (10, 231);
INSERT INTO `tb_playlist_binding` VALUES (13, 231);
INSERT INTO `tb_playlist_binding` VALUES (18, 231);
INSERT INTO `tb_playlist_binding` VALUES (13, 232);
INSERT INTO `tb_playlist_binding` VALUES (18, 232);
INSERT INTO `tb_playlist_binding` VALUES (10, 233);
INSERT INTO `tb_playlist_binding` VALUES (13, 233);
INSERT INTO `tb_playlist_binding` VALUES (18, 233);
INSERT INTO `tb_playlist_binding` VALUES (10, 234);
INSERT INTO `tb_playlist_binding` VALUES (13, 234);
INSERT INTO `tb_playlist_binding` VALUES (18, 234);
INSERT INTO `tb_playlist_binding` VALUES (10, 235);
INSERT INTO `tb_playlist_binding` VALUES (13, 235);
INSERT INTO `tb_playlist_binding` VALUES (18, 235);
INSERT INTO `tb_playlist_binding` VALUES (13, 236);
INSERT INTO `tb_playlist_binding` VALUES (18, 236);
INSERT INTO `tb_playlist_binding` VALUES (10, 237);
INSERT INTO `tb_playlist_binding` VALUES (13, 237);
INSERT INTO `tb_playlist_binding` VALUES (18, 237);
INSERT INTO `tb_playlist_binding` VALUES (10, 238);
INSERT INTO `tb_playlist_binding` VALUES (13, 238);
INSERT INTO `tb_playlist_binding` VALUES (18, 238);
INSERT INTO `tb_playlist_binding` VALUES (13, 239);
INSERT INTO `tb_playlist_binding` VALUES (18, 239);
INSERT INTO `tb_playlist_binding` VALUES (10, 240);
INSERT INTO `tb_playlist_binding` VALUES (13, 240);
INSERT INTO `tb_playlist_binding` VALUES (18, 240);
INSERT INTO `tb_playlist_binding` VALUES (13, 241);
INSERT INTO `tb_playlist_binding` VALUES (18, 241);
INSERT INTO `tb_playlist_binding` VALUES (13, 242);
INSERT INTO `tb_playlist_binding` VALUES (18, 242);
INSERT INTO `tb_playlist_binding` VALUES (13, 243);
INSERT INTO `tb_playlist_binding` VALUES (18, 243);
INSERT INTO `tb_playlist_binding` VALUES (10, 244);
INSERT INTO `tb_playlist_binding` VALUES (13, 244);
INSERT INTO `tb_playlist_binding` VALUES (18, 244);
INSERT INTO `tb_playlist_binding` VALUES (13, 245);
INSERT INTO `tb_playlist_binding` VALUES (18, 245);
INSERT INTO `tb_playlist_binding` VALUES (13, 246);
INSERT INTO `tb_playlist_binding` VALUES (18, 246);
INSERT INTO `tb_playlist_binding` VALUES (10, 247);
INSERT INTO `tb_playlist_binding` VALUES (13, 247);
INSERT INTO `tb_playlist_binding` VALUES (18, 247);
INSERT INTO `tb_playlist_binding` VALUES (13, 248);
INSERT INTO `tb_playlist_binding` VALUES (18, 248);
INSERT INTO `tb_playlist_binding` VALUES (10, 249);
INSERT INTO `tb_playlist_binding` VALUES (13, 249);
INSERT INTO `tb_playlist_binding` VALUES (18, 249);
INSERT INTO `tb_playlist_binding` VALUES (13, 250);
INSERT INTO `tb_playlist_binding` VALUES (18, 250);
INSERT INTO `tb_playlist_binding` VALUES (10, 251);
INSERT INTO `tb_playlist_binding` VALUES (13, 251);
INSERT INTO `tb_playlist_binding` VALUES (18, 251);
INSERT INTO `tb_playlist_binding` VALUES (13, 252);
INSERT INTO `tb_playlist_binding` VALUES (18, 252);
INSERT INTO `tb_playlist_binding` VALUES (13, 253);
INSERT INTO `tb_playlist_binding` VALUES (18, 253);
INSERT INTO `tb_playlist_binding` VALUES (10, 254);
INSERT INTO `tb_playlist_binding` VALUES (13, 254);
INSERT INTO `tb_playlist_binding` VALUES (18, 254);
INSERT INTO `tb_playlist_binding` VALUES (13, 255);
INSERT INTO `tb_playlist_binding` VALUES (18, 255);
INSERT INTO `tb_playlist_binding` VALUES (10, 256);
INSERT INTO `tb_playlist_binding` VALUES (13, 256);
INSERT INTO `tb_playlist_binding` VALUES (18, 256);
INSERT INTO `tb_playlist_binding` VALUES (13, 257);
INSERT INTO `tb_playlist_binding` VALUES (18, 257);
INSERT INTO `tb_playlist_binding` VALUES (10, 258);
INSERT INTO `tb_playlist_binding` VALUES (13, 258);
INSERT INTO `tb_playlist_binding` VALUES (18, 258);
INSERT INTO `tb_playlist_binding` VALUES (10, 259);
INSERT INTO `tb_playlist_binding` VALUES (13, 259);
INSERT INTO `tb_playlist_binding` VALUES (18, 259);
INSERT INTO `tb_playlist_binding` VALUES (10, 260);
INSERT INTO `tb_playlist_binding` VALUES (13, 260);
INSERT INTO `tb_playlist_binding` VALUES (18, 260);
INSERT INTO `tb_playlist_binding` VALUES (10, 261);
INSERT INTO `tb_playlist_binding` VALUES (13, 261);
INSERT INTO `tb_playlist_binding` VALUES (18, 261);
INSERT INTO `tb_playlist_binding` VALUES (10, 262);
INSERT INTO `tb_playlist_binding` VALUES (13, 262);
INSERT INTO `tb_playlist_binding` VALUES (18, 262);
INSERT INTO `tb_playlist_binding` VALUES (13, 263);
INSERT INTO `tb_playlist_binding` VALUES (18, 263);
INSERT INTO `tb_playlist_binding` VALUES (10, 264);
INSERT INTO `tb_playlist_binding` VALUES (13, 264);
INSERT INTO `tb_playlist_binding` VALUES (18, 264);
INSERT INTO `tb_playlist_binding` VALUES (10, 265);
INSERT INTO `tb_playlist_binding` VALUES (13, 265);
INSERT INTO `tb_playlist_binding` VALUES (18, 265);
INSERT INTO `tb_playlist_binding` VALUES (10, 266);
INSERT INTO `tb_playlist_binding` VALUES (13, 266);
INSERT INTO `tb_playlist_binding` VALUES (18, 266);
INSERT INTO `tb_playlist_binding` VALUES (5, 267);
INSERT INTO `tb_playlist_binding` VALUES (5, 268);
INSERT INTO `tb_playlist_binding` VALUES (5, 269);
INSERT INTO `tb_playlist_binding` VALUES (5, 270);
INSERT INTO `tb_playlist_binding` VALUES (9, 271);
INSERT INTO `tb_playlist_binding` VALUES (9, 272);
INSERT INTO `tb_playlist_binding` VALUES (7, 273);
INSERT INTO `tb_playlist_binding` VALUES (16, 273);
INSERT INTO `tb_playlist_binding` VALUES (14, 274);
INSERT INTO `tb_playlist_binding` VALUES (5, 275);
INSERT INTO `tb_playlist_binding` VALUES (14, 276);
INSERT INTO `tb_playlist_binding` VALUES (9, 277);
INSERT INTO `tb_playlist_binding` VALUES (9, 278);
INSERT INTO `tb_playlist_binding` VALUES (13, 279);
INSERT INTO `tb_playlist_binding` VALUES (18, 280);
INSERT INTO `tb_playlist_binding` VALUES (18, 281);
INSERT INTO `tb_playlist_binding` VALUES (5, 282);
INSERT INTO `tb_playlist_binding` VALUES (13, 282);
INSERT INTO `tb_playlist_binding` VALUES (16, 283);
INSERT INTO `tb_playlist_binding` VALUES (18, 283);
INSERT INTO `tb_playlist_binding` VALUES (5, 284);
INSERT INTO `tb_playlist_binding` VALUES (13, 284);
INSERT INTO `tb_playlist_binding` VALUES (13, 285);
INSERT INTO `tb_playlist_binding` VALUES (13, 286);
INSERT INTO `tb_playlist_binding` VALUES (18, 286);
INSERT INTO `tb_playlist_binding` VALUES (18, 287);
INSERT INTO `tb_playlist_binding` VALUES (13, 288);
INSERT INTO `tb_playlist_binding` VALUES (18, 289);
INSERT INTO `tb_playlist_binding` VALUES (7, 290);
INSERT INTO `tb_playlist_binding` VALUES (18, 290);
INSERT INTO `tb_playlist_binding` VALUES (16, 291);
INSERT INTO `tb_playlist_binding` VALUES (18, 291);
INSERT INTO `tb_playlist_binding` VALUES (9, 292);
INSERT INTO `tb_playlist_binding` VALUES (9, 293);
INSERT INTO `tb_playlist_binding` VALUES (9, 294);
INSERT INTO `tb_playlist_binding` VALUES (9, 295);
INSERT INTO `tb_playlist_binding` VALUES (5, 296);
INSERT INTO `tb_playlist_binding` VALUES (5, 297);
INSERT INTO `tb_playlist_binding` VALUES (15, 298);
INSERT INTO `tb_playlist_binding` VALUES (16, 298);
INSERT INTO `tb_playlist_binding` VALUES (5, 299);
INSERT INTO `tb_playlist_binding` VALUES (6, 299);
INSERT INTO `tb_playlist_binding` VALUES (9, 300);
INSERT INTO `tb_playlist_binding` VALUES (16, 300);
INSERT INTO `tb_playlist_binding` VALUES (5, 301);
INSERT INTO `tb_playlist_binding` VALUES (18, 301);
INSERT INTO `tb_playlist_binding` VALUES (16, 302);
INSERT INTO `tb_playlist_binding` VALUES (18, 302);
INSERT INTO `tb_playlist_binding` VALUES (18, 303);
INSERT INTO `tb_playlist_binding` VALUES (5, 304);
INSERT INTO `tb_playlist_binding` VALUES (18, 304);
INSERT INTO `tb_playlist_binding` VALUES (18, 305);
INSERT INTO `tb_playlist_binding` VALUES (18, 306);
INSERT INTO `tb_playlist_binding` VALUES (18, 307);
INSERT INTO `tb_playlist_binding` VALUES (18, 308);
INSERT INTO `tb_playlist_binding` VALUES (5, 309);
INSERT INTO `tb_playlist_binding` VALUES (5, 310);
INSERT INTO `tb_playlist_binding` VALUES (18, 310);
INSERT INTO `tb_playlist_binding` VALUES (8, 311);
INSERT INTO `tb_playlist_binding` VALUES (8, 312);
INSERT INTO `tb_playlist_binding` VALUES (8, 313);
INSERT INTO `tb_playlist_binding` VALUES (18, 314);
INSERT INTO `tb_playlist_binding` VALUES (17, 315);
INSERT INTO `tb_playlist_binding` VALUES (18, 316);
INSERT INTO `tb_playlist_binding` VALUES (18, 317);
INSERT INTO `tb_playlist_binding` VALUES (18, 318);
INSERT INTO `tb_playlist_binding` VALUES (18, 319);
INSERT INTO `tb_playlist_binding` VALUES (18, 320);
INSERT INTO `tb_playlist_binding` VALUES (18, 321);
INSERT INTO `tb_playlist_binding` VALUES (18, 322);
INSERT INTO `tb_playlist_binding` VALUES (18, 323);
INSERT INTO `tb_playlist_binding` VALUES (18, 324);
INSERT INTO `tb_playlist_binding` VALUES (17, 325);
INSERT INTO `tb_playlist_binding` VALUES (18, 326);
INSERT INTO `tb_playlist_binding` VALUES (18, 327);
INSERT INTO `tb_playlist_binding` VALUES (18, 328);
INSERT INTO `tb_playlist_binding` VALUES (18, 329);
INSERT INTO `tb_playlist_binding` VALUES (18, 330);
INSERT INTO `tb_playlist_binding` VALUES (18, 331);
INSERT INTO `tb_playlist_binding` VALUES (17, 332);
INSERT INTO `tb_playlist_binding` VALUES (18, 332);
INSERT INTO `tb_playlist_binding` VALUES (18, 333);
INSERT INTO `tb_playlist_binding` VALUES (5, 334);
INSERT INTO `tb_playlist_binding` VALUES (18, 334);
INSERT INTO `tb_playlist_binding` VALUES (18, 335);
INSERT INTO `tb_playlist_binding` VALUES (17, 336);
INSERT INTO `tb_playlist_binding` VALUES (5, 337);
INSERT INTO `tb_playlist_binding` VALUES (18, 337);
INSERT INTO `tb_playlist_binding` VALUES (18, 338);
INSERT INTO `tb_playlist_binding` VALUES (18, 339);
INSERT INTO `tb_playlist_binding` VALUES (18, 340);
INSERT INTO `tb_playlist_binding` VALUES (18, 341);
INSERT INTO `tb_playlist_binding` VALUES (18, 342);
INSERT INTO `tb_playlist_binding` VALUES (17, 343);
INSERT INTO `tb_playlist_binding` VALUES (18, 343);
INSERT INTO `tb_playlist_binding` VALUES (18, 344);
INSERT INTO `tb_playlist_binding` VALUES (5, 345);
INSERT INTO `tb_playlist_binding` VALUES (18, 345);
INSERT INTO `tb_playlist_binding` VALUES (5, 346);
INSERT INTO `tb_playlist_binding` VALUES (18, 346);
INSERT INTO `tb_playlist_binding` VALUES (5, 347);
INSERT INTO `tb_playlist_binding` VALUES (5, 348);
INSERT INTO `tb_playlist_binding` VALUES (18, 348);
INSERT INTO `tb_playlist_binding` VALUES (5, 349);
INSERT INTO `tb_playlist_binding` VALUES (18, 349);
INSERT INTO `tb_playlist_binding` VALUES (5, 350);
INSERT INTO `tb_playlist_binding` VALUES (5, 351);
INSERT INTO `tb_playlist_binding` VALUES (10, 352);
INSERT INTO `tb_playlist_binding` VALUES (13, 352);
INSERT INTO `tb_playlist_binding` VALUES (5, 353);
INSERT INTO `tb_playlist_binding` VALUES (18, 353);
INSERT INTO `tb_playlist_binding` VALUES (5, 354);
INSERT INTO `tb_playlist_binding` VALUES (5, 355);
INSERT INTO `tb_playlist_binding` VALUES (5, 356);
INSERT INTO `tb_playlist_binding` VALUES (10, 356);
INSERT INTO `tb_playlist_binding` VALUES (5, 357);
INSERT INTO `tb_playlist_binding` VALUES (5, 358);
INSERT INTO `tb_playlist_binding` VALUES (18, 358);
INSERT INTO `tb_playlist_binding` VALUES (5, 359);
INSERT INTO `tb_playlist_binding` VALUES (18, 359);
INSERT INTO `tb_playlist_binding` VALUES (5, 360);
INSERT INTO `tb_playlist_binding` VALUES (18, 360);
INSERT INTO `tb_playlist_binding` VALUES (5, 361);
INSERT INTO `tb_playlist_binding` VALUES (10, 361);
INSERT INTO `tb_playlist_binding` VALUES (5, 362);
INSERT INTO `tb_playlist_binding` VALUES (18, 362);
INSERT INTO `tb_playlist_binding` VALUES (9, 363);
INSERT INTO `tb_playlist_binding` VALUES (16, 363);
INSERT INTO `tb_playlist_binding` VALUES (5, 364);
INSERT INTO `tb_playlist_binding` VALUES (5, 365);
INSERT INTO `tb_playlist_binding` VALUES (5, 366);
INSERT INTO `tb_playlist_binding` VALUES (5, 367);
INSERT INTO `tb_playlist_binding` VALUES (5, 368);
INSERT INTO `tb_playlist_binding` VALUES (18, 369);
INSERT INTO `tb_playlist_binding` VALUES (5, 370);
INSERT INTO `tb_playlist_binding` VALUES (18, 370);
INSERT INTO `tb_playlist_binding` VALUES (18, 371);
INSERT INTO `tb_playlist_binding` VALUES (18, 372);
INSERT INTO `tb_playlist_binding` VALUES (5, 373);
INSERT INTO `tb_playlist_binding` VALUES (18, 373);
INSERT INTO `tb_playlist_binding` VALUES (18, 374);
INSERT INTO `tb_playlist_binding` VALUES (18, 375);
INSERT INTO `tb_playlist_binding` VALUES (18, 376);
INSERT INTO `tb_playlist_binding` VALUES (18, 377);
INSERT INTO `tb_playlist_binding` VALUES (5, 378);
INSERT INTO `tb_playlist_binding` VALUES (18, 378);
INSERT INTO `tb_playlist_binding` VALUES (18, 379);
INSERT INTO `tb_playlist_binding` VALUES (18, 380);
INSERT INTO `tb_playlist_binding` VALUES (5, 381);
INSERT INTO `tb_playlist_binding` VALUES (18, 381);
INSERT INTO `tb_playlist_binding` VALUES (18, 382);
INSERT INTO `tb_playlist_binding` VALUES (18, 383);
INSERT INTO `tb_playlist_binding` VALUES (5, 384);
INSERT INTO `tb_playlist_binding` VALUES (18, 384);
INSERT INTO `tb_playlist_binding` VALUES (18, 385);
INSERT INTO `tb_playlist_binding` VALUES (5, 386);
INSERT INTO `tb_playlist_binding` VALUES (18, 386);
INSERT INTO `tb_playlist_binding` VALUES (18, 387);
INSERT INTO `tb_playlist_binding` VALUES (14, 388);
INSERT INTO `tb_playlist_binding` VALUES (16, 388);
INSERT INTO `tb_playlist_binding` VALUES (14, 389);
INSERT INTO `tb_playlist_binding` VALUES (16, 389);
INSERT INTO `tb_playlist_binding` VALUES (9, 390);
INSERT INTO `tb_playlist_binding` VALUES (9, 391);
INSERT INTO `tb_playlist_binding` VALUES (5, 392);
INSERT INTO `tb_playlist_binding` VALUES (9, 393);
INSERT INTO `tb_playlist_binding` VALUES (9, 394);
INSERT INTO `tb_playlist_binding` VALUES (18, 395);
INSERT INTO `tb_playlist_binding` VALUES (9, 396);
INSERT INTO `tb_playlist_binding` VALUES (9, 397);
INSERT INTO `tb_playlist_binding` VALUES (9, 398);
INSERT INTO `tb_playlist_binding` VALUES (9, 399);
INSERT INTO `tb_playlist_binding` VALUES (9, 400);
INSERT INTO `tb_playlist_binding` VALUES (9, 401);
INSERT INTO `tb_playlist_binding` VALUES (18, 402);
INSERT INTO `tb_playlist_binding` VALUES (18, 403);
INSERT INTO `tb_playlist_binding` VALUES (5, 404);
INSERT INTO `tb_playlist_binding` VALUES (18, 404);
INSERT INTO `tb_playlist_binding` VALUES (9, 405);
INSERT INTO `tb_playlist_binding` VALUES (9, 406);
INSERT INTO `tb_playlist_binding` VALUES (9, 407);
INSERT INTO `tb_playlist_binding` VALUES (9, 408);
INSERT INTO `tb_playlist_binding` VALUES (9, 409);
INSERT INTO `tb_playlist_binding` VALUES (11, 410);
INSERT INTO `tb_playlist_binding` VALUES (13, 410);
INSERT INTO `tb_playlist_binding` VALUES (4, 411);
INSERT INTO `tb_playlist_binding` VALUES (14, 411);
INSERT INTO `tb_playlist_binding` VALUES (4, 412);
INSERT INTO `tb_playlist_binding` VALUES (14, 412);
INSERT INTO `tb_playlist_binding` VALUES (14, 413);
INSERT INTO `tb_playlist_binding` VALUES (7, 414);
INSERT INTO `tb_playlist_binding` VALUES (4, 415);
INSERT INTO `tb_playlist_binding` VALUES (5, 415);
INSERT INTO `tb_playlist_binding` VALUES (9, 416);
INSERT INTO `tb_playlist_binding` VALUES (4, 417);
INSERT INTO `tb_playlist_binding` VALUES (14, 417);
INSERT INTO `tb_playlist_binding` VALUES (4, 418);
INSERT INTO `tb_playlist_binding` VALUES (14, 418);
INSERT INTO `tb_playlist_binding` VALUES (5, 419);
INSERT INTO `tb_playlist_binding` VALUES (9, 420);
INSERT INTO `tb_playlist_binding` VALUES (5, 421);
INSERT INTO `tb_playlist_binding` VALUES (8, 422);
INSERT INTO `tb_playlist_binding` VALUES (14, 423);
INSERT INTO `tb_playlist_binding` VALUES (9, 424);
INSERT INTO `tb_playlist_binding` VALUES (14, 425);
INSERT INTO `tb_playlist_binding` VALUES (3, 426);
INSERT INTO `tb_playlist_binding` VALUES (11, 427);
INSERT INTO `tb_playlist_binding` VALUES (11, 428);
INSERT INTO `tb_playlist_binding` VALUES (3, 429);
INSERT INTO `tb_playlist_binding` VALUES (13, 429);
INSERT INTO `tb_playlist_binding` VALUES (11, 430);
INSERT INTO `tb_playlist_binding` VALUES (16, 430);
INSERT INTO `tb_playlist_binding` VALUES (11, 431);
INSERT INTO `tb_playlist_binding` VALUES (11, 432);
INSERT INTO `tb_playlist_binding` VALUES (11, 433);
INSERT INTO `tb_playlist_binding` VALUES (11, 434);
INSERT INTO `tb_playlist_binding` VALUES (10, 435);
INSERT INTO `tb_playlist_binding` VALUES (11, 435);
INSERT INTO `tb_playlist_binding` VALUES (11, 436);
INSERT INTO `tb_playlist_binding` VALUES (11, 437);
INSERT INTO `tb_playlist_binding` VALUES (7, 438);
INSERT INTO `tb_playlist_binding` VALUES (4, 439);
INSERT INTO `tb_playlist_binding` VALUES (14, 439);
INSERT INTO `tb_playlist_binding` VALUES (16, 439);
INSERT INTO `tb_playlist_binding` VALUES (4, 440);
INSERT INTO `tb_playlist_binding` VALUES (5, 440);
INSERT INTO `tb_playlist_binding` VALUES (4, 441);
INSERT INTO `tb_playlist_binding` VALUES (5, 441);
INSERT INTO `tb_playlist_binding` VALUES (8, 442);
INSERT INTO `tb_playlist_binding` VALUES (8, 443);
INSERT INTO `tb_playlist_binding` VALUES (8, 444);
INSERT INTO `tb_playlist_binding` VALUES (8, 445);
INSERT INTO `tb_playlist_binding` VALUES (8, 446);
INSERT INTO `tb_playlist_binding` VALUES (8, 447);
INSERT INTO `tb_playlist_binding` VALUES (11, 448);
INSERT INTO `tb_playlist_binding` VALUES (16, 448);
INSERT INTO `tb_playlist_binding` VALUES (3, 449);
INSERT INTO `tb_playlist_binding` VALUES (11, 449);
INSERT INTO `tb_playlist_binding` VALUES (5, 450);
INSERT INTO `tb_playlist_binding` VALUES (11, 451);
INSERT INTO `tb_playlist_binding` VALUES (16, 451);
INSERT INTO `tb_playlist_binding` VALUES (11, 452);
INSERT INTO `tb_playlist_binding` VALUES (11, 453);
INSERT INTO `tb_playlist_binding` VALUES (10, 454);
INSERT INTO `tb_playlist_binding` VALUES (11, 454);
INSERT INTO `tb_playlist_binding` VALUES (12, 454);
INSERT INTO `tb_playlist_binding` VALUES (11, 455);
INSERT INTO `tb_playlist_binding` VALUES (16, 455);
INSERT INTO `tb_playlist_binding` VALUES (4, 456);
INSERT INTO `tb_playlist_binding` VALUES (11, 457);
INSERT INTO `tb_playlist_binding` VALUES (16, 457);
INSERT INTO `tb_playlist_binding` VALUES (4, 458);
INSERT INTO `tb_playlist_binding` VALUES (14, 458);
INSERT INTO `tb_playlist_binding` VALUES (14, 459);
INSERT INTO `tb_playlist_binding` VALUES (16, 459);
INSERT INTO `tb_playlist_binding` VALUES (14, 460);
INSERT INTO `tb_playlist_binding` VALUES (3, 461);
INSERT INTO `tb_playlist_binding` VALUES (11, 462);
INSERT INTO `tb_playlist_binding` VALUES (14, 463);
INSERT INTO `tb_playlist_binding` VALUES (16, 463);
INSERT INTO `tb_playlist_binding` VALUES (5, 464);
INSERT INTO `tb_playlist_binding` VALUES (5, 465);
INSERT INTO `tb_playlist_binding` VALUES (2, 466);
INSERT INTO `tb_playlist_binding` VALUES (11, 467);
INSERT INTO `tb_playlist_binding` VALUES (11, 468);
INSERT INTO `tb_playlist_binding` VALUES (11, 469);
INSERT INTO `tb_playlist_binding` VALUES (11, 470);
INSERT INTO `tb_playlist_binding` VALUES (11, 471);
INSERT INTO `tb_playlist_binding` VALUES (11, 472);
INSERT INTO `tb_playlist_binding` VALUES (11, 473);
INSERT INTO `tb_playlist_binding` VALUES (11, 474);
INSERT INTO `tb_playlist_binding` VALUES (11, 475);
INSERT INTO `tb_playlist_binding` VALUES (11, 476);
INSERT INTO `tb_playlist_binding` VALUES (11, 477);
INSERT INTO `tb_playlist_binding` VALUES (11, 478);
INSERT INTO `tb_playlist_binding` VALUES (11, 479);
INSERT INTO `tb_playlist_binding` VALUES (11, 480);
INSERT INTO `tb_playlist_binding` VALUES (11, 481);
INSERT INTO `tb_playlist_binding` VALUES (11, 482);
INSERT INTO `tb_playlist_binding` VALUES (11, 483);
INSERT INTO `tb_playlist_binding` VALUES (11, 484);
INSERT INTO `tb_playlist_binding` VALUES (11, 485);
INSERT INTO `tb_playlist_binding` VALUES (4, 486);
INSERT INTO `tb_playlist_binding` VALUES (14, 486);
INSERT INTO `tb_playlist_binding` VALUES (4, 487);
INSERT INTO `tb_playlist_binding` VALUES (14, 487);
INSERT INTO `tb_playlist_binding` VALUES (9, 488);
INSERT INTO `tb_playlist_binding` VALUES (11, 489);
INSERT INTO `tb_playlist_binding` VALUES (16, 489);
INSERT INTO `tb_playlist_binding` VALUES (13, 490);
INSERT INTO `tb_playlist_binding` VALUES (4, 491);
INSERT INTO `tb_playlist_binding` VALUES (14, 491);
INSERT INTO `tb_playlist_binding` VALUES (9, 492);
INSERT INTO `tb_playlist_binding` VALUES (11, 493);
INSERT INTO `tb_playlist_binding` VALUES (11, 494);
INSERT INTO `tb_playlist_binding` VALUES (11, 495);
INSERT INTO `tb_playlist_binding` VALUES (3, 496);
INSERT INTO `tb_playlist_binding` VALUES (11, 497);
INSERT INTO `tb_playlist_binding` VALUES (16, 497);
INSERT INTO `tb_playlist_binding` VALUES (3, 498);
INSERT INTO `tb_playlist_binding` VALUES (11, 499);
INSERT INTO `tb_playlist_binding` VALUES (4, 500);
INSERT INTO `tb_playlist_binding` VALUES (14, 500);
INSERT INTO `tb_playlist_binding` VALUES (16, 500);

-- ----------------------------
-- Table structure for tb_song
-- ----------------------------
DROP TABLE IF EXISTS `tb_song`;
CREATE TABLE `tb_song`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '歌曲 id',
  `artist_id` bigint(0) NOT NULL COMMENT '歌手 id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '歌名',
  `album` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '专辑',
  `lyric` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '歌词',
  `duration` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌曲时长',
  `style` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌曲风格',
  `cover_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌曲封面 url',
  `audio_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌曲 url',
  `release_time` date NOT NULL COMMENT '歌曲发行时间',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `fk_song_artist_id`(`artist_id`) USING BTREE,
  CONSTRAINT `fk_song_artist_id` FOREIGN KEY (`artist_id`) REFERENCES `tb_artist` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 535 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_song
-- ----------------------------
INSERT INTO `tb_song` VALUES (2, 107, 'Fool\'s Gold', 'LøVë', NULL, '196.98', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/645b6c4c-c53c-4bc7-9d68-aee20fde416f-blob', 'http://localhost:9000/vibe-music-data/songs/f9580a5c-39a6-4950-8bc0-18d8a8e3612c-Aaron Carter - Fool\'s Gold.mp3', '2017-02-10');
INSERT INTO `tb_song` VALUES (3, 107, 'Sooner Or Later', 'LøVë', NULL, '212.82', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e92dce27-c5f5-463b-bdc4-d6e864f09942-blob', 'http://localhost:9000/vibe-music-data/songs/e606cbc7-d919-42d1-90bb-56738b8208cf-Aaron Carter - Sooner Or Later.mp3', '2017-02-10');
INSERT INTO `tb_song` VALUES (4, 122, 'Lost Stars', 'V', NULL, '266.77', '欧美流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/642adf1e-458a-4033-af5e-a948ef2909f2-blob', 'http://localhost:9000/vibe-music-data/songs/219dadbf-7ac8-4978-8aff-4db87c256eab-Adam Levine - Lost Stars.mp3', '2014-09-02');
INSERT INTO `tb_song` VALUES (5, 28, '晴天的周末在去学校补课的路上遇见了喜欢的人', '致青春的你', NULL, '211.35', '轻音乐', 'http://localhost:9000/vibe-music-data/songCovers/e34d43df-1b6b-4f77-b2cc-9983a9af7d27-blob', 'http://localhost:9000/vibe-music-data/songs/6dfcad85-7ca3-43c1-8584-d12fd9f63e50-AniFace - 晴天的周末在去学校补课的路上遇见了喜欢的人.mp3', '2017-05-08');
INSERT INTO `tb_song` VALUES (6, 109, '34+35', 'Positions (Deluxe', NULL, '173.00', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/25e62a66-1355-464a-b3cb-6617005c0d24-Ariana Grande - 34+35.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (7, 109, '7 rings', '7 rings', NULL, '178.71', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/580e31fe-857a-4bb3-a0db-b2d520032d7b-blob', 'http://localhost:9000/vibe-music-data/songs/816993b4-25a1-48f1-aeec-b2132baab002-Ariana Grande - 7 rings.mp3', '2019-02-08');
INSERT INTO `tb_song` VALUES (8, 109, 'bad idea', 'thank u, next', NULL, '266.77', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/237599b5-f2c2-46b4-8147-af9abd6659ce-Ariana Grande - bad idea.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (9, 109, 'bloodline', 'thank u, next', NULL, '215.45', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/ea03aec0-3943-46af-a312-a17321a5f521-Ariana Grande - bloodline.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (10, 109, 'break up with your girlfriend, i\'m bored', 'thank u, next', NULL, '190.82', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/701134a4-d5b8-4cb4-bfea-fb7a6b2d618b-Ariana Grande - break up with your girlfriend, i\'m bored.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (11, 109, 'fake smile', 'thank u, next', NULL, '209.3', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/909b4d2c-a5a0-4602-be5f-68792e468879-Ariana Grande - fake smile.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (12, 109, 'ghostin', 'thank u, next', NULL, '270.88', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/afb52173-1a6f-44a9-882a-34708b1d52f6-Ariana Grande - ghostin.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (13, 109, 'imagine', 'thank u, next', NULL, '211.35', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/5a5a5718-6032-4756-8703-c0199dd2e4a8-Ariana Grande - imagine.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (14, 109, 'in my head', 'thank u, next', NULL, '221.61', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/45ec7898-146d-4d21-a566-ca4a855f7298-Ariana Grande - in my head.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (15, 109, 'just like magic', 'Positions (Deluxe', NULL, '149.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/c9e78725-9efa-40bb-947d-f542900bb441-Ariana Grande - just like magic.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (16, 109, 'love language', 'Positions (Deluxe', NULL, '179.00', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/e58a2e85-2944-4295-8eb0-db1008e4df2b-Ariana Grande - love language.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (17, 109, 'main thing', 'Positions (Deluxe', NULL, '129.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/8ed4815f-b7f0-418b-abc2-5d4dc94de89d-Ariana Grande - main thing.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (18, 109, 'make up', 'thank u, next', NULL, '139.5', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/a4ab20da-3348-438a-8f3f-b2c7bf5c6e79-Ariana Grande - make up.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (19, 109, 'my hair', 'Positions (Deluxe', NULL, '158.00', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/eb861061-5dea-4124-a4fa-01b63c3bc214-Ariana Grande - my hair.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (20, 109, 'NASA', 'thank u, next', NULL, '180.56', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/aa555772-550b-4ab2-9174-7e399e8c241b-Ariana Grande - NASA.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (21, 109, 'nasty', 'Positions (Deluxe', NULL, '200.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/ce2127e7-365d-40de-8343-9b91f8e57b34-Ariana Grande - nasty.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (22, 109, 'needy', 'thank u, next', NULL, '170.29', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/3ae58234-b896-4003-bb66-80415bc9d765-Ariana Grande - needy.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (23, 109, 'obvious', 'Positions (Deluxe', NULL, '146.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/218603eb-0c1e-4571-ad00-1d514b421446-Ariana Grande - obvious.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (24, 109, 'One Last Time', 'My Everything', NULL, '196.75', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/61b55c7c-e796-4151-adbe-3ae1c1cbc634-blob', 'http://localhost:9000/vibe-music-data/songs/611222cb-de59-4942-9441-62bee3159735-Ariana Grande - One Last Time.mp3', '2014-08-22');
INSERT INTO `tb_song` VALUES (25, 109, 'positions', 'Positions (Deluxe', NULL, '172.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/bc942828-a7ce-4b2d-bd30-cb17ce2b8f06-Ariana Grande - positions.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (26, 109, 'pov', 'Positions (Deluxe', NULL, '201.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/09e20e2f-336f-45bc-a3fb-10731707b42a-Ariana Grande - pov.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (27, 109, 'shut up', 'Positions (Deluxe', NULL, '157.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/ef2824c5-342c-4a62-819c-a494fd04878a-Ariana Grande - shut up.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (28, 109, 'six thirty', 'Positions (Deluxe', NULL, '183.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/948f4207-c30e-4bba-b621-0d4048bbf321-Ariana Grande - six thirty.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (29, 109, 'someone like u (interlude', 'Positions (Deluxe', NULL, '76.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/be0d9d2c-a5c1-497e-b187-5625d478d528-Ariana Grande - someone like u (interlude).mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (30, 109, 'test drive', 'Positions (Deluxe', NULL, '122.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/7cfccae0-7fa9-4d02-b311-363dbd8fcff1-Ariana Grande - test drive.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (31, 109, 'thank u, next', 'thank u, next', NULL, '207.24', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/4889a18e-11dd-48e1-880b-cfa2966155b7-blob', 'http://localhost:9000/vibe-music-data/songs/71a2baa7-9819-4cee-99c8-125dbf1f02a2-Ariana Grande - thank u, next.mp3', '2018-11-03');
INSERT INTO `tb_song` VALUES (32, 109, 'west side', 'Positions (Deluxe', NULL, '132.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/1799e29f-45a0-471f-a3ba-1481727376bd-Ariana Grande - west side.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (33, 109, 'worst behavior', 'Positions (Deluxe', NULL, '124.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/cc08889b-511e-40ec-a1d3-13dd08ebb665-Ariana Grande - worst behavior.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (34, 109, '7 rings (Remix', '7 rings (Remix', NULL, '178.5', '欧美流行,嘻哈说唱', 'http://localhost:9000/vibe-music-data/songCovers/678730aa-05c3-4850-99e0-d53f6d8a001c-blob', 'http://localhost:9000/vibe-music-data/songs/f6261168-3408-43c3-a28b-e46afe1e0291-Ariana Grande,2 Chainz - 7 rings (Remix).mp3', '2019-02-01');
INSERT INTO `tb_song` VALUES (35, 109, 'motive', 'Positions (Deluxe', NULL, '167.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/2bebdf46-3298-4a85-a690-bcb1b40f91ac-Ariana Grande,Doja Cat - motive.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (36, 109, '34+35 (Remix', 'Positions (Deluxe', NULL, '182.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/03e0dde2-244b-4839-9cb6-b1b42061d6de-Ariana Grande,Doja Cat,Megan Thee Stallion - 34+35 (Remix).mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (37, 109, 'Stuck with U', 'Stuck with U', NULL, '227.77', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/ed972843-6948-4375-a439-88765cb675b8-blob', 'http://localhost:9000/vibe-music-data/songs/bc7baedf-9ac4-4ca4-b45e-0466464f277b-Ariana Grande,Justin Bieber - Stuck with U.mp3', '2020-05-08');
INSERT INTO `tb_song` VALUES (38, 109, 'off the table', 'Positions (Deluxe', NULL, '239.00', '欧美流行,节奏布鲁斯', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/4d801bf6-5889-43c5-99e5-dfaf60f6a4d8-Ariana Grande,The Weeknd - off the table.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (39, 109, 'safety net', 'Positions (Deluxe', NULL, '208.00', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/1542b3ef-97c1-43bc-ba70-48c4fc68d717-blob', 'http://localhost:9000/vibe-music-data/songs/58671181-3637-4d87-ac34-5f387db01f2b-Ariana Grande,Ty Dolla $ign - safety net.mp3', '2021-02-19');
INSERT INTO `tb_song` VALUES (40, 7, 'A Woodland Night', 'Sunny Bay', NULL, '258.56', '轻音乐', 'http://localhost:9000/vibe-music-data/songCovers/af2c43f2-b393-4e13-bf36-88630a171f05-blob', 'http://localhost:9000/vibe-music-data/songs/1acae1a0-775a-4b55-a6ec-9f981fb7b1d6-Bandari - A Woodland Night.mp3', '2000-08-01');
INSERT INTO `tb_song` VALUES (41, 83, 'Ferrari', 'Expectations', NULL, '212.32', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/3fecfc9f-ebca-4db2-9531-ed5ab1f96080-blob', 'http://localhost:9000/vibe-music-data/songs/42b433e9-fb8e-421c-8a0f-0cf30d3267b9-Bebe Rexha - Ferrari.mp3', '2018-06-22');
INSERT INTO `tb_song` VALUES (42, 83, 'Girl in the Mirror', 'UglyDolls (Original Motion Picture Soundtrack', NULL, '157.97', '欧美流行,原声带', 'http://localhost:9000/vibe-music-data/songCovers/89311ed4-cffb-4d35-bb06-91274ba8a66e-blob', 'http://localhost:9000/vibe-music-data/songs/07934ac7-11ac-424e-a8bb-57404be5ea69-Bebe Rexha - Girl in the Mirror.mp3', '2019-04-26');
INSERT INTO `tb_song` VALUES (43, 38, 'Amani', 'Beyond 怀旧经典金曲 Vol. 1', NULL, '289.35', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/634d65e4-2035-4f73-9075-3dfe484f20cb-blob', 'http://localhost:9000/vibe-music-data/songs/06e3af1e-aa85-46d6-8cee-ed88d4ac3a01-Beyond - Amani.mp3', '2021-06-21');
INSERT INTO `tb_song` VALUES (44, 38, '不再犹豫', 'Beyond 怀旧经典金曲 Vol. 1', NULL, '254.46', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/634d65e4-2035-4f73-9075-3dfe484f20cb-blob', 'http://localhost:9000/vibe-music-data/songs/3e21bb10-b8b9-48c8-bece-6253ebe6e78b-Beyond - 不再犹豫.mp3', '2021-06-21');
INSERT INTO `tb_song` VALUES (45, 38, '交织千个心', 'Beyond 怀旧经典金曲 Vol. 2', NULL, '350.93', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/b08d2e0b-7a78-4847-b633-2bf334849f22-blob', 'http://localhost:9000/vibe-music-data/songs/ced71b85-a34c-4184-affb-928068d9ef18-Beyond - 交织千个心.mp3', '2021-06-30');
INSERT INTO `tb_song` VALUES (46, 38, '光辉岁月', 'Beyond 怀旧经典金曲 Vol. 1', NULL, '297.56', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/634d65e4-2035-4f73-9075-3dfe484f20cb-blob', 'http://localhost:9000/vibe-music-data/songs/64ae48fd-7115-4eca-85d5-075a749d87db-Beyond - 光辉岁月.mp3', '2021-06-21');
INSERT INTO `tb_song` VALUES (47, 38, '再见理想', 'Beyond 怀旧经典金曲 Vol. 1', NULL, '293.46', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/634d65e4-2035-4f73-9075-3dfe484f20cb-blob', 'http://localhost:9000/vibe-music-data/songs/442a496d-45f4-48bd-9107-a92a52b9c680-Beyond - 再见理想.mp3', '2021-06-21');
INSERT INTO `tb_song` VALUES (48, 38, '冷雨夜', 'Beyond 怀旧经典金曲 Vol. 2', NULL, '299.62', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/b08d2e0b-7a78-4847-b633-2bf334849f22-blob', 'http://localhost:9000/vibe-music-data/songs/535e1da7-c92d-4b95-ba20-7845e00fd9a8-Beyond - 冷雨夜.mp3', '2021-06-30');
INSERT INTO `tb_song` VALUES (49, 38, '喜欢你', 'Beyond 怀旧经典金曲 Vol. 2', NULL, '272.93', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/b08d2e0b-7a78-4847-b633-2bf334849f22-blob', 'http://localhost:9000/vibe-music-data/songs/f7980cae-9463-4667-b202-2898312a35f0-Beyond - 喜欢你.mp3', '2021-06-30');
INSERT INTO `tb_song` VALUES (50, 38, '旧日的足迹', 'Beyond 怀旧经典金曲 Vol. 1', NULL, '322.2', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/634d65e4-2035-4f73-9075-3dfe484f20cb-blob', 'http://localhost:9000/vibe-music-data/songs/d068a5cd-0426-43bd-ab65-ab007abcfe6a-Beyond - 旧日的足迹.mp3', '2021-06-21');
INSERT INTO `tb_song` VALUES (51, 38, '灰色轨迹', 'Beyond 怀旧经典金曲 Vol. 1', NULL, '326.3', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/634d65e4-2035-4f73-9075-3dfe484f20cb-blob', 'http://localhost:9000/vibe-music-data/songs/ba077079-fffb-41a1-beee-d0b00f4dc1b5-Beyond - 灰色轨迹.mp3', '2021-06-21');
INSERT INTO `tb_song` VALUES (52, 38, '真的爱你', 'Beyond 怀旧经典金曲 Vol. 2', NULL, '274.98', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/b08d2e0b-7a78-4847-b633-2bf334849f22-blob', 'http://localhost:9000/vibe-music-data/songs/067b13a2-a7c7-404e-b6e3-d5aac80910bf-Beyond - 真的爱你.mp3', '2021-06-30');
INSERT INTO `tb_song` VALUES (53, 38, '短暂的温柔', 'Beyond 怀旧经典金曲 Vol. 2', NULL, '209.3', '粤语流行,摇滚', 'http://localhost:9000/vibe-music-data/songCovers/b08d2e0b-7a78-4847-b633-2bf334849f22-blob', 'http://localhost:9000/vibe-music-data/songs/a27923a1-352a-4f9e-9dc8-82fe48173a5d-Beyond - 短暂的温柔.mp3', '2021-06-30');
INSERT INTO `tb_song` VALUES (54, 95, 'My Heart Will Go On (Titanic', 'Life is Beautiful', NULL, '266.77', '轻音乐,原声带', 'http://localhost:9000/vibe-music-data/songCovers/695301ac-97d2-4b6b-8477-7ec41795598c-blob', 'http://localhost:9000/vibe-music-data/songs/f244c97b-5de3-4bd5-8c13-e8dc6614ab12-Bronn Journey - My Heart Will Go On (Titanic).mp3', '2006-07-26');
INSERT INTO `tb_song` VALUES (55, 110, 'The Lazy Song', 'Doo-Wops & Hooligans', NULL, '195.93', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/07cdcfa8-643e-4eea-bb8b-52d1a9313d28-blob', 'http://localhost:9000/vibe-music-data/songs/1ff9a0e5-0bed-40ea-b05b-800b016866e4-Bruno Mars - The Lazy Song.mp3', '2010-05-11');
INSERT INTO `tb_song` VALUES (56, 67, 'One Kiss', 'Dua Lipa (Complete Edition', NULL, '213.4', '欧美流行,电子', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/014e51fd-b1af-4c07-b357-f9099dba068c-Calvin Harris,Dua Lipa - One Kiss.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (57, 15, '1999', '1999', NULL, '188.55', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/57e5f161-8e78-4125-9d0c-9b526f0138ee-blob', 'http://localhost:9000/vibe-music-data/songs/95565bcb-92cb-407b-953d-6e8ff78cacf9-Charli xcx,Troye Sivan - 1999.mp3', '2018-10-05');
INSERT INTO `tb_song` VALUES (58, 90, 'We Don\'t Talk Anymore', 'Nine Track Mind', NULL, '217.5', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ab3f4adc-a25d-45c3-86c4-e7156d671a09-blob', 'http://localhost:9000/vibe-music-data/songs/72edbbe0-ccb7-43c5-a469-b94bf0d84740-Charlie Puth,Selena Gomez - We Don\'t Talk Anymore.mp3', '2016-01-29');
INSERT INTO `tb_song` VALUES (59, 55, 'High', 'Under the Surface', NULL, '184.66', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/129e151a-32b1-4ef0-bc63-18cbcb7b0a0f-blob', 'http://localhost:9000/vibe-music-data/songs/b5d515a8-f2b4-475a-b310-9acdef2c6d9b-Christopher - High.mp3', '2019-02-22');
INSERT INTO `tb_song` VALUES (60, 55, 'Waterfall', 'Told You So', NULL, '188.77', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/04303f59-0599-4c33-a382-c3de7a4d7b7e-blob', 'http://localhost:9000/vibe-music-data/songs/5f982fba-481a-4678-a8f2-4340bb3c253c-Christopher - Waterfall.mp3', '2014-03-24');
INSERT INTO `tb_song` VALUES (61, 55, 'I Won\'t Let You Down', 'Closer', NULL, '219.56', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/b95de704-e06d-425d-987f-bfcee15f6506-blob', 'http://localhost:9000/vibe-music-data/songs/056c2faa-5939-40d4-a45a-07ddd115bf9f-Christopher,Bekuh Boom - I Won\'t Let You Down.mp3', '2016-04-15');
INSERT INTO `tb_song` VALUES (62, 77, '月光', '世界著名交响乐团演奏的古典音乐系列之二 世界著名婚礼音乐', NULL, '306.1', '古典', 'http://localhost:9000/vibe-music-data/songCovers/fd12511d-4390-4c15-9293-c09b01665a28-blob', 'http://localhost:9000/vibe-music-data/songs/a970cf19-a575-4415-9c38-d3a76f042bcf-Claude Debussy - 月光.mp3', '2005-01-01');
INSERT INTO `tb_song` VALUES (63, 116, 'Wavey', 'Wavey', NULL, '165.16', '电子', 'http://localhost:9000/vibe-music-data/songCovers/0dd2f6f8-eca5-438b-b1d0-27b11b0af368-blob', 'http://localhost:9000/vibe-music-data/songs/cda07e51-1e47-476a-a335-5e5c6d970ccd-CliQ,Alika - Wavey.mp3', '2017-11-03');
INSERT INTO `tb_song` VALUES (64, 56, 'Take me hand', 'WONDER Tourism', NULL, '260.27', '电子', 'http://localhost:9000/vibe-music-data/songCovers/b85e69f1-118e-446d-a4df-2b5b40ea685d-blob', 'http://localhost:9000/vibe-music-data/songs/96c6eaee-3734-429b-be8f-d671a05d3b85-DAISHI DANCE,Cécile Corbel - Take Me Hand.mp3', '2012-11-14');
INSERT INTO `tb_song` VALUES (65, 91, '10,000 Hours', '10,000 Hours', NULL, '165.81', '欧美流行,乡村', 'http://localhost:9000/vibe-music-data/songCovers/c6ec2e01-e321-42ee-b0fa-1162aac2074c-blob', 'http://localhost:9000/vibe-music-data/songs/02419e06-4e94-4d90-beb2-7d415e65e10d-Dan + Shay,Justin Bieber - 10,000 Hours.mp3', '2019-10-04');
INSERT INTO `tb_song` VALUES (66, 33, 'No Place I\'s Rather Be', 'Canoe Country', NULL, '392.66', '轻音乐', 'http://localhost:9000/vibe-music-data/songCovers/77a9cf00-fc18-4860-a4d7-8760016826b9-blob', 'http://localhost:9000/vibe-music-data/songs/8c64dbd5-a375-427c-8465-305650768227-Dan Gibson - No Place I\'s Rather Be.mp3', '2010-07-01');
INSERT INTO `tb_song` VALUES (67, 33, 'Seaside Retreat', 'Seaside Retreat', NULL, '449.46', '轻音乐', 'http://localhost:9000/vibe-music-data/songCovers/18fcfcf1-379f-425d-870f-e165405444f5-blob', 'http://localhost:9000/vibe-music-data/songs/b30d40d1-b948-4c8b-b7fc-9713cd3ddf86-Dan Gibson - Seaside Retreat.mp3', '2013-11-21');
INSERT INTO `tb_song` VALUES (68, 13, '打上花火', '打上花火', NULL, '2829.44', '日本流行,原声带', 'http://localhost:9000/vibe-music-data/songCovers/d4612954-4151-455e-8c36-55c27c66dabd-blob', 'http://localhost:9000/vibe-music-data/songs/76f858d5-bb71-454f-a58f-47ef32743ab5-Daoko,米津玄師 - 打上花火.mp3', '2017-08-16');
INSERT INTO `tb_song` VALUES (69, 119, 'Taki Taki', 'Taki Taki', NULL, '213.1', '电子', 'http://localhost:9000/vibe-music-data/songCovers/ee29c833-90eb-42b3-aa08-6d1e10ad3421-blob', 'http://localhost:9000/vibe-music-data/songs/7443d4e2-d9cc-4f25-86e3-4e150e7f3cf0-DJ Snake,Selena Gomez,Ozuna - Taki Taki.mp3', '2018-09-28');
INSERT INTO `tb_song` VALUES (70, 67, 'Bad Together', 'Dua Lipa (Complete Edition', NULL, '238.03', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/88d37233-67dc-4176-8f9f-3aad3276fc2f-Dua Lipa - Bad Together.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (71, 67, 'Be The One', 'Dua Lipa (Complete Edition', NULL, '203.14', '欧美流行,电子', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/6215b687-ab65-426a-bec7-ce44bd08ddd3-Dua Lipa - Be The One.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (72, 67, 'Begging', 'Dua Lipa (Complete Edition', NULL, '192.87', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/eb86546c-7250-423e-834b-d58c29474397-Dua Lipa - Begging.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (73, 67, 'Blow Your Mind (Mwah', 'Dua Lipa (Complete Edition', NULL, '178.5', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/4462c5f1-2c95-4fd7-a05a-e2477c1ca6f4-Dua Lipa - Blow Your Mind (Mwah).mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (74, 67, 'Don\'t Start Now', 'Don\'t Start Now', NULL, '182.19', '电子', 'http://localhost:9000/vibe-music-data/songCovers/682835cb-3a0f-456d-a30d-16283780d6e3-blob', 'http://localhost:9000/vibe-music-data/songs/660fa0c6-cb1f-46b6-beeb-0ceb13409fc9-Dua Lipa - Don\'t Start Now.mp3', '2019-10-31');
INSERT INTO `tb_song` VALUES (75, 67, 'Dreams', 'Dua Lipa (Complete Edition', NULL, '219.56', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/1cb0018e-5bb0-4073-b477-ae4b864facb1-Dua Lipa - Dreams.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (76, 67, 'Garden', 'Dua Lipa (Complete Edition', NULL, '227.77', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/72ee0de0-ec3a-4ca8-9b55-9b25b43ab98e-Dua Lipa - Garden.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (77, 67, 'Genesis', 'Dua Lipa (Complete Edition', NULL, '205.19', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/734fd592-610f-4620-9f15-3be7bbf21693-Dua Lipa - Genesis.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (78, 67, 'Homesick', 'Dua Lipa (Complete Edition', NULL, '229.82', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/5955cfb0-e150-4d32-86b4-a0833105e466-Dua Lipa - Homesick.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (79, 67, 'Hotter Than Hell', 'Dua Lipa (Complete Edition', NULL, '186.71', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/a1e6af3b-bdd8-4fdf-b405-7ea05ba635fc-Dua Lipa - Hotter Than Hell.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (80, 67, 'IDGAF', 'Dua Lipa (Complete Edition', NULL, '217.51', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/cd66e893-b075-46cd-9c58-e8c3c6e264f2-Dua Lipa - IDGAF.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (81, 67, 'Illusion', 'Illusion', NULL, '186.72', '欧美流行,电子', 'http://localhost:9000/vibe-music-data/songCovers/e631bfc7-6861-4f24-af41-2f3042c97929-blob', 'http://localhost:9000/vibe-music-data/songs/6d503fa4-fadd-43c5-bf2a-c906d13872f6-Dua Lipa - Illusion.mp3', '2024-04-11');
INSERT INTO `tb_song` VALUES (82, 67, 'Last Dance', 'Dua Lipa (Complete Edition', NULL, '227.77', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/a84b74a7-fdac-46c3-a259-9a4392a95d45-Dua Lipa - Last Dance.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (83, 67, 'Levitating', 'Future Nostalgia', NULL, '202.67', '电子,嘻哈说唱', 'http://localhost:9000/vibe-music-data/songCovers/b56f1c6a-9141-4029-aac6-2f6238d01ae1-blob', 'http://localhost:9000/vibe-music-data/songs/bc6d6460-2545-4096-bb98-bac783739bac-Dua Lipa - Levitating.mp3', '2020-03-27');
INSERT INTO `tb_song` VALUES (84, 67, 'New Love', 'Dua Lipa (Complete Edition', NULL, '270.88', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/e78d150c-45a1-49fa-a332-dd95a3d0b880-Dua Lipa - New Love.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (85, 67, 'New Rules (Live', 'Dua Lipa (Complete Edition', NULL, '274.98', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/79a627b8-5b38-41b0-9fad-ea010d1a7d05-Dua Lipa - New Rules (Live).mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (86, 67, 'New Rules', 'Dua Lipa (Complete Edition', NULL, '209.29', '欧美流行,电子', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/115708e8-464f-4b08-bf92-e957841431f3-Dua Lipa - New Rules.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (87, 67, 'No Goodbyes', 'Dua Lipa (Complete Edition', NULL, '215.45', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/0006e5e2-3614-47d5-a754-0d77ca6b9297-Dua Lipa - No Goodbyes.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (88, 67, 'Room For 2', 'Dua Lipa (Complete Edition', NULL, '207.24', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/4340a11a-1295-4fc5-8e74-bf2047b29f93-Dua Lipa - Room For 2.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (89, 67, 'Running', 'Dua Lipa (Complete Edition', NULL, '221.61', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/f4b5de57-ac14-404a-a993-df800c8213ae-Dua Lipa - Running.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (90, 67, 'Swan Song', 'Swan Song (From Alita: Battle Angel', NULL, '180.14', '欧美流行,原声带', 'http://localhost:9000/vibe-music-data/songCovers/1eca7535-22ed-44b9-b01e-57ca613443cd-blob', 'http://localhost:9000/vibe-music-data/songs/4bf909d5-5cf1-4c5a-9058-009228ea72e7-Dua Lipa - Swan Song.mp3', '2019-01-24');
INSERT INTO `tb_song` VALUES (91, 67, 'Thinking \'Bout You', 'Dua Lipa (Complete Edition', NULL, '172.34', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/98d671bb-59a2-401b-9f63-dde11d494d38-Dua Lipa - Thinking \'Bout You.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (92, 67, 'Want To', 'Dua Lipa (Complete Edition', NULL, '211.35', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/3d7b8bb5-4885-47fd-a6e1-6043f2d33b6a-Dua Lipa - Want To.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (93, 67, 'Kiss and Make Up', 'Dua Lipa (Complete Edition', NULL, '188.76', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/e599a028-2fde-4bc8-b631-b95dd4810347-Dua Lipa,BLACKPINK - Kiss and Make Up.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (94, 67, 'Scared to Be Lonely', 'Dua Lipa (Complete Edition', NULL, '221.61', '电子', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/357e1f11-fde3-4bfa-af45-f2f36cb41aea-Dua Lipa,Martin Garrix - Scared to Be Lonely.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (95, 67, 'Lost In Your Light', 'Dua Lipa (Complete Edition', NULL, '203.13', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/ba763d94-5668-462f-9490-f066f9fefb11-blob', 'http://localhost:9000/vibe-music-data/songs/ec92bc07-4533-4933-921b-6d8d627d904b-Dua Lipa,Miguel - Lost In Your Light.mp3', '2018-10-25');
INSERT INTO `tb_song` VALUES (96, 93, 'Afire Love', 'X (Deluxe Edition', NULL, '314.63', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/f6523218-578a-4f58-8536-df92a145dbe4-blob', 'http://localhost:9000/vibe-music-data/songs/dbd21a2a-fc46-46a8-9ec1-d645f3bd85b1-Ed Sheeran - Afire Love.mp3', '2014-06-20');
INSERT INTO `tb_song` VALUES (97, 93, 'All Of the Stars', 'X (Deluxe Edition', NULL, '237.43', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/f6523218-578a-4f58-8536-df92a145dbe4-blob', 'http://localhost:9000/vibe-music-data/songs/46cd6639-8598-4bd9-8651-cd97e4cd6e06-Ed Sheeran - All of the Stars.mp3', '2014-06-20');
INSERT INTO `tb_song` VALUES (98, 93, 'Barcelona', '÷ (Deluxe', NULL, '190.82', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/1ff9e7a3-7af9-4ad4-ad42-8c33a7b597ef-Ed Sheeran - Barcelona.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (99, 93, 'Bibia Be Ye Ye', '÷ (Deluxe', NULL, '176.45', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/3eb7b91e-c610-40b9-9f8e-7596723f58f6-Ed Sheeran - Bibia Be Ye Ye.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (100, 93, 'Bloodstream', 'X (Deluxe Edition', NULL, '300.59', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/f6523218-578a-4f58-8536-df92a145dbe4-blob', 'http://localhost:9000/vibe-music-data/songs/09aed4d8-311b-4825-b963-5c1f8116bf9b-Ed Sheeran - Bloodstream.mp3', '2014-06-20');
INSERT INTO `tb_song` VALUES (101, 93, 'Castle on the Hill', '÷ (Deluxe', NULL, '260.61', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/ff86670b-97de-48ef-a863-3c89a7c9e558-Ed Sheeran - Castle on the Hill.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (102, 93, 'Dive', '÷ (Deluxe', NULL, '238.03', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/60158ee3-b3d3-44d5-94d6-23e073d3c660-Ed Sheeran - Dive.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (103, 93, 'Don\'t', 'X (Deluxe Edition', NULL, '220.07', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/f6523218-578a-4f58-8536-df92a145dbe4-blob', 'http://localhost:9000/vibe-music-data/songs/19c48f74-87ba-4427-94e5-862d3cc168ef-Ed Sheeran - Don\'t.mp3', '2014-06-20');
INSERT INTO `tb_song` VALUES (104, 93, 'Eraser', '÷ (Deluxe', NULL, '227.77', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/90c7e93f-60a7-4a49-a4a6-5a8825bd5a36-Ed Sheeran - Eraser.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (105, 93, 'Even My Dad Does Sometimes', 'X (Deluxe Edition', NULL, '227.77', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/f6523218-578a-4f58-8536-df92a145dbe4-blob', 'http://localhost:9000/vibe-music-data/songs/be905901-c005-41ed-9d79-108dc3355b31-Ed Sheeran - Even My Dad Does Sometimes.mp3', '2014-06-20');
INSERT INTO `tb_song` VALUES (106, 93, 'Galway Girl', '÷ (Deluxe', NULL, '170.29', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/b7ba5e1d-3f6f-484f-9239-abd216f95491-Ed Sheeran - Galway Girl.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (107, 93, 'Happier', '÷ (Deluxe', NULL, '207.24', '欧美流行', 'http://localhost:9000/vibe-music-data/songCovers/e8bd4886-df06-402a-8104-7e8905e9100e-blob', 'http://localhost:9000/vibe-music-data/songs/0937bfc4-f958-45d7-89d2-148849c6527d-Ed Sheeran - Happier.mp3', '2017-03-03');
INSERT INTO `tb_song` VALUES (108, 93, 'Hearts Don\'t Break Around Here', '÷ (Deluxe', NULL, '248.3', '欧美流行', 'h
Download .txt
gitextract_iwruxmra/

├── .gitattributes
├── .gitignore
├── .mvn/
│   └── wrapper/
│       └── maven-wrapper.properties
├── LICENSE
├── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── sql/
│   └── vibe_music.sql
└── src/
    ├── main/
    │   ├── java/
    │   │   └── cn/
    │   │       └── edu/
    │   │           └── seig/
    │   │               └── vibemusic/
    │   │                   ├── VibeMusicServerApplication.java
    │   │                   ├── config/
    │   │                   │   ├── CorsConfig.java
    │   │                   │   ├── MinioConfig.java
    │   │                   │   ├── MyBatisPlusConfig.java
    │   │                   │   ├── RedisConfig.java
    │   │                   │   ├── RolePathPermissionsConfig.java
    │   │                   │   ├── RolePermissionManager.java
    │   │                   │   └── WebConfig.java
    │   │                   ├── constant/
    │   │                   │   ├── JwtClaimsConstant.java
    │   │                   │   ├── MessageConstant.java
    │   │                   │   └── PathConstant.java
    │   │                   ├── controller/
    │   │                   │   ├── AdminController.java
    │   │                   │   ├── ArtistController.java
    │   │                   │   ├── BannerController.java
    │   │                   │   ├── CommentController.java
    │   │                   │   ├── FeedbackController.java
    │   │                   │   ├── GenreController.java
    │   │                   │   ├── PlaylistBindingController.java
    │   │                   │   ├── PlaylistController.java
    │   │                   │   ├── SongController.java
    │   │                   │   ├── StyleController.java
    │   │                   │   ├── UserController.java
    │   │                   │   └── UserFavoriteController.java
    │   │                   ├── enumeration/
    │   │                   │   ├── BannerStatusEnum.java
    │   │                   │   ├── CommentTypeEnum.java
    │   │                   │   ├── FavoriteTypeEnum.java
    │   │                   │   ├── LikeStatusEnum.java
    │   │                   │   ├── RoleEnum.java
    │   │                   │   └── UserStatusEnum.java
    │   │                   ├── handler/
    │   │                   │   └── GlobalExceptionHandler.java
    │   │                   ├── interceptor/
    │   │                   │   └── LoginInterceptor.java
    │   │                   ├── mapper/
    │   │                   │   ├── AdminMapper.java
    │   │                   │   ├── ArtistMapper.java
    │   │                   │   ├── BannerMapper.java
    │   │                   │   ├── CommentMapper.java
    │   │                   │   ├── FeedbackMapper.java
    │   │                   │   ├── GenreMapper.java
    │   │                   │   ├── PlaylistBindingMapper.java
    │   │                   │   ├── PlaylistMapper.java
    │   │                   │   ├── SongMapper.java
    │   │                   │   ├── StyleMapper.java
    │   │                   │   ├── UserFavoriteMapper.java
    │   │                   │   └── UserMapper.java
    │   │                   ├── model/
    │   │                   │   ├── dto/
    │   │                   │   │   ├── AdminDTO.java
    │   │                   │   │   ├── ArtistAddDTO.java
    │   │                   │   │   ├── ArtistDTO.java
    │   │                   │   │   ├── ArtistUpdateDTO.java
    │   │                   │   │   ├── BannerDTO.java
    │   │                   │   │   ├── CommentPlaylistDTO.java
    │   │                   │   │   ├── CommentSongDTO.java
    │   │                   │   │   ├── FeedbackDTO.java
    │   │                   │   │   ├── PlaylistAddDTO.java
    │   │                   │   │   ├── PlaylistDTO.java
    │   │                   │   │   ├── PlaylistUpdateDTO.java
    │   │                   │   │   ├── SongAddDTO.java
    │   │                   │   │   ├── SongAndArtistDTO.java
    │   │                   │   │   ├── SongDTO.java
    │   │                   │   │   ├── SongUpdateDTO.java
    │   │                   │   │   ├── UserAddDTO.java
    │   │                   │   │   ├── UserDTO.java
    │   │                   │   │   ├── UserLoginDTO.java
    │   │                   │   │   ├── UserPasswordDTO.java
    │   │                   │   │   ├── UserRegisterDTO.java
    │   │                   │   │   ├── UserResetPasswordDTO.java
    │   │                   │   │   └── UserSearchDTO.java
    │   │                   │   ├── entity/
    │   │                   │   │   ├── Admin.java
    │   │                   │   │   ├── Artist.java
    │   │                   │   │   ├── Banner.java
    │   │                   │   │   ├── Comment.java
    │   │                   │   │   ├── Feedback.java
    │   │                   │   │   ├── Genre.java
    │   │                   │   │   ├── Playlist.java
    │   │                   │   │   ├── PlaylistBinding.java
    │   │                   │   │   ├── Song.java
    │   │                   │   │   ├── Style.java
    │   │                   │   │   ├── User.java
    │   │                   │   │   └── UserFavorite.java
    │   │                   │   └── vo/
    │   │                   │       ├── ArtistDetailVO.java
    │   │                   │       ├── ArtistNameVO.java
    │   │                   │       ├── ArtistVO.java
    │   │                   │       ├── BannerVO.java
    │   │                   │       ├── CommentVO.java
    │   │                   │       ├── PlaylistDetailVO.java
    │   │                   │       ├── PlaylistVO.java
    │   │                   │       ├── SongAdminVO.java
    │   │                   │       ├── SongDetailVO.java
    │   │                   │       ├── SongVO.java
    │   │                   │       ├── UserManagementVO.java
    │   │                   │       └── UserVO.java
    │   │                   ├── result/
    │   │                   │   ├── PageResult.java
    │   │                   │   └── Result.java
    │   │                   ├── service/
    │   │                   │   ├── EmailService.java
    │   │                   │   ├── IAdminService.java
    │   │                   │   ├── IArtistService.java
    │   │                   │   ├── IBannerService.java
    │   │                   │   ├── ICommentService.java
    │   │                   │   ├── IFeedbackService.java
    │   │                   │   ├── IGenreService.java
    │   │                   │   ├── IPlaylistBindingService.java
    │   │                   │   ├── IPlaylistService.java
    │   │                   │   ├── ISongService.java
    │   │                   │   ├── IStyleService.java
    │   │                   │   ├── IUserFavoriteService.java
    │   │                   │   ├── IUserService.java
    │   │                   │   ├── MinioService.java
    │   │                   │   └── impl/
    │   │                   │       ├── AdminServiceImpl.java
    │   │                   │       ├── ArtistServiceImpl.java
    │   │                   │       ├── BannerServiceImpl.java
    │   │                   │       ├── CommentServiceImpl.java
    │   │                   │       ├── EmailServiceImpl.java
    │   │                   │       ├── FeedbackServiceImpl.java
    │   │                   │       ├── GenreServiceImpl.java
    │   │                   │       ├── MinioServiceImpl.java
    │   │                   │       ├── PlaylistBindingServiceImpl.java
    │   │                   │       ├── PlaylistServiceImpl.java
    │   │                   │       ├── SongServiceImpl.java
    │   │                   │       ├── StyleServiceImpl.java
    │   │                   │       ├── UserFavoriteServiceImpl.java
    │   │                   │       └── UserServiceImpl.java
    │   │                   └── util/
    │   │                       ├── BindingResultUtil.java
    │   │                       ├── JwtUtil.java
    │   │                       ├── RandomCodeUtil.java
    │   │                       ├── ThreadLocalUtil.java
    │   │                       └── TypeConversionUtil.java
    │   └── resources/
    │       ├── application.yml
    │       └── mapper/
    │           ├── AdminMapper.xml
    │           ├── ArtistMapper.xml
    │           ├── BannerMapper.xml
    │           ├── CommentMapper.xml
    │           ├── FeedbackMapper.xml
    │           ├── GenreMapper.xml
    │           ├── PlaylistBindingMapper.xml
    │           ├── PlaylistMapper.xml
    │           ├── SongMapper.xml
    │           ├── StyleMapper.xml
    │           ├── UserFavoriteMapper.xml
    │           └── UserMapper.xml
    └── test/
        └── java/
            └── cn/
                └── edu/
                    └── seig/
                        └── vibemusic/
                            ├── RedisConnectionTest.java
                            └── VibeMusicServerApplicationTests.java
Download .txt
SYMBOL INDEX (419 symbols across 127 files)

FILE: sql/vibe_music.sql
  type `tb_admin` (line 24) | CREATE TABLE `tb_admin`  (
  type `tb_artist` (line 120) | CREATE TABLE `tb_artist`  (

FILE: src/main/java/cn/edu/seig/vibemusic/VibeMusicServerApplication.java
  class VibeMusicServerApplication (line 7) | @EnableCaching   // 开启Spring Boot基于注解的缓存管理支持
    method main (line 11) | public static void main(String[] args) {

FILE: src/main/java/cn/edu/seig/vibemusic/config/CorsConfig.java
  class CorsConfig (line 9) | @Configuration
    method corsConfigurer (line 11) | @Bean

FILE: src/main/java/cn/edu/seig/vibemusic/config/MinioConfig.java
  class MinioConfig (line 8) | @Configuration
    method minioClient (line 20) | @Bean

FILE: src/main/java/cn/edu/seig/vibemusic/config/MyBatisPlusConfig.java
  class MyBatisPlusConfig (line 10) | @Configuration
    method mybatisPlusInterceptor (line 14) | @Bean

FILE: src/main/java/cn/edu/seig/vibemusic/config/RedisConfig.java
  class RedisConfig (line 22) | @Configuration
    method jackson2JsonRedisSerializer (line 28) | private Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerialize...
    method redisTemplate (line 40) | @Bean
    method cacheManager (line 52) | @Bean

FILE: src/main/java/cn/edu/seig/vibemusic/config/RolePathPermissionsConfig.java
  class RolePathPermissionsConfig (line 9) | @Component
    method getPermissions (line 15) | public Map<String, List<String>> getPermissions() {
    method setPermissions (line 19) | public void setPermissions(Map<String, List<String>> permissions) {

FILE: src/main/java/cn/edu/seig/vibemusic/config/RolePermissionManager.java
  class RolePermissionManager (line 12) | @Component
    method RolePermissionManager (line 17) | @Autowired
    method hasPermission (line 23) | public boolean hasPermission(String role, String requestURI) {

FILE: src/main/java/cn/edu/seig/vibemusic/config/WebConfig.java
  class WebConfig (line 9) | @Configuration
    method addInterceptors (line 15) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/constant/JwtClaimsConstant.java
  class JwtClaimsConstant (line 6) | public class JwtClaimsConstant {

FILE: src/main/java/cn/edu/seig/vibemusic/constant/MessageConstant.java
  class MessageConstant (line 6) | public class MessageConstant {

FILE: src/main/java/cn/edu/seig/vibemusic/constant/PathConstant.java
  class PathConstant (line 3) | public class PathConstant {

FILE: src/main/java/cn/edu/seig/vibemusic/controller/AdminController.java
  class AdminController (line 31) | @RestController
    method register (line 55) | @PostMapping("/register")
    method login (line 73) | @PostMapping("/login")
    method logout (line 90) | @PostMapping("/logout")
    method getAllUsersCount (line 102) | @GetMapping("/getAllUsersCount")
    method getAllUsers (line 113) | @PostMapping("/getAllUsers")
    method addUser (line 124) | @PostMapping("/addUser")
    method updateUser (line 141) | @PutMapping("/updateUser")
    method updateUserStatus (line 159) | @PatchMapping("/updateUserStatus/{id}/{status}")
    method deleteUser (line 170) | @DeleteMapping("/deleteUser/{id}")
    method deleteUsers (line 181) | @DeleteMapping("/deleteUsers")
    method getAllArtistsCount (line 195) | @GetMapping("/getAllArtistsCount")
    method getAllArtists (line 206) | @PostMapping("/getAllArtists")
    method addArtist (line 217) | @PostMapping("/addArtist")
    method updateArtist (line 228) | @PutMapping("/updateArtist")
    method updateArtistAvatar (line 240) | @PatchMapping("/updateArtistAvatar/{id}")
    method deleteArtist (line 252) | @DeleteMapping("/deleteArtist/{id}")
    method deleteArtists (line 263) | @DeleteMapping("/deleteArtists")
    method getAllSongsCount (line 276) | @GetMapping("/getAllSongsCount")
    method getAllArtistNames (line 286) | @GetMapping("/getAllArtistNames")
    method getAllSongsByArtist (line 297) | @PostMapping("/getAllSongsByArtist")
    method addSong (line 308) | @PostMapping("/addSong")
    method UpdateSong (line 319) | @PutMapping("/updateSong")
    method updateSongCover (line 331) | @PatchMapping("/updateSongCover/{id}")
    method updateSongAudio (line 344) | @PatchMapping("/updateSongAudio/{id}")
    method deleteSong (line 356) | @DeleteMapping("/deleteSong/{id}")
    method deleteSongs (line 367) | @DeleteMapping("/deleteSongs")
    method getAllPlaylistsCount (line 380) | @GetMapping("/getAllPlaylistsCount")
    method getAllPlaylists (line 391) | @PostMapping("/getAllPlaylists")
    method addPlaylist (line 402) | @PostMapping("/addPlaylist")
    method updatePlaylist (line 413) | @PutMapping("/updatePlaylist")
    method updatePlaylistCover (line 425) | @PatchMapping("/updatePlaylistCover/{id}")
    method deletePlaylist (line 437) | @DeleteMapping("/deletePlaylist/{id}")
    method deletePlaylists (line 448) | @DeleteMapping("/deletePlaylists")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/ArtistController.java
  class ArtistController (line 25) | @RestController
    method getAllArtists (line 38) | @PostMapping("/getAllArtists")
    method getRandomArtists (line 49) | @GetMapping("/getRandomArtists")
    method getArtistDetail (line 60) | @GetMapping("/getArtistDetail/{id}")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/BannerController.java
  class BannerController (line 25) | @RestController
    method getAllBanners (line 38) | @PostMapping("/admin/getAllBanners")
    method addBanner (line 49) | @PostMapping("/admin/addBanner")
    method updateBanner (line 61) | @PatchMapping("/admin/updateBanner/{id}")
    method updateBannerStatus (line 73) | @PatchMapping("/admin/updateBannerStatus/{id}")
    method deleteBanner (line 84) | @DeleteMapping("/admin/deleteBanner/{id}")
    method deleteBanners (line 95) | @DeleteMapping("/admin/deleteBanners")
    method getBannerList (line 105) | @GetMapping("/banner/getBannerList")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/CommentController.java
  class CommentController (line 19) | @RestController
    method addSongComment (line 32) | @PostMapping("/addSongComment")
    method addPlaylistComment (line 43) | @PostMapping("/addPlaylistComment")
    method likeComment (line 54) | @PatchMapping("/likeComment/{id}")
    method cancelLikeComment (line 65) | @PatchMapping("/cancelLikeComment/{id}")
    method deleteComment (line 76) | @DeleteMapping("/deleteComment/{id}")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/FeedbackController.java
  class FeedbackController (line 22) | @RestController
    method getAllFeedbacks (line 33) | @PostMapping("/admin/getAllFeedbacks")
    method deleteFeedback (line 44) | @DeleteMapping("/admin/deleteFeedback/{id}")
    method deleteFeedbacks (line 55) | @DeleteMapping("/admin/deleteFeedbacks")
    method addFeedback (line 66) | @PostMapping("/feedback/addFeedback")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/GenreController.java
  class GenreController (line 16) | @RestController

FILE: src/main/java/cn/edu/seig/vibemusic/controller/PlaylistBindingController.java
  class PlaylistBindingController (line 16) | @RestController

FILE: src/main/java/cn/edu/seig/vibemusic/controller/PlaylistController.java
  class PlaylistController (line 25) | @RestController
    method getAllPlaylists (line 38) | @PostMapping("/getAllPlaylists")
    method getRandomPlaylists (line 49) | @GetMapping("/getRecommendedPlaylists")
    method getPlaylistDetail (line 60) | @GetMapping("/getPlaylistDetail/{id}")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/SongController.java
  class SongController (line 25) | @RestController
    method getAllSongs (line 38) | @PostMapping("/getAllSongs")
    method getRecommendedSongs (line 50) | @GetMapping("/getRecommendedSongs")
    method getSongDetail (line 61) | @GetMapping("/getSongDetail/{id}")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/StyleController.java
  class StyleController (line 16) | @RestController

FILE: src/main/java/cn/edu/seig/vibemusic/controller/UserController.java
  class UserController (line 27) | @RestController
    method sendVerificationCode (line 42) | @GetMapping("/sendVerificationCode")
    method register (line 54) | @PostMapping("/register")
    method login (line 78) | @PostMapping("/login")
    method getUserInfo (line 94) | @GetMapping("/getUserInfo")
    method updateUserInfo (line 105) | @PutMapping("/updateUserInfo")
    method updateUserAvatar (line 122) | @PatchMapping("/updateUserAvatar")
    method updateUserPassword (line 135) | @PatchMapping("/updateUserPassword")
    method resetUserPassword (line 153) | @PatchMapping("/resetUserPassword")
    method logout (line 176) | @PostMapping("/logout")
    method deleteAccount (line 186) | @DeleteMapping("/deleteAccount")

FILE: src/main/java/cn/edu/seig/vibemusic/controller/UserFavoriteController.java
  class UserFavoriteController (line 22) | @RestController
    method getUserFavoriteSongs (line 34) | @PostMapping("/getFavoriteSongs")
    method collectSong (line 45) | @PostMapping("/collectSong")
    method cancelCollectSong (line 56) | @DeleteMapping("/cancelCollectSong")
    method getFavoritePlaylists (line 66) | @PostMapping("/getFavoritePlaylists")
    method collectPlaylist (line 77) | @PostMapping("/collectPlaylist")
    method cancelCollectPlaylist (line 88) | @DeleteMapping("/cancelCollectPlaylist")

FILE: src/main/java/cn/edu/seig/vibemusic/enumeration/BannerStatusEnum.java
  type BannerStatusEnum (line 6) | @Getter
    method BannerStatusEnum (line 16) | BannerStatusEnum(Integer id, String bannerStatus) {

FILE: src/main/java/cn/edu/seig/vibemusic/enumeration/CommentTypeEnum.java
  type CommentTypeEnum (line 6) | @Getter
    method CommentTypeEnum (line 16) | CommentTypeEnum(Integer id, String commentType) {

FILE: src/main/java/cn/edu/seig/vibemusic/enumeration/FavoriteTypeEnum.java
  type FavoriteTypeEnum (line 6) | @Getter
    method FavoriteTypeEnum (line 16) | FavoriteTypeEnum(Integer id, String favoriteType) {

FILE: src/main/java/cn/edu/seig/vibemusic/enumeration/LikeStatusEnum.java
  type LikeStatusEnum (line 5) | @Getter
    method LikeStatusEnum (line 14) | LikeStatusEnum(Integer id, String likeStatus) {

FILE: src/main/java/cn/edu/seig/vibemusic/enumeration/RoleEnum.java
  type RoleEnum (line 5) | @Getter
    method RoleEnum (line 13) | RoleEnum(String role) {

FILE: src/main/java/cn/edu/seig/vibemusic/enumeration/UserStatusEnum.java
  type UserStatusEnum (line 6) | @Getter
    method UserStatusEnum (line 16) | UserStatusEnum(Integer id, String userStatus) {

FILE: src/main/java/cn/edu/seig/vibemusic/handler/GlobalExceptionHandler.java
  class GlobalExceptionHandler (line 17) | @Slf4j
    method errorResult (line 29) | private Result errorResult(String message) {
    method handleSqlIntegrityConstraintViolationException (line 39) | @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    method handleMethodArgumentNotValidException (line 60) | @ExceptionHandler(MethodArgumentNotValidException.class)

FILE: src/main/java/cn/edu/seig/vibemusic/interceptor/LoginInterceptor.java
  class LoginInterceptor (line 25) | @Component
    method sendErrorResponse (line 33) | public void sendErrorResponse(HttpServletResponse response, int status...
    method preHandle (line 40) | @Override
    method afterCompletion (line 106) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/AdminMapper.java
  type AdminMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/ArtistMapper.java
  type ArtistMapper (line 16) | @Mapper
    method getArtistDetailById (line 20) | ArtistDetailVO getArtistDetailById(Long artistId);

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/BannerMapper.java
  type BannerMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/CommentMapper.java
  type CommentMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/FeedbackMapper.java
  type FeedbackMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/GenreMapper.java
  type GenreMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/PlaylistBindingMapper.java
  type PlaylistBindingMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/PlaylistMapper.java
  type PlaylistMapper (line 23) | @Mapper
    method getPlaylistDetailById (line 27) | PlaylistDetailVO getPlaylistDetailById(Long playlistId);
    method getFavoritePlaylistStyles (line 30) | List<String> getFavoritePlaylistStyles(List<Long> favoritePlaylistIds);
    method getRecommendedPlaylistsByStyles (line 33) | List<PlaylistVO> getRecommendedPlaylistsByStyles(List<Long> sortedStyl...
    method getRandomPlaylists (line 36) | @Select("""
    method getPlaylistsByIds (line 48) | IPage<PlaylistVO> getPlaylistsByIds(

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/SongMapper.java
  type SongMapper (line 24) | @Mapper
    method getSongsWithArtist (line 28) | @Select("""
    method getSongsWithArtistName (line 51) | @Select("""
    method getRandomSongsWithArtist (line 78) | @Select("""
    method getSongDetailById (line 95) | SongDetailVO getSongDetailById(Long songId);
    method getSongsByIds (line 98) | IPage<SongVO> getSongsByIds(Page<SongVO> page,
    method getFavoriteSongStyles (line 105) | List<Long> getFavoriteSongStyles(@Param("favoriteSongIds") List<Long> ...
    method getRecommendedSongsByStyles (line 108) | List<SongVO> getRecommendedSongsByStyles(@Param("sortedStyleIds") List...

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/StyleMapper.java
  type StyleMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/UserFavoriteMapper.java
  type UserFavoriteMapper (line 19) | @Mapper
    method getUserFavoriteSongIds (line 23) | @Select("SELECT song_id FROM tb_user_favorite WHERE user_id = #{userId...
    method getUserFavoritePlaylistIds (line 27) | @Select("SELECT playlist_id FROM tb_user_favorite WHERE user_id = #{us...
    method getFavoriteSongIdsByUserId (line 31) | @Select("SELECT song_id FROM tb_user_favorite WHERE user_id = #{userId...
    method getFavoritePlaylistIdsByUserId (line 35) | @Select("SELECT playlist_id FROM tb_user_favorite WHERE user_id = #{us...
    method getFavoriteIdsByStyle (line 39) | List<Long> getFavoriteIdsByStyle(List<String> favoriteStyles);

FILE: src/main/java/cn/edu/seig/vibemusic/mapper/UserMapper.java
  type UserMapper (line 15) | @Mapper

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/AdminDTO.java
  class AdminDTO (line 11) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/ArtistAddDTO.java
  class ArtistAddDTO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/ArtistDTO.java
  class ArtistDTO (line 9) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/ArtistUpdateDTO.java
  class ArtistUpdateDTO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/BannerDTO.java
  class BannerDTO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/CommentPlaylistDTO.java
  class CommentPlaylistDTO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/CommentSongDTO.java
  class CommentSongDTO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/FeedbackDTO.java
  class FeedbackDTO (line 9) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/PlaylistAddDTO.java
  class PlaylistAddDTO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/PlaylistDTO.java
  class PlaylistDTO (line 9) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/PlaylistUpdateDTO.java
  class PlaylistUpdateDTO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/SongAddDTO.java
  class SongAddDTO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/SongAndArtistDTO.java
  class SongAndArtistDTO (line 9) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/SongDTO.java
  class SongDTO (line 9) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/SongUpdateDTO.java
  class SongUpdateDTO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserAddDTO.java
  class UserAddDTO (line 14) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserDTO.java
  class UserDTO (line 12) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserLoginDTO.java
  class UserLoginDTO (line 12) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserPasswordDTO.java
  class UserPasswordDTO (line 11) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserRegisterDTO.java
  class UserRegisterDTO (line 12) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserResetPasswordDTO.java
  class UserResetPasswordDTO (line 12) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/dto/UserSearchDTO.java
  class UserSearchDTO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Admin.java
  class Admin (line 25) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Artist.java
  class Artist (line 24) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Banner.java
  class Banner (line 23) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Comment.java
  class Comment (line 25) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Feedback.java
  class Feedback (line 25) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Genre.java
  class Genre (line 22) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Playlist.java
  class Playlist (line 22) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/PlaylistBinding.java
  class PlaylistBinding (line 22) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Song.java
  class Song (line 24) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/Style.java
  class Style (line 22) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/User.java
  class User (line 30) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/entity/UserFavorite.java
  class UserFavorite (line 25) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/ArtistDetailVO.java
  class ArtistDetailVO (line 11) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/ArtistNameVO.java
  class ArtistNameVO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/ArtistVO.java
  class ArtistVO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/BannerVO.java
  class BannerVO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/CommentVO.java
  class CommentVO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/PlaylistDetailVO.java
  class PlaylistDetailVO (line 9) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/PlaylistVO.java
  class PlaylistVO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/SongAdminVO.java
  class SongAdminVO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/SongDetailVO.java
  class SongDetailVO (line 11) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/SongVO.java
  class SongVO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/UserManagementVO.java
  class UserManagementVO (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/model/vo/UserVO.java
  class UserVO (line 8) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/result/PageResult.java
  class PageResult (line 10) | @Data

FILE: src/main/java/cn/edu/seig/vibemusic/result/Result.java
  class Result (line 14) | @NoArgsConstructor
    method success (line 23) | public static <T> Result<T> success(T data) {
    method success (line 28) | public static Result success() {
    method error (line 33) | public static Result error() {
    method success (line 38) | public static <T> Result<T> success(String message, T data) {
    method success (line 43) | public static Result success(String message) {
    method error (line 48) | public static Result error(String message) {

FILE: src/main/java/cn/edu/seig/vibemusic/service/EmailService.java
  type EmailService (line 11) | public interface EmailService {
    method sendEmail (line 14) | boolean sendEmail(String to, String subject, String content);
    method sendVerificationCodeEmail (line 17) | String sendVerificationCodeEmail(String email);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IAdminService.java
  type IAdminService (line 16) | public interface IAdminService extends IService<Admin> {
    method register (line 19) | Result register(AdminDTO adminDTO);
    method login (line 22) | Result login(AdminDTO adminDTO);
    method logout (line 25) | Result logout(String token);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IArtistService.java
  type IArtistService (line 25) | public interface IArtistService extends IService<Artist> {
    method getAllArtists (line 28) | Result<PageResult<ArtistVO>> getAllArtists(ArtistDTO artistDTO);
    method getAllArtistsAndDetail (line 31) | Result<PageResult<Artist>> getAllArtistsAndDetail(ArtistDTO artistDTO);
    method getAllArtistNames (line 34) | Result<List<ArtistNameVO>> getAllArtistNames();
    method getRandomArtists (line 37) | Result<List<ArtistVO>> getRandomArtists();
    method getArtistDetail (line 40) | Result<ArtistDetailVO> getArtistDetail(Long artistId, HttpServletReque...
    method getAllArtistsCount (line 43) | Result<Long> getAllArtistsCount(Integer gender, String area);
    method addArtist (line 46) | Result addArtist(ArtistAddDTO artistAddDTO);
    method updateArtist (line 49) | Result updateArtist(ArtistUpdateDTO artistUpdateDTO);
    method updateArtistAvatar (line 52) | Result updateArtistAvatar(Long artistId, String avatar);
    method deleteArtist (line 55) | Result deleteArtist(Long ArtistId);
    method deleteArtists (line 58) | Result deleteArtists(List<Long> artistIds);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IBannerService.java
  type IBannerService (line 20) | public interface IBannerService extends IService<Banner> {
    method getAllBanners (line 23) | Result<PageResult<Banner>> getAllBanners(BannerDTO bannerDTO);
    method addBanner (line 26) | Result addBanner(String bannerUrl);
    method updateBanner (line 29) | Result updateBanner(Long bannerId, String bannerUrl);
    method updateBannerStatus (line 32) | Result updateBannerStatus(Long bannerId, Integer bannerStatus);
    method deleteBanner (line 35) | Result deleteBanner(Long bannerId);
    method deleteBanners (line 38) | Result deleteBanners(List<Long> bannerIds);
    method getBannerList (line 41) | Result<List<BannerVO>> getBannerList();

FILE: src/main/java/cn/edu/seig/vibemusic/service/ICommentService.java
  type ICommentService (line 17) | public interface ICommentService extends IService<Comment> {
    method addSongComment (line 20) | Result addSongComment(CommentSongDTO commentSongDTO);
    method addPlaylistComment (line 23) | Result addPlaylistComment(CommentPlaylistDTO commentPlaylistDTO);
    method likeComment (line 26) | Result likeComment(Long commentId);
    method cancelLikeComment (line 29) | Result cancelLikeComment(Long commentId);
    method deleteComment (line 32) | Result deleteComment(Long commentId);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IFeedbackService.java
  type IFeedbackService (line 19) | public interface IFeedbackService extends IService<Feedback> {
    method getAllFeedbacks (line 22) | Result<PageResult<Feedback>> getAllFeedbacks(FeedbackDTO feedbackDTO);
    method deleteFeedback (line 25) | Result deleteFeedback(Long feedbackId);
    method deleteFeedbacks (line 28) | Result deleteFeedbacks(List<Long> feedbackIds);
    method addFeedback (line 31) | Result addFeedback(String content);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IGenreService.java
  type IGenreService (line 14) | public interface IGenreService extends IService<Genre> {

FILE: src/main/java/cn/edu/seig/vibemusic/service/IPlaylistBindingService.java
  type IPlaylistBindingService (line 14) | public interface IPlaylistBindingService extends IService<PlaylistBindin...

FILE: src/main/java/cn/edu/seig/vibemusic/service/IPlaylistService.java
  type IPlaylistService (line 24) | public interface IPlaylistService extends IService<Playlist> {
    method getAllPlaylists (line 27) | Result<PageResult<PlaylistVO>> getAllPlaylists(PlaylistDTO playlistDTO);
    method getAllPlaylistsInfo (line 30) | Result<PageResult<Playlist>> getAllPlaylistsInfo(PlaylistDTO playlistD...
    method getRecommendedPlaylists (line 33) | Result<List<PlaylistVO>> getRecommendedPlaylists(HttpServletRequest re...
    method getPlaylistDetail (line 36) | Result<PlaylistDetailVO> getPlaylistDetail(Long playlistId, HttpServle...
    method getAllPlaylistsCount (line 39) | Result<Long> getAllPlaylistsCount(String style);
    method addPlaylist (line 42) | Result addPlaylist(PlaylistAddDTO playlistAddDTO);
    method updatePlaylist (line 45) | Result updatePlaylist(PlaylistUpdateDTO playlistUpdateDTO);
    method updatePlaylistCover (line 48) | Result updatePlaylistCover(Long playlistId, String coverUrl);
    method deletePlaylist (line 51) | Result deletePlaylist(Long playlistId);
    method deletePlaylists (line 54) | Result deletePlaylists(List<Long> playlistIds);

FILE: src/main/java/cn/edu/seig/vibemusic/service/ISongService.java
  type ISongService (line 26) | public interface ISongService extends IService<Song> {
    method getAllSongs (line 29) | Result<PageResult<SongVO>> getAllSongs(SongDTO songDTO, HttpServletReq...
    method getAllSongsByArtist (line 32) | Result<PageResult<SongAdminVO>> getAllSongsByArtist(SongAndArtistDTO s...
    method getRecommendedSongs (line 35) | Result<List<SongVO>> getRecommendedSongs(HttpServletRequest request);
    method getSongDetail (line 38) | Result<SongDetailVO> getSongDetail(Long songId, HttpServletRequest req...
    method getAllSongsCount (line 41) | Result<Long> getAllSongsCount(String style);
    method addSong (line 44) | Result addSong(SongAddDTO songAddDTO);
    method updateSong (line 47) | Result updateSong(SongUpdateDTO songUpdateDTO);
    method updateSongCover (line 50) | Result updateSongCover(Long songId, String coverUrl);
    method updateSongAudio (line 53) | Result updateSongAudio(Long songId, String audioUrl, String duration);
    method deleteSong (line 56) | Result deleteSong(Long songId);
    method deleteSongs (line 59) | Result deleteSongs(List<Long> songIds);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IStyleService.java
  type IStyleService (line 14) | public interface IStyleService extends IService<Style> {

FILE: src/main/java/cn/edu/seig/vibemusic/service/IUserFavoriteService.java
  type IUserFavoriteService (line 20) | public interface IUserFavoriteService extends IService<UserFavorite> {
    method getUserFavoriteSongs (line 23) | Result<PageResult<SongVO>> getUserFavoriteSongs(SongDTO songDTO);
    method collectSong (line 26) | Result collectSong(Long songId);
    method cancelCollectSong (line 29) | Result cancelCollectSong(Long songId);
    method getUserFavoritePlaylists (line 32) | Result<PageResult<PlaylistVO>> getUserFavoritePlaylists(PlaylistDTO pl...
    method collectPlaylist (line 35) | Result collectPlaylist(Long playlistId);
    method cancelCollectPlaylist (line 38) | Result cancelCollectPlaylist(Long playlistId);

FILE: src/main/java/cn/edu/seig/vibemusic/service/IUserService.java
  type IUserService (line 21) | public interface IUserService extends IService<User> {
    method sendVerificationCode (line 24) | Result sendVerificationCode(String email);
    method verifyVerificationCode (line 27) | boolean verifyVerificationCode(String email, String verificationCode);
    method register (line 30) | Result register(UserRegisterDTO userRegisterDTO);
    method login (line 33) | Result login(UserLoginDTO userLoginDTO);
    method userInfo (line 36) | Result<UserVO> userInfo();
    method updateUserInfo (line 39) | Result updateUserInfo(UserDTO userDTO);
    method updateUserAvatar (line 42) | Result updateUserAvatar(String avatarUrl);
    method updateUserPassword (line 45) | Result updateUserPassword(UserPasswordDTO userPasswordDTO, String token);
    method resetUserPassword (line 48) | Result resetUserPassword(UserResetPasswordDTO userResetPasswordDTO);
    method logout (line 51) | Result logout(String token);
    method deleteAccount (line 54) | Result deleteAccount();
    method getAllUsersCount (line 57) | Result<Long> getAllUsersCount();
    method getAllUsers (line 60) | Result<PageResult<UserManagementVO>> getAllUsers(UserSearchDTO userSea...
    method addUser (line 63) | Result addUser(UserAddDTO userAddDTO);
    method updateUser (line 66) | Result updateUser(UserDTO userDTO);
    method updateUserStatus (line 69) | Result updateUserStatus(Long userId, Integer userStatus);
    method deleteUser (line 72) | Result deleteUser(Long userId);
    method deleteUsers (line 75) | Result deleteUsers(List<Long> userIds);

FILE: src/main/java/cn/edu/seig/vibemusic/service/MinioService.java
  type MinioService (line 5) | public interface MinioService {
    method uploadFile (line 12) | String uploadFile(MultipartFile file, String folder);
    method deleteFile (line 18) | void deleteFile(String fileUrl);

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/AdminServiceImpl.java
  class AdminServiceImpl (line 31) | @Service
    method register (line 45) | @Override
    method login (line 68) | @Override
    method logout (line 98) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/ArtistServiceImpl.java
  class ArtistServiceImpl (line 49) | @Service
    method getAllArtists (line 66) | @Override
    method getAllArtistsAndDetail (line 105) | @Override
    method getAllArtistNames (line 138) | @Override
    method getRandomArtists (line 163) | @Override
    method getArtistDetail (line 190) | @Override
    method getAllArtistsCount (line 249) | @Override
    method addArtist (line 268) | @Override
    method updateArtist (line 290) | @Override
    method updateArtistAvatar (line 316) | @Override
    method deleteArtist (line 339) | @Override
    method deleteArtists (line 368) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/BannerServiceImpl.java
  class BannerServiceImpl (line 34) | @Service
    method getAllBanners (line 48) | @Override
    method addBanner (line 74) | @Override
    method updateBanner (line 93) | @Override
    method updateBannerStatus (line 117) | @Override
    method deleteBanner (line 147) | @Override
    method deleteBanners (line 171) | @Override
    method getBannerList (line 192) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/CommentServiceImpl.java
  class CommentServiceImpl (line 30) | @Service
    method addSongComment (line 42) | @Override
    method addPlaylistComment (line 66) | @Override
    method likeComment (line 90) | @Override
    method cancelLikeComment (line 114) | @Override
    method deleteComment (line 138) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/EmailServiceImpl.java
  class EmailServiceImpl (line 23) | @Slf4j
    method sendEmail (line 41) | public boolean sendEmail(String to, String subject, String content) {
    method sendVerificationCodeEmail (line 63) | public String sendVerificationCodeEmail(String email) {

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/FeedbackServiceImpl.java
  class FeedbackServiceImpl (line 35) | @Service
    method getAllFeedbacks (line 48) | @Override
    method deleteFeedback (line 74) | @Override
    method deleteFeedbacks (line 89) | @Override
    method addFeedback (line 104) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/GenreServiceImpl.java
  class GenreServiceImpl (line 17) | @Service

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/MinioServiceImpl.java
  class MinioServiceImpl (line 15) | @Service
    method MinioServiceImpl (line 26) | public MinioServiceImpl(MinioClient minioClient) {
    method uploadFile (line 37) | @Override
    method deleteFile (line 69) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/PlaylistBindingServiceImpl.java
  class PlaylistBindingServiceImpl (line 17) | @Service

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/PlaylistServiceImpl.java
  class PlaylistServiceImpl (line 49) | @Service
    method getAllPlaylists (line 66) | @Override
    method getAllPlaylistsInfo (line 102) | @Override
    method getRecommendedPlaylists (line 133) | @Override
    method getPlaylistDetail (line 204) | @Override
    method getAllPlaylistsCount (line 269) | @Override
    method addPlaylist (line 285) | @Override
    method updatePlaylist (line 307) | @Override
    method updatePlaylistCover (line 333) | @Override
    method deletePlaylist (line 356) | @Override
    method deletePlaylists (line 385) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/SongServiceImpl.java
  class SongServiceImpl (line 54) | @Service
    method getAllSongs (line 77) | @Override
    method getAllSongsByArtist (line 138) | @Override
    method getRecommendedSongs (line 159) | @Override
    method getSongDetail (line 235) | @Override
    method getAllSongsCount (line 278) | @Override
    method addSong (line 294) | @Override
    method updateSong (line 345) | @Override
    method updateSongCover (line 393) | @Override
    method updateSongAudio (line 417) | @Override
    method deleteSong (line 440) | @Override
    method deleteSongs (line 470) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/StyleServiceImpl.java
  class StyleServiceImpl (line 17) | @Service

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/UserFavoriteServiceImpl.java
  class UserFavoriteServiceImpl (line 44) | @Service
    method getUserFavoriteSongs (line 61) | @Override
    method collectSong (line 98) | @Override
    method cancelCollectSong (line 124) | @Override
    method getUserFavoritePlaylists (line 146) | @Override
    method collectPlaylist (line 178) | @Override
    method cancelCollectPlaylist (line 204) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 48) | @Service
    method sendVerificationCode (line 67) | @Override
    method verifyVerificationCode (line 86) | @Override
    method register (line 98) | @Override
    method login (line 132) | @Override
    method userInfo (line 165) | @Override
    method updateUserInfo (line 183) | @Override
    method updateUserAvatar (line 221) | @Override
    method updateUserPassword (line 248) | @Override
    method resetUserPassword (line 283) | @Override
    method logout (line 311) | @Override
    method deleteAccount (line 328) | @Override
    method getAllUsersCount (line 359) | @Override
    method getAllUsers (line 370) | @Override
    method addUser (line 412) | @Override
    method updateUser (line 462) | @Override
    method updateUserStatus (line 499) | @Override
    method deleteUser (line 529) | @Override
    method deleteUsers (line 544) | @Override

FILE: src/main/java/cn/edu/seig/vibemusic/util/BindingResultUtil.java
  class BindingResultUtil (line 9) | public class BindingResultUtil {
    method handleBindingResultErrors (line 17) | public static String handleBindingResultErrors(BindingResult bindingRe...

FILE: src/main/java/cn/edu/seig/vibemusic/util/JwtUtil.java
  class JwtUtil (line 12) | public class JwtUtil {
    method generateToken (line 25) | public static String generateToken(Map<String, Object> claims) {
    method parseToken (line 38) | public static Map<String, Object> parseToken(String token) {

FILE: src/main/java/cn/edu/seig/vibemusic/util/RandomCodeUtil.java
  class RandomCodeUtil (line 5) | public class RandomCodeUtil {
    method generateRandomCode (line 16) | public static String generateRandomCode() {

FILE: src/main/java/cn/edu/seig/vibemusic/util/ThreadLocalUtil.java
  class ThreadLocalUtil (line 6) | @SuppressWarnings("all")
    method get (line 13) | public static <T> T get() {
    method set (line 18) | public static void set(Object value) {
    method remove (line 23) | public static void remove() {

FILE: src/main/java/cn/edu/seig/vibemusic/util/TypeConversionUtil.java
  class TypeConversionUtil (line 3) | public class TypeConversionUtil {
    method toLong (line 12) | public static Long toLong(Object obj) {

FILE: src/test/java/cn/edu/seig/vibemusic/RedisConnectionTest.java
  class RedisConnectionTest (line 11) | @SpringBootTest
    method testRedisConnection (line 17) | @Test

FILE: src/test/java/cn/edu/seig/vibemusic/VibeMusicServerApplicationTests.java
  class VibeMusicServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test
Condensed preview — 148 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (681K chars).
[
  {
    "path": ".gitattributes",
    "chars": 38,
    "preview": "/mvnw text eol=lf\n*.cmd text eol=crlf\n"
  },
  {
    "path": ".gitignore",
    "chars": 395,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**/target/\n!**/src/test/**/target/\n\n### STS ###\n.apt_genera"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 951,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "LICENSE",
    "chars": 1067,
    "preview": "MIT License\n\nCopyright (c) 2025 Alex-LiSun\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
  },
  {
    "path": "README.md",
    "chars": 6350,
    "preview": "# Vibe Music Server 🎶\n\n## 介绍 📖\n\n**Vibe Music Server** 是 Vibe Music 项目的后端 API 服务。本项目基于 **Spring Boot 3** 构建,采用 **Java 17*"
  },
  {
    "path": "mvnw",
    "chars": 10665,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "mvnw.cmd",
    "chars": 7061,
    "preview": "<# : batch portion\r\n@REM ----------------------------------------------------------------------------\r\n@REM Licensed to "
  },
  {
    "path": "pom.xml",
    "chars": 4087,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "sql/vibe_music.sql",
    "chars": 324704,
    "preview": "/*\n Navicat Premium Data Transfer\n\n Source Server         : MySQL80\n Source Server Type    : MySQL\n Source Server Versio"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/VibeMusicServerApplication.java",
    "chars": 448,
    "preview": "package cn.edu.seig.vibemusic;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoc"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/CorsConfig.java",
    "chars": 1044,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.springframework.context.anno"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/MinioConfig.java",
    "chars": 680,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport io.minio.MinioClient;\nimport org.springframework.beans.factory.annotation."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/MyBatisPlusConfig.java",
    "chars": 803,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport com.baomidou.mybatisplus.annotation.DbType;\nimport com.baomidou.mybatisplu"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/RedisConfig.java",
    "chars": 3077,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport com.fasterxml.jackson.annotation.JsonAutoDetect;\nimport com.fasterxml.jack"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/RolePathPermissionsConfig.java",
    "chars": 586,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimpor"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/RolePermissionManager.java",
    "chars": 1000,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springf"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/config/WebConfig.java",
    "chars": 1339,
    "preview": "package cn.edu.seig.vibemusic.config;\n\nimport cn.edu.seig.vibemusic.interceptor.LoginInterceptor;\nimport org.springframe"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/constant/JwtClaimsConstant.java",
    "chars": 351,
    "preview": "package cn.edu.seig.vibemusic.constant;\n\n/**\n * JWT 声明常量类\n */\npublic class JwtClaimsConstant {\n\n    public static final "
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/constant/MessageConstant.java",
    "chars": 2353,
    "preview": "package cn.edu.seig.vibemusic.constant;\n\n/**\n * 信息提示常量类\n */\npublic class MessageConstant {\n\n    public static final Stri"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/constant/PathConstant.java",
    "chars": 388,
    "preview": "package cn.edu.seig.vibemusic.constant;\n\npublic class PathConstant {\n\n    public static final String PLAYLIST_DETAIL_PAT"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/AdminController.java",
    "chars": 12067,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.*;\nimport cn.edu.seig.vibemusic.model"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/ArtistController.java",
    "chars": 1599,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.ArtistDTO;\nimport cn.edu.seig.vibemus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/BannerController.java",
    "chars": 2844,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.BannerDTO;\nimport cn.edu.seig.vibemus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/CommentController.java",
    "chars": 1938,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.CommentPlaylistDTO;\nimport cn.edu.sei"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/FeedbackController.java",
    "chars": 1696,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.FeedbackDTO;\nimport cn.edu.seig.vibem"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/GenreController.java",
    "chars": 326,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport org.s"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/PlaylistBindingController.java",
    "chars": 347,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport org.s"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/PlaylistController.java",
    "chars": 1714,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.PlaylistDTO;\nimport cn.edu.seig.vibem"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/SongController.java",
    "chars": 1646,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.model.dto.SongDTO;\nimport cn.edu.seig.vibemusic"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/StyleController.java",
    "chars": 326,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport org.s"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/UserController.java",
    "chars": 5506,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport cn.edu.seig.vi"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/controller/UserFavoriteController.java",
    "chars": 2385,
    "preview": "package cn.edu.seig.vibemusic.controller;\n\nimport cn.edu.seig.vibemusic.model.dto.PlaylistDTO;\nimport cn.edu.seig.vibemu"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/enumeration/BannerStatusEnum.java",
    "chars": 419,
    "preview": "package cn.edu.seig.vibemusic.enumeration;\n\nimport com.baomidou.mybatisplus.annotation.EnumValue;\nimport lombok.Getter;\n"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/enumeration/CommentTypeEnum.java",
    "chars": 416,
    "preview": "package cn.edu.seig.vibemusic.enumeration;\n\nimport com.baomidou.mybatisplus.annotation.EnumValue;\nimport lombok.Getter;\n"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/enumeration/FavoriteTypeEnum.java",
    "chars": 422,
    "preview": "package cn.edu.seig.vibemusic.enumeration;\n\nimport com.baomidou.mybatisplus.annotation.EnumValue;\nimport lombok.Getter;\n"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/enumeration/LikeStatusEnum.java",
    "chars": 336,
    "preview": "package cn.edu.seig.vibemusic.enumeration;\n\nimport lombok.Getter;\n\n@Getter\npublic enum LikeStatusEnum {\n\n    DEFAULT(0, "
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/enumeration/RoleEnum.java",
    "chars": 243,
    "preview": "package cn.edu.seig.vibemusic.enumeration;\n\nimport lombok.Getter;\n\n@Getter\npublic enum RoleEnum {\n\n    ADMIN(\"ROLE_ADMIN"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/enumeration/UserStatusEnum.java",
    "chars": 407,
    "preview": "package cn.edu.seig.vibemusic.enumeration;\n\nimport com.baomidou.mybatisplus.annotation.EnumValue;\nimport lombok.Getter;\n"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/handler/GlobalExceptionHandler.java",
    "chars": 2878,
    "preview": "package cn.edu.seig.vibemusic.handler;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport lombok.extern.slf4"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/interceptor/LoginInterceptor.java",
    "chars": 4134,
    "preview": "package cn.edu.seig.vibemusic.interceptor;\n\n\nimport cn.edu.seig.vibemusic.config.RolePermissionManager;\nimport cn.edu.se"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/AdminMapper.java",
    "chars": 340,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Admin;\nimport com.baomidou.mybatisplus."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/ArtistMapper.java",
    "chars": 470,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Artist;\nimport cn.edu.seig.vibemusic.mo"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/BannerMapper.java",
    "chars": 343,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Banner;\nimport com.baomidou.mybatisplus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/CommentMapper.java",
    "chars": 346,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Comment;\nimport com.baomidou.mybatisplu"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/FeedbackMapper.java",
    "chars": 349,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Feedback;\nimport com.baomidou.mybatispl"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/GenreMapper.java",
    "chars": 340,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Genre;\nimport com.baomidou.mybatisplus."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/PlaylistBindingMapper.java",
    "chars": 370,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.PlaylistBinding;\nimport com.baomidou.my"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/PlaylistMapper.java",
    "chars": 1605,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Playlist;\nimport cn.edu.seig.vibemusic."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/SongMapper.java",
    "chars": 4405,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Song;\nimport cn.edu.seig.vibemusic.mode"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/StyleMapper.java",
    "chars": 340,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.Style;\nimport com.baomidou.mybatisplus."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/UserFavoriteMapper.java",
    "chars": 1370,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.UserFavorite;\nimport com.baomidou.mybat"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/mapper/UserMapper.java",
    "chars": 337,
    "preview": "package cn.edu.seig.vibemusic.mapper;\n\nimport cn.edu.seig.vibemusic.model.entity.User;\nimport com.baomidou.mybatisplus.c"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/AdminDTO.java",
    "chars": 986,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport jakarta.validati"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/ArtistAddDTO.java",
    "chars": 667,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimpor"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/ArtistDTO.java",
    "chars": 609,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport jakarta.validation.constraints.NotNull;\nimport lombok.Data;\n\nimport jav"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/ArtistUpdateDTO.java",
    "chars": 727,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimpor"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/BannerDTO.java",
    "chars": 570,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.enumeration.BannerStatusEnum;\nimport jakarta.vali"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/CommentPlaylistDTO.java",
    "chars": 364,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Dat"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/CommentSongDTO.java",
    "chars": 356,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Dat"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/FeedbackDTO.java",
    "chars": 490,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport jakarta.validation.constraints.NotNull;\nimport lombok.Data;\n\nimport jav"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/PlaylistAddDTO.java",
    "chars": 417,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Dat"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/PlaylistDTO.java",
    "chars": 540,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport jakarta.validation.constraints.NotNull;\nimport lombok.Data;\n\nimport jav"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/PlaylistUpdateDTO.java",
    "chars": 479,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Dat"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/SongAddDTO.java",
    "chars": 648,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimpor"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/SongAndArtistDTO.java",
    "chars": 599,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport jakarta.validation.constraints.NotNull;\nimport lombok.Data;\n\nimport jav"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/SongDTO.java",
    "chars": 594,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport jakarta.validation.constraints.NotNull;\nimport lombok.Data;\n\nimport jav"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/SongUpdateDTO.java",
    "chars": 706,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimpor"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserAddDTO.java",
    "chars": 1857,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport cn.edu.seig.vibe"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserDTO.java",
    "chars": 1326,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport jakarta.validati"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserLoginDTO.java",
    "chars": 951,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport jakarta.validati"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserPasswordDTO.java",
    "chars": 1333,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport jakarta.validati"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserRegisterDTO.java",
    "chars": 1535,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport jakarta.validati"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserResetPasswordDTO.java",
    "chars": 1573,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport jakarta.validati"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/dto/UserSearchDTO.java",
    "chars": 679,
    "preview": "package cn.edu.seig.vibemusic.model.dto;\n\nimport cn.edu.seig.vibemusic.enumeration.UserStatusEnum;\nimport jakarta.valida"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Admin.java",
    "chars": 1586,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Artist.java",
    "chars": 1422,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.myba"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Banner.java",
    "chars": 1045,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport cn.edu.seig.vibemusic.enumeration.BannerStatusEnum;\nimport com.baomi"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Comment.java",
    "chars": 1539,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Feedback.java",
    "chars": 1192,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Genre.java",
    "chars": 871,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Playlist.java",
    "chars": 1133,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/PlaylistBinding.java",
    "chars": 898,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Song.java",
    "chars": 1666,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.myba"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/Style.java",
    "chars": 861,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/User.java",
    "chars": 2895,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport cn.edu.seig.v"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/entity/UserFavorite.java",
    "chars": 1381,
    "preview": "package cn.edu.seig.vibemusic.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/ArtistDetailVO.java",
    "chars": 864,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimport"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/ArtistNameVO.java",
    "chars": 359,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Data"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/ArtistVO.java",
    "chars": 411,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Data"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/BannerVO.java",
    "chars": 358,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Data"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/CommentVO.java",
    "chars": 711,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimport"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/PlaylistDetailVO.java",
    "chars": 716,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\nimport"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/PlaylistVO.java",
    "chars": 412,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Data"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/SongAdminVO.java",
    "chars": 937,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimport"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/SongDetailVO.java",
    "chars": 1058,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimport"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/SongVO.java",
    "chars": 909,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.Data;\n\nimport"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/UserManagementVO.java",
    "chars": 895,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport cn.edu.seig.vibemusic.enumeration.UserStatusEnum;\nimport lombok.Data;\n\ni"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/model/vo/UserVO.java",
    "chars": 581,
    "preview": "package cn.edu.seig.vibemusic.model.vo;\n\nimport lombok.Data;\n\nimport java.io.Serial;\nimport java.io.Serializable;\n\n@Data"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/result/PageResult.java",
    "chars": 308,
    "preview": "package cn.edu.seig.vibemusic.result;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstru"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/result/Result.java",
    "chars": 1328,
    "preview": "package cn.edu.seig.vibemusic.result;\n\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport lombok.AllArgsCons"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/EmailService.java",
    "chars": 296,
    "preview": "package cn.edu.seig.vibemusic.service;\n\n/**\n * <p>\n * 服务类\n * </p>\n *\n * @author sunpingli\n * @since 2025-01-09\n */\npubli"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IAdminService.java",
    "chars": 528,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.AdminDTO;\nimport cn.edu.seig.vibemusic.mo"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IArtistService.java",
    "chars": 1588,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.ArtistAddDTO;\nimport cn.edu.seig.vibemusi"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IBannerService.java",
    "chars": 977,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.BannerDTO;\nimport cn.edu.seig.vibemusic.m"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/ICommentService.java",
    "chars": 776,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.CommentPlaylistDTO;\nimport cn.edu.seig.vi"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IFeedbackService.java",
    "chars": 729,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.FeedbackDTO;\nimport cn.edu.seig.vibemusic"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IGenreService.java",
    "chars": 286,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.entity.Genre;\nimport com.baomidou.mybatisplus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IPlaylistBindingService.java",
    "chars": 316,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.entity.PlaylistBinding;\nimport com.baomidou.m"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IPlaylistService.java",
    "chars": 1544,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.PlaylistAddDTO;\nimport cn.edu.seig.vibemu"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/ISongService.java",
    "chars": 1658,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.SongAddDTO;\nimport cn.edu.seig.vibemusic."
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IStyleService.java",
    "chars": 286,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.entity.Style;\nimport com.baomidou.mybatisplus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IUserFavoriteService.java",
    "chars": 1023,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.PlaylistDTO;\nimport cn.edu.seig.vibemusic"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/IUserService.java",
    "chars": 1695,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport cn.edu.seig.vibemusic.model.dto.*;\nimport cn.edu.seig.vibemusic.model.ent"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/MinioService.java",
    "chars": 408,
    "preview": "package cn.edu.seig.vibemusic.service;\n\nimport org.springframework.web.multipart.MultipartFile;\n\npublic interface MinioS"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/AdminServiceImpl.java",
    "chars": 3682,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/ArtistServiceImpl.java",
    "chars": 13571,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/BannerServiceImpl.java",
    "chars": 7043,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport cn.edu.seig.v"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/CommentServiceImpl.java",
    "chars": 5378,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/EmailServiceImpl.java",
    "chars": 2114,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport cn.edu.seig.v"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/FeedbackServiceImpl.java",
    "chars": 4212,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/GenreServiceImpl.java",
    "chars": 498,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.model.entity.Genre;\nimport cn.edu.seig.vibemus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/MinioServiceImpl.java",
    "chars": 2472,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.MessageConstant;\nimport cn.edu.seig.v"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/PlaylistBindingServiceImpl.java",
    "chars": 568,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.model.entity.PlaylistBinding;\nimport cn.edu.se"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/PlaylistServiceImpl.java",
    "chars": 15025,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/SongServiceImpl.java",
    "chars": 17616,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/StyleServiceImpl.java",
    "chars": 498,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.model.entity.Style;\nimport cn.edu.seig.vibemus"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/UserFavoriteServiceImpl.java",
    "chars": 8543,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.seig"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/service/impl/UserServiceImpl.java",
    "chars": 20725,
    "preview": "package cn.edu.seig.vibemusic.service.impl;\n\n\nimport cn.edu.seig.vibemusic.constant.JwtClaimsConstant;\nimport cn.edu.sei"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/util/BindingResultUtil.java",
    "chars": 759,
    "preview": "package cn.edu.seig.vibemusic.util;\n\nimport org.springframework.validation.BindingResult;\nimport org.springframework.val"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/util/JwtUtil.java",
    "chars": 1146,
    "preview": "package cn.edu.seig.vibemusic.util;\n\nimport com.auth0.jwt.JWT;\nimport com.auth0.jwt.algorithms.Algorithm;\n\nimport java.u"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/util/RandomCodeUtil.java",
    "chars": 716,
    "preview": "package cn.edu.seig.vibemusic.util;\n\nimport java.util.Random;\n\npublic class RandomCodeUtil {\n\n    private static final S"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/util/ThreadLocalUtil.java",
    "chars": 506,
    "preview": "package cn.edu.seig.vibemusic.util;\n\n/**\n * ThreadLocal 工具类\n */\n@SuppressWarnings(\"all\")\npublic class ThreadLocalUtil {\n"
  },
  {
    "path": "src/main/java/cn/edu/seig/vibemusic/util/TypeConversionUtil.java",
    "chars": 568,
    "preview": "package cn.edu.seig.vibemusic.util;\n\npublic class TypeConversionUtil {\n\n    /**\n     * 将 Object 转换为 Long,支持 Long 和 Integ"
  },
  {
    "path": "src/main/resources/application.yml",
    "chars": 2073,
    "preview": "spring:\n  # 配置数据源\n  datasource:\n    driver-class-name: com.mysql.cj.jdbc.Driver\n    url: jdbc:mysql://YOUR_MYSQL_HOST:33"
  },
  {
    "path": "src/main/resources/mapper/AdminMapper.xml",
    "chars": 220,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/ArtistMapper.xml",
    "chars": 2209,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/BannerMapper.xml",
    "chars": 221,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/CommentMapper.xml",
    "chars": 222,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/FeedbackMapper.xml",
    "chars": 223,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/GenreMapper.xml",
    "chars": 220,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/PlaylistBindingMapper.xml",
    "chars": 230,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/PlaylistMapper.xml",
    "chars": 4698,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/SongMapper.xml",
    "chars": 4716,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/StyleMapper.xml",
    "chars": 220,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/UserFavoriteMapper.xml",
    "chars": 549,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/main/resources/mapper/UserMapper.xml",
    "chars": 219,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
  },
  {
    "path": "src/test/java/cn/edu/seig/vibemusic/RedisConnectionTest.java",
    "chars": 1050,
    "preview": "package cn.edu.seig.vibemusic;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.beans.factory.annotation.A"
  },
  {
    "path": "src/test/java/cn/edu/seig/vibemusic/VibeMusicServerApplicationTests.java",
    "chars": 231,
    "preview": "package cn.edu.seig.vibemusic;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.SpringBo"
  }
]

About this extraction

This page contains the full source code of the Alex-LiSun/vibe-music-server GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 148 files (585.0 KB), approximately 208.6k tokens, and a symbol index with 419 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!