recycle_app_business_database.sql 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. -- ============================================
  2. -- 废品回收APP B端(企业端)数据库设计
  3. -- 数据库名: recycle_app (与C端共用)
  4. -- ============================================
  5. USE recycle_app;
  6. -- 1. 企业表
  7. CREATE TABLE `enterprises` (
  8. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  9. `name` VARCHAR(100) NOT NULL COMMENT '企业名称',
  10. `code` VARCHAR(50) NOT NULL COMMENT '统一社会信用代码',
  11. `type` VARCHAR(50) DEFAULT NULL COMMENT '企业类型',
  12. `legal_person` VARCHAR(50) DEFAULT NULL COMMENT '法定代表人',
  13. `phone` VARCHAR(20) DEFAULT NULL,
  14. `email` VARCHAR(100) DEFAULT NULL,
  15. `address` VARCHAR(255) DEFAULT NULL,
  16. `registered_capital` VARCHAR(50) DEFAULT NULL COMMENT '注册资本',
  17. `establish_date` DATE DEFAULT NULL COMMENT '成立日期',
  18. `logo` VARCHAR(255) DEFAULT NULL,
  19. `status` TINYINT DEFAULT 1,
  20. `verified` TINYINT DEFAULT 0,
  21. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  22. `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  23. PRIMARY KEY (`id`),
  24. UNIQUE KEY `uk_code` (`code`)
  25. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业表';
  26. -- 2. 企业员工表
  27. CREATE TABLE `enterprise_employees` (
  28. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  29. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  30. `employee_no` VARCHAR(30) DEFAULT NULL,
  31. `name` VARCHAR(50) NOT NULL,
  32. `phone` VARCHAR(20) NOT NULL,
  33. `role` VARCHAR(50) NOT NULL COMMENT '角色:admin/collector/finance',
  34. `department` VARCHAR(50) DEFAULT NULL,
  35. `status` ENUM('active', 'inactive') DEFAULT 'active',
  36. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  37. PRIMARY KEY (`id`),
  38. KEY `idx_enterprise_id` (`enterprise_id`)
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业员工表';
  40. -- 3. 合同表
  41. CREATE TABLE `contracts` (
  42. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  43. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  44. `contract_no` VARCHAR(50) NOT NULL,
  45. `title` VARCHAR(200) NOT NULL,
  46. `amount` DECIMAL(12,2) DEFAULT 0.00,
  47. `start_date` DATE NOT NULL,
  48. `end_date` DATE NOT NULL,
  49. `status` ENUM('pending', 'active', 'expired') DEFAULT 'pending',
  50. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  51. PRIMARY KEY (`id`),
  52. KEY `idx_enterprise_id` (`enterprise_id`)
  53. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合同表';
  54. -- 4. 订阅套餐表
  55. CREATE TABLE `subscription_plans` (
  56. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  57. `code` VARCHAR(30) NOT NULL COMMENT 'basic/professional/enterprise',
  58. `name` VARCHAR(50) NOT NULL,
  59. `price` DECIMAL(10,2) NOT NULL,
  60. `unit` VARCHAR(20) DEFAULT '月',
  61. `max_users` INT DEFAULT 0,
  62. `storage_limit` VARCHAR(20) DEFAULT NULL,
  63. `features` TEXT DEFAULT NULL COMMENT 'JSON',
  64. `is_popular` TINYINT DEFAULT 0,
  65. `status` TINYINT DEFAULT 1,
  66. PRIMARY KEY (`id`),
  67. UNIQUE KEY `uk_code` (`code`)
  68. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订阅套餐表';
  69. -- 5. 企业订阅记录表
  70. CREATE TABLE `enterprise_subscriptions` (
  71. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  72. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  73. `plan_id` BIGINT UNSIGNED NOT NULL,
  74. `plan_name` VARCHAR(50) DEFAULT NULL,
  75. `start_date` DATE NOT NULL,
  76. `end_date` DATE NOT NULL,
  77. `amount` DECIMAL(10,2) DEFAULT 0.00,
  78. `max_users` INT DEFAULT 0,
  79. `used_users` INT DEFAULT 0,
  80. `status` ENUM('active', 'expired', 'cancelled') DEFAULT 'active',
  81. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  82. PRIMARY KEY (`id`),
  83. KEY `idx_enterprise_id` (`enterprise_id`)
  84. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业订阅记录表';
  85. -- 6. B端订单表
  86. CREATE TABLE `business_orders` (
  87. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  88. `order_no` VARCHAR(30) NOT NULL,
  89. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  90. `consumer_order_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联C端订单',
  91. `customer_name` VARCHAR(50) DEFAULT NULL,
  92. `customer_phone` VARCHAR(20) DEFAULT NULL,
  93. `category_name` VARCHAR(50) DEFAULT NULL,
  94. `weight` DECIMAL(10,2) DEFAULT 0.00,
  95. `estimated_value` DECIMAL(10,2) DEFAULT 0.00,
  96. `area` VARCHAR(50) DEFAULT NULL,
  97. `address` VARCHAR(500) DEFAULT NULL,
  98. `collector_id` BIGINT UNSIGNED DEFAULT NULL,
  99. `collector_name` VARCHAR(50) DEFAULT NULL,
  100. `collector_phone` VARCHAR(20) DEFAULT NULL,
  101. `settlement_amount` DECIMAL(10,2) DEFAULT NULL,
  102. `settlement_status` ENUM('unsettled', 'settled') DEFAULT 'unsettled',
  103. `status` ENUM('pending', 'in-progress', 'completed', 'cancelled') DEFAULT 'pending',
  104. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  105. PRIMARY KEY (`id`),
  106. UNIQUE KEY `uk_order_no` (`order_no`),
  107. KEY `idx_enterprise_id` (`enterprise_id`),
  108. KEY `idx_status` (`status`)
  109. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='B端订单表';
  110. -- 7. 设备表
  111. CREATE TABLE `devices` (
  112. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  113. `device_no` VARCHAR(30) NOT NULL,
  114. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  115. `name` VARCHAR(100) NOT NULL,
  116. `type` VARCHAR(50) NOT NULL COMMENT '分拣/压缩/粉碎/分选/打包',
  117. `model` VARCHAR(50) DEFAULT NULL,
  118. `location` VARCHAR(100) DEFAULT NULL,
  119. `status` ENUM('online', 'offline', 'maintenance', 'warning') DEFAULT 'offline',
  120. `running_time` INT DEFAULT 0 COMMENT '运行时长(小时)',
  121. `processed_volume` DECIMAL(12,2) DEFAULT 0.00 COMMENT '处理量(kg)',
  122. `efficiency` DECIMAL(5,2) DEFAULT 0.00,
  123. `temperature` DECIMAL(5,2) DEFAULT NULL,
  124. `pressure` DECIMAL(5,2) DEFAULT NULL,
  125. `last_maintenance` DATE DEFAULT NULL,
  126. `next_maintenance` DATE DEFAULT NULL,
  127. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  128. PRIMARY KEY (`id`),
  129. UNIQUE KEY `uk_device_no` (`device_no`),
  130. KEY `idx_enterprise_id` (`enterprise_id`)
  131. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备表';
  132. -- 8. 设备维护记录表
  133. CREATE TABLE `device_maintenance` (
  134. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  135. `device_id` BIGINT UNSIGNED NOT NULL,
  136. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  137. `type` ENUM('routine', 'repair', 'emergency') NOT NULL,
  138. `title` VARCHAR(100) DEFAULT NULL,
  139. `description` TEXT DEFAULT NULL,
  140. `cost` DECIMAL(10,2) DEFAULT 0.00,
  141. `technician` VARCHAR(50) DEFAULT NULL,
  142. `start_time` DATETIME DEFAULT NULL,
  143. `end_time` DATETIME DEFAULT NULL,
  144. `status` ENUM('planned', 'in-progress', 'completed') DEFAULT 'planned',
  145. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  146. PRIMARY KEY (`id`),
  147. KEY `idx_device_id` (`device_id`)
  148. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备维护记录表';
  149. -- 9. 设备告警表
  150. CREATE TABLE `device_alerts` (
  151. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  152. `device_id` BIGINT UNSIGNED NOT NULL,
  153. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  154. `type` ENUM('temperature', 'pressure', 'efficiency', 'error') NOT NULL,
  155. `level` ENUM('low', 'medium', 'high', 'critical') DEFAULT 'medium',
  156. `title` VARCHAR(100) NOT NULL,
  157. `description` TEXT DEFAULT NULL,
  158. `status` ENUM('active', 'acknowledged', 'resolved') DEFAULT 'active',
  159. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  160. PRIMARY KEY (`id`),
  161. KEY `idx_device_id` (`device_id`),
  162. KEY `idx_status` (`status`)
  163. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备告警表';
  164. -- 10. 监控点位表
  165. CREATE TABLE `monitoring_locations` (
  166. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  167. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  168. `location_no` VARCHAR(30) NOT NULL,
  169. `name` VARCHAR(100) NOT NULL,
  170. `type` ENUM('community', 'mall', 'school', 'office') NOT NULL,
  171. `address` VARCHAR(255) DEFAULT NULL,
  172. `longitude` DECIMAL(10,7) DEFAULT NULL,
  173. `latitude` DECIMAL(10,7) DEFAULT NULL,
  174. `capacity` DECIMAL(10,2) DEFAULT 1000.00,
  175. `current_volume` DECIMAL(10,2) DEFAULT 0.00,
  176. `recycle_volume` DECIMAL(10,2) DEFAULT 0.00,
  177. `status` ENUM('normal', 'warning', 'critical') DEFAULT 'normal',
  178. `last_update` DATETIME DEFAULT NULL,
  179. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  180. PRIMARY KEY (`id`),
  181. KEY `idx_enterprise_id` (`enterprise_id`)
  182. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='监控点位表';
  183. -- 11. 统计报表表
  184. CREATE TABLE `statistics_reports` (
  185. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  186. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  187. `report_type` ENUM('daily', 'weekly', 'monthly', 'yearly') NOT NULL,
  188. `report_date` DATE NOT NULL,
  189. `total_recycle_weight` DECIMAL(12,2) DEFAULT 0.00,
  190. `total_revenue` DECIMAL(12,2) DEFAULT 0.00,
  191. `total_orders` INT DEFAULT 0,
  192. `new_users` INT DEFAULT 0,
  193. `carbon_reduction` DECIMAL(10,2) DEFAULT 0.00,
  194. `water_saving` DECIMAL(10,2) DEFAULT 0.00,
  195. `electricity_saving` DECIMAL(10,2) DEFAULT 0.00,
  196. `category_data` TEXT DEFAULT NULL COMMENT 'JSON',
  197. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  198. PRIMARY KEY (`id`),
  199. KEY `idx_enterprise_id` (`enterprise_id`)
  200. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统计报表表';
  201. -- 12. 预警信息表
  202. CREATE TABLE `business_alerts` (
  203. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  204. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  205. `type` ENUM('order', 'device', 'inventory', 'finance') NOT NULL,
  206. `level` ENUM('low', 'medium', 'high') DEFAULT 'medium',
  207. `title` VARCHAR(100) NOT NULL,
  208. `content` TEXT DEFAULT NULL,
  209. `icon` VARCHAR(50) DEFAULT NULL,
  210. `status` ENUM('active', 'processed', 'ignored') DEFAULT 'active',
  211. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  212. PRIMARY KEY (`id`),
  213. KEY `idx_enterprise_id` (`enterprise_id`)
  214. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警信息表';
  215. -- 13. 待办事项表
  216. CREATE TABLE `business_todos` (
  217. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  218. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  219. `title` VARCHAR(100) NOT NULL,
  220. `description` TEXT DEFAULT NULL,
  221. `type` VARCHAR(50) DEFAULT NULL,
  222. `icon` VARCHAR(50) DEFAULT NULL,
  223. `count` INT DEFAULT 0,
  224. `priority` ENUM('low', 'medium', 'high') DEFAULT 'medium',
  225. `action_url` VARCHAR(255) DEFAULT NULL,
  226. `status` ENUM('pending', 'completed') DEFAULT 'pending',
  227. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  228. PRIMARY KEY (`id`),
  229. KEY `idx_enterprise_id` (`enterprise_id`)
  230. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='待办事项表';
  231. -- 14. AI会话记录表
  232. CREATE TABLE `ai_chat_history` (
  233. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  234. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  235. `user_id` BIGINT UNSIGNED NOT NULL,
  236. `session_id` VARCHAR(50) NOT NULL,
  237. `role` ENUM('user', 'assistant') NOT NULL,
  238. `content` LONGTEXT NOT NULL,
  239. `attachments` TEXT DEFAULT NULL COMMENT 'JSON',
  240. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  241. PRIMARY KEY (`id`),
  242. KEY `idx_session_id` (`session_id`)
  243. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI会话记录表';
  244. -- 15. AI智能洞察表
  245. CREATE TABLE `ai_insights` (
  246. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  247. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  248. `type` ENUM('warning', 'info', 'success') NOT NULL,
  249. `title` VARCHAR(100) NOT NULL,
  250. `description` TEXT DEFAULT NULL,
  251. `icon` VARCHAR(50) DEFAULT NULL,
  252. `action_url` VARCHAR(255) DEFAULT NULL,
  253. `is_read` TINYINT DEFAULT 0,
  254. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  255. PRIMARY KEY (`id`),
  256. KEY `idx_enterprise_id` (`enterprise_id`)
  257. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI智能洞察表';
  258. -- 16. 政策补贴表
  259. CREATE TABLE `policies` (
  260. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  261. `title` VARCHAR(200) NOT NULL,
  262. `description` TEXT DEFAULT NULL,
  263. `issuer` VARCHAR(100) DEFAULT NULL COMMENT '发布机构',
  264. `amount_range` VARCHAR(100) DEFAULT NULL COMMENT '补贴金额范围',
  265. `deadline` DATE DEFAULT NULL COMMENT '截止日期',
  266. `requirements` TEXT DEFAULT NULL COMMENT 'JSON',
  267. `status` ENUM('available', 'expired') DEFAULT 'available',
  268. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  269. PRIMARY KEY (`id`)
  270. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='政策补贴表';
  271. -- 17. 政策申请记录表
  272. CREATE TABLE `policy_applications` (
  273. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  274. `enterprise_id` BIGINT UNSIGNED NOT NULL,
  275. `policy_id` BIGINT UNSIGNED NOT NULL,
  276. `policy_title` VARCHAR(200) DEFAULT NULL,
  277. `materials` TEXT DEFAULT NULL COMMENT '申请材料JSON',
  278. `status` ENUM('pending', 'submitted', 'approved', 'rejected') DEFAULT 'pending',
  279. `submit_at` DATETIME DEFAULT NULL,
  280. `result_at` DATETIME DEFAULT NULL,
  281. `remark` TEXT DEFAULT NULL,
  282. `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  283. PRIMARY KEY (`id`),
  284. KEY `idx_enterprise_id` (`enterprise_id`)
  285. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='政策申请记录表';
  286. -- 18. 登录日志表
  287. CREATE TABLE `login_logs` (
  288. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  289. `user_id` BIGINT UNSIGNED NOT NULL,
  290. `enterprise_id` BIGINT UNSIGNED DEFAULT NULL,
  291. `login_time` DATETIME NOT NULL,
  292. `ip` VARCHAR(50) DEFAULT NULL,
  293. `location` VARCHAR(100) DEFAULT NULL,
  294. `device` VARCHAR(200) DEFAULT NULL,
  295. `browser` VARCHAR(100) DEFAULT NULL,
  296. `status` ENUM('success', 'failed') DEFAULT 'success',
  297. `fail_reason` VARCHAR(255) DEFAULT NULL,
  298. PRIMARY KEY (`id`),
  299. KEY `idx_user_id` (`user_id`),
  300. KEY `idx_login_time` (`login_time`)
  301. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='登录日志表';
  302. -- ============================================
  303. -- 初始化B端基础数据
  304. -- ============================================
  305. -- 订阅套餐
  306. INSERT INTO `subscription_plans` (`code`, `name`, `price`, `unit`, `max_users`, `storage_limit`, `features`, `is_popular`) VALUES
  307. ('basic', '基础版', 999.00, '月', 10, '100GB', '["基础回收管理","订单处理","数据报表","邮件支持"]', 0),
  308. ('professional', '专业版', 2999.00, '月', 50, '500GB', '["所有基础功能","AI智能助手","高级数据分析","员工管理","合同管理","7x24小时支持"]', 1),
  309. ('enterprise', '企业版', 9999.00, '月', 0, '2TB', '["所有专业功能","专属客户经理","定制化开发","API接口","多地域部署","数据安全保障","SLA保证"]', 0);
  310. -- 政策补贴
  311. INSERT INTO `policies` (`title`, `description`, `issuer`, `amount_range`, `deadline`, `requirements`) VALUES
  312. ('再生资源企业补贴', '符合条件的回收企业可申请政府补贴', '生态环境部', '¥50,000 - ¥200,000', '2025-12-31', '["年回收量≥500吨","环保资质齐全","无违规记录"]'),
  313. ('智能化改造专项资金', '支持企业进行智能化数字化改造', '工信部', '¥100,000 - ¥500,000', '2025-11-30', '["投资额≥50万","技术方案审核通过","3年内完成改造"]');