| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 |
- -- ========================================================
- -- 微音乐平台数据库初始化脚本
- -- 创建顺序:按服务依赖关系从基础到复杂
- -- 文件:init_database.sql
- -- ========================================================
- -- ========================================================
- -- 1. 认证服务数据库 (wy_auth)
- -- ========================================================
- CREATE DATABASE IF NOT EXISTS wy_auth DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE wy_auth;
- -- ========================================================
- -- 1.1 用户基础信息表
- -- ========================================================
- CREATE TABLE `user` (
- `id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
- `username` VARCHAR(50) NOT NULL COMMENT '账号(唯一,用于登录)',
- `name` VARCHAR(50) COMMENT '用户昵称(冗余,兼容PO)',
- `age` INT COMMENT '用户年龄',
- `password` VARCHAR(100) NOT NULL COMMENT '登录密码(建议BCrypt加密)',
- `url` VARCHAR(500) COMMENT '用户头像URL',
- `vip_level` INT DEFAULT 0 COMMENT 'VIP等级',
- `vip_status` INT DEFAULT 0 COMMENT 'VIP状态(0-非VIP,1-VIP)',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `last_login_time` DATETIME COMMENT '最后登录时间',
- `nickname` VARCHAR(50) COMMENT '用户昵称(用于展示)',
- `wx_unionid` VARCHAR(100) COMMENT '微信unionid',
- `utype` VARCHAR(20) DEFAULT 'normal' COMMENT '用户类型(normal-普通用户,admin-管理员,artist-艺人)',
- `status` VARCHAR(20) DEFAULT 'normal' COMMENT '用户状态(normal-正常,forbid-禁用,freeze-冻结)',
- `phone` VARCHAR(20) COMMENT '手机号(唯一)',
- UNIQUE KEY `uk_username` (`username`),
- UNIQUE KEY `uk_phone` (`phone`),
- UNIQUE KEY `uk_wx_unionid` (`wx_unionid`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户基础信息表';
- -- ========================================================
- -- 2. 艺人服务数据库 (wy_artist)
- -- ========================================================
- CREATE DATABASE IF NOT EXISTS wy_artist DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE wy_artist;
- -- ========================================================
- -- 2.1 艺人基础信息表
- -- ========================================================
- CREATE TABLE `artist` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `user_username` VARCHAR(50) NOT NULL COMMENT '冗余auth.user.username',
- `user_phone` VARCHAR(20) COMMENT '冗余auth.user.phone',
- `artist_name` VARCHAR(100) NOT NULL COMMENT '艺人名',
- `avatar` VARCHAR(255) COMMENT '艺人头像URL',
- `header_image` VARCHAR(255) COMMENT '艺人页头图',
- `gender` TINYINT COMMENT '性别:1-男,2-女,3-团体',
- `birthday` DATE COMMENT '生日',
- `region` VARCHAR(50) COMMENT '艺人所属地区',
- `genre` VARCHAR(100) COMMENT '流派风格',
- `company` VARCHAR(100) COMMENT '所属公司/厂牌',
- `introduction` TEXT COMMENT '艺人介绍',
- `invitation_code` VARCHAR(50) COMMENT '邀请码',
- `wechat` VARCHAR(50) COMMENT '微信号',
- `status` TINYINT DEFAULT 0 COMMENT '艺人账号状态:0-待审核,1-已通过,2-已拒绝,3-已冻结',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- UNIQUE KEY `uk_artist_name` (`artist_name`),
- UNIQUE KEY `uk_user_id` (`user_id`),
- INDEX `idx_user_id` (`user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人基础信息表';
- -- ========================================================
- -- 2.2 艺人实名认证表
- -- ========================================================
- CREATE TABLE `artist_real_auth` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `artist_id` INT NOT NULL COMMENT '关联本服务的artist.id',
- `real_name` VARCHAR(50) NOT NULL COMMENT '真实姓名',
- `phone` VARCHAR(20) NOT NULL COMMENT '绑定手机号',
- `email` VARCHAR(100) NOT NULL COMMENT '邮箱',
- `nationality` VARCHAR(50) NOT NULL COMMENT '国籍/地区',
- `id_card` VARCHAR(100) NOT NULL COMMENT '证件号',
- `face_auth_status` TINYINT DEFAULT 0 COMMENT '面部识别状态:0-未认证,1-已认证',
- `auth_status` TINYINT DEFAULT 0 COMMENT '实名认证状态:0-待审核,1-已通过,2-已驳回',
- `auth_time` DATETIME COMMENT '实名认证通过时间',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE,
- UNIQUE KEY `uk_artist_auth` (`artist_id`),
- UNIQUE KEY `uk_id_card` (`id_card`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人实名认证信息表';
- -- ========================================================
- -- 2.3 艺人站外社交信息表
- -- ========================================================
- CREATE TABLE `artist_external_info` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `artist_id` INT NOT NULL COMMENT '关联本服务的artist.id',
- `platform_name` VARCHAR(50) NOT NULL COMMENT '站外平台名称',
- `platform_account` VARCHAR(255) NOT NULL COMMENT '平台用户ID/URL/昵称',
- `fans_count` BIGINT DEFAULT 0 COMMENT '平台粉丝数',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE,
- UNIQUE KEY `uk_artist_platform` (`artist_id`, `platform_name`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人站外社交平台信息表';
- -- ========================================================
- -- 2.4 音乐人审核申请表
- -- ========================================================
- CREATE TABLE `artist_audit_record` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `user_username` VARCHAR(50) NOT NULL COMMENT '冗余auth.user.username',
- `artist_id` INT COMMENT '关联本服务的artist.id',
- `apply_type` TINYINT DEFAULT 1 COMMENT '申请类型:1-新注册,2-信息修改,3-重新申请',
- `apply_reason` TEXT COMMENT '申请原因',
- `apply_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
- `audit_status` TINYINT DEFAULT 0 COMMENT '审核状态:0-待审核,1-已通过,2-已驳回',
- `audit_result` TEXT COMMENT '审核结果',
- `reject_reason` TEXT COMMENT '驳回原因',
- `audit_time` DATETIME COMMENT '审核时间',
- `audit_user_id` INT COMMENT '关联auth服务的user.id',
- `audit_username` VARCHAR(50) COMMENT '冗余auth.user.username',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- INDEX `idx_user_id` (`user_id`),
- INDEX `idx_artist_id` (`artist_id`),
- INDEX `idx_apply_time` (`apply_time`),
- INDEX `idx_audit_status` (`audit_status`),
- INDEX `idx_audit_user_id` (`audit_user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='音乐人审核申请记录表';
- -- ========================================================
- -- 3. 内容服务数据库 (wy_content)
- -- ========================================================
- CREATE DATABASE IF NOT EXISTS wy_content DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE wy_content;
- -- ========================================================
- -- 3.1 专辑表
- -- ========================================================
- CREATE TABLE `album` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `album_name` VARCHAR(100) NOT NULL COMMENT '专辑名称',
- `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
- `cover_url` VARCHAR(255) COMMENT '专辑封面URL',
- `release_time` DATE COMMENT '发行时间',
- `description` TEXT COMMENT '专辑描述',
- `album_type` TINYINT DEFAULT 1 COMMENT '专辑类型:1-数字专辑,2-实体专辑,3-EP',
- `price` DECIMAL(10,2) COMMENT '专辑价格',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- `status` TINYINT DEFAULT 0 COMMENT '专辑状态:0-草稿,1-审核中,2-审核失败,3-发布中,4-已上架,5-已下架',
- `audit_reason` VARCHAR(500) COMMENT '审核失败原因',
- `audit_time` DATETIME COMMENT '审核时间',
- `publish_time` DATETIME COMMENT '发布时间',
- `shelf_time` DATETIME COMMENT '上架时间',
- `off_shelf_time` DATETIME COMMENT '下架时间',
- `delete_flag` TINYINT DEFAULT 0 COMMENT '删除标志:0-未删除,1-已删除',
- `delete_time` DATETIME COMMENT '删除时间',
- INDEX `idx_album_name` (`album_name`),
- INDEX `idx_artist_id` (`artist_id`),
- INDEX `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='专辑表';
- -- ========================================================
- -- 3.2 歌曲表
- -- ========================================================
- CREATE TABLE `song` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `song_name` VARCHAR(100) NOT NULL COMMENT '歌曲名称',
- `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
- `album_id` INT COMMENT '关联本服务的album.id',
- `duration` INT COMMENT '时长(秒)',
- `file_url` VARCHAR(255) NOT NULL COMMENT '歌曲音频文件URL',
- `cover_url` VARCHAR(255) COMMENT '歌曲封面URL',
- `release_time` DATE COMMENT '发行时间',
- `lyrics` TEXT COMMENT '歌词',
- `play_count` BIGINT DEFAULT 0 COMMENT '播放量',
- `is_paid` TINYINT DEFAULT 0 COMMENT '是否付费:0-免费,1-付费',
- `price` DECIMAL(10,2) DEFAULT 0.00 COMMENT '单曲价格',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- `status` TINYINT DEFAULT 0 COMMENT '歌曲状态:0-草稿,1-审核中,2-审核失败,3-发布中,4-已上架,5-已下架',
- `audit_reason` VARCHAR(500) COMMENT '审核失败原因',
- `audit_time` DATETIME COMMENT '审核时间',
- `publish_time` DATETIME COMMENT '发布时间',
- `shelf_time` DATETIME COMMENT '上架时间',
- `off_shelf_time` DATETIME COMMENT '下架时间',
- `delete_flag` TINYINT DEFAULT 0 COMMENT '删除标志:0-未删除,1-已删除',
- `delete_time` DATETIME COMMENT '删除时间',
- FOREIGN KEY (`album_id`) REFERENCES `album` (`id`) ON DELETE SET NULL,
- INDEX `idx_song_name` (`song_name`),
- INDEX `idx_play_count` (`play_count`),
- INDEX `idx_artist_id` (`artist_id`),
- INDEX `idx_status` (`status`),
- INDEX `idx_delete_flag` (`delete_flag`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌曲表';
- -- ========================================================
- -- 3.3 歌词表
- -- ========================================================
- CREATE TABLE `lyric` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `song_id` INT NOT NULL COMMENT '关联本服务的song.id',
- `lyrics` TEXT NOT NULL COMMENT 'LRC格式歌词文本',
- `language` VARCHAR(20) DEFAULT 'zh' COMMENT '歌词语言',
- `version` VARCHAR(50) COMMENT '歌词版本',
- `upload_user_id` INT NOT NULL COMMENT '上传用户ID,关联auth服务的user.id',
- `status` TINYINT DEFAULT 0 COMMENT '状态:0-待审核,1-已通过,2-已驳回',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (`song_id`) REFERENCES `song` (`id`) ON DELETE CASCADE,
- INDEX `idx_song_id` (`song_id`),
- INDEX `idx_upload_user_id` (`upload_user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌词表(多版本支持)';
- -- ========================================================
- -- 3.4 歌单表
- -- ========================================================
- CREATE TABLE `playlist` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `playlist_name` VARCHAR(100) NOT NULL COMMENT '歌单名称',
- `cover_url` VARCHAR(255) COMMENT '歌单封面URL',
- `description` TEXT COMMENT '歌单描述',
- `tag` VARCHAR(255) COMMENT '歌单标签',
- `status` TINYINT DEFAULT 0 COMMENT '0-公开,1-私密',
- `song_count` INT DEFAULT 0 COMMENT '歌单歌曲数量',
- `play_count` BIGINT DEFAULT 0 COMMENT '歌单播放量',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- INDEX `idx_playlist_name` (`playlist_name`),
- INDEX `idx_user_id` (`user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌单表';
- -- ========================================================
- -- 3.5 歌单-歌曲关联表
- -- ========================================================
- CREATE TABLE `playlist_song` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `playlist_id` INT NOT NULL COMMENT '关联本服务的playlist.id',
- `song_id` INT NOT NULL COMMENT '关联本服务的song.id',
- `order_num` INT NOT NULL COMMENT '歌曲在歌单中的排序序号',
- `add_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '歌曲添加时间',
- FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE CASCADE,
- FOREIGN KEY (`song_id`) REFERENCES `song` (`id`) ON DELETE CASCADE,
- UNIQUE KEY `uk_playlist_song` (`playlist_id`, `song_id`),
- INDEX `idx_order_num` (`order_num`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌单-歌曲关联表';
- -- ========================================================
- -- 3.6 歌曲推广表
- -- ========================================================
- CREATE TABLE `song_promotion` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `song_id` INT NOT NULL COMMENT '关联本服务的song.id',
- `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
- `promotion_type` TINYINT NOT NULL COMMENT '推广类型:1-首页推荐,2-热门榜单,3-新歌推荐,4-个性化推荐',
- `start_time` DATETIME NOT NULL COMMENT '推广开始时间',
- `end_time` DATETIME NOT NULL COMMENT '推广结束时间',
- `sort` INT DEFAULT 0 COMMENT '推荐排序权重',
- `status` TINYINT DEFAULT 1 COMMENT '状态:0-未生效,1-生效中,2-已过期',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- UNIQUE KEY `uk_song_type` (`song_id`, `promotion_type`),
- INDEX `idx_promotion_type` (`promotion_type`),
- INDEX `idx_status` (`status`),
- INDEX `idx_time_range` (`start_time`, `end_time`),
- INDEX `idx_artist_id` (`artist_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌曲推广表';
- -- ========================================================
- -- 3.7 推广效果统计表
- -- ========================================================
- CREATE TABLE `promotion_stat` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `promotion_id` INT NOT NULL COMMENT '关联本服务的song_promotion.id',
- `stat_date` DATE NOT NULL COMMENT '统计日期',
- `click_count` INT DEFAULT 0 COMMENT '点击量',
- `play_count` INT DEFAULT 0 COMMENT '播放量',
- `collect_count` INT DEFAULT 0 COMMENT '收藏量',
- `share_count` INT DEFAULT 0 COMMENT '分享量',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- FOREIGN KEY (`promotion_id`) REFERENCES `song_promotion` (`id`) ON DELETE CASCADE,
- UNIQUE KEY `uk_promotion_date` (`promotion_id`, `stat_date`),
- INDEX `idx_stat_date` (`stat_date`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推广效果统计表';
- -- ========================================================
- -- 3.8 每日推荐表
- -- ========================================================
- CREATE TABLE `daily_recommend` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `song_id` INT NOT NULL COMMENT '关联本服务的song.id',
- `recommend_date` DATE NOT NULL COMMENT '推荐日期',
- `reason` VARCHAR(255) COMMENT '推荐理由',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- UNIQUE KEY `uk_user_song_date` (`user_id`, `song_id`, `recommend_date`),
- INDEX `idx_recommend_date` (`recommend_date`),
- INDEX `idx_user_id` (`user_id`),
- INDEX `idx_song_id` (`song_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='每日推荐表';
- -- ========================================================
- -- 3.9 我喜欢的音乐表
- -- ========================================================
- CREATE TABLE `user_favorite_song` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `song_id` INT NOT NULL COMMENT '关联本服务的song.id',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
- UNIQUE KEY `uk_user_song` (`user_id`, `song_id`),
- INDEX `idx_user_id` (`user_id`),
- INDEX `idx_song_id` (`song_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='我喜欢的音乐表';
- -- ========================================================
- -- 3.10 我喜欢的歌手表
- -- ========================================================
- CREATE TABLE `user_favorite_artist` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间',
- UNIQUE KEY `uk_user_artist` (`user_id`, `artist_id`),
- INDEX `idx_user_id` (`user_id`),
- INDEX `idx_artist_id` (`artist_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='我喜欢的歌手表';
- -- ========================================================
- -- 3.11 我关注的用户表
- -- ========================================================
- CREATE TABLE `user_follow` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `follower_id` INT NOT NULL COMMENT '关注者ID,关联auth服务的user.id',
- `followed_id` INT NOT NULL COMMENT '被关注者ID,关联auth服务的user.id',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间',
- UNIQUE KEY `uk_follower_followed` (`follower_id`, `followed_id`),
- INDEX `idx_follower_id` (`follower_id`),
- INDEX `idx_followed_id` (`followed_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='我关注的用户表';
- -- ========================================================
- -- 3.12 我喜欢的歌单表
- -- ========================================================
- CREATE TABLE `user_playlist_favorite` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `playlist_id` INT NOT NULL COMMENT '关联本服务的playlist.id',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
- FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE CASCADE,
- UNIQUE KEY `uk_user_playlist` (`user_id`, `playlist_id`),
- INDEX `idx_user_id` (`user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='我喜欢的歌单表';
- -- ========================================================
- -- 4. 媒体服务数据库 (wy_media)
- -- ========================================================
- CREATE DATABASE IF NOT EXISTS wy_media DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE wy_media;
- -- ========================================================
- -- 4.1 媒体文件信息表
- -- ========================================================
- CREATE TABLE `media_file` (
- `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
- `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
- `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名(系统生成的唯一文件名)',
- `file_type` VARCHAR(20) NOT NULL COMMENT '文件类型:image、audio、video',
- `file_size` BIGINT COMMENT '文件大小(字节)',
- `bucket_name` VARCHAR(100) NOT NULL COMMENT '存储桶名称',
- `file_url` VARCHAR(500) NOT NULL COMMENT '文件访问URL',
- `storage_type` VARCHAR(20) DEFAULT 'oss' COMMENT '存储类型(oss、local、minio等)',
- `status` TINYINT DEFAULT 0 COMMENT '文件状态:0-正常,1-已删除(逻辑删除)',
- `md5` VARCHAR(32) COMMENT '文件MD5值',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- INDEX `idx_file_type` (`file_type`),
- INDEX `idx_bucket_name` (`bucket_name`),
- INDEX `idx_create_time` (`create_time`),
- INDEX `idx_md5` (`md5`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体文件信息表';
- -- ========================================================
- -- 4.2 艺人媒体文件历史记录表
- -- ========================================================
- CREATE TABLE `artist_media_history` (
- `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
- `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
- `media_type` VARCHAR(20) NOT NULL COMMENT '媒体类型: avatar、header_image等',
- `media_file_id` BIGINT NOT NULL COMMENT '关联本服务的media_file.id',
- `is_current` TINYINT DEFAULT 0 COMMENT '是否为当前使用版本:0-否,1-是',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- FOREIGN KEY (`media_file_id`) REFERENCES `media_file` (`id`) ON DELETE RESTRICT,
- UNIQUE KEY `uk_artist_media_current` (`artist_id`, `media_type`, `is_current`),
- INDEX `idx_artist_id` (`artist_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人媒体文件历史记录表';
- -- ========================================================
- -- 5. 订单服务数据库 (wy_order)
- -- ========================================================
- CREATE DATABASE IF NOT EXISTS wy_order DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE wy_order;
- -- ========================================================
- -- 5.1 商品分类表
- -- ========================================================
- CREATE TABLE `product_category` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `name` VARCHAR(100) NOT NULL COMMENT '分类名称',
- `parent_id` INT COMMENT '父分类ID',
- `sort` INT DEFAULT 0 COMMENT '排序权重',
- `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- FOREIGN KEY (`parent_id`) REFERENCES `product_category` (`id`) ON DELETE SET NULL,
- INDEX `idx_parent_id` (`parent_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表';
- -- ========================================================
- -- 5.2 商品表
- -- ========================================================
- CREATE TABLE `product` (
- `id` INT AUTO_INCREMENT PRIMARY KEY,
- `category_id` INT NOT NULL COMMENT '关联本服务的product_category.id',
- `name` VARCHAR(255) NOT NULL COMMENT '商品名称',
- `cover_url` VARCHAR(500) COMMENT '商品封面URL',
- `description` TEXT COMMENT '商品描述',
- `price` DECIMAL(10,2) NOT NULL COMMENT '售价',
- `original_price` DECIMAL(10,2) COMMENT '原价',
- `stock` INT NOT NULL DEFAULT 0 COMMENT '库存(-1表示无限)',
- `product_type` TINYINT NOT NULL COMMENT '类型:1-数字商品,2-实体商品',
- `artist_id` INT COMMENT '关联artist服务的artist.id',
- `album_id` INT COMMENT '关联content服务的album.id',
- `song_id` INT COMMENT '关联content服务的song.id',
- `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架',
- `sales_count` INT DEFAULT 0 COMMENT '销量',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- FOREIGN KEY (`category_id`) REFERENCES `product_category` (`id`) ON DELETE CASCADE,
- INDEX `idx_product_name` (`name`),
- INDEX `idx_product_type` (`product_type`),
- INDEX `idx_status` (`status`),
- INDEX `idx_artist_id` (`artist_id`),
- INDEX `idx_album_id` (`album_id`),
- INDEX `idx_song_id` (`song_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
- -- ========================================================
- -- 5.3 订单表
- -- ========================================================
- CREATE TABLE `order` (
- `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
- `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号',
- `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
- `total_amount` DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
- `pay_amount` DECIMAL(10,2) NOT NULL COMMENT '实付金额',
- `discount_amount` DECIMAL(10,2) DEFAULT 0.00 COMMENT '优惠金额',
- `pay_type` TINYINT COMMENT '支付方式:1-微信,2-支付宝',
- `status` TINYINT NOT NULL COMMENT '状态:0-待支付,1-已支付,2-已取消,3-已退款,4-已完成',
- `pay_time` DATETIME COMMENT '支付时间',
- `cancel_time` DATETIME COMMENT '取消时间',
- `finish_time` DATETIME COMMENT '完成时间',
- `receive_name` VARCHAR(100) COMMENT '收货人姓名',
- `receive_phone` VARCHAR(20) COMMENT '收货人电话',
- `receive_address` TEXT COMMENT '收货地址',
- `note` TEXT COMMENT '订单备注',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- UNIQUE KEY `uk_order_no` (`order_no`),
- INDEX `idx_user_id` (`user_id`),
- INDEX `idx_status` (`status`),
- INDEX `idx_create_time` (`create_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';
- -- ========================================================
- -- 5.4 订单项表
- -- ========================================================
- CREATE TABLE `order_item` (
- `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
- `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
- `product_id` INT NULL COMMENT '关联本服务的product.id',
- `product_name` VARCHAR(255) NOT NULL COMMENT '商品名称快照',
- `product_cover` VARCHAR(500) COMMENT '商品封面快照',
- `product_price` DECIMAL(10,2) NOT NULL COMMENT '下单时单价',
- `quantity` INT NOT NULL DEFAULT 1 COMMENT '购买数量',
- `sub_amount` DECIMAL(10,2) NOT NULL COMMENT '小计金额',
- `digital_code` VARCHAR(100) COMMENT '数字商品兑换码',
- `digital_code_status` TINYINT DEFAULT 0 COMMENT '兑换码状态:0-未使用,1-已使用',
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE,
- FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE SET NULL,
- INDEX `idx_order_id` (`order_id`),
- INDEX `idx_product_id` (`product_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单项表';
- -- ========================================================
- -- 数据库初始化完成
- -- ========================================================
- SELECT '数据库初始化完成!' AS '初始化结果';
|