order.sql 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. CREATE DATABASE IF NOT EXISTS wy_order DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. USE wy_order;
  3. -- 订单表(支持音乐平台多种商品类型)
  4. CREATE TABLE `orders` (
  5. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  6. `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号,格式:YYMMDDHHMMSS+6位随机数',
  7. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
  8. `product_id` INT NULL COMMENT '关联本服务的id',
  9. `total_amount` DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
  10. `pay_amount` DECIMAL(10,2) NOT NULL COMMENT '实付金额',
  11. `discount_amount` DECIMAL(10,2) DEFAULT 0.00 COMMENT '优惠金额',
  12. `order_type` TINYINT NOT NULL COMMENT '订单类型:1-电子类 2-会员类,3-推送类,4-周边类 5 实体类专辑 ',
  13. `status` TINYINT NOT NULL COMMENT '状态:0-待支付,1-已支付,2-已取消,3-已退款,4-已完成,5-配送中',
  14. `pay_time` DATETIME COMMENT '支付时间',
  15. `cancel_time` DATETIME COMMENT '取消时间',
  16. `finish_time` DATETIME COMMENT '完成时间',
  17. `receive_name` VARCHAR(100) COMMENT '收货人姓名(周边类商品使用)',
  18. `receive_phone` VARCHAR(20) COMMENT '收货人电话(周边类商品使用)',
  19. `receive_address` TEXT COMMENT '收货地址(周边类商品使用)',
  20. `note` TEXT COMMENT '订单备注',
  21. `shipping_fee` DECIMAL(10,2) DEFAULT 0.00 COMMENT '运费(周边类商品使用)',
  22. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  23. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  24. UNIQUE KEY `uk_order_no` (`order_no`),
  25. INDEX `idx_user_id` (`user_id`),
  26. INDEX `idx_status` (`status`),
  27. INDEX `idx_create_time` (`create_time`),
  28. INDEX `idx_order_type` (`order_type`)
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';
  30. -- 电子类订单项表(电子专辑、电子歌曲,绑定歌手,根据类型绑定歌曲和专辑)
  31. CREATE TABLE `order_item_digital` (
  32. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  33. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  34. `product_id` INT NULL COMMENT '关联本服务的product.id',
  35. `product_name` VARCHAR(255) NOT NULL COMMENT '商品名称快照',
  36. `product_cover` VARCHAR(500) COMMENT '商品封面快照',
  37. `product_price` DECIMAL(10,2) NOT NULL COMMENT '下单时单价',
  38. `quantity` INT NOT NULL DEFAULT 1 COMMENT '购买数量',
  39. `sub_amount` DECIMAL(10,2) NOT NULL COMMENT '小计金额',
  40. `item_type` TINYINT NOT NULL COMMENT '电子商品类型:1-电子专辑,2-电子歌曲',
  41. `artist_id` INT COMMENT '关联artist服务的artist.id',
  42. `album_id` INT COMMENT '关联content服务的album.id(仅专辑使用)',
  43. `song_id` INT COMMENT '关联content服务的song.id(仅歌曲使用)',
  44. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  45. FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE,
  46. INDEX `idx_order_id` (`order_id`),
  47. INDEX `idx_artist_id` (`artist_id`),
  48. INDEX `idx_album_id` (`album_id`),
  49. INDEX `idx_song_id` (`song_id`)
  50. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电子类订单项表';
  51. -- 会员类订单项表(VIP会员,记录开始和到期时间)
  52. CREATE TABLE `order_item_vip` (
  53. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  54. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  55. `product_name` VARCHAR(255) NOT NULL COMMENT '商品名称快照',
  56. `product_cover` VARCHAR(500) COMMENT '商品封面快照',
  57. `product_price` DECIMAL(10,2) NOT NULL COMMENT '下单时单价',
  58. `quantity` INT NOT NULL DEFAULT 1 COMMENT '购买数量',
  59. `sub_amount` DECIMAL(10,2) NOT NULL COMMENT '小计金额',
  60. `vip_type` TINYINT NOT NULL COMMENT 'VIP类型:1-普通VIP,2-超级VIP,3-黑胶VIP',
  61. `duration_days` INT NOT NULL COMMENT 'VIP时长(天)',
  62. `vip_start_time` DATETIME COMMENT 'VIP开始时间',
  63. `vip_end_time` DATETIME COMMENT 'VIP结束时间',
  64. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  65. FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE,
  66. INDEX `idx_order_id` (`order_id`),
  67. INDEX `idx_vip_start_time` (`vip_start_time`),
  68. INDEX `idx_vip_end_time` (`vip_end_time`)
  69. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员类订单项表';
  70. -- 推送类订单项表(推送流量,记录推送日期)
  71. CREATE TABLE `order_item_push` (
  72. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  73. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  74. `product_id` INT NULL COMMENT '关联本服务的id',
  75. `sub_amount` DECIMAL(10,2) NOT NULL COMMENT '小计金额',
  76. `push_amount` INT NOT NULL COMMENT '推送流量数量',
  77. `push_date` DATE COMMENT '推送执行日期',
  78. `push_status` TINYINT DEFAULT 0 COMMENT '推送状态:0-待推送,1-已推送,2-推送失败',
  79. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  80. FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE,
  81. INDEX `idx_order_id` (`order_id`),
  82. INDEX `idx_push_date` (`push_date`),
  83. INDEX `idx_push_status` (`push_status`)
  84. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推送类订单项表';
  85. -- 周边类订单项表(网易云主题周边、专辑周边、歌手周边、其他周边)
  86. CREATE TABLE `order_item_peripheral` (
  87. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  88. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  89. `product_id` INT NULL COMMENT '关联本服务的id',
  90. `product_name` VARCHAR(255) NOT NULL COMMENT '商品名称快照',
  91. `product_cover` VARCHAR(500) COMMENT '商品封面快照',
  92. `product_price` DECIMAL(10,2) NOT NULL COMMENT '下单时单价',
  93. `quantity` INT NOT NULL DEFAULT 1 COMMENT '购买数量',
  94. `sub_amount` DECIMAL(10,2) NOT NULL COMMENT '小计金额',
  95. `peripheral_type` TINYINT NOT NULL COMMENT '周边类型:1-网易云主题周边,2-专辑周边,3-歌手周边,4-其他周边',
  96. `artist_id` INT COMMENT '关联artist服务的artist.id(歌手周边和专辑周边使用)',
  97. `album_id` INT COMMENT '关联content服务的album.id(专辑周边使用)',
  98. `shipping_status` TINYINT DEFAULT 0 COMMENT '物流状态:0-待发货,1-已发货,2-已签收,3-退货中,4-已退货',
  99. `tracking_number` VARCHAR(100) COMMENT '物流单号',
  100. `shipping_company` VARCHAR(50) COMMENT '物流公司',
  101. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  102. FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE,
  103. INDEX `idx_order_id` (`order_id`),
  104. INDEX `idx_artist_id` (`artist_id`),
  105. INDEX `idx_album_id` (`album_id`),
  106. INDEX `idx_shipping_status` (`shipping_status`)
  107. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='周边类订单项表';
  108. -- ------------------------------
  109. -- 实体专辑库存表(关联content服务的album.id)
  110. -- ------------------------------
  111. CREATE TABLE `physical_album_stock` (
  112. `id` INT AUTO_INCREMENT PRIMARY KEY,
  113. `album_id` INT NOT NULL COMMENT '关联content服务的album.id',
  114. `sku_code` VARCHAR(50) NOT NULL COMMENT 'SKU编码,唯一标识实体专辑的规格',
  115. `edition_type` VARCHAR(50) COMMENT '版本类型:如标准版、豪华版、限量版、签名版等',
  116. `format_type` VARCHAR(50) COMMENT '格式类型:CD、黑胶、磁带、数字专辑码等',
  117. `specifications` VARCHAR(500) COMMENT '详细规格描述,如尺寸、材质、包装等',
  118. `original_price` DECIMAL(10,2) COMMENT '原价',
  119. `current_price` DECIMAL(10,2) COMMENT '当前售价',
  120. `stock_quantity` INT NOT NULL DEFAULT 0 COMMENT '库存数量',
  121. `weight` DECIMAL(5,2) COMMENT '商品重量(kg)',
  122. `size_info` VARCHAR(200) COMMENT '商品尺寸信息',
  123. `sale_status` TINYINT DEFAULT 1 COMMENT '销售状态:0-停止销售,1-正常销售,2-限量销售,3-预售',
  124. `release_date` DATE COMMENT '实体专辑发行日期',
  125. `preorder_start_time` DATETIME COMMENT '预售开始时间',
  126. `preorder_end_time` DATETIME COMMENT '预售结束时间',
  127. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  128. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  129. UNIQUE KEY `uk_sku_code` (`sku_code`),
  130. INDEX `idx_album_id` (`album_id`),
  131. INDEX `idx_sku_code` (`sku_code`),
  132. INDEX `idx_sale_status` (`sale_status`),
  133. INDEX `idx_stock_quantity` (`stock_quantity`)
  134. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='实体专辑库存表';
  135. -- 实体商品表(通用版:包含网易云主题周边、专辑周边、歌手周边、其他周边等)
  136. CREATE TABLE `physical_product` (
  137. `id` INT AUTO_INCREMENT PRIMARY KEY,
  138. `name` VARCHAR(255) NOT NULL COMMENT '商品名称',
  139. `cover_url` VARCHAR(500) COMMENT '商品封面URL',
  140. `description` TEXT COMMENT '商品描述',
  141. `price` DECIMAL(10,2) NOT NULL COMMENT '售价',
  142. `original_price` DECIMAL(10,2) COMMENT '原价',
  143. `stock` INT NOT NULL DEFAULT 0 COMMENT '库存数量',
  144. `product_type` TINYINT NOT NULL COMMENT '实体商品类型:1-网易云主题周边,2-专辑周边,3-歌手周边,4-其他周边',
  145. `publisher_id` INT COMMENT '发布者ID(关联对应服务的发布者表:如artist.id/up主id/品牌id等)',
  146. `content_id` INT COMMENT '关联内容ID(如album.id/视频id/文章id等,根据publisher_type匹配)',
  147. `specifications` VARCHAR(500) COMMENT '商品规格,如尺寸、材质、颜色等',
  148. `weight` DECIMAL(5,2) COMMENT '商品重量(kg)',
  149. `size_info` VARCHAR(200) COMMENT '商品尺寸信息',
  150. `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架',
  151. `sales_count` INT DEFAULT 0 COMMENT '销量',
  152. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  153. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  154. INDEX `idx_product_type` (`product_type`),
  155. INDEX `idx_status` (`status`),
  156. INDEX `idx_content_id` (`content_id`)
  157. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='实体商品表(通用版)';
  158. -- ------------------------------
  159. -- 5. 用户余额表(关联auth服务的user.id)
  160. -- ------------------------------
  161. CREATE TABLE `user_balance` (
  162. `id` INT AUTO_INCREMENT PRIMARY KEY,
  163. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
  164. `balance` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '用户余额',
  165. `frozen_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '冻结金额',
  166. `available_balance` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '可用余额(balance - frozen_amount)',
  167. `last_recharge_time` DATETIME COMMENT '最后充值时间',
  168. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  169. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  170. UNIQUE KEY `uk_user_id` (`user_id`),
  171. INDEX `idx_balance` (`balance`),
  172. INDEX `idx_available_balance` (`available_balance`)
  173. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户余额表';
  174. -- ------------------------------
  175. -- 6. 用户充值记录表(关联auth服务的user.id)
  176. -- ------------------------------
  177. CREATE TABLE `recharge_record` (
  178. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  179. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
  180. `order_no` VARCHAR(50) NOT NULL COMMENT '充值订单号',
  181. `recharge_amount` DECIMAL(10,2) NOT NULL COMMENT '充值金额',
  182. `actual_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '实际到账金额',
  183. `gift_amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '赠送金额',
  184. `pay_type` TINYINT NOT NULL COMMENT '支付方式:1-微信,2-支付宝,3-银行卡',
  185. `status` TINYINT NOT NULL COMMENT '状态:0-待支付,1-充值成功,2-充值失败,3-已退款',
  186. `pay_time` DATETIME COMMENT '支付时间',
  187. `complete_time` DATETIME COMMENT '完成时间',
  188. `channel_order_no` VARCHAR(100) COMMENT '第三方支付渠道订单号',
  189. `remark` VARCHAR(255) COMMENT '备注',
  190. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  191. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  192. UNIQUE KEY `uk_order_no` (`order_no`),
  193. INDEX `idx_user_id` (`user_id`),
  194. INDEX `idx_status` (`status`),
  195. INDEX `idx_create_time` (`create_time`),
  196. INDEX `idx_pay_time` (`pay_time`)
  197. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户充值记录表';
  198. -- ------------------------------
  199. -- 7. 用户消费记录表(关联auth服务的user.id和order表)
  200. -- ------------------------------
  201. CREATE TABLE `consume_record` (
  202. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  203. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
  204. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  205. `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号',
  206. `consume_amount` DECIMAL(10,2) NOT NULL COMMENT '消费金额',
  207. `payment_method` TINYINT NOT NULL COMMENT '支付方式:0-余额支付,1-微信,2-支付宝,3-银行卡',
  208. `balance_used` DECIMAL(10,2) DEFAULT 0.00 COMMENT '使用余额支付金额',
  209. `balance_after` DECIMAL(10,2) NOT NULL COMMENT '消费后余额',
  210. `consume_time` DATETIME NOT NULL COMMENT '消费时间',
  211. `remark` VARCHAR(255) COMMENT '备注',
  212. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  213. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  214. UNIQUE KEY `uk_order_no` (`order_no`),
  215. INDEX `idx_user_id` (`user_id`),
  216. INDEX `idx_order_id` (`order_id`),
  217. INDEX `idx_consume_time` (`consume_time`),
  218. INDEX `idx_payment_method` (`payment_method`)
  219. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户消费记录表';
  220. -- ------------------------------
  221. -- 8. 退款记录表(关联order表)
  222. -- ------------------------------
  223. CREATE TABLE `refund_record` (
  224. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  225. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  226. `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号',
  227. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
  228. `refund_amount` DECIMAL(10,2) NOT NULL COMMENT '退款金额',
  229. `refund_reason` VARCHAR(255) NOT NULL COMMENT '退款原因',
  230. `refund_type` TINYINT NOT NULL COMMENT '退款类型:1-全额退款,2-部分退款',
  231. `status` TINYINT NOT NULL COMMENT '状态:1-申请中,2-同意退款,3-拒绝退款,4-已退款',
  232. `apply_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
  233. `process_time` DATETIME COMMENT '处理时间',
  234. `refund_channel` TINYINT COMMENT '退款渠道:1-原路退回,2-退回余额',
  235. `admin_id` INT COMMENT '处理管理员ID',
  236. `remark` TEXT COMMENT '处理备注',
  237. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  238. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  239. INDEX `idx_order_id` (`order_id`),
  240. INDEX `idx_user_id` (`user_id`),
  241. INDEX `idx_status` (`status`),
  242. INDEX `idx_apply_time` (`apply_time`)
  243. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款记录表';