274 lines
14 KiB
SQL
274 lines
14 KiB
SQL
-- KaMiXiTong MySQL数据库初始化脚本
|
|
-- 创建所有必要的表结构和初始数据
|
|
|
|
SET NAMES utf8mb4;
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
-- 删除已存在的表(按依赖关系逆序)
|
|
DROP TABLE IF EXISTS `api_key`;
|
|
DROP TABLE IF EXISTS `api_version`;
|
|
DROP TABLE IF EXISTS `api`;
|
|
DROP TABLE IF EXISTS `order`;
|
|
DROP TABLE IF EXISTS `package`;
|
|
DROP TABLE IF EXISTS `audit_log`;
|
|
DROP TABLE IF EXISTS `ticket`;
|
|
DROP TABLE IF EXISTS `device`;
|
|
DROP TABLE IF EXISTS `license`;
|
|
DROP TABLE IF EXISTS `version`;
|
|
DROP TABLE IF EXISTS `product`;
|
|
DROP TABLE IF EXISTS `admin`;
|
|
|
|
-- ----------------------------
|
|
-- Table structure for 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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP 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 `ix_admin_is_deleted` (`is_deleted`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员表';
|
|
|
|
-- ----------------------------
|
|
-- Table structure for 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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`product_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品表';
|
|
|
|
-- ----------------------------
|
|
-- Table structure for 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 '下载URL',
|
|
`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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP 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
|
|
-- ----------------------------
|
|
CREATE TABLE `license` (
|
|
`license_id` int NOT NULL AUTO_INCREMENT COMMENT '卡密ID',
|
|
`license_key` varchar(35) NOT NULL COMMENT '卡密key',
|
|
`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 '有效期(天)',
|
|
`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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`license_id`),
|
|
UNIQUE KEY `uk_license_key` (`license_key`),
|
|
KEY `ix_license_key` (`license_key`),
|
|
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
|
|
-- ----------------------------
|
|
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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`device_id`),
|
|
UNIQUE KEY `uk_machine_code` (`machine_code`),
|
|
KEY `ix_device_machine_code` (`machine_code`),
|
|
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
|
|
-- ----------------------------
|
|
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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
`resolve_time` datetime DEFAULT NULL COMMENT '解决时间',
|
|
`close_time` datetime DEFAULT NULL COMMENT '关闭时间',
|
|
PRIMARY KEY (`ticket_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
|
|
-- ----------------------------
|
|
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 '操作详情',
|
|
`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 `ix_audit_log_admin_id` (`admin_id`),
|
|
KEY `ix_audit_log_action` (`action`),
|
|
KEY `ix_audit_log_create_time` (`create_time`),
|
|
CONSTRAINT `fk_audit_log_admin` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审计日志表';
|
|
|
|
-- ----------------------------
|
|
-- Table structure for 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 '库存',
|
|
`status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=启用',
|
|
`sort_order` int NOT NULL DEFAULT '0' COMMENT '排序',
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`package_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='套餐表';
|
|
|
|
-- ----------------------------
|
|
-- Table structure for 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 CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`order_id`),
|
|
UNIQUE KEY `uk_order_number` (`order_number`),
|
|
KEY `ix_order_order_number` (`order_number`),
|
|
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 api
|
|
-- ----------------------------
|
|
CREATE TABLE `api` (
|
|
`api_id` varchar(32) NOT NULL COMMENT 'API ID',
|
|
`api_name` varchar(64) NOT NULL COMMENT 'API名称',
|
|
`description` text COMMENT '描述',
|
|
`status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=启用',
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`api_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API表';
|
|
|
|
-- ----------------------------
|
|
-- Table structure for api_version
|
|
-- ----------------------------
|
|
CREATE TABLE `api_version` (
|
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
|
`version_num` varchar(32) NOT NULL COMMENT '版本号',
|
|
`api_id` varchar(32) NOT NULL COMMENT 'API ID',
|
|
`description` text COMMENT '描述',
|
|
`publish_status` int NOT NULL DEFAULT '0' COMMENT '发布状态: 0=草稿, 1=已发布',
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `fk_api_version_api` FOREIGN KEY (`api_id`) REFERENCES `api` (`api_id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API版本表';
|
|
|
|
-- ----------------------------
|
|
-- Table structure for api_key
|
|
-- ----------------------------
|
|
CREATE TABLE `api_key` (
|
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
|
`key` varchar(64) NOT NULL COMMENT '密钥',
|
|
`api_id` varchar(32) NOT NULL COMMENT 'API ID',
|
|
`name` varchar(64) NOT NULL COMMENT '名称',
|
|
`description` text COMMENT '描述',
|
|
`status` int NOT NULL DEFAULT '1' COMMENT '状态: 0=禁用, 1=启用',
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_api_key` (`key`),
|
|
KEY `ix_api_key_api_id` (`api_id`),
|
|
CONSTRAINT `fk_api_key_api` FOREIGN KEY (`api_id`) REFERENCES `api` (`api_id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='API密钥表';
|
|
|
|
-- ----------------------------
|
|
-- 插入初始数据
|
|
-- ----------------------------
|
|
|
|
-- 插入默认管理员账户 (admin/admin123)
|
|
INSERT INTO `admin` (`username`, `password_hash`, `email`, `role`, `status`) VALUES
|
|
('admin', '$pbkdf2-sha256$29000$N2aBd1I5Eaz5bYY2CXbu2A$1lEXwDoX9S5slrv0cFHsQ8fAj55m43.1mPbX5f.Ra0U', 'admin@example.com', 1, 1);
|
|
|
|
-- 插入默认产品
|
|
INSERT INTO `product` (`product_id`, `product_name`, `description`, `status`) VALUES
|
|
('PROD_DEFAULT', '默认产品', '系统默认产品', 1);
|
|
|
|
-- 插入默认套餐
|
|
INSERT INTO `package` (`package_id`, `product_id`, `name`, `description`, `price`, `duration`, `max_devices`, `status`) VALUES
|
|
('PKG_DEFAULT', 'PROD_DEFAULT', '默认套餐', '系统默认套餐', 0, 365, 1, 1);
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|