Files
docs/thinkphp/database.sql
cenzuhai 3a04eede84 feat: 初始化进销存数据开放平台项目
初始化完整的前后端项目结构,包含ThinkPHP后端API服务和Next.js前端管理系统,添加基础配置、中间件、模型、路由等核心代码,以及项目文档和静态资源。
2026-07-08 17:48:00 +08:00

104 lines
5.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 进销存数据开放平台 - 数据库表结构
-- 数据库: jc_open_platform
-- ========== 客户表 ==========
CREATE TABLE IF NOT EXISTS `clients` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`client_no` varchar(50) DEFAULT NULL COMMENT '客户序号',
`name` varchar(200) NOT NULL COMMENT '客户名称',
`client_type` varchar(20) NOT NULL COMMENT '客户类型: supplier/distributor/hospital/other',
`contact_person` varchar(100) DEFAULT NULL COMMENT '联系人',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`status` tinyint(1) DEFAULT '1' COMMENT '1=启用 0=禁用',
`remark` text COMMENT '备注',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_client_no` (`client_no`),
KEY `idx_client_type` (`client_type`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='上下游客户表';
-- ========== API密钥表 ==========
CREATE TABLE IF NOT EXISTS `api_keys` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`client_id` bigint(20) unsigned NOT NULL COMMENT '客户ID',
`api_key` varchar(64) NOT NULL COMMENT 'API Key 公开标识',
`api_secret_hash` varchar(256) NOT NULL COMMENT 'API Secret 原始值用于HMAC验证',
`status` tinyint(1) DEFAULT '1' COMMENT '1=启用 0=禁用',
`rate_limit_per_minute` int(11) DEFAULT '60' COMMENT '每分钟限流次数',
`rate_limit_per_day` int(11) DEFAULT '5000' COMMENT '每天限流次数',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_api_key` (`api_key`),
KEY `idx_client_id` (`client_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='API密钥表';
-- ========== 权限配置表 ==========
CREATE TABLE IF NOT EXISTS `permissions` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`api_key_id` bigint(20) unsigned NOT NULL COMMENT 'API Key ID',
`allow_chuku` tinyint(1) DEFAULT '0' COMMENT '是否允许销售接口 1=允许 0=禁止',
`allow_ruku` tinyint(1) DEFAULT '0' COMMENT '是否允许入库接口 1=允许 0=禁止',
`allow_full_data` tinyint(1) DEFAULT '0' COMMENT '是否允许全量数据 1=允许 0=过滤',
`data_mode` varchar(20) DEFAULT 'filter' COMMENT '数据过滤模式: filter=按接口权限过滤, custom=自定义过滤规则, full=全量数据',
`filter_field` varchar(50) DEFAULT NULL COMMENT '过滤字段: 销方全称/供方全称/销方序号/供方序号',
`filter_values` json DEFAULT NULL COMMENT '过滤值 JSON 数组',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_api_key_id` (`api_key_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限配置表';
-- ========== 管理员表 ==========
CREATE TABLE IF NOT EXISTS `admin_users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(255) NOT NULL COMMENT '密码bcrypt加密',
`status` tinyint(1) DEFAULT '1' COMMENT '1=启用 0=禁用',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员表';
-- ========== API调用日志表 ==========
CREATE TABLE IF NOT EXISTS `api_logs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`api_key_id` bigint(20) unsigned NOT NULL COMMENT 'API Key ID',
`client_id` bigint(20) unsigned NOT NULL COMMENT '客户ID',
`endpoint` varchar(100) NOT NULL COMMENT '接口路径',
`request_params` json DEFAULT NULL COMMENT '请求参数',
`response_code` int(11) DEFAULT NULL COMMENT '响应状态码',
`response_body` json DEFAULT NULL COMMENT '响应体摘要',
`record_count` int(11) DEFAULT '0' COMMENT '返回记录数',
`sql_query` text COMMENT '执行的SQL语句',
`duration_ms` int(11) DEFAULT NULL COMMENT '执行耗时(毫秒)',
`ip_address` varchar(50) DEFAULT NULL COMMENT '客户端IP',
`error_message` varchar(500) DEFAULT NULL COMMENT '错误信息',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_api_key_id` (`api_key_id`),
KEY `idx_client_id` (`client_id`),
KEY `idx_endpoint` (`endpoint`),
KEY `idx_created_at` (`created_at`),
KEY `idx_response_code` (`response_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='API调用日志表';
-- ========== 初始化数据 ==========
-- 插入默认管理员(用户名: admin密码: admin123
INSERT INTO `admin_users` (`username`, `password`, `status`) VALUES
('admin', '$2y$10$Kds/RYu23SNPlroW3NnyveSP5Yd2JiYWklgx5zLE5Y/ORYlzi8F52', 1)
ON DUPLICATE KEY UPDATE `id` = `id`;
-- ========== 外键约束 ==========
ALTER TABLE `api_keys`
ADD CONSTRAINT `fk_api_keys_client` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE;
ALTER TABLE `permissions`
ADD CONSTRAINT `fk_permissions_api_key` FOREIGN KEY (`api_key_id`) REFERENCES `api_keys` (`id`) ON DELETE CASCADE;
ALTER TABLE `api_logs`
ADD CONSTRAINT `fk_api_logs_api_key` FOREIGN KEY (`api_key_id`) REFERENCES `api_keys` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_api_logs_client` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE;