init.sql 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. CREATE DATABASE IF NOT EXISTS ssm;
  2. USE ssm;
  3. -- 1. 蛋糕分类
  4. CREATE TABLE IF NOT EXISTS cake_category (
  5. id INT PRIMARY KEY AUTO_INCREMENT,
  6. name VARCHAR(50) NOT NULL UNIQUE,
  7. sort_order INT DEFAULT 0,
  8. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  9. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  11. -- 2. 蛋糕
  12. CREATE TABLE IF NOT EXISTS cake (
  13. id INT PRIMARY KEY AUTO_INCREMENT,
  14. category_id INT,
  15. name VARCHAR(100) NOT NULL,
  16. description TEXT,
  17. base_price DECIMAL(10,2) NOT NULL,
  18. main_image VARCHAR(255),
  19. taste VARCHAR(50),
  20. layers VARCHAR(50),
  21. filling VARCHAR(100),
  22. style VARCHAR(50),
  23. is_customizable TINYINT DEFAULT 0,
  24. is_new TINYINT DEFAULT 0,
  25. is_hot TINYINT DEFAULT 0,
  26. is_discount TINYINT DEFAULT 0,
  27. discount_price DECIMAL(10,2),
  28. stock INT DEFAULT 0,
  29. status VARCHAR(20) DEFAULT '上架',
  30. sales_count INT DEFAULT 0,
  31. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  32. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  33. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  34. -- 3. 蛋糕图片
  35. CREATE TABLE IF NOT EXISTS cake_image (
  36. id INT PRIMARY KEY AUTO_INCREMENT,
  37. cake_id INT,
  38. image_url VARCHAR(255) NOT NULL,
  39. is_main TINYINT DEFAULT 0,
  40. sort_order INT DEFAULT 0
  41. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  42. -- 4. 蛋糕规格
  43. CREATE TABLE IF NOT EXISTS cake_spec (
  44. id INT PRIMARY KEY AUTO_INCREMENT,
  45. cake_id INT,
  46. spec_name VARCHAR(50) NOT NULL,
  47. add_price DECIMAL(10,2) DEFAULT 0.00,
  48. sort_order INT DEFAULT 0
  49. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  50. -- 5. 定制选项
  51. CREATE TABLE IF NOT EXISTS custom_option (
  52. id INT PRIMARY KEY AUTO_INCREMENT,
  53. cake_id INT,
  54. option_type VARCHAR(30) NOT NULL,
  55. option_name VARCHAR(50) NOT NULL,
  56. add_price DECIMAL(10,2) DEFAULT 0.00,
  57. sort_order INT DEFAULT 0
  58. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  59. -- 6. 用户
  60. CREATE TABLE IF NOT EXISTS user (
  61. id INT PRIMARY KEY AUTO_INCREMENT,
  62. username VARCHAR(50) NOT NULL UNIQUE,
  63. password VARCHAR(255) NOT NULL,
  64. nickname VARCHAR(50),
  65. phone VARCHAR(20),
  66. email VARCHAR(100),
  67. avatar VARCHAR(255),
  68. status VARCHAR(20) DEFAULT '正常',
  69. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  70. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  71. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  72. -- 7. 地址
  73. CREATE TABLE IF NOT EXISTS address (
  74. id INT PRIMARY KEY AUTO_INCREMENT,
  75. user_id INT,
  76. receiver_name VARCHAR(50) NOT NULL,
  77. receiver_phone VARCHAR(20) NOT NULL,
  78. province VARCHAR(50),
  79. city VARCHAR(50),
  80. district VARCHAR(50),
  81. detail_address VARCHAR(255) NOT NULL,
  82. is_default TINYINT DEFAULT 0,
  83. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  84. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  85. -- 8. 购物车
  86. CREATE TABLE IF NOT EXISTS cart (
  87. id INT PRIMARY KEY AUTO_INCREMENT,
  88. user_id INT UNIQUE,
  89. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  90. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  91. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  92. -- 9. 购物车项
  93. CREATE TABLE IF NOT EXISTS cart_item (
  94. id INT PRIMARY KEY AUTO_INCREMENT,
  95. cart_id INT,
  96. cake_id INT,
  97. spec_id INT,
  98. quantity INT DEFAULT 1,
  99. custom_json TEXT,
  100. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  101. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  102. -- 10. 订单
  103. CREATE TABLE IF NOT EXISTS orders (
  104. id INT PRIMARY KEY AUTO_INCREMENT,
  105. order_no VARCHAR(32) NOT NULL UNIQUE,
  106. user_id INT,
  107. total_amount DECIMAL(10,2) NOT NULL,
  108. discount_amount DECIMAL(10,2) DEFAULT 0.00,
  109. pay_amount DECIMAL(10,2) NOT NULL,
  110. status VARCHAR(20) DEFAULT '待付款',
  111. receiver_name VARCHAR(50),
  112. receiver_phone VARCHAR(20),
  113. province VARCHAR(50),
  114. city VARCHAR(50),
  115. district VARCHAR(50),
  116. detail_address VARCHAR(255),
  117. delivery_date DATE,
  118. delivery_time VARCHAR(20),
  119. remark VARCHAR(500),
  120. refuse_reason VARCHAR(500),
  121. payment_method VARCHAR(20) DEFAULT '模拟支付',
  122. payment_time DATETIME,
  123. delivery_fee DECIMAL(10,2) DEFAULT 0.00,
  124. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  125. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
  126. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  127. -- 11. 订单项
  128. CREATE TABLE IF NOT EXISTS order_item (
  129. id INT PRIMARY KEY AUTO_INCREMENT,
  130. order_id INT,
  131. cake_id INT,
  132. cake_name VARCHAR(100),
  133. spec_name VARCHAR(50),
  134. price DECIMAL(10,2),
  135. quantity INT DEFAULT 1,
  136. custom_json TEXT,
  137. image_url VARCHAR(255)
  138. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  139. -- 12. 订单跟踪
  140. CREATE TABLE IF NOT EXISTS order_tracking (
  141. id INT PRIMARY KEY AUTO_INCREMENT,
  142. order_id INT,
  143. from_status VARCHAR(20),
  144. to_status VARCHAR(20) NOT NULL,
  145. operator VARCHAR(50),
  146. remark VARCHAR(255),
  147. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  148. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  149. -- 13. 收藏
  150. CREATE TABLE IF NOT EXISTS favorite (
  151. id INT PRIMARY KEY AUTO_INCREMENT,
  152. user_id INT,
  153. cake_id INT,
  154. create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  155. UNIQUE KEY uk_user_cake (user_id, cake_id)
  156. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  157. -- 14. 评价
  158. CREATE TABLE IF NOT EXISTS review (
  159. id INT PRIMARY KEY AUTO_INCREMENT,
  160. order_id INT,
  161. cake_id INT,
  162. user_id INT,
  163. rating TINYINT NOT NULL,
  164. content VARCHAR(500),
  165. reply_content VARCHAR(500),
  166. status VARCHAR(20) DEFAULT '显示',
  167. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  168. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  169. -- 15. 优惠券
  170. CREATE TABLE IF NOT EXISTS coupon (
  171. id INT PRIMARY KEY AUTO_INCREMENT,
  172. name VARCHAR(100) NOT NULL,
  173. type VARCHAR(20) NOT NULL,
  174. condition_amount DECIMAL(10,2),
  175. discount_amount DECIMAL(10,2),
  176. discount_rate DECIMAL(3,2),
  177. total_count INT DEFAULT 0,
  178. remain_count INT DEFAULT 0,
  179. start_time DATETIME,
  180. end_time DATETIME,
  181. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  182. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  183. -- 16. 用户优惠券
  184. CREATE TABLE IF NOT EXISTS user_coupon (
  185. id INT PRIMARY KEY AUTO_INCREMENT,
  186. user_id INT,
  187. coupon_id INT,
  188. used TINYINT DEFAULT 0,
  189. used_time DATETIME,
  190. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  191. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  192. -- 17. 活动
  193. CREATE TABLE IF NOT EXISTS activity (
  194. id INT PRIMARY KEY AUTO_INCREMENT,
  195. title VARCHAR(100) NOT NULL,
  196. type VARCHAR(20) NOT NULL,
  197. content TEXT,
  198. start_time DATETIME,
  199. end_time DATETIME,
  200. image_url VARCHAR(255),
  201. status VARCHAR(20) DEFAULT '启用',
  202. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  203. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  204. -- 18. 留言
  205. CREATE TABLE IF NOT EXISTS message (
  206. id INT PRIMARY KEY AUTO_INCREMENT,
  207. user_id INT,
  208. title VARCHAR(100),
  209. content TEXT NOT NULL,
  210. reply_content TEXT,
  211. reply_time DATETIME,
  212. status VARCHAR(20) DEFAULT '待回复',
  213. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  214. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  215. -- 19. 管理员
  216. CREATE TABLE IF NOT EXISTS admin (
  217. id INT PRIMARY KEY AUTO_INCREMENT,
  218. username VARCHAR(50) NOT NULL UNIQUE,
  219. password VARCHAR(255) NOT NULL,
  220. nickname VARCHAR(50),
  221. role VARCHAR(20) DEFAULT '管理员',
  222. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  223. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  224. -- 20. 配送配置
  225. CREATE TABLE IF NOT EXISTS delivery_config (
  226. id INT PRIMARY KEY AUTO_INCREMENT,
  227. region VARCHAR(100) NOT NULL,
  228. fee DECIMAL(10,2) DEFAULT 0.00,
  229. free_amount DECIMAL(10,2) DEFAULT 0.00,
  230. is_active TINYINT DEFAULT 1
  231. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  232. -- 21. 公告
  233. CREATE TABLE IF NOT EXISTS announcement (
  234. id INT PRIMARY KEY AUTO_INCREMENT,
  235. title VARCHAR(100) NOT NULL,
  236. content TEXT,
  237. is_active TINYINT DEFAULT 1,
  238. create_time DATETIME DEFAULT CURRENT_TIMESTAMP
  239. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  240. -- 默认管理员,密码是123456
  241. INSERT INTO admin (username, password, nickname, role) VALUES ('admin', 'e10adc3949ba59abbe56e057f20f883e', '系统管理员', '管理员');
  242. -- ============================================
  243. -- 模拟数据(覆盖所有业务功能流程)
  244. -- ============================================
  245. -- 1. cake_category — 5 个分类
  246. INSERT INTO cake_category (id, name, sort_order) VALUES
  247. (1, '水果款', 1),
  248. (2, '慕斯款', 2),
  249. (3, '儿童款', 3),
  250. (4, '祝寿款', 4),
  251. (5, '网红定制款', 5);
  252. -- 2. cake — 15 款蛋糕, 每类 3 款
  253. INSERT INTO cake (id, category_id, name, description, base_price, main_image, taste, layers, filling, style, is_customizable, is_new, is_hot, is_discount, discount_price, stock, status, sales_count) VALUES
  254. (1, 1, '鲜果缤纷', '当季新鲜水果搭配轻盈奶油,清爽不腻', 168.00, '/upload/cake01.jpg', '甜/清爽', '单层/双层', '鲜奶油+时令水果', 'ins风', 1, 1, 1, 0, NULL, 100, '上架', 256),
  255. (2, 1, '芒果千层', '进口芒果层层叠加,入口即化', 198.00, '/upload/cake02.jpg', '甜/果香', '单层/双层/三层', '芒果泥+淡奶油', '简约', 1, 0, 1, 1, 158.00, 80, '上架', 412),
  256. (3, 1, '草莓慕斯蛋糕', '新鲜草莓搭配丝滑慕斯,少女心满满', 188.00, '/upload/cake03.jpg', '甜/微酸', '单层/双层', '草莓果酱+奶油芝士', 'ins风', 0, 0, 0, 1, 148.00, 60, '上架', 189),
  257. (4, 2, '经典提拉米苏', '意式经典,咖啡与奶酪的完美融合', 228.00, '/upload/cake04.jpg', '苦甜/浓郁', '单层/双层', '马斯卡彭+浓缩咖啡', '欧式', 1, 0, 1, 0, NULL, 50, '上架', 321),
  258. (5, 2, '黑森林蛋糕', '巧克力与樱桃的经典搭配', 208.00, '/upload/cake05.jpg', '甜/巧克力', '单层/双层', '巧克力碎+樱桃酱', '欧式', 0, 0, 0, 1, 168.00, 70, '上架', 278),
  259. (6, 2, '抹茶红豆慕斯', '日式抹茶搭配蜜红豆,清新回甘', 198.00, '/upload/cake06.jpg', '微苦/清甜', '单层/双层', '抹茶慕斯+蜜红豆', '日式', 1, 1, 0, 0, NULL, 65, '上架', 145),
  260. (7, 3, '卡通小汽车', '汽车造型蛋糕,孩子最爱', 238.00, '/upload/cake07.jpg', '甜/奶香', '单层', '奶油+果酱', '卡通', 0, 0, 1, 0, NULL, 40, '上架', 167),
  261. (8, 3, 'Hello Kitty', '粉色Kitty造型,萌趣可爱', 258.00, '/upload/cake08.jpg', '甜/草莓', '单层', '草莓奶油+布丁', '卡通', 1, 0, 0, 0, NULL, 35, '上架', 134),
  262. (9, 3, '恐龙世界', '立体恐龙造型,适合小男孩生日', 268.00, '/upload/cake09.jpg', '甜/巧克力', '单层', '巧克力奶油+脆珠', '卡通', 0, 1, 0, 0, NULL, 30, '上架', 89),
  263. (10, 4, '松鹤延年', '传统祝寿主题,松鹤图案寓意长寿', 328.00, '/upload/cake10.jpg', '甜/清淡', '双层/三层', '鲜奶油+水果夹层', '中式传统', 1, 0, 0, 0, NULL, 25, '上架', 198),
  264. (11, 4, '寿桃献瑞', '寿桃造型配寿字,大气喜庆', 368.00, '/upload/cake11.jpg', '甜/蜜桃', '双层', '蜜桃果肉+淡奶油', '中式传统', 0, 0, 1, 0, NULL, 20, '上架', 223),
  265. (12, 4, '福寿双全', '双层祝寿蛋糕,福寿二字点缀', 398.00, '/upload/cake12.jpg', '甜/坚果', '双层/三层', '坚果碎+奶油', '中式传统', 1, 1, 0, 1, 338.00, 15, '上架', 76),
  266. (13, 5, '星空流心', '神秘星空外观,切开流心惊艳', 258.00, '/upload/cake13.jpg', '甜/多种', '单层', '巧克力流心+蓝莓', 'ins风', 1, 1, 1, 0, NULL, 55, '上架', 345),
  267. (14, 5, '网红脏脏蛋糕', '可可粉覆盖,切开爆浆', 188.00, '/upload/cake14.jpg', '苦甜', '单层', '巧克力流心+奶油', '网红', 0, 0, 1, 0, NULL, 90, '上架', 567),
  268. (15, 5, '鲜花蛋糕', '可食用鲜花装饰,浪漫唯美', 298.00, '/upload/cake15.jpg', '甜/花香', '单层/双层', '玫瑰奶油+水果', 'ins风', 1, 0, 0, 0, NULL, 45, '上架', 234);
  269. -- 3. cake_image — 每款蛋糕 2-3 张图
  270. INSERT INTO cake_image (id, cake_id, image_url, is_main, sort_order) VALUES
  271. (1, 1, '/upload/cake01.jpg', 1, 1),
  272. (2, 1, '/upload/cake01_2.jpg', 0, 2),
  273. (3, 2, '/upload/cake02.jpg', 1, 1),
  274. (4, 2, '/upload/cake02_2.jpg', 0, 2),
  275. (5, 3, '/upload/cake03.jpg', 1, 1),
  276. (6, 4, '/upload/cake04.jpg', 1, 1),
  277. (7, 4, '/upload/cake04_2.jpg', 0, 2),
  278. (8, 5, '/upload/cake05.jpg', 1, 1),
  279. (9, 6, '/upload/cake06.jpg', 1, 1),
  280. (10, 6, '/upload/cake06_2.jpg', 0, 2),
  281. (11, 7, '/upload/cake07.jpg', 1, 1),
  282. (12, 8, '/upload/cake08.jpg', 1, 1),
  283. (13, 8, '/upload/cake08_2.jpg', 0, 2),
  284. (14, 9, '/upload/cake09.jpg', 1, 1),
  285. (15, 10, '/upload/cake10.jpg', 1, 1),
  286. (16, 10, '/upload/cake10_2.jpg', 0, 2),
  287. (17, 11, '/upload/cake11.jpg', 1, 1),
  288. (18, 12, '/upload/cake12.jpg', 1, 1),
  289. (19, 13, '/upload/cake13.jpg', 1, 1),
  290. (20, 13, '/upload/cake13_2.jpg', 0, 2),
  291. (21, 14, '/upload/cake14.jpg', 1, 1),
  292. (22, 15, '/upload/cake15.jpg', 1, 1),
  293. (23, 15, '/upload/cake15_2.jpg', 0, 2);
  294. -- 4. cake_spec — 尺寸规格
  295. INSERT INTO cake_spec (id, cake_id, spec_name, add_price, sort_order) VALUES
  296. (1, 1, '6寸', 0.00, 1),
  297. (2, 1, '8寸', 50.00, 2),
  298. (3, 1, '10寸', 100.00, 3),
  299. (4, 2, '6寸', 0.00, 1),
  300. (5, 2, '8寸', 60.00, 2),
  301. (6, 2, '10寸', 120.00, 3),
  302. (7, 3, '6寸', 0.00, 1),
  303. (8, 3, '8寸', 50.00, 2),
  304. (9, 4, '6寸', 0.00, 1),
  305. (10, 4, '8寸', 60.00, 2),
  306. (11, 5, '6寸', 0.00, 1),
  307. (12, 5, '8寸', 50.00, 2),
  308. (13, 6, '6寸', 0.00, 1),
  309. (14, 6, '8寸', 55.00, 2),
  310. (15, 7, '6寸', 0.00, 1),
  311. (16, 7, '8寸', 80.00, 2),
  312. (17, 8, '6寸', 0.00, 1),
  313. (18, 9, '6寸', 0.00, 1),
  314. (19, 9, '8寸', 70.00, 2),
  315. (20, 10, '8寸', 0.00, 1),
  316. (21, 10, '10寸', 80.00, 2),
  317. (22, 10, '12寸', 150.00, 3),
  318. (23, 11, '8寸', 0.00, 1),
  319. (24, 11, '10寸', 90.00, 2),
  320. (25, 12, '8寸', 0.00, 1),
  321. (26, 12, '10寸', 100.00, 2),
  322. (27, 13, '6寸', 0.00, 1),
  323. (28, 13, '8寸', 60.00, 2),
  324. (29, 14, '6寸', 0.00, 1),
  325. (30, 14, '8寸', 50.00, 2),
  326. (31, 15, '6寸', 0.00, 1),
  327. (32, 15, '8寸', 70.00, 2);
  328. -- 5. custom_option — 定制选项(全局 + 部分蛋糕专属)
  329. INSERT INTO custom_option (id, cake_id, option_type, option_name, add_price, sort_order) VALUES
  330. -- 全局: 层数
  331. (1, NULL, '层数', '单层', 0.00, 1),
  332. (2, NULL, '层数', '双层', 80.00, 2),
  333. (3, NULL, '层数', '三层', 180.00, 3),
  334. -- 全局: 蛋糕胚
  335. (4, NULL, '蛋糕胚', '原味戚风', 0.00, 1),
  336. (5, NULL, '蛋糕胚', '巧克力戚风', 10.00, 2),
  337. (6, NULL, '蛋糕胚', '抹茶戚风', 15.00, 3),
  338. -- 全局: 奶油类型
  339. (7, NULL, '奶油', '淡奶油', 0.00, 1),
  340. (8, NULL, '奶油', '奶油芝士', 20.00, 2),
  341. (9, NULL, '奶油', '酸奶奶油', 15.00, 3),
  342. -- 全局: 配饰
  343. (10, NULL, '配饰', '祝福语卡片', 5.00, 1),
  344. (11, NULL, '配饰', '生日蜡烛套装', 10.00, 2),
  345. (12, NULL, '配饰', '鲜花装饰', 30.00, 3),
  346. -- 蛋糕 1 专属: 水果款可加水果
  347. (13, 1, '配饰', '额外水果层', 25.00, 4),
  348. -- 蛋糕 13 专属: 星空款流心颜色
  349. (14, 13, '配饰', '蓝色流心', 15.00, 1),
  350. (15, 13, '配饰', '粉色流心', 15.00, 2),
  351. -- 蛋糕 15 专属: 鲜花款玫瑰花束
  352. (16, 15, '配饰', '玫瑰花束', 50.00, 1),
  353. -- 全局: 尺寸
  354. (17, NULL, '尺寸', '6寸', 0.00, 1),
  355. (18, NULL, '尺寸', '8寸', 30.00, 2),
  356. (19, NULL, '尺寸', '10寸', 60.00, 3),
  357. (20, NULL, '尺寸', '12寸', 100.00, 4);
  358. -- 6. user — 3 个模拟用户 (密码都是 123456 的 MD5)
  359. INSERT INTO user (id, username, password, nickname, phone, email, status) VALUES
  360. (1, 'zhangsan', 'e10adc3949ba59abbe56e057f20f883e', '张三', '13800138001', 'zhangsan@qq.com', '正常'),
  361. (2, 'lisi', 'e10adc3949ba59abbe56e057f20f883e', '李四', '13800138002', 'lisi@qq.com', '正常'),
  362. (3, 'wangwu', 'e10adc3949ba59abbe56e057f20f883e', '王五', '13800138003', 'wangwu@qq.com', '正常');
  363. -- 7. address — 每个用户 1-2 个地址
  364. INSERT INTO address (id, user_id, receiver_name, receiver_phone, province, city, district, detail_address, is_default) VALUES
  365. (1, 1, '张三', '13800138001', '广东省', '深圳市', '南山区', '科技园南路100号A栋201', 1),
  366. (2, 1, '张三', '13800138001', '广东省', '深圳市', '福田区', '华强北路200号B栋301', 0),
  367. (3, 2, '李四', '13800138002', '广东省', '广州市', '天河区', '天河路300号C栋402', 1),
  368. (4, 3, '王五', '13800138003', '北京市', '北京市', '朝阳区', '建国路88号D栋501', 1);
  369. -- 8. cart — 每个用户一个购物车
  370. INSERT INTO cart (id, user_id) VALUES
  371. (1, 1),
  372. (2, 2),
  373. (3, 3);
  374. -- 9. cart_item — 用户购物车中已有商品
  375. INSERT INTO cart_item (id, cart_id, cake_id, spec_id, quantity, custom_json) VALUES
  376. (1, 1, 1, 1, 2, NULL),
  377. (2, 1, 14, 29, 1, NULL),
  378. (3, 2, 6, 13, 1, '{"layers":"双层","cream":"奶油芝士"}'),
  379. (4, 3, 13, 27, 1, NULL),
  380. (5, 3, 3, 7, 1, NULL);
  381. -- 10. orders — 覆盖完整订单状态机:待付款 → 待制作 → 制作中 → 配送中 → 已完成 / 已取消 / 已拒绝
  382. INSERT INTO orders (id, order_no, user_id, total_amount, discount_amount, pay_amount, status, receiver_name, receiver_phone, province, city, district, detail_address, delivery_date, delivery_time, remark, refuse_reason, payment_method, payment_time, delivery_fee, create_time) VALUES
  383. -- 张三的订单
  384. (1, '202601010001', 1, 336.00, 0.00, 336.00, '已完成', '张三', '13800138001', '广东省', '深圳市', '南山区', '科技园南路100号A栋201', '2026-01-01', '10:00-12:00', '麻烦放门口', NULL, '模拟支付', '2026-01-01 10:30:00', 0.00, '2026-01-01 10:00:00'),
  385. (2, '202601020002', 1, 198.00, 0.00, 198.00, '已完成', '张三', '13800138001', '广东省', '深圳市', '南山区', '科技园南路100号A栋201', '2026-01-03', '14:00-16:00', NULL, NULL, '模拟支付', '2026-01-02 09:00:00', 0.00, '2026-01-02 08:30:00'),
  386. (3, '202601100003', 1, 516.00, 30.00, 486.00, '配送中', '张三', '13800138001', '广东省', '深圳市', '南山区', '科技园南路100号A栋201', '2026-01-11', '10:00-12:00', '生日用,请准时', NULL, '模拟支付', '2026-01-10 10:00:00', 10.00, '2026-01-10 09:30:00'),
  387. (4, '202601150004', 1, 168.00, 0.00, 168.00, '待付款', '张三', '13800138001', '广东省', '深圳市', '福田区', '华强北路200号B栋301', '2026-01-16', '14:00-16:00', NULL, NULL, '模拟支付', NULL, 10.00, '2026-01-15 12:00:00'),
  388. -- 李四的订单
  389. (5, '202601050005', 2, 228.00, 0.00, 228.00, '已完成', '李四', '13800138002', '广东省', '广州市', '天河区', '天河路300号C栋402', '2026-01-05', '10:00-12:00', NULL, NULL, '模拟支付', '2026-01-05 09:00:00', 0.00, '2026-01-05 08:00:00'),
  390. (6, '202601080006', 2, 258.00, 20.00, 238.00, '制作中', '李四', '13800138002', '广东省', '广州市', '天河区', '天河路300号C栋402', '2026-01-09', '14:00-16:00', '加急', NULL, '模拟支付', '2026-01-08 08:00:00', 0.00, '2026-01-08 07:00:00'),
  391. (7, '202601120007', 2, 188.00, 0.00, 188.00, '已取消', '李四', '13800138002', '广东省', '广州市', '天河区', '天河路300号C栋402', '2026-01-13', '10:00-12:00', NULL, NULL, '模拟支付', NULL, 0.00, '2026-01-12 11:00:00'),
  392. (8, '202601140008', 2, 368.00, 0.00, 368.00, '已拒绝', '李四', '13800138002', '广东省', '广州市', '天河区', '天河路300号C栋402', '2026-01-15', '14:00-16:00', '请加一个寿桃', '当日材料不足,无法制作加料版', '模拟支付', '2026-01-14 08:00:00', 0.00, '2026-01-14 07:30:00'),
  393. -- 王五的订单
  394. (9, '202601200009', 3, 258.00, 0.00, 258.00, '待制作', '王五', '13800138003', '北京市', '北京市', '朝阳区', '建国路88号D栋501', '2026-01-21', '10:00-12:00', NULL, NULL, '模拟支付', '2026-01-20 10:00:00', 0.00, '2026-01-20 09:30:00'),
  395. (10, '202601220010', 3, 536.00, 0.00, 536.00, '已完成', '王五', '13800138003', '北京市', '北京市', '朝阳区', '建国路88号D栋501', '2026-01-22', '14:00-16:00', '不要坚果,过敏', NULL, '模拟支付', '2026-01-22 09:00:00', 10.00, '2026-01-22 08:30:00'),
  396. (11, '202602010011', 3, 298.00, 0.00, 298.00, '已完成', '王五', '13800138003', '北京市', '北京市', '朝阳区', '建国路88号D栋501', '2026-02-01', '10:00-12:00', NULL, NULL, '模拟支付', '2026-02-01 08:00:00', 0.00, '2026-02-01 07:30:00'),
  397. (12, '202602150012', 1, 258.00, 0.00, 258.00, '已完成', '张三', '13800138001', '广东省', '深圳市', '南山区', '科技园南路100号A栋201', '2026-02-14', '14:00-16:00', '情人节惊喜', NULL, '模拟支付', '2026-02-14 10:00:00', 0.00, '2026-02-14 09:30:00');
  398. -- 11. order_item — 每个订单包含 1-2 个商品
  399. INSERT INTO order_item (id, order_id, cake_id, cake_name, spec_name, price, quantity, custom_json, image_url) VALUES
  400. (1, 1, 1, '鲜果缤纷', '6寸', 168.00, 2, NULL, '/upload/cake01.jpg'),
  401. (2, 2, 2, '芒果千层', '6寸', 198.00, 1, NULL, '/upload/cake02.jpg'),
  402. (3, 3, 1, '鲜果缤纷', '8寸', 218.00, 1, NULL, '/upload/cake01.jpg'),
  403. (4, 3, 14, '网红脏脏蛋糕', '6寸', 188.00, 1, NULL, '/upload/cake14.jpg'),
  404. (5, 3, 11, '寿桃献瑞', '8寸', 100.00, 1, NULL, '/upload/cake11.jpg'),
  405. (6, 4, 1, '鲜果缤纷', '6寸', 168.00, 1, NULL, '/upload/cake01.jpg'),
  406. (7, 5, 4, '经典提拉米苏', '6寸', 228.00, 1, NULL, '/upload/cake04.jpg'),
  407. (8, 6, 13, '星空流心', '6寸', 258.00, 1, NULL, '/upload/cake13.jpg'),
  408. (9, 7, 14, '网红脏脏蛋糕', '6寸', 188.00, 1, NULL, '/upload/cake14.jpg'),
  409. (10, 8, 11, '寿桃献瑞', '8寸', 368.00, 1, NULL, '/upload/cake11.jpg'),
  410. (11, 9, 13, '星空流心', '6寸', 258.00, 1, NULL, '/upload/cake13.jpg'),
  411. (12, 10, 10,'松鹤延年', '8寸', 328.00, 1, NULL, '/upload/cake10.jpg'),
  412. (13, 10, 15,'鲜花蛋糕', '6寸', 298.00, 1, NULL, '/upload/cake15.jpg'),
  413. (14, 11, 15,'鲜花蛋糕', '6寸', 298.00, 1, NULL, '/upload/cake15.jpg'),
  414. (15, 12, 13,'星空流心', '6寸', 258.00, 1, NULL, '/upload/cake13.jpg');
  415. -- 12. order_tracking — 订单状态变更日志
  416. INSERT INTO order_tracking (id, order_id, from_status, to_status, operator, remark, create_time) VALUES
  417. (1, 1, NULL, '待付款', '系统', '订单创建', '2026-01-01 10:00:00'),
  418. (2, 1, '待付款', '待制作', '系统', '支付成功', '2026-01-01 10:30:00'),
  419. (3, 1, '待制作', '制作中', 'admin', '已接单', '2026-01-01 11:00:00'),
  420. (4, 1, '制作中', '配送中', 'admin', '已出库配送', '2026-01-01 14:00:00'),
  421. (5, 1, '配送中', '已完成', '系统', '签收完成', '2026-01-01 15:00:00'),
  422. (6, 2, NULL, '待付款', '系统', '订单创建', '2026-01-02 08:30:00'),
  423. (7, 2, '待付款', '待制作', '系统', '支付成功', '2026-01-02 09:00:00'),
  424. (8, 2, '待制作', '制作中', 'admin', '已接单', '2026-01-02 10:00:00'),
  425. (9, 2, '制作中', '配送中', 'admin', '已配送', '2026-01-03 09:00:00'),
  426. (10, 2, '配送中', '已完成', '系统', '签收完成', '2026-01-03 12:00:00'),
  427. (11, 3, NULL, '待付款', '系统', '订单创建', '2026-01-10 09:30:00'),
  428. (12, 3, '待付款', '待制作', '系统', '支付成功', '2026-01-10 10:00:00'),
  429. (13, 3, '待制作', '制作中', 'admin', '已接单', '2026-01-10 11:00:00'),
  430. (14, 3, '制作中', '配送中', 'admin', '已出库', '2026-01-11 08:00:00'),
  431. (15, 4, NULL, '待付款', '系统', '订单创建', '2026-01-15 12:00:00'),
  432. (16, 5, NULL, '待付款', '系统', '订单创建', '2026-01-05 08:00:00'),
  433. (17, 5, '待付款', '待制作', '系统', '支付成功', '2026-01-05 09:00:00'),
  434. (18, 5, '待制作', '制作中', 'admin', '已接单', '2026-01-05 10:00:00'),
  435. (19, 5, '制作中', '配送中', 'admin', '已配送', '2026-01-05 11:00:00'),
  436. (20, 5, '配送中', '已完成', '系统', '签收完成', '2026-01-05 14:00:00'),
  437. (21, 6, NULL, '待付款', '系统', '订单创建', '2026-01-08 07:00:00'),
  438. (22, 6, '待付款', '待制作', '系统', '支付成功', '2026-01-08 08:00:00'),
  439. (23, 6, '待制作', '制作中', 'admin', '已接单加工', '2026-01-08 10:00:00'),
  440. (24, 7, NULL, '待付款', '系统', '订单创建', '2026-01-12 11:00:00'),
  441. (25, 7, '待付款', '已取消', '系统', '用户取消订单', '2026-01-12 11:30:00'),
  442. (26, 8, NULL, '待付款', '系统', '订单创建', '2026-01-14 07:30:00'),
  443. (27, 8, '待付款', '待制作', '系统', '支付成功', '2026-01-14 08:00:00'),
  444. (28, 8, '待制作', '已拒绝', 'admin', '当日材料不足,无法制作加料版', '2026-01-14 09:00:00'),
  445. (29, 9, NULL, '待付款', '系统', '订单创建', '2026-01-20 09:30:00'),
  446. (30, 9, '待付款', '待制作', '系统', '支付成功', '2026-01-20 10:00:00'),
  447. (31, 10, NULL, '待付款', '系统', '订单创建', '2026-01-22 08:30:00'),
  448. (32, 10, '待付款', '待制作', '系统', '支付成功', '2026-01-22 09:00:00'),
  449. (33, 10, '待制作', '制作中', 'admin', '已接单,注意过敏备注', '2026-01-22 10:00:00'),
  450. (34, 10, '制作中', '配送中', 'admin', '已配送', '2026-01-22 13:00:00'),
  451. (35, 10, '配送中', '已完成', '系统', '签收完成', '2026-01-22 15:00:00'),
  452. (36, 11, NULL, '待付款', '系统', '订单创建', '2026-02-01 07:30:00'),
  453. (37, 11, '待付款', '待制作', '系统', '支付成功', '2026-02-01 08:00:00'),
  454. (38, 11, '待制作', '制作中', 'admin', '已接单', '2026-02-01 09:00:00'),
  455. (39, 11, '制作中', '配送中', 'admin', '已配送', '2026-02-01 10:00:00'),
  456. (40, 11, '配送中', '已完成', '系统', '签收完成', '2026-02-01 12:00:00'),
  457. (41, 12, NULL, '待付款', '系统', '订单创建', '2026-02-14 09:30:00'),
  458. (42, 12, '待付款', '待制作', '系统', '情人节订单', '2026-02-14 10:00:00'),
  459. (43, 12, '待制作', '制作中', 'admin', '已接单', '2026-02-14 11:00:00'),
  460. (44, 12, '制作中', '配送中', 'admin', '已配送', '2026-02-14 12:00:00'),
  461. (45, 12, '配送中', '已完成', '系统', '签收完成', '2026-02-14 14:00:00');
  462. -- 13. favorite — 收藏
  463. INSERT INTO favorite (id, user_id, cake_id, create_time) VALUES
  464. (1, 1, 1, '2026-01-01 10:00:00'),
  465. (2, 1, 13, '2026-01-02 12:00:00'),
  466. (3, 1, 15, '2026-01-05 08:00:00'),
  467. (4, 2, 4, '2026-01-03 09:00:00'),
  468. (5, 2, 6, '2026-01-04 10:00:00'),
  469. (6, 3, 13, '2026-01-06 11:00:00'),
  470. (7, 3, 10, '2026-01-08 14:00:00');
  471. -- 14. review — 已完成订单的评价
  472. INSERT INTO review (id, order_id, cake_id, user_id, rating, content, reply_content, status, create_time) VALUES
  473. (1, 1, 1, 1, 5, '非常好吃!水果很新鲜,奶油不腻', '感谢您的喜爱,欢迎再次光临!', '显示', '2026-01-02 10:00:00'),
  474. (2, 2, 2, 1, 4, '芒果很甜,千层皮很薄,稍微有点甜', '谢谢建议,我们会调整甜度', '显示', '2026-01-04 09:00:00'),
  475. (3, 5, 4, 2, 5, '提拉米苏非常正宗,咖啡味浓郁', NULL, '显示', '2026-01-06 11:00:00'),
  476. (4, 10, 10, 3, 5, '老人很喜欢,松鹤图案很精美', '谢谢,祝老人健康长寿!', '显示', '2026-01-23 10:00:00'),
  477. (5, 11, 15, 3, 4, '鲜花很漂亮,蛋糕味道也不错,就是价格稍贵', NULL, '显示', '2026-02-02 09:00:00'),
  478. (6, 12, 13, 1, 5, '情人节惊喜成功!星空流心切开很漂亮', '祝您情人节快乐!', '显示', '2026-02-15 08:00:00'),
  479. (7, 1, 1, 1, 3, '第二次买了,这次配送有点慢', '非常抱歉,我们会改进配送服务', '隐藏', '2026-01-03 12:00:00');
  480. -- 15. coupon — 优惠券
  481. INSERT INTO coupon (id, name, type, condition_amount, discount_amount, discount_rate, total_count, remain_count, start_time, end_time) VALUES
  482. (1, '新人满100减20', '满减', 100.00, 20.00, NULL, 1000, 500, '2026-01-01 00:00:00', '2026-12-31 23:59:59'),
  483. (2, '满200减30', '满减', 200.00, 30.00, NULL, 500, 200, '2026-01-01 00:00:00', '2026-12-31 23:59:59'),
  484. (3, '满300减50', '满减', 300.00, 50.00, NULL, 300, 100, '2026-01-01 00:00:00', '2026-12-31 23:59:59'),
  485. (4, '全场9折券', '折扣', NULL, NULL, 0.90, 200, 150, '2026-01-01 00:00:00', '2026-06-30 23:59:59'),
  486. (5, '会员9折券', '折扣', NULL, NULL, 0.85, 100, 80, '2026-03-01 00:00:00', '2026-12-31 23:59:59');
  487. -- 16. user_coupon — 用户领券记录
  488. INSERT INTO user_coupon (id, user_id, coupon_id, used, used_time, create_time) VALUES
  489. (1, 1, 1, 1, '2026-01-10 10:00:00', '2026-01-01 09:00:00'),
  490. (2, 1, 2, 1, '2026-01-10 10:00:00', '2026-01-02 10:00:00'),
  491. (3, 1, 3, 0, NULL, '2026-01-05 11:00:00'),
  492. (4, 2, 1, 0, NULL, '2026-01-03 08:00:00'),
  493. (5, 2, 2, 1, '2026-01-08 08:00:00', '2026-01-04 09:00:00'),
  494. (6, 3, 1, 0, NULL, '2026-01-06 12:00:00'),
  495. (7, 3, 4, 0, NULL, '2026-01-07 14:00:00');
  496. -- 17. activity — 营销活动
  497. INSERT INTO activity (id, title, type, content, start_time, end_time, image_url, status) VALUES
  498. (1, '新年特惠全场8折', '满减', '新年期间全场蛋糕8折优惠,活动时间1月1日-1月15日', '2026-01-01 00:00:00', '2026-01-15 23:59:59', '/upload/act01.jpg', '停用'),
  499. (2, '夏日冰爽特惠', '满减', '炎炎夏日,全场蛋糕满299减50,再送冰饮一杯', '2026-06-15 00:00:00', '2026-07-15 23:59:59', '/upload/act02.jpg', '启用'),
  500. (3, '夏日缤纷蛋糕套餐', '套餐', '芒果千层+冰激凌蛋糕套餐价仅298元(原价356元)', '2026-06-01 00:00:00', '2026-07-31 23:59:59', '/upload/act03.jpg', '启用'),
  501. (4, '毕业季团购', '团购', '4人成团,12寸大蛋糕仅需298元/个', '2026-06-10 00:00:00', '2026-06-30 23:59:59', '/upload/act04.jpg', '启用');
  502. -- 18. message — 用户留言咨询
  503. INSERT INTO message (id, user_id, title, content, reply_content, status, create_time) VALUES
  504. (1, 1, '关于配送时间', '请问可以指定晚上7点后配送吗?', '可以的,配送时段中有18:00-20:00可选', '已回复', '2026-01-05 10:00:00'),
  505. (2, 2, '定制蛋糕问题', '我想定制一个双层蛋糕,需要提前多久下单?', '建议提前48小时下单,复杂定制请提前72小时', '已回复', '2026-01-08 14:00:00'),
  506. (3, 3, '蛋糕过敏原', '请问蛋糕中是否含有坚果?', NULL, '待回复', '2026-02-01 09:00:00');
  507. -- 19. delivery_config — 配送配置
  508. INSERT INTO delivery_config (id, region, fee, free_amount, is_active) VALUES
  509. (1, '深圳市南山区', 5.00, 100.00, 1),
  510. (2, '深圳市福田区', 8.00, 150.00, 1),
  511. (3, '深圳市宝安区', 10.00, 200.00, 1),
  512. (4, '深圳市龙岗区', 12.00, 200.00, 1),
  513. (5, '广州市天河区', 8.00, 150.00, 1),
  514. (6, '北京市朝阳区', 10.00, 200.00, 1),
  515. (7, '北京市海淀区', 10.00, 200.00, 1);
  516. -- 20. announcement — 公告
  517. INSERT INTO announcement (id, title, content, is_active, create_time) VALUES
  518. (1, '春节期间配送安排', '春节期间1月28日-2月3日配送时间调整为10:00-16:00', 1, '2026-01-20 08:00:00'),
  519. (2, '新品上架:星空流心蛋糕', '全新星空流心蛋糕已上架,欢迎品尝!', 1, '2026-01-15 09:00:00'),
  520. (3, '门店升级通知', '本店将于3月进行门店升级,期间正常营业', 0, '2026-02-20 10:00:00');