-- KaMiXiTong MySQL 数据库初始化脚本 -- 创建所有数据表结构 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for admin -- ---------------------------- DROP TABLE IF EXISTS `admin`; CREATE TABLE `admin` ( `admin_id` int NOT NULL AUTO_INCREMENT COMMENT '管理员ID', `username` varchar(32) NOT NULL COMMENT '用户名', `password_hash` varchar(128) NOT NULL COMMENT '密码哈希', `email` varchar(64) DEFAULT NULL COMMENT '邮箱', `role` int NOT NULL DEFAULT '0' COMMENT '角色: 0=普通管理员, 1=超级管理员', `status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=正常', `is_deleted` int NOT NULL DEFAULT '0' COMMENT '软删除: 0=未删除, 1=已删除', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', `last_login_ip` varchar(32) DEFAULT NULL COMMENT '最后登录IP', PRIMARY KEY (`admin_id`), UNIQUE KEY `uk_username` (`username`), KEY `idx_username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员表'; -- ---------------------------- -- Table structure for product -- ---------------------------- DROP TABLE IF EXISTS `product`; CREATE TABLE `product` ( `product_id` varchar(32) NOT NULL COMMENT '产品ID', `product_name` varchar(64) NOT NULL COMMENT '产品名称', `description` text COMMENT '产品描述', `image_path` varchar(255) DEFAULT NULL COMMENT '产品图片路径', `status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=启用', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品表'; -- ---------------------------- -- Table structure for version -- ---------------------------- DROP TABLE IF EXISTS `version`; CREATE TABLE `version` ( `version_id` int NOT NULL AUTO_INCREMENT COMMENT '版本ID', `product_id` varchar(32) NOT NULL COMMENT '产品ID', `version_num` varchar(16) NOT NULL COMMENT '版本号', `platform` varchar(32) DEFAULT NULL COMMENT '平台信息', `description` text COMMENT '版本描述', `update_log` text COMMENT '更新日志', `download_url` varchar(255) DEFAULT NULL COMMENT '下载地址', `min_license_version` varchar(16) DEFAULT NULL COMMENT '最低兼容卡密版本', `force_update` int NOT NULL DEFAULT '0' COMMENT '强制更新: 0=否, 1=是', `download_status` int NOT NULL DEFAULT '1' COMMENT '下载状态: 0=禁用, 1=启用', `publish_status` int NOT NULL DEFAULT '0' COMMENT '发布状态: 0=草稿, 1=已发布, 2=已回滚', `file_hash` varchar(64) DEFAULT NULL COMMENT '文件SHA256哈希值', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`version_id`), UNIQUE KEY `uk_product_version` (`product_id`,`version_num`), CONSTRAINT `fk_version_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='版本表'; -- ---------------------------- -- Table structure for license -- ---------------------------- DROP TABLE IF EXISTS `license`; CREATE TABLE `license` ( `license_id` int NOT NULL AUTO_INCREMENT COMMENT '卡密ID', `license_key` varchar(35) NOT NULL COMMENT '卡密(格式:XXXX-XXXX-XXXX-XXXX)', `product_id` varchar(32) NOT NULL COMMENT '产品ID', `type` int NOT NULL DEFAULT '1' COMMENT '类型: 0=试用, 1=正式', `status` int NOT NULL DEFAULT '0' COMMENT '状态: 0=未激活, 1=已激活, 2=已过期, 3=已禁用', `valid_days` int NOT NULL COMMENT '有效期(天,-1=永久)', `bind_machine_code` varchar(64) DEFAULT NULL COMMENT '绑定的机器码', `activate_time` datetime DEFAULT NULL COMMENT '激活时间', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', `last_verify_time` datetime DEFAULT NULL COMMENT '最后验证时间', `unbind_count` int DEFAULT '0' COMMENT '解绑次数', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`license_id`), UNIQUE KEY `uk_license_key` (`license_key`), KEY `idx_license_key` (`license_key`), KEY `idx_product_id` (`product_id`), CONSTRAINT `fk_license_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='卡密表'; -- ---------------------------- -- Table structure for device -- ---------------------------- DROP TABLE IF EXISTS `device`; CREATE TABLE `device` ( `device_id` int NOT NULL AUTO_INCREMENT COMMENT '设备ID', `machine_code` varchar(64) NOT NULL COMMENT '机器码', `license_id` int DEFAULT NULL COMMENT '卡密ID', `product_id` varchar(32) NOT NULL COMMENT '产品ID', `software_version` varchar(16) DEFAULT NULL COMMENT '软件版本', `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址', `status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=正常', `activate_time` datetime DEFAULT NULL COMMENT '激活时间', `last_verify_time` datetime DEFAULT NULL COMMENT '最后验证时间', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`device_id`), UNIQUE KEY `uk_machine_code` (`machine_code`), KEY `idx_machine_code` (`machine_code`), KEY `idx_license_id` (`license_id`), KEY `idx_product_id` (`product_id`), CONSTRAINT `fk_device_license` FOREIGN KEY (`license_id`) REFERENCES `license` (`license_id`) ON DELETE SET NULL, CONSTRAINT `fk_device_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备表'; -- ---------------------------- -- Table structure for ticket -- ---------------------------- DROP TABLE IF EXISTS `ticket`; CREATE TABLE `ticket` ( `ticket_id` int NOT NULL AUTO_INCREMENT COMMENT '工单ID', `title` varchar(128) NOT NULL COMMENT '标题', `product_id` varchar(32) NOT NULL COMMENT '产品ID', `software_version` varchar(16) DEFAULT NULL COMMENT '软件版本', `machine_code` varchar(64) DEFAULT NULL COMMENT '机器码', `license_key` varchar(32) DEFAULT NULL COMMENT '卡密', `description` text NOT NULL COMMENT '描述', `priority` int NOT NULL DEFAULT '1' COMMENT '优先级: 0=低, 1=中, 2=高', `status` int NOT NULL DEFAULT '0' COMMENT '状态: 0=待处理, 1=处理中, 2=已解决, 3=已关闭', `operator` varchar(32) DEFAULT NULL COMMENT '处理人(管理员账号)', `remark` text COMMENT '处理备注', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `resolve_time` datetime DEFAULT NULL COMMENT '解决时间', `close_time` datetime DEFAULT NULL COMMENT '关闭时间', PRIMARY KEY (`ticket_id`), KEY `idx_product_id` (`product_id`), CONSTRAINT `fk_ticket_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工单表'; -- ---------------------------- -- Table structure for audit_log -- ---------------------------- DROP TABLE IF EXISTS `audit_log`; CREATE TABLE `audit_log` ( `log_id` int NOT NULL AUTO_INCREMENT COMMENT '日志ID', `admin_id` int NOT NULL COMMENT '管理员ID', `action` varchar(32) NOT NULL COMMENT '操作类型', `target_type` varchar(32) NOT NULL COMMENT '目标类型', `target_id` varchar(32) DEFAULT NULL COMMENT '目标ID', `details` text COMMENT '操作详情(JSON格式)', `ip_address` varchar(32) DEFAULT NULL COMMENT '操作IP地址', `user_agent` varchar(256) DEFAULT NULL COMMENT '用户代理', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`log_id`), KEY `idx_admin_id` (`admin_id`), KEY `idx_create_time` (`create_time`), CONSTRAINT `fk_audit_log_admin` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审计日志表'; -- ---------------------------- -- Table structure for `order` -- ---------------------------- DROP TABLE IF EXISTS `order`; CREATE TABLE `order` ( `order_id` int NOT NULL AUTO_INCREMENT COMMENT '订单ID', `order_number` varchar(32) NOT NULL COMMENT '订单号', `product_id` varchar(32) NOT NULL COMMENT '产品ID', `package_id` varchar(64) NOT NULL COMMENT '套餐ID', `contact_person` varchar(64) NOT NULL COMMENT '联系人', `phone` varchar(20) NOT NULL COMMENT '手机号', `quantity` int NOT NULL DEFAULT '1' COMMENT '数量', `amount` float NOT NULL COMMENT '金额', `status` int NOT NULL DEFAULT '0' COMMENT '状态: 0=待支付, 1=已支付, 2=已取消, 3=已完成', `payment_method` varchar(20) DEFAULT NULL COMMENT '支付方式', `payment_time` datetime DEFAULT NULL COMMENT '支付时间', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`order_id`), UNIQUE KEY `uk_order_number` (`order_number`), KEY `idx_order_number` (`order_number`), KEY `idx_product_id` (`product_id`), CONSTRAINT `fk_order_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表'; -- ---------------------------- -- Table structure for package -- ---------------------------- DROP TABLE IF EXISTS `package`; CREATE TABLE `package` ( `package_id` varchar(64) NOT NULL COMMENT '套餐ID', `product_id` varchar(32) NOT NULL COMMENT '产品ID', `name` varchar(64) NOT NULL COMMENT '套餐名称', `description` text COMMENT '套餐描述', `price` float NOT NULL COMMENT '价格', `duration` int NOT NULL COMMENT '时长(天)', `max_devices` int NOT NULL DEFAULT '1' COMMENT '最大设备数', `stock` int NOT NULL DEFAULT '-1' COMMENT '库存,-1表示无限', `status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=启用', `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`package_id`), KEY `idx_product_id` (`product_id`), CONSTRAINT `fk_package_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品套餐表'; -- ---------------------------- -- 插入默认管理员账号 -- ---------------------------- INSERT INTO `admin` (`username`, `password_hash`, `email`, `role`, `status`, `create_time`) VALUES ('admin', '$pbkdf2-sha256$29000$N2YMIWQwJjd8Lgh0fDho3w$O.2GhbxpZb8tI1x2O5E0y/QE1Q6j5J6k8v2J3F1x9hQ', 'admin@example.com', 1, 1, NOW()); -- ---------------------------- -- 插入默认产品示例 -- ---------------------------- INSERT INTO `product` (`product_id`, `product_name`, `description`, `status`, `create_time`) VALUES ('PROD_SAMPLE', '示例产品', '这是一个示例产品', 1, NOW()); SET FOREIGN_KEY_CHECKS = 1;