order.sql 6.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. CREATE DATABASE IF NOT EXISTS wy_order DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. USE wy_order;
  3. -- ------------------------------
  4. -- 1. 商品分类表
  5. -- ------------------------------
  6. CREATE TABLE `product_category` (
  7. `id` INT AUTO_INCREMENT PRIMARY KEY,
  8. `name` VARCHAR(100) NOT NULL COMMENT '分类名称',
  9. `parent_id` INT COMMENT '父分类ID',
  10. `sort` INT DEFAULT 0 COMMENT '排序权重',
  11. `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
  12. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  13. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  14. FOREIGN KEY (`parent_id`) REFERENCES `product_category` (`id`) ON DELETE SET NULL,
  15. INDEX `idx_parent_id` (`parent_id`)
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表';
  17. -- ------------------------------
  18. -- 2. 商品表(关联artist服务的artist.id、content服务的album/song.id)
  19. -- ------------------------------
  20. CREATE TABLE `product` (
  21. `id` INT AUTO_INCREMENT PRIMARY KEY,
  22. `category_id` INT NOT NULL COMMENT '关联本服务的product_category.id',
  23. `name` VARCHAR(255) NOT NULL COMMENT '商品名称',
  24. `cover_url` VARCHAR(500) COMMENT '商品封面URL',
  25. `description` TEXT COMMENT '商品描述',
  26. `price` DECIMAL(10,2) NOT NULL COMMENT '售价',
  27. `original_price` DECIMAL(10,2) COMMENT '原价',
  28. `stock` INT NOT NULL DEFAULT 0 COMMENT '库存(-1表示无限)',
  29. `product_type` TINYINT NOT NULL COMMENT '类型:1-数字商品,2-实体商品',
  30. `artist_id` INT COMMENT '关联artist服务的artist.id',
  31. `album_id` INT COMMENT '关联content服务的album.id',
  32. `song_id` INT COMMENT '关联content服务的song.id',
  33. `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架',
  34. `sales_count` INT DEFAULT 0 COMMENT '销量',
  35. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  36. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  37. FOREIGN KEY (`category_id`) REFERENCES `product_category` (`id`) ON DELETE CASCADE,
  38. INDEX `idx_product_name` (`name`),
  39. INDEX `idx_product_type` (`product_type`),
  40. INDEX `idx_status` (`status`),
  41. INDEX `idx_artist_id` (`artist_id`), -- 逻辑关联索引
  42. INDEX `idx_album_id` (`album_id`), -- 逻辑关联索引
  43. INDEX `idx_song_id` (`song_id`) -- 逻辑关联索引
  44. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
  45. -- ------------------------------
  46. -- 3. 订单表(关联auth服务的user.id)
  47. -- ------------------------------
  48. CREATE TABLE `order` (
  49. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  50. `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号',
  51. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id',
  52. `total_amount` DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
  53. `pay_amount` DECIMAL(10,2) NOT NULL COMMENT '实付金额',
  54. `discount_amount` DECIMAL(10,2) DEFAULT 0.00 COMMENT '优惠金额',
  55. `pay_type` TINYINT COMMENT '支付方式:1-微信,2-支付宝',
  56. `status` TINYINT NOT NULL COMMENT '状态:0-待支付,1-已支付,2-已取消,3-已退款,4-已完成',
  57. `pay_time` DATETIME COMMENT '支付时间',
  58. `cancel_time` DATETIME COMMENT '取消时间',
  59. `finish_time` DATETIME COMMENT '完成时间',
  60. `receive_name` VARCHAR(100) COMMENT '收货人姓名',
  61. `receive_phone` VARCHAR(20) COMMENT '收货人电话',
  62. `receive_address` TEXT COMMENT '收货地址',
  63. `note` TEXT COMMENT '订单备注',
  64. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  65. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  66. UNIQUE KEY `uk_order_no` (`order_no`),
  67. INDEX `idx_user_id` (`user_id`), -- 逻辑关联索引
  68. INDEX `idx_status` (`status`),
  69. INDEX `idx_create_time` (`create_time`)
  70. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';
  71. -- ------------------------------
  72. -- 4. 订单项表(关联本服务的order和product表)
  73. -- ------------------------------
  74. CREATE TABLE `order_item` (
  75. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  76. `order_id` BIGINT NOT NULL COMMENT '关联本服务的order.id',
  77. `product_id` INT NULL COMMENT '关联本服务的product.id',
  78. `product_name` VARCHAR(255) NOT NULL COMMENT '商品名称快照',
  79. `product_cover` VARCHAR(500) COMMENT '商品封面快照',
  80. `product_price` DECIMAL(10,2) NOT NULL COMMENT '下单时单价',
  81. `quantity` INT NOT NULL DEFAULT 1 COMMENT '购买数量',
  82. `sub_amount` DECIMAL(10,2) NOT NULL COMMENT '小计金额',
  83. `digital_code` VARCHAR(100) COMMENT '数字商品兑换码',
  84. `digital_code_status` TINYINT DEFAULT 0 COMMENT '兑换码状态:0-未使用,1-已使用',
  85. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  86. FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE,
  87. FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE SET NULL,
  88. INDEX `idx_order_id` (`order_id`),
  89. INDEX `idx_product_id` (`product_id`)
  90. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单项表';