1
0

2023020100-init.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. <?php
  2. declare(strict_types=1);
  3. use App\Interfaces\MigrationInterface;
  4. use App\Services\DB;
  5. return new class() implements MigrationInterface {
  6. public function up(): int
  7. {
  8. DB::getPdo()->exec(
  9. "CREATE TABLE `announcement` (
  10. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '公告ID',
  11. `status` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '公告状态',
  12. `sort` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT '公告排序',
  13. `date` datetime NOT NULL DEFAULT '1989-06-04 00:05:00' COMMENT '公告日期',
  14. `content` longtext NOT NULL DEFAULT '' COMMENT '公告内容',
  15. PRIMARY KEY (`id`),
  16. KEY `status` (`status`),
  17. KEY `sort` (`sort`)
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  19. CREATE TABLE `config` (
  20. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '配置ID',
  21. `item` varchar(255) NOT NULL DEFAULT '' COMMENT '配置项',
  22. `value` varchar(2048) NOT NULL DEFAULT '' COMMENT '配置值',
  23. `class` varchar(16) NOT NULL DEFAULT '' COMMENT '配置类别',
  24. `is_public` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否为公共参数',
  25. `type` varchar(16) NOT NULL DEFAULT '' COMMENT '配置值类型',
  26. `default` varchar(2048) NOT NULL DEFAULT '' COMMENT '默认值',
  27. `mark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
  28. PRIMARY KEY (`id`),
  29. KEY `item` (`item`),
  30. KEY `class` (`class`),
  31. KEY `is_public` (`is_public`)
  32. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  33. CREATE TABLE `detect_ban_log` (
  34. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '封禁记录ID',
  35. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  36. `detect_number` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '本次违规次数',
  37. `ban_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '封禁时长',
  38. `start_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '封禁开始时间',
  39. `end_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '封禁结束时间',
  40. `all_detect_number` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '累计违规次数',
  41. PRIMARY KEY (`id`),
  42. KEY `user_id` (`user_id`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  44. CREATE TABLE `detect_list` (
  45. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '审计规则ID',
  46. `name` varchar(255) NOT NULL DEFAULT '' COMMENT '规则名称',
  47. `text` varchar(255) NOT NULL DEFAULT '' COMMENT '规则介绍',
  48. `regex` varchar(255) NOT NULL DEFAULT '' COMMENT '正则表达式',
  49. `type` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '规则类型',
  50. PRIMARY KEY (`id`)
  51. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  52. CREATE TABLE `detect_log` (
  53. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '审计记录ID',
  54. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  55. `list_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '规则ID',
  56. `datetime` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '触发时间',
  57. `node_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '节点ID',
  58. `status` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '状态',
  59. PRIMARY KEY (`id`),
  60. KEY `user_id` (`user_id`),
  61. KEY `list_id` (`list_id`),
  62. KEY `node_id` (`node_id`)
  63. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  64. CREATE TABLE `docs` (
  65. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '文档ID',
  66. `status` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '文档状态',
  67. `sort` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT '文档排序',
  68. `date` datetime NOT NULL DEFAULT '1989-06-04 00:05:00' COMMENT '文档日期',
  69. `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文档标题',
  70. `content` longtext NOT NULL DEFAULT '' COMMENT '文档内容',
  71. PRIMARY KEY (`id`),
  72. KEY `status` (`status`),
  73. KEY `sort` (`sort`)
  74. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  75. CREATE TABLE `email_queue` (
  76. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  77. `to_email` varchar(255) NOT NULL DEFAULT '' COMMENT '收件人邮箱',
  78. `subject` varchar(255) NOT NULL DEFAULT '' COMMENT '邮件主题',
  79. `template` varchar(255) NOT NULL DEFAULT '' COMMENT '邮件模板',
  80. `array` longtext NOT NULL DEFAULT '{}' COMMENT '模板参数' CHECK (json_valid(`array`)),
  81. `time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '添加时间',
  82. PRIMARY KEY (`id`)
  83. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  84. CREATE TABLE `gift_card` (
  85. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '礼品卡ID',
  86. `card` text NOT NULL DEFAULT '' COMMENT '卡号',
  87. `balance` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '余额',
  88. `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  89. `status` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '使用状态',
  90. `use_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '使用时间',
  91. `use_user` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '使用用户',
  92. PRIMARY KEY (`id`),
  93. KEY `id` (`id`),
  94. KEY `status` (`status`)
  95. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  96. CREATE TABLE `hourly_usage` (
  97. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  98. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  99. `date` date NOT NULL DEFAULT 0 COMMENT '记录日期',
  100. `usage` longtext NOT NULL DEFAULT '{}' COMMENT '流量用量' CHECK (json_valid(`usage`)),
  101. PRIMARY KEY (`id`),
  102. KEY `user_id` (`user_id`),
  103. KEY `date` (`date`)
  104. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  105. CREATE TABLE `invoice` (
  106. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '账单ID',
  107. `type` varchar(255) NOT NULL DEFAULT 'product' COMMENT '类型',
  108. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '归属用户ID',
  109. `order_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '订单ID',
  110. `content` longtext NOT NULL DEFAULT '{}' COMMENT '账单内容' CHECK (json_valid(`content`)),
  111. `price` decimal(12,2) unsigned NOT NULL DEFAULT 0 COMMENT '账单金额',
  112. `status` varchar(255) NOT NULL DEFAULT '' COMMENT '账单状态',
  113. `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  114. `update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
  115. `pay_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '支付时间',
  116. PRIMARY KEY (`id`),
  117. KEY `id` (`id`),
  118. KEY `type` (`type`),
  119. KEY `user_id` (`user_id`),
  120. KEY `order_id` (`order_id`),
  121. KEY `status` (`status`)
  122. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  123. CREATE TABLE `link` (
  124. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  125. `token` varchar(255) NOT NULL DEFAULT '' COMMENT '订阅token',
  126. `userid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  127. PRIMARY KEY (`id`),
  128. UNIQUE KEY `token` (`token`),
  129. UNIQUE KEY `userid` (`userid`)
  130. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  131. CREATE TABLE `login_ip` (
  132. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  133. `userid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  134. `ip` varchar(255) NOT NULL DEFAULT '' COMMENT '登录IP',
  135. `datetime` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '登录时间',
  136. `type` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '登录类型',
  137. PRIMARY KEY (`id`),
  138. KEY `userid` (`userid`),
  139. KEY `type` (`type`)
  140. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  141. CREATE TABLE `node` (
  142. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '节点ID',
  143. `name` varchar(255) NOT NULL DEFAULT '' COMMENT '节点名称',
  144. `type` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '节点启用',
  145. `server` varchar(255) NOT NULL DEFAULT '' COMMENT '节点地址',
  146. `custom_config` longtext NOT NULL DEFAULT '{}' COMMENT '自定义配置' CHECK (json_valid(`custom_config`)),
  147. `sort` tinyint(2) unsigned NOT NULL DEFAULT 14 COMMENT '节点类型',
  148. `traffic_rate` decimal(5,2) unsigned NOT NULL DEFAULT 1 COMMENT '流量倍率',
  149. `is_dynamic_rate` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否启用动态流量倍率',
  150. `dynamic_rate_type` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '动态流量倍率计算方式',
  151. `dynamic_rate_config` longtext NOT NULL DEFAULT '{}' COMMENT '动态流量倍率配置' CHECK (json_valid(`custom_config`)),
  152. `node_class` smallint(5) unsigned NOT NULL DEFAULT 0 COMMENT '节点等级',
  153. `node_speedlimit` smallint(6) unsigned NOT NULL DEFAULT 0 COMMENT '节点限速',
  154. `node_bandwidth` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '节点流量',
  155. `node_bandwidth_limit` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '节点流量限制',
  156. `bandwidthlimit_resetday` tinyint(2) unsigned NOT NULL DEFAULT 0 COMMENT '流量重置日',
  157. `node_heartbeat` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '节点心跳',
  158. `online_user` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '节点在线用户',
  159. `ipv4` inet4 NOT NULL DEFAULT '127.0.0.1' COMMENT 'IPv4地址',
  160. `ipv6` inet6 NOT NULL DEFAULT '::1' COMMENT 'IPv6地址',
  161. `node_group` smallint(5) unsigned NOT NULL DEFAULT 0 COMMENT '节点群组',
  162. `online` tinyint(1) NOT NULL DEFAULT 1 COMMENT '在线状态',
  163. `gfw_block` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否被GFW封锁',
  164. `password` varchar(255) NOT NULL DEFAULT '' COMMENT '后端连接密码',
  165. PRIMARY KEY (`id`),
  166. UNIQUE KEY `password` (`password`),
  167. KEY `type` (`type`),
  168. KEY `sort` (`sort`),
  169. KEY `is_dynamic_rate` (`is_dynamic_rate`),
  170. KEY `node_class` (`node_class`),
  171. KEY `bandwidthlimit_resetday` (`bandwidthlimit_resetday`),
  172. KEY `node_group` (`node_group`),
  173. KEY `online` (`online`)
  174. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  175. CREATE TABLE `online_log` (
  176. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  177. `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  178. `ip` inet6 NOT NULL COMMENT 'IP地址',
  179. `node_id` int(11) unsigned NOT NULL COMMENT '节点ID',
  180. `first_time` int(11) unsigned NOT NULL COMMENT '首次在线时间',
  181. `last_time` int(11) unsigned NOT NULL COMMENT '最后在线时间',
  182. PRIMARY KEY (`id`),
  183. UNIQUE KEY (`user_id`, `ip`),
  184. KEY `node_id` (`node_id`),
  185. KEY `last_time` (`last_time`)
  186. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  187. CREATE TABLE `order` (
  188. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  189. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '提交用户ID',
  190. `product_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '商品ID',
  191. `product_type` varchar(255) NOT NULL DEFAULT '' COMMENT '商品类型',
  192. `product_name` varchar(255) NOT NULL DEFAULT '' COMMENT '商品名称',
  193. `product_content` longtext NOT NULL DEFAULT '{}' COMMENT '商品内容' CHECK (json_valid(`product_content`)),
  194. `coupon` varchar(255) NOT NULL DEFAULT '' COMMENT '订单优惠码',
  195. `price` decimal(12,2) unsigned NOT NULL DEFAULT 0 COMMENT '订单金额',
  196. `status` varchar(255) NOT NULL DEFAULT '' COMMENT '订单状态',
  197. `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  198. `update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
  199. PRIMARY KEY (`id`),
  200. KEY `id` (`id`),
  201. KEY `user_id` (`user_id`),
  202. KEY `product_id` (`product_id`),
  203. KEY `product_type` (`product_type`),
  204. KEY `status` (`status`)
  205. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  206. CREATE TABLE `payback` (
  207. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  208. `total` decimal(12,2) unsigned NOT NULL DEFAULT 0 COMMENT '总金额',
  209. `userid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  210. `ref_by` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '推荐人ID',
  211. `ref_get` decimal(12,2) unsigned NOT NULL DEFAULT 0 COMMENT '推荐人获得金额',
  212. `invoice_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账单ID',
  213. `datetime` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  214. PRIMARY KEY (`id`),
  215. KEY `userid` (`userid`),
  216. KEY `ref_by` (`ref_by`),
  217. KEY `invoice_id` (`invoice_id`)
  218. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  219. CREATE TABLE `paylist` (
  220. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  221. `userid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  222. `total` decimal(12,2) NOT NULL DEFAULT 0 COMMENT '总金额',
  223. `status` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '状态',
  224. `invoice_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账单ID',
  225. `tradeno` varchar(255) NOT NULL DEFAULT '' COMMENT '网关识别码',
  226. `gateway` varchar(255) NOT NULL DEFAULT '' COMMENT '支付网关',
  227. `datetime` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  228. PRIMARY KEY (`id`),
  229. UNIQUE KEY `tradeno` (`tradeno`),
  230. KEY `userid` (`userid`),
  231. KEY `status` (`status`),
  232. KEY `invoice_id` (`invoice_id`)
  233. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  234. CREATE TABLE `product` (
  235. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品ID',
  236. `type` varchar(255) NOT NULL DEFAULT 'tabp' COMMENT '类型',
  237. `name` varchar(255) NOT NULL DEFAULT '' COMMENT '名称',
  238. `price` decimal(12,2) unsigned NOT NULL DEFAULT 0 COMMENT '售价',
  239. `content` longtext NOT NULL DEFAULT '{}' COMMENT '内容' CHECK (json_valid(`content`)),
  240. `limit` longtext NOT NULL DEFAULT '{}' COMMENT '购买限制' CHECK (json_valid(`limit`)),
  241. `status` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '销售状态',
  242. `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  243. `update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
  244. `sale_count` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '累计销量',
  245. `stock` int(11) NOT NULL DEFAULT -1 COMMENT '库存',
  246. PRIMARY KEY (`id`),
  247. KEY `id` (`id`),
  248. KEY `type` (`type`),
  249. KEY `status` (`status`)
  250. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  251. CREATE TABLE `syslog` (
  252. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  253. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '触发用户',
  254. `ip` varchar(255) NOT NULL DEFAULT '' COMMENT '触发IP',
  255. `message` varchar(1024) NOT NULL DEFAULT '' COMMENT '日志内容',
  256. `level` tinyint(3) unsigned NOT NULL DEFAULT 100 COMMENT '日志等级',
  257. `context` longtext NOT NULL DEFAULT '{}' COMMENT '日志内容' CHECK (json_valid(`context`)),
  258. `channel` varchar(255) NOT NULL DEFAULT '' COMMENT '日志类别',
  259. `datetime` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '记录时间',
  260. PRIMARY KEY (`id`),
  261. KEY `user_id` (`user_id`),
  262. KEY `ip` (`ip`),
  263. KEY `message` (`message`),
  264. KEY `level` (`level`),
  265. KEY `channel` (`channel`),
  266. KEY `datetime` (`datetime`)
  267. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  268. CREATE TABLE `subscribe_log` (
  269. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  270. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  271. `type` varchar(255) NOT NULL DEFAULT '' COMMENT '获取的订阅类型',
  272. `request_ip` varchar(255) NOT NULL DEFAULT '' COMMENT '请求IP',
  273. `request_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '请求时间',
  274. `request_user_agent` varchar(1024) NOT NULL DEFAULT '' COMMENT '请求UA',
  275. PRIMARY KEY (`id`),
  276. KEY `user_id` (`user_id`),
  277. KEY `type` (`type`),
  278. KEY `request_ip` (`request_ip`),
  279. KEY `request_time` (`request_time`),
  280. KEY `request_user_agent` (`request_user_agent`)
  281. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  282. CREATE TABLE `ticket` (
  283. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '工单ID',
  284. `title` varchar(255) NOT NULL DEFAULT '' COMMENT '工单标题',
  285. `content` longtext NOT NULL DEFAULT '{}' COMMENT '工单内容' CHECK (json_valid(`content`)),
  286. `userid` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  287. `status` varchar(255) NOT NULL DEFAULT '' COMMENT '工单状态',
  288. `type` varchar(255) NOT NULL DEFAULT '' COMMENT '工单类型',
  289. `datetime` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  290. PRIMARY KEY (`id`),
  291. KEY `userid` (`userid`),
  292. KEY `status` (`status`),
  293. KEY `type` (`type`)
  294. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  295. CREATE TABLE `user` (
  296. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  297. `user_name` varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
  298. `email` varchar(255) NOT NULL COMMENT '用户Email',
  299. `pass` varchar(255) NOT NULL COMMENT '登录密码',
  300. `passwd` varchar(255) NOT NULL COMMENT '连接密码',
  301. `uuid` uuid NOT NULL COMMENT 'UUID',
  302. `u` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账户当前上传流量',
  303. `d` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账户当前下载流量',
  304. `transfer_today` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账户今日所用流量',
  305. `transfer_total` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账户累计使用流量',
  306. `transfer_enable` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '账户当前可用流量',
  307. `port` smallint(6) unsigned NOT NULL COMMENT '端口',
  308. `last_detect_ban_time` datetime NOT NULL DEFAULT '1989-06-04 00:05:00' COMMENT '最后一次被封禁的时间',
  309. `all_detect_number` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '累计违规次数',
  310. `last_use_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '最后使用时间',
  311. `last_check_in_time` int(11) unsigned DEFAULT 0 COMMENT '最后签到时间',
  312. `last_login_time` int(11) unsigned DEFAULT 0 COMMENT '最后登录时间',
  313. `reg_date` datetime NOT NULL DEFAULT '1989-06-04 00:05:00' COMMENT '注册时间',
  314. `money` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '账户余额',
  315. `ref_by` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '邀请人ID',
  316. `method` varchar(255) NOT NULL DEFAULT 'aes-128-gcm' COMMENT '加密方式',
  317. `reg_ip` varchar(255) NOT NULL DEFAULT '127.0.0.1' COMMENT '注册IP',
  318. `node_speedlimit` smallint(6) unsigned NOT NULL DEFAULT 0 COMMENT '用户限速',
  319. `node_iplimit` smallint(6) unsigned NOT NULL DEFAULT 0 COMMENT '同时可连接IP数',
  320. `is_admin` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否管理员',
  321. `im_type` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT '联系方式类型',
  322. `im_value` varchar(255) NOT NULL DEFAULT '' COMMENT '联系方式',
  323. `contact_method` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT '偏好的联系方式',
  324. `daily_mail_enable` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '每日报告开关',
  325. `class` smallint(5) unsigned NOT NULL DEFAULT 0 COMMENT '等级',
  326. `class_expire` datetime NOT NULL DEFAULT '1989-06-04 00:05:00' COMMENT '等级过期时间',
  327. `theme` varchar(255) NOT NULL DEFAULT 'tabler' COMMENT '网站主题',
  328. `ga_token` varchar(255) NOT NULL DEFAULT '' COMMENT 'GA密钥',
  329. `ga_enable` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT 'GA开关',
  330. `remark` text NOT NULL DEFAULT '' COMMENT '备注',
  331. `node_group` smallint(6) unsigned NOT NULL DEFAULT 0 COMMENT '节点分组',
  332. `is_banned` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否封禁',
  333. `banned_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '封禁理由',
  334. `is_shadow_banned` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否处于账户异常状态',
  335. `expire_notified` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '过期提醒',
  336. `traffic_notified` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '流量提醒',
  337. `auto_reset_day` smallint(6) unsigned NOT NULL DEFAULT 0 COMMENT '自动重置流量日',
  338. `auto_reset_bandwidth` decimal(12,2) unsigned NOT NULL DEFAULT 0 COMMENT '自动重置流量',
  339. `api_token` varchar(255) NOT NULL DEFAULT '' COMMENT 'API 密钥',
  340. `is_dark_mode` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否启用暗黑模式',
  341. `is_inactive` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否处于闲置状态',
  342. `locale` varchar(16) NOT NULL DEFAULT 'zh-TW' COMMENT '显示语言',
  343. PRIMARY KEY (`id`),
  344. UNIQUE KEY `email` (`email`),
  345. UNIQUE KEY `passwd` (`passwd`),
  346. UNIQUE KEY `uuid` (`uuid`),
  347. UNIQUE KEY `ga_token` (`ga_token`),
  348. UNIQUE KEY `api_token` (`api_token`),
  349. KEY `is_admin` (`is_admin`),
  350. KEY `contact_method` (`contact_method`),
  351. KEY `class` (`class`),
  352. KEY `class_expire` (`class_expire`),
  353. KEY `node_group` (`node_group`),
  354. KEY `is_banned` (`is_banned`),
  355. KEY `is_shadow_banned` (`is_shadow_banned`),
  356. KEY `is_inactive` (`is_inactive`)
  357. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  358. CREATE TABLE `user_coupon` (
  359. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '优惠码ID',
  360. `code` varchar(255) NOT NULL DEFAULT '' COMMENT '优惠码',
  361. `content` longtext NOT NULL DEFAULT '{}' COMMENT '优惠码内容' CHECK (json_valid(`content`)),
  362. `limit` longtext NOT NULL DEFAULT '{}' COMMENT '优惠码限制' CHECK (json_valid(`limit`)),
  363. `use_count` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '累计使用次数',
  364. `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  365. `expire_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '过期时间',
  366. PRIMARY KEY (`id`),
  367. UNIQUE KEY `code` (`code`),
  368. KEY `expire_time` (`expire_time`)
  369. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  370. CREATE TABLE `user_invite_code` (
  371. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  372. `code` varchar(255) NOT NULL DEFAULT '' COMMENT '邀请码',
  373. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  374. PRIMARY KEY (`id`),
  375. UNIQUE KEY `code` (`code`),
  376. UNIQUE KEY `user_id` (`user_id`)
  377. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  378. CREATE TABLE `user_money_log` (
  379. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  380. `user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '用户ID',
  381. `before` decimal(12,2) NOT NULL DEFAULT 0 COMMENT '用户变动前账户余额',
  382. `after` decimal(12,2) NOT NULL DEFAULT 0 COMMENT '用户变动后账户余额',
  383. `amount` decimal(12,2) NOT NULL DEFAULT 0 COMMENT '变动总额',
  384. `remark` text NOT NULL DEFAULT '' COMMENT '备注',
  385. `create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
  386. PRIMARY KEY (`id`),
  387. KEY `user_id` (`user_id`)
  388. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"
  389. );
  390. return 2023020100;
  391. }
  392. public function down(): int
  393. {
  394. return 2023020100;
  395. }
  396. };