init.sql 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. -- 校园闲置物品交易平台 DDL
  2. -- 数据库:campus_idle_item_trading_platform
  3. CREATE DATABASE IF NOT EXISTS campus_idle_item_trading_platform;
  4. USE campus_idle_item_trading_platform;
  5. -- 用户表
  6. CREATE TABLE IF NOT EXISTS `user` (
  7. `id` BIGINT NOT NULL AUTO_INCREMENT,
  8. `student_id` VARCHAR(20) NOT NULL,
  9. `name` VARCHAR(50) NOT NULL,
  10. `password_hash` VARCHAR(255) NOT NULL,
  11. `nickname` VARCHAR(50) DEFAULT NULL,
  12. `avatar_url` VARCHAR(255) DEFAULT NULL,
  13. `signature` VARCHAR(200) DEFAULT NULL,
  14. `campus_card_url` VARCHAR(255) DEFAULT NULL,
  15. `auth_status` VARCHAR(20) NOT NULL DEFAULT 'UNAUTHENTICATED',
  16. `status` VARCHAR(20) NOT NULL DEFAULT 'NORMAL',
  17. `role` VARCHAR(20) NOT NULL DEFAULT 'USER',
  18. `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  19. `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  20. PRIMARY KEY (`id`),
  21. UNIQUE KEY `uk_student_id` (`student_id`)
  22. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  23. -- 分类表
  24. CREATE TABLE IF NOT EXISTS `category` (
  25. `id` BIGINT NOT NULL AUTO_INCREMENT,
  26. `name` VARCHAR(50) NOT NULL,
  27. `status` VARCHAR(20) NOT NULL DEFAULT 'ENABLED',
  28. `sort_order` INT NOT NULL DEFAULT 0,
  29. `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  30. PRIMARY KEY (`id`)
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  32. -- 物品表
  33. CREATE TABLE IF NOT EXISTS `item` (
  34. `id` BIGINT NOT NULL AUTO_INCREMENT,
  35. `seller_id` BIGINT NOT NULL,
  36. `category_id` BIGINT DEFAULT NULL,
  37. `title` VARCHAR(100) NOT NULL,
  38. `description` TEXT,
  39. `price` DECIMAL(10,2) NOT NULL,
  40. `images` TEXT,
  41. `trade_method` VARCHAR(20) NOT NULL,
  42. `status` VARCHAR(20) NOT NULL DEFAULT 'PENDING',
  43. `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  44. `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  45. PRIMARY KEY (`id`),
  46. KEY `idx_seller_id` (`seller_id`),
  47. KEY `idx_category_id` (`category_id`),
  48. KEY `idx_status` (`status`),
  49. KEY `idx_created_at` (`created_at`)
  50. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  51. -- 订单表
  52. CREATE TABLE IF NOT EXISTS `order` (
  53. `id` BIGINT NOT NULL AUTO_INCREMENT,
  54. `item_id` BIGINT NOT NULL,
  55. `buyer_id` BIGINT NOT NULL,
  56. `seller_id` BIGINT NOT NULL,
  57. `trade_method` VARCHAR(20) NOT NULL,
  58. `status` VARCHAR(20) NOT NULL DEFAULT 'PENDING',
  59. `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  60. `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  61. PRIMARY KEY (`id`),
  62. KEY `idx_item_id` (`item_id`),
  63. KEY `idx_buyer_id` (`buyer_id`),
  64. KEY `idx_seller_id` (`seller_id`),
  65. KEY `idx_status` (`status`)
  66. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  67. -- 消息表
  68. CREATE TABLE IF NOT EXISTS `message` (
  69. `id` BIGINT NOT NULL AUTO_INCREMENT,
  70. `from_user_id` BIGINT NOT NULL,
  71. `to_user_id` BIGINT NOT NULL,
  72. `item_id` BIGINT DEFAULT NULL,
  73. `content` TEXT,
  74. `image_url` VARCHAR(255) DEFAULT NULL,
  75. `is_read` TINYINT(1) NOT NULL DEFAULT 0,
  76. `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  77. PRIMARY KEY (`id`),
  78. KEY `idx_from_user_id` (`from_user_id`),
  79. KEY `idx_to_user_id` (`to_user_id`),
  80. KEY `idx_created_at` (`created_at`)
  81. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  82. -- 审核记录表
  83. CREATE TABLE IF NOT EXISTS `review` (
  84. `id` BIGINT NOT NULL AUTO_INCREMENT,
  85. `admin_id` BIGINT NOT NULL,
  86. `review_type` VARCHAR(20) NOT NULL,
  87. `target_id` BIGINT NOT NULL,
  88. `result` VARCHAR(20) NOT NULL,
  89. `reason` VARCHAR(255) DEFAULT NULL,
  90. `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  91. PRIMARY KEY (`id`),
  92. KEY `idx_review_type_target` (`review_type`, `target_id`),
  93. KEY `idx_admin_id` (`admin_id`)
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  95. -- 插入默认分类数据
  96. INSERT INTO `category` (`name`, `status`, `sort_order`) VALUES
  97. ('教材', 'ENABLED', 1),
  98. ('电子产品', 'ENABLED', 2),
  99. ('生活用品', 'ENABLED', 3),
  100. ('体育用品', 'ENABLED', 4),
  101. ('衣物', 'ENABLED', 5),
  102. ('其他', 'ENABLED', 6);
  103. -- 插入默认管理员(密码:admin123,MD5加密)
  104. INSERT INTO `user` (`student_id`, `name`, `password_hash`, `nickname`, `role`, `auth_status`, `status`)
  105. VALUES ('admin', '管理员', '0192023a7bbd73250516f069df18b500', '管理员', 'ADMIN', 'AUTHENTICATED', 'NORMAL');