/* Navicat Premium Dump SQL Source Server : localhost Source Server Type : MySQL Source Server Version : 80043 (8.0.43) Source Host : localhost:3306 Source Schema : login_task_db Target Server Type : MySQL Target Server Version : 80043 (8.0.43) File Encoding : 65001 Date: 27/08/2025 15:45:17 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for agent_points_tx -- ---------------------------- DROP TABLE IF EXISTS `agent_points_tx`; CREATE TABLE `agent_points_tx` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `account_id` bigint UNSIGNED NOT NULL, `type` enum('ADD','DEDUCT') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `before_points` bigint UNSIGNED NOT NULL, `delta_points` bigint NOT NULL, `after_points` bigint UNSIGNED NOT NULL, `reason` enum('create_links','manual','refund_no_rollback','other') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'other', `ref_id` bigint UNSIGNED NULL DEFAULT NULL, `operator_id` bigint UNSIGNED NULL DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) USING BTREE, INDEX `idx_apx_account_time`(`account_id` ASC, `created_at` ASC) USING BTREE, INDEX `fk_apx_operator`(`operator_id` ASC) USING BTREE, CONSTRAINT `fk_apx_account` FOREIGN KEY (`account_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_apx_operator` FOREIGN KEY (`operator_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for announcement -- ---------------------------- DROP TABLE IF EXISTS `announcement`; CREATE TABLE `announcement` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `enabled` tinyint(1) NOT NULL DEFAULT 1, `jump_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for link_batch -- ---------------------------- DROP TABLE IF EXISTS `link_batch`; CREATE TABLE `link_batch` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `agent_id` bigint UNSIGNED NOT NULL, `quantity` int UNSIGNED NOT NULL, `times` int UNSIGNED NOT NULL, `operator_id` bigint UNSIGNED NULL DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) USING BTREE, INDEX `idx_lb_agent_time`(`agent_id` ASC, `created_at` ASC) USING BTREE, INDEX `fk_lb_operator`(`operator_id` ASC) USING BTREE, CONSTRAINT `fk_lb_agent` FOREIGN KEY (`agent_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_lb_operator` FOREIGN KEY (`operator_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `chk_lb_quantity_pos` CHECK (`quantity` > 0), CONSTRAINT `chk_lb_times_pos` CHECK (`times` > 0) ) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for link_task -- ---------------------------- DROP TABLE IF EXISTS `link_task`; CREATE TABLE `link_task` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `batch_id` bigint UNSIGNED NOT NULL, `agent_id` bigint UNSIGNED NOT NULL, `code_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `token_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `expire_at` datetime(3) NOT NULL, `status` enum('NEW','USING','LOGGED_IN','COMPLETED','REFUNDED','EXPIRED') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'NEW', `region` enum('Q','V') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `machine_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `login_at` datetime(3) NULL DEFAULT NULL, `refund_at` datetime(3) NULL DEFAULT NULL, `revoked_at` datetime(3) NULL DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), `need_refresh` tinyint(1) NULL DEFAULT 0 COMMENT '是否需要刷新(0否,1是)', `refresh_time` datetime(3) NULL DEFAULT NULL COMMENT '刷新时间', `qr_created_at` datetime(3) NULL DEFAULT NULL COMMENT '二维码创建时间', `qr_expire_at` datetime(3) NULL DEFAULT NULL COMMENT '二维码过期时间', `first_region_select_at` datetime(3) NULL DEFAULT NULL COMMENT '首次选区时间', `completed_points` int UNSIGNED NULL DEFAULT NULL COMMENT '完成时的点数', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_code_no`(`code_no` ASC) USING BTREE, UNIQUE INDEX `uk_token_hash`(`token_hash` ASC) USING BTREE, INDEX `idx_agent_status`(`agent_id` ASC, `status` ASC) USING BTREE, INDEX `idx_expire_at`(`expire_at` ASC) USING BTREE, INDEX `idx_created_at`(`created_at` ASC) USING BTREE, INDEX `fk_lt_batch`(`batch_id` ASC) USING BTREE, INDEX `idx_need_refresh`(`need_refresh` ASC) USING BTREE, INDEX `idx_qr_expire`(`qr_expire_at` ASC) USING BTREE, INDEX `idx_first_region_select`(`first_region_select_at` ASC) USING BTREE, CONSTRAINT `fk_lt_agent` FOREIGN KEY (`agent_id`) REFERENCES `user_account` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_lt_batch` FOREIGN KEY (`batch_id`) REFERENCES `link_batch` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for operation_log -- ---------------------------- DROP TABLE IF EXISTS `operation_log`; CREATE TABLE `operation_log` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `actor_type` enum('admin','agent','system','user') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `actor_id` bigint UNSIGNED NULL DEFAULT NULL, `code_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `op` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `detail` json NULL, `client_ip` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `user_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) USING BTREE, INDEX `idx_log_code_time`(`code_no` ASC, `created_at` ASC) USING BTREE, INDEX `idx_log_time`(`created_at` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for system_config -- ---------------------------- DROP TABLE IF EXISTS `system_config`; CREATE TABLE `system_config` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置键', `config_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置值', `config_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'STRING' COMMENT '配置类型:STRING, INTEGER, BOOLEAN, JSON', `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '配置描述', `is_system` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否系统配置(1是,0否)', `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_config_key`(`config_key` ASC) USING BTREE, INDEX `idx_config_type`(`config_type` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for user_account -- ---------------------------- DROP TABLE IF EXISTS `user_account`; CREATE TABLE `user_account` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `user_type` enum('ADMIN','AGENT') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `password_hash` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `status` enum('ENABLED','DISABLED') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ENABLED', `points_balance` bigint UNSIGNED NOT NULL DEFAULT 0, `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `username`(`username` ASC) USING BTREE, CONSTRAINT `chk_points_nonneg` CHECK (`points_balance` >= 0) ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;