补充缺失表.sql 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. -- 补充创建C端和G端缺失的数据表
  2. USE huanbao;
  3. -- 先删除可能冲突的CREATE DATABASE语句,直接创建表
  4. -- C端表(26张)
  5. CREATE TABLE IF NOT EXISTS `users` (
  6. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  7. `phone` VARCHAR(20) NOT NULL COMMENT '手机号',
  8. `password` VARCHAR(255) NOT NULL COMMENT '密码(加密)',
  9. `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称',
  10. `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像URL',
  11. `avatar_index` INT DEFAULT 1 COMMENT '头像索引(预设头像)',
  12. `level` INT DEFAULT 1 COMMENT '用户等级 1-10',
  13. `level_name` VARCHAR(50) DEFAULT NULL COMMENT '等级名称',
  14. `level_progress` INT DEFAULT 0 COMMENT '等级进度 0-100',
  15. `total_points` INT DEFAULT 0 COMMENT '累计积分',
  16. `available_points` INT DEFAULT 0 COMMENT '可用积分',
  17. `total_cash` DECIMAL(10,2) DEFAULT 0.00 COMMENT '累计现金收益',
  18. `available_cash` DECIMAL(10,2) DEFAULT 0.00 COMMENT '可提现现金',
  19. `total_carbon` DECIMAL(10,2) DEFAULT 0.00 COMMENT '累计碳减排量(kg)',
  20. `recycle_count` INT DEFAULT 0 COMMENT '回收次数',
  21. `invite_code` VARCHAR(20) DEFAULT NULL COMMENT '用户邀请码',
  22. `invited_by` BIGINT UNSIGNED DEFAULT NULL COMMENT '邀请人ID',
  23. `status` TINYINT DEFAULT 1 COMMENT '状态: 0禁用 1正常',
  24. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
  25. `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  26. `last_login_at` DATETIME DEFAULT NULL COMMENT '最后登录时间',
  27. PRIMARY KEY (`id`),
  28. UNIQUE KEY `uk_phone` (`phone`),
  29. UNIQUE KEY `uk_invite_code` (`invite_code`),
  30. KEY `idx_invited_by` (`invited_by`),
  31. KEY `idx_created_at` (`created_at`)
  32. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
  33. CREATE TABLE IF NOT EXISTS `user_addresses` (
  34. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  35. `user_id` BIGINT UNSIGNED NOT NULL,
  36. `contact_name` VARCHAR(50) NOT NULL,
  37. `contact_phone` VARCHAR(20) NOT NULL,
  38. `province` VARCHAR(50) NOT NULL,
  39. `city` VARCHAR(50) NOT NULL,
  40. `district` VARCHAR(50) NOT NULL,
  41. `detail` VARCHAR(255) NOT NULL,
  42. `full_address` VARCHAR(500) DEFAULT NULL,
  43. `label` ENUM('home', 'company', 'school', 'other') DEFAULT NULL,
  44. `is_default` TINYINT DEFAULT 0,
  45. `longitude` DECIMAL(10,7) DEFAULT NULL,
  46. `latitude` DECIMAL(10,7) DEFAULT NULL,
  47. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  48. `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  49. PRIMARY KEY (`id`),
  50. KEY `idx_user_id` (`user_id`)
  51. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户地址表';
  52. CREATE TABLE IF NOT EXISTS `waste_categories` (
  53. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  54. `name` VARCHAR(50) NOT NULL,
  55. `code` VARCHAR(30) NOT NULL,
  56. `icon` VARCHAR(100) DEFAULT NULL,
  57. `parent_id` BIGINT UNSIGNED DEFAULT 0,
  58. `price_per_kg` DECIMAL(10,2) DEFAULT 0.00,
  59. `points_per_kg` INT DEFAULT 0,
  60. `carbon_per_kg` DECIMAL(5,2) DEFAULT 0.00,
  61. `description` TEXT DEFAULT NULL,
  62. `tips` TEXT DEFAULT NULL,
  63. `recycling_info` TEXT DEFAULT NULL,
  64. `sort_order` INT DEFAULT 0,
  65. `status` TINYINT DEFAULT 1,
  66. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  67. PRIMARY KEY (`id`),
  68. UNIQUE KEY `uk_code` (`code`)
  69. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='废品分类表';
  70. CREATE TABLE IF NOT EXISTS `collectors` (
  71. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  72. `user_id` BIGINT UNSIGNED DEFAULT NULL,
  73. `name` VARCHAR(50) NOT NULL,
  74. `phone` VARCHAR(20) NOT NULL,
  75. `avatar` VARCHAR(255) DEFAULT NULL,
  76. `rating` DECIMAL(3,2) DEFAULT 5.00,
  77. `service_count` INT DEFAULT 0,
  78. `working_area` VARCHAR(100) DEFAULT NULL,
  79. `longitude` DECIMAL(10,7) DEFAULT NULL,
  80. `latitude` DECIMAL(10,7) DEFAULT NULL,
  81. `status` ENUM('online', 'offline', 'busy') DEFAULT 'offline',
  82. `identity_verified` TINYINT DEFAULT 0,
  83. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  84. `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  85. PRIMARY KEY (`id`)
  86. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='回收员表';
  87. CREATE TABLE IF NOT EXISTS `drop_points` (
  88. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  89. `name` VARCHAR(100) NOT NULL,
  90. `address` VARCHAR(255) NOT NULL,
  91. `longitude` DECIMAL(10,7) DEFAULT NULL,
  92. `latitude` DECIMAL(10,7) DEFAULT NULL,
  93. `category` VARCHAR(50) DEFAULT NULL,
  94. `contact_phone` VARCHAR(20) DEFAULT NULL,
  95. `opening_hours` VARCHAR(100) DEFAULT NULL,
  96. `status` TINYINT DEFAULT 1,
  97. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  98. PRIMARY KEY (`id`)
  99. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='投递点表';
  100. CREATE TABLE IF NOT EXISTS `recycle_orders` (
  101. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  102. `order_no` VARCHAR(30) NOT NULL,
  103. `user_id` BIGINT UNSIGNED NOT NULL,
  104. `collector_id` BIGINT UNSIGNED DEFAULT NULL,
  105. `category_id` BIGINT UNSIGNED DEFAULT NULL,
  106. `category_name` VARCHAR(50) DEFAULT NULL,
  107. `weight` DECIMAL(10,2) DEFAULT 0.00,
  108. `total_price` DECIMAL(10,2) DEFAULT 0.00,
  109. `points` INT DEFAULT 0,
  110. `carbon_reduction` DECIMAL(10,2) DEFAULT 0.00,
  111. `address_id` BIGINT UNSIGNED DEFAULT NULL,
  112. `full_address` VARCHAR(500) DEFAULT NULL,
  113. `contact_name` VARCHAR(50) DEFAULT NULL,
  114. `contact_phone` VARCHAR(20) DEFAULT NULL,
  115. `status` ENUM('pending', 'accepted', 'in_progress', 'completed', 'cancelled') DEFAULT 'pending',
  116. `remark` TEXT DEFAULT NULL,
  117. `images` TEXT DEFAULT NULL,
  118. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  119. `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  120. `accepted_at` DATETIME DEFAULT NULL,
  121. `completed_at` DATETIME DEFAULT NULL,
  122. PRIMARY KEY (`id`),
  123. UNIQUE KEY `uk_order_no` (`order_no`)
  124. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='回收订单表';
  125. CREATE TABLE IF NOT EXISTS `earnings` (
  126. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  127. `user_id` BIGINT UNSIGNED NOT NULL,
  128. `order_id` BIGINT UNSIGNED DEFAULT NULL,
  129. `type` ENUM('cash', 'points') NOT NULL,
  130. `amount` DECIMAL(10,2) NOT NULL,
  131. `description` VARCHAR(255) DEFAULT NULL,
  132. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  133. PRIMARY KEY (`id`),
  134. KEY `idx_user_id` (`user_id`)
  135. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收益记录表';
  136. CREATE TABLE IF NOT EXISTS `points_records` (
  137. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  138. `user_id` BIGINT UNSIGNED NOT NULL,
  139. `type` ENUM('earn', 'spend', 'expire') NOT NULL,
  140. `points` INT NOT NULL,
  141. `balance` INT DEFAULT 0,
  142. `source` VARCHAR(50) DEFAULT NULL,
  143. `description` VARCHAR(255) DEFAULT NULL,
  144. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  145. PRIMARY KEY (`id`),
  146. KEY `idx_user_id` (`user_id`)
  147. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分记录表';
  148. CREATE TABLE IF NOT EXISTS `products` (
  149. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  150. `name` VARCHAR(100) NOT NULL,
  151. `category` VARCHAR(50) DEFAULT NULL,
  152. `image` VARCHAR(255) DEFAULT NULL,
  153. `points_price` INT NOT NULL,
  154. `original_price` DECIMAL(10,2) DEFAULT NULL,
  155. `stock` INT DEFAULT 0,
  156. `description` TEXT DEFAULT NULL,
  157. `sort_order` INT DEFAULT 0,
  158. `status` TINYINT DEFAULT 1,
  159. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  160. PRIMARY KEY (`id`)
  161. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
  162. CREATE TABLE IF NOT EXISTS `exchange_records` (
  163. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  164. `user_id` BIGINT UNSIGNED NOT NULL,
  165. `product_id` BIGINT UNSIGNED NOT NULL,
  166. `product_name` VARCHAR(100) DEFAULT NULL,
  167. `points_cost` INT NOT NULL,
  168. `quantity` INT DEFAULT 1,
  169. `status` ENUM('pending', 'shipped', 'completed', 'cancelled') DEFAULT 'pending',
  170. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  171. PRIMARY KEY (`id`),
  172. KEY `idx_user_id` (`user_id`)
  173. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分兑换记录表';
  174. CREATE TABLE IF NOT EXISTS `notifications` (
  175. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  176. `user_id` BIGINT UNSIGNED NOT NULL,
  177. `type` ENUM('system', 'activity', 'reward', 'order') NOT NULL,
  178. `title` VARCHAR(100) NOT NULL,
  179. `content` TEXT DEFAULT NULL,
  180. `link` VARCHAR(255) DEFAULT NULL,
  181. `is_read` TINYINT DEFAULT 0,
  182. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  183. PRIMARY KEY (`id`),
  184. KEY `idx_user_id` (`user_id`)
  185. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知表';
  186. CREATE TABLE IF NOT EXISTS `activities` (
  187. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  188. `title` VARCHAR(100) NOT NULL,
  189. `description` TEXT DEFAULT NULL,
  190. `content` TEXT DEFAULT NULL,
  191. `image` VARCHAR(255) DEFAULT NULL,
  192. `tag` VARCHAR(50) DEFAULT NULL,
  193. `type` VARCHAR(30) DEFAULT NULL,
  194. `start_time` DATETIME DEFAULT NULL,
  195. `end_time` DATETIME DEFAULT NULL,
  196. `reward_points` INT DEFAULT 0,
  197. `reward_cash` DECIMAL(10,2) DEFAULT 0.00,
  198. `sort_order` INT DEFAULT 0,
  199. `status` TINYINT DEFAULT 1,
  200. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  201. PRIMARY KEY (`id`)
  202. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动表';
  203. CREATE TABLE IF NOT EXISTS `invite_records` (
  204. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  205. `inviter_id` BIGINT UNSIGNED NOT NULL,
  206. `invitee_id` BIGINT UNSIGNED NOT NULL,
  207. `reward_points` INT DEFAULT 0,
  208. `reward_cash` DECIMAL(10,2) DEFAULT 0.00,
  209. `status` TINYINT DEFAULT 1,
  210. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  211. PRIMARY KEY (`id`),
  212. KEY `idx_inviter_id` (`inviter_id`)
  213. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='邀请记录表';
  214. CREATE TABLE IF NOT EXISTS `checkin_records` (
  215. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  216. `user_id` BIGINT UNSIGNED NOT NULL,
  217. `checkin_date` DATE NOT NULL,
  218. `reward_points` INT DEFAULT 0,
  219. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  220. PRIMARY KEY (`id`),
  221. UNIQUE KEY `uk_user_date` (`user_id`, `checkin_date`)
  222. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='签到记录表';
  223. CREATE TABLE IF NOT EXISTS `tasks` (
  224. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  225. `name` VARCHAR(100) NOT NULL,
  226. `description` VARCHAR(255) DEFAULT NULL,
  227. `type` ENUM('daily', 'weekly', 'once') NOT NULL,
  228. `icon` VARCHAR(100) DEFAULT NULL,
  229. `reward_points` INT DEFAULT 0,
  230. `target_count` INT DEFAULT 1,
  231. `action` VARCHAR(50) DEFAULT NULL,
  232. `sort_order` INT DEFAULT 0,
  233. `status` TINYINT DEFAULT 1,
  234. PRIMARY KEY (`id`)
  235. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务表';
  236. CREATE TABLE IF NOT EXISTS `user_tasks` (
  237. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  238. `user_id` BIGINT UNSIGNED NOT NULL,
  239. `task_id` BIGINT UNSIGNED NOT NULL,
  240. `progress` INT DEFAULT 0,
  241. `target` INT DEFAULT 1,
  242. `status` ENUM('in_progress', 'completed', 'expired') DEFAULT 'in_progress',
  243. `completed_at` DATETIME DEFAULT NULL,
  244. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  245. PRIMARY KEY (`id`),
  246. KEY `idx_user_id` (`user_id`)
  247. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户任务进度表';
  248. CREATE TABLE IF NOT EXISTS `withdraw_records` (
  249. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  250. `user_id` BIGINT UNSIGNED NOT NULL,
  251. `amount` DECIMAL(10,2) NOT NULL,
  252. `fee` DECIMAL(10,2) DEFAULT 0.00,
  253. `actual_amount` DECIMAL(10,2) DEFAULT 0.00,
  254. `status` ENUM('pending', 'processing', 'success', 'failed') DEFAULT 'pending',
  255. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  256. PRIMARY KEY (`id`),
  257. KEY `idx_user_id` (`user_id`)
  258. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='提现记录表';
  259. CREATE TABLE IF NOT EXISTS `donation_records` (
  260. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  261. `user_id` BIGINT UNSIGNED NOT NULL,
  262. `project_id` BIGINT UNSIGNED DEFAULT NULL,
  263. `amount` DECIMAL(10,2) NOT NULL,
  264. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  265. PRIMARY KEY (`id`),
  266. KEY `idx_user_id` (`user_id`)
  267. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='捐赠记录表';
  268. CREATE TABLE IF NOT EXISTS `donation_projects` (
  269. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  270. `name` VARCHAR(100) NOT NULL,
  271. `description` TEXT DEFAULT NULL,
  272. `target_amount` DECIMAL(12,2) DEFAULT 0.00,
  273. `current_amount` DECIMAL(12,2) DEFAULT 0.00,
  274. `status` TINYINT DEFAULT 1,
  275. PRIMARY KEY (`id`)
  276. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='捐赠项目表';
  277. CREATE TABLE IF NOT EXISTS `scan_history` (
  278. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  279. `user_id` BIGINT UNSIGNED NOT NULL,
  280. `detected_class` VARCHAR(50) NOT NULL,
  281. `detected_name` VARCHAR(50) DEFAULT NULL,
  282. `confidence` DECIMAL(5,4) DEFAULT 0.0000,
  283. `image` VARCHAR(255) DEFAULT NULL,
  284. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  285. PRIMARY KEY (`id`),
  286. KEY `idx_user_id` (`user_id`)
  287. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AR扫描记录表';
  288. CREATE TABLE IF NOT EXISTS `favorites` (
  289. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  290. `user_id` BIGINT UNSIGNED NOT NULL,
  291. `type` ENUM('collector', 'drop_point', 'product', 'article') NOT NULL,
  292. `target_id` BIGINT UNSIGNED NOT NULL,
  293. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  294. PRIMARY KEY (`id`),
  295. KEY `idx_user_id` (`user_id`)
  296. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';
  297. CREATE TABLE IF NOT EXISTS `order_reviews` (
  298. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  299. `order_id` BIGINT UNSIGNED NOT NULL,
  300. `user_id` BIGINT UNSIGNED NOT NULL,
  301. `collector_id` BIGINT UNSIGNED DEFAULT NULL,
  302. `rating` INT NOT NULL,
  303. `content` TEXT DEFAULT NULL,
  304. `images` TEXT DEFAULT NULL,
  305. `tags` TEXT DEFAULT NULL,
  306. `is_anonymous` TINYINT DEFAULT 0,
  307. `reply` TEXT DEFAULT NULL,
  308. `reply_time` DATETIME DEFAULT NULL,
  309. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  310. PRIMARY KEY (`id`),
  311. KEY `idx_order_id` (`order_id`)
  312. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单评价表';
  313. CREATE TABLE IF NOT EXISTS `user_badges` (
  314. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  315. `user_id` BIGINT UNSIGNED NOT NULL,
  316. `badge_id` BIGINT UNSIGNED NOT NULL,
  317. `unlocked_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  318. PRIMARY KEY (`id`),
  319. UNIQUE KEY `uk_user_badge` (`user_id`, `badge_id`)
  320. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户成就徽章表';
  321. CREATE TABLE IF NOT EXISTS `badges` (
  322. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  323. `name` VARCHAR(50) NOT NULL,
  324. `description` VARCHAR(255) DEFAULT NULL,
  325. `icon` VARCHAR(100) DEFAULT NULL,
  326. `condition_type` VARCHAR(50) DEFAULT NULL,
  327. `condition_value` INT DEFAULT 0,
  328. `reward_points` INT DEFAULT 0,
  329. `sort_order` INT DEFAULT 0,
  330. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  331. PRIMARY KEY (`id`)
  332. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='徽章定义表';
  333. CREATE TABLE IF NOT EXISTS `customer_service_sessions` (
  334. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  335. `user_id` BIGINT UNSIGNED NOT NULL,
  336. `status` ENUM('open', 'closed') DEFAULT 'open',
  337. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  338. `closed_at` DATETIME DEFAULT NULL,
  339. PRIMARY KEY (`id`),
  340. KEY `idx_user_id` (`user_id`)
  341. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客服会话表';
  342. CREATE TABLE IF NOT EXISTS `customer_service_messages` (
  343. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  344. `session_id` BIGINT UNSIGNED NOT NULL,
  345. `sender_type` ENUM('user', 'service', 'system') NOT NULL,
  346. `sender_id` BIGINT UNSIGNED DEFAULT NULL,
  347. `content` TEXT NOT NULL,
  348. `content_type` ENUM('text', 'image', 'file') DEFAULT 'text',
  349. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  350. PRIMARY KEY (`id`),
  351. KEY `idx_session_id` (`session_id`)
  352. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客服消息表';
  353. -- G端表(17张)
  354. CREATE TABLE IF NOT EXISTS `government_users` (
  355. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  356. `username` VARCHAR(50) NOT NULL,
  357. `password` VARCHAR(255) NOT NULL,
  358. `real_name` VARCHAR(50) NOT NULL,
  359. `department` VARCHAR(100) DEFAULT NULL,
  360. `position` VARCHAR(50) DEFAULT NULL,
  361. `phone` VARCHAR(20) DEFAULT NULL,
  362. `email` VARCHAR(100) DEFAULT NULL,
  363. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  364. `role` VARCHAR(30) DEFAULT 'operator',
  365. `permissions` TEXT DEFAULT NULL,
  366. `status` TINYINT DEFAULT 1,
  367. `last_login_at` DATETIME DEFAULT NULL,
  368. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  369. PRIMARY KEY (`id`),
  370. UNIQUE KEY `uk_username` (`username`)
  371. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='政府用户表';
  372. CREATE TABLE IF NOT EXISTS `administrative_regions` (
  373. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  374. `region_code` VARCHAR(20) NOT NULL,
  375. `name` VARCHAR(50) NOT NULL,
  376. `level` TINYINT NOT NULL,
  377. `parent_id` BIGINT UNSIGNED DEFAULT 0,
  378. `parent_codes` VARCHAR(255) DEFAULT NULL,
  379. `longitude` DECIMAL(10,7) DEFAULT NULL,
  380. `latitude` DECIMAL(10,7) DEFAULT NULL,
  381. `population` INT DEFAULT 0,
  382. `area` DECIMAL(10,2) DEFAULT 0.00,
  383. `manager_id` BIGINT UNSIGNED DEFAULT NULL,
  384. `status` TINYINT DEFAULT 1,
  385. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  386. PRIMARY KEY (`id`),
  387. UNIQUE KEY `uk_region_code` (`region_code`)
  388. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='行政区划表';
  389. CREATE TABLE IF NOT EXISTS `government_warnings` (
  390. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  391. `warning_no` VARCHAR(30) NOT NULL,
  392. `type` ENUM('violation', 'anomaly', 'complaint', 'environmental') NOT NULL,
  393. `level` ENUM('low', 'medium', 'high', 'urgent') DEFAULT 'medium',
  394. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  395. `region_name` VARCHAR(50) DEFAULT NULL,
  396. `title` VARCHAR(200) NOT NULL,
  397. `content` TEXT DEFAULT NULL,
  398. `source` VARCHAR(100) DEFAULT NULL,
  399. `evidence` TEXT DEFAULT NULL,
  400. `enterprise_id` BIGINT UNSIGNED DEFAULT NULL,
  401. `enterprise_name` VARCHAR(100) DEFAULT NULL,
  402. `handler_id` BIGINT UNSIGNED DEFAULT NULL,
  403. `handler_name` VARCHAR(50) DEFAULT NULL,
  404. `handle_result` TEXT DEFAULT NULL,
  405. `status` ENUM('pending', 'investigating', 'resolved', 'closed') DEFAULT 'pending',
  406. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  407. `resolved_at` DATETIME DEFAULT NULL,
  408. PRIMARY KEY (`id`),
  409. UNIQUE KEY `uk_warning_no` (`warning_no`)
  410. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='政府预警信息表';
  411. CREATE TABLE IF NOT EXISTS `recycle_stations` (
  412. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  413. `station_no` VARCHAR(30) NOT NULL,
  414. `name` VARCHAR(100) NOT NULL,
  415. `enterprise_id` BIGINT UNSIGNED DEFAULT NULL,
  416. `enterprise_name` VARCHAR(100) DEFAULT NULL,
  417. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  418. `address` VARCHAR(255) DEFAULT NULL,
  419. `longitude` DECIMAL(10,7) DEFAULT NULL,
  420. `latitude` DECIMAL(10,7) DEFAULT NULL,
  421. `capacity` DECIMAL(10,2) DEFAULT 0.00,
  422. `current_volume` DECIMAL(10,2) DEFAULT 0.00,
  423. `license_no` VARCHAR(50) DEFAULT NULL,
  424. `license_expire_date` DATE DEFAULT NULL,
  425. `compliance_score` INT DEFAULT 0,
  426. `status` ENUM('active', 'suspended', 'closed') DEFAULT 'active',
  427. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  428. PRIMARY KEY (`id`),
  429. UNIQUE KEY `uk_station_no` (`station_no`)
  430. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='回收站点表';
  431. CREATE TABLE IF NOT EXISTS `industry_chain_data` (
  432. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  433. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  434. `stage` VARCHAR(30) NOT NULL,
  435. `category` VARCHAR(50) DEFAULT NULL,
  436. `volume` DECIMAL(12,2) DEFAULT 0.00,
  437. `value` DECIMAL(14,2) DEFAULT 0.00,
  438. `enterprise_count` INT DEFAULT 0,
  439. `employment` INT DEFAULT 0,
  440. `data_date` DATE NOT NULL,
  441. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  442. PRIMARY KEY (`id`)
  443. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产业链数据表';
  444. CREATE TABLE IF NOT EXISTS `region_statistics` (
  445. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  446. `region_id` BIGINT UNSIGNED NOT NULL,
  447. `region_name` VARCHAR(50) DEFAULT NULL,
  448. `total_recycle_weight` DECIMAL(12,2) DEFAULT 0.00,
  449. `total_users` INT DEFAULT 0,
  450. `total_enterprises` INT DEFAULT 0,
  451. `total_stations` INT DEFAULT 0,
  452. `recycle_rate` DECIMAL(5,2) DEFAULT 0.00,
  453. `carbon_reduction` DECIMAL(12,2) DEFAULT 0.00,
  454. `economic_value` DECIMAL(14,2) DEFAULT 0.00,
  455. `compliance_rate` DECIMAL(5,2) DEFAULT 0.00,
  456. `stat_date` DATE NOT NULL,
  457. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  458. PRIMARY KEY (`id`)
  459. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='区域统计数据表';
  460. CREATE TABLE IF NOT EXISTS `category_statistics` (
  461. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  462. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  463. `category` VARCHAR(50) NOT NULL,
  464. `recycle_weight` DECIMAL(12,2) DEFAULT 0.00,
  465. `growth_rate` DECIMAL(5,2) DEFAULT 0.00,
  466. `market_price` DECIMAL(10,2) DEFAULT 0.00,
  467. `carbon_reduction` DECIMAL(10,2) DEFAULT 0.00,
  468. `recycling_rate` DECIMAL(5,2) DEFAULT 0.00,
  469. `top_enterprises` TEXT DEFAULT NULL,
  470. `stat_date` DATE NOT NULL,
  471. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  472. PRIMARY KEY (`id`)
  473. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='品类统计数据表';
  474. CREATE TABLE IF NOT EXISTS `risk_assessments` (
  475. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  476. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  477. `risk_type` VARCHAR(50) NOT NULL,
  478. `level` ENUM('low', 'medium', 'high', 'critical') DEFAULT 'medium',
  479. `title` VARCHAR(200) NOT NULL,
  480. `content` TEXT DEFAULT NULL,
  481. `impact` TEXT DEFAULT NULL,
  482. `probability` INT DEFAULT 0,
  483. `strategy` TEXT DEFAULT NULL,
  484. `status` ENUM('active', 'mitigated', 'closed') DEFAULT 'active',
  485. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  486. PRIMARY KEY (`id`)
  487. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='风险评估表';
  488. CREATE TABLE IF NOT EXISTS `subsidy_applications` (
  489. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  490. `application_no` VARCHAR(30) NOT NULL,
  491. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  492. `enterprise_name` VARCHAR(100) DEFAULT NULL,
  493. `subsidy_type` VARCHAR(50) NOT NULL,
  494. `amount` DECIMAL(12,2) NOT NULL,
  495. `purpose` TEXT DEFAULT NULL,
  496. `materials` TEXT DEFAULT NULL,
  497. `apply_date` DATE NOT NULL,
  498. `status` ENUM('pending', 'reviewing', 'approved', 'rejected', 'paid') DEFAULT 'pending',
  499. `blockchain_hash` VARCHAR(100) DEFAULT NULL,
  500. `blockchain_status` ENUM('verified', 'verifying', 'failed') DEFAULT 'verifying',
  501. `reviewer_id` BIGINT UNSIGNED DEFAULT NULL,
  502. `reviewer_name` VARCHAR(50) DEFAULT NULL,
  503. `review_time` DATETIME DEFAULT NULL,
  504. `review_comment` TEXT DEFAULT NULL,
  505. `reject_reason` TEXT DEFAULT NULL,
  506. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  507. PRIMARY KEY (`id`),
  508. UNIQUE KEY `uk_application_no` (`application_no`)
  509. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='补贴申请表';
  510. CREATE TABLE IF NOT EXISTS `subsidy_payments` (
  511. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  512. `payment_no` VARCHAR(30) NOT NULL,
  513. `application_id` BIGINT UNSIGNED NOT NULL,
  514. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  515. `enterprise_name` VARCHAR(100) DEFAULT NULL,
  516. `amount` DECIMAL(12,2) NOT NULL,
  517. `purpose` VARCHAR(200) DEFAULT NULL,
  518. `payment_date` DATE NOT NULL,
  519. `payment_method` VARCHAR(50) DEFAULT NULL,
  520. `bank_account` VARCHAR(50) DEFAULT NULL,
  521. `effectiveness` INT DEFAULT 0,
  522. `status` ENUM('pending', 'paid', 'failed') DEFAULT 'pending',
  523. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  524. PRIMARY KEY (`id`)
  525. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='补贴发放记录表';
  526. CREATE TABLE IF NOT EXISTS `policy_evaluations` (
  527. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  528. `policy_id` BIGINT UNSIGNED DEFAULT NULL,
  529. `policy_name` VARCHAR(200) DEFAULT NULL,
  530. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  531. `eval_date` DATE NOT NULL,
  532. `eval_period` VARCHAR(50) DEFAULT NULL,
  533. `subsidy_amount` DECIMAL(14,2) DEFAULT 0,
  534. `recycle_growth` DECIMAL(5,2) DEFAULT 0,
  535. `participation_rate` DECIMAL(5,2) DEFAULT 0,
  536. `satisfaction_rate` DECIMAL(5,2) DEFAULT 0,
  537. `cost_benefit_ratio` DECIMAL(5,2) DEFAULT 0,
  538. `indicators` TEXT DEFAULT NULL,
  539. `conclusion` TEXT DEFAULT NULL,
  540. `suggestions` TEXT DEFAULT NULL,
  541. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  542. PRIMARY KEY (`id`)
  543. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='政策效果评估表';
  544. CREATE TABLE IF NOT EXISTS `ai_generated_reports` (
  545. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  546. `report_no` VARCHAR(30) NOT NULL,
  547. `report_type` VARCHAR(50) NOT NULL,
  548. `title` VARCHAR(200) NOT NULL,
  549. `summary` TEXT DEFAULT NULL,
  550. `content` LONGTEXT DEFAULT NULL,
  551. `charts_data` TEXT DEFAULT NULL,
  552. `region_id` BIGINT UNSIGNED DEFAULT NULL,
  553. `report_date` DATE NOT NULL,
  554. `generated_by` VARCHAR(50) DEFAULT 'AI',
  555. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  556. PRIMARY KEY (`id`),
  557. UNIQUE KEY `uk_report_no` (`report_no`)
  558. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI生成报告表';
  559. CREATE TABLE IF NOT EXISTS `compliance_checks` (
  560. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  561. `check_no` VARCHAR(30) NOT NULL,
  562. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  563. `enterprise_name` VARCHAR(100) DEFAULT NULL,
  564. `check_type` VARCHAR(50) DEFAULT NULL,
  565. `check_date` DATE NOT NULL,
  566. `checker_id` BIGINT UNSIGNED DEFAULT NULL,
  567. `checker_name` VARCHAR(50) DEFAULT NULL,
  568. `check_items` TEXT DEFAULT NULL,
  569. `score` INT DEFAULT 0,
  570. `issues` TEXT DEFAULT NULL,
  571. `suggestions` TEXT DEFAULT NULL,
  572. `status` ENUM('passed', 'warning', 'failed') DEFAULT 'passed',
  573. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  574. PRIMARY KEY (`id`),
  575. UNIQUE KEY `uk_check_no` (`check_no`)
  576. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合规检查记录表';
  577. CREATE TABLE IF NOT EXISTS `policy_simulations` (
  578. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  579. `user_id` BIGINT UNSIGNED NOT NULL,
  580. `simulation_type` VARCHAR(50) DEFAULT NULL,
  581. `parameters` TEXT DEFAULT NULL,
  582. `results` TEXT DEFAULT NULL,
  583. `charts_data` TEXT DEFAULT NULL,
  584. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  585. PRIMARY KEY (`id`)
  586. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='政策模拟记录表';
  587. CREATE TABLE IF NOT EXISTS `government_notices` (
  588. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  589. `title` VARCHAR(200) NOT NULL,
  590. `content` LONGTEXT DEFAULT NULL,
  591. `type` VARCHAR(30) DEFAULT NULL,
  592. `priority` ENUM('low', 'medium', 'high') DEFAULT 'medium',
  593. `target_regions` TEXT DEFAULT NULL,
  594. `target_enterprises` TEXT DEFAULT NULL,
  595. `publisher_id` BIGINT UNSIGNED DEFAULT NULL,
  596. `publisher_name` VARCHAR(50) DEFAULT NULL,
  597. `publish_date` DATE NOT NULL,
  598. `status` TINYINT DEFAULT 1,
  599. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  600. PRIMARY KEY (`id`)
  601. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告通知表';
  602. CREATE TABLE IF NOT EXISTS `government_operation_logs` (
  603. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  604. `user_id` BIGINT UNSIGNED NOT NULL,
  605. `user_name` VARCHAR(50) DEFAULT NULL,
  606. `operation` VARCHAR(100) NOT NULL,
  607. `module` VARCHAR(50) DEFAULT NULL,
  608. `description` TEXT DEFAULT NULL,
  609. `ip_address` VARCHAR(50) DEFAULT NULL,
  610. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  611. PRIMARY KEY (`id`)
  612. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
  613. CREATE TABLE IF NOT EXISTS `notification_settings` (
  614. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  615. `user_id` BIGINT UNSIGNED NOT NULL,
  616. `system_alerts` TINYINT DEFAULT 1,
  617. `policy_updates` TINYINT DEFAULT 1,
  618. `data_reports` TINYINT DEFAULT 1,
  619. `compliance_warnings` TINYINT DEFAULT 1,
  620. `email_enabled` TINYINT DEFAULT 1,
  621. `sms_enabled` TINYINT DEFAULT 0,
  622. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  623. `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  624. PRIMARY KEY (`id`),
  625. UNIQUE KEY `uk_user_id` (`user_id`)
  626. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知设置表';
  627. -- 完成
  628. SELECT '所有缺失表已创建完成!' AS message;