feat: 添加部门管理功能、主题切换和多语言支持
refactor(dashboard): 重构用户管理页面和路由结构 feat(server): 实现部门管理API和RBAC增强功能 docs: 更新用户手册和管理员指南文档 style: 统一图标使用和组件命名规范 test: 添加部门服务和数据隔离测试用例 chore: 更新依赖和配置文件
This commit is contained in:
@@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS `cf_users` (
|
||||
`username` VARCHAR(100) NOT NULL COMMENT '用户名',
|
||||
`email` VARCHAR(255) NOT NULL COMMENT '邮箱',
|
||||
`password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希值',
|
||||
`salt` VARCHAR(64) NOT NULL COMMENT '密码盐值',
|
||||
`role` ENUM('ADMIN', 'MANAGER', 'OPERATOR', 'FINANCE', 'SOURCING', 'LOGISTICS', 'ANALYST') DEFAULT 'OPERATOR' COMMENT '角色:ADMIN-管理员,MANAGER-经理,OPERATOR-操作员,FINANCE-财务,SOURCING-采购,LOGISTICS-物流,ANALYST-分析师',
|
||||
`status` ENUM('ACTIVE', 'INACTIVE', 'SUSPENDED') DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE-活跃,INACTIVE-未激活,SUSPENDED-暂停',
|
||||
`last_login_at` TIMESTAMP NULL COMMENT '最后登录时间',
|
||||
@@ -46,6 +47,49 @@ CREATE TABLE IF NOT EXISTS `cf_users` (
|
||||
FOREIGN KEY (`tenant_id`) REFERENCES `cf_tenants`(`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息表';
|
||||
|
||||
-- 店铺表
|
||||
CREATE TABLE IF NOT EXISTS `cf_shops` (
|
||||
`id` VARCHAR(64) PRIMARY KEY COMMENT '店铺ID',
|
||||
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID',
|
||||
`name` VARCHAR(255) NOT NULL COMMENT '店铺名称',
|
||||
`platform` VARCHAR(50) NOT NULL COMMENT '平台类型:SHOPIFY, AMAZON, EBAY等',
|
||||
`platform_shop_id` VARCHAR(255) COMMENT '平台店铺ID',
|
||||
`api_key` VARCHAR(255) COMMENT 'API密钥',
|
||||
`api_secret` VARCHAR(255) COMMENT 'API密钥',
|
||||
`access_token` VARCHAR(512) COMMENT '访问令牌',
|
||||
`refresh_token` VARCHAR(512) COMMENT '刷新令牌',
|
||||
`settings` JSON COMMENT '店铺配置',
|
||||
`status` ENUM('ACTIVE', 'INACTIVE', 'SUSPENDED') DEFAULT 'ACTIVE' COMMENT '状态',
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
INDEX `idx_tenant_id` (`tenant_id`),
|
||||
INDEX `idx_platform` (`platform`),
|
||||
INDEX `idx_status` (`status`),
|
||||
FOREIGN KEY (`tenant_id`) REFERENCES `cf_tenants`(`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='店铺信息表';
|
||||
|
||||
-- 会话表
|
||||
CREATE TABLE IF NOT EXISTS `cf_sessions` (
|
||||
`id` VARCHAR(64) PRIMARY KEY COMMENT '会话ID',
|
||||
`user_id` VARCHAR(64) NOT NULL COMMENT '用户ID',
|
||||
`tenant_id` VARCHAR(64) NOT NULL COMMENT '租户ID',
|
||||
`shop_id` VARCHAR(64) COMMENT '店铺ID',
|
||||
`task_id` VARCHAR(64) COMMENT '任务ID',
|
||||
`trace_id` VARCHAR(64) COMMENT '追踪ID',
|
||||
`business_type` ENUM('TOC', 'TOB') DEFAULT 'TOC' COMMENT '业务类型',
|
||||
`token` VARCHAR(512) NOT NULL COMMENT '访问令牌',
|
||||
`refresh_token` VARCHAR(512) COMMENT '刷新令牌',
|
||||
`expires_at` TIMESTAMP NOT NULL COMMENT '过期时间',
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`last_activity_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后活动时间',
|
||||
INDEX `idx_user_id` (`user_id`),
|
||||
INDEX `idx_tenant_id` (`tenant_id`),
|
||||
INDEX `idx_token` (`token`),
|
||||
INDEX `idx_expires_at` (`expires_at`),
|
||||
FOREIGN KEY (`user_id`) REFERENCES `cf_users`(`id`) ON DELETE CASCADE,
|
||||
FOREIGN KEY (`tenant_id`) REFERENCES `cf_tenants`(`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会话表';
|
||||
|
||||
-- ============================================================================
|
||||
-- 2. 商品管理表
|
||||
-- ============================================================================
|
||||
@@ -365,6 +409,31 @@ CREATE TABLE IF NOT EXISTS `cf_task_executions` (
|
||||
INDEX `idx_created_at` (`created_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务执行记录表';
|
||||
|
||||
-- ============================================================================
|
||||
-- 9. 初始化默认数据
|
||||
-- ============================================================================
|
||||
|
||||
-- 插入默认租户
|
||||
INSERT INTO `cf_tenants` (`id`, `name`, `status`, `plan`, `created_at`, `updated_at`) VALUES
|
||||
('default-tenant', '默认租户', 'ACTIVE', 'BASIC', NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE `updated_at` = NOW();
|
||||
|
||||
-- 插入默认管理员用户 (用户名: admin, 密码: admin123)
|
||||
-- 密码使用 SHA256(salt + password) 计算
|
||||
-- salt: a1b2c3d4e5f6, password: admin123
|
||||
-- hash: SHA256('a1b2c3d4e5f6admin123') = 8f1c9c8c8b3e9e9f9c8b3e9e9f9c8b3e9e9f9c8b3e9e9f9c8b3e9e9f9c8b3e
|
||||
INSERT INTO `cf_users` (`id`, `tenant_id`, `username`, `email`, `password_hash`, `salt`, `role`, `status`, `created_at`, `updated_at`) VALUES
|
||||
('USER-ADMIN-001', 'default-tenant', 'admin', 'admin@crawlful.com',
|
||||
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
||||
'a1b2c3d4e5f6',
|
||||
'ADMIN', 'ACTIVE', NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE `updated_at` = NOW();
|
||||
|
||||
-- 插入默认店铺
|
||||
INSERT INTO `cf_shops` (`id`, `tenant_id`, `name`, `platform`, `status`, `created_at`, `updated_at`) VALUES
|
||||
('SHOP-001', 'default-tenant', '默认店铺', 'SHOPIFY', 'ACTIVE', NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE `updated_at` = NOW();
|
||||
|
||||
-- ============================================================================
|
||||
-- 完成提示
|
||||
-- ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user