-- ============================================ -- 用户模块白名单表 - 创建表 -- ============================================ -- 说明:创建 user_feature_whitelist 表,用于记录用户身份证号对应的feature屏蔽白名单 -- 执行时间:2024-XX-XX -- ============================================ CREATE TABLE `user_feature_whitelist` ( `id` CHAR(36) NOT NULL COMMENT 'UUID主键', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `del_state` tinyint NOT NULL DEFAULT '0' COMMENT '删除状态:0=未删除,1=已删除', `version` bigint NOT NULL DEFAULT '0' COMMENT '版本号(乐观锁)', /* 业务字段 */ `id_card` varchar(50) NOT NULL COMMENT '身份证号(查询对象标识)', `feature_id` CHAR(36) NOT NULL COMMENT 'Feature的UUID', `feature_api_id` varchar(100) NOT NULL COMMENT 'Feature的API标识(冗余字段,方便查询)', `user_id` CHAR(36) NOT NULL COMMENT '操作用户ID(代理的user_id,以后可扩展为普通用户)', `order_id` CHAR(36) DEFAULT NULL COMMENT '关联的查询订单ID(可选,记录来源)', `whitelist_order_id` CHAR(36) DEFAULT NULL COMMENT '关联的白名单订单ID(用于付费)', `amount` decimal(10,2) NOT NULL COMMENT '费用(单位:元)', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1=生效,2=已失效', PRIMARY KEY (`id`), UNIQUE KEY `uk_id_card_feature_id` (`id_card`, `feature_id`, `del_state`) COMMENT '身份证号和feature_id联合唯一索引', UNIQUE KEY `uk_id_card_feature_api_id` (`id_card`, `feature_api_id`, `del_state`) COMMENT '身份证号和feature_api_id联合唯一索引', UNIQUE KEY `uk_whitelist_order_id` (`whitelist_order_id`) COMMENT '白名单订单ID唯一索引', KEY `idx_id_card` (`id_card`) COMMENT '优化按身份证号查询', KEY `idx_feature_id` (`feature_id`) COMMENT '优化按feature查询', KEY `idx_feature_api_id` (`feature_api_id`) COMMENT '优化按API标识查询', KEY `idx_user_id` (`user_id`) COMMENT '优化按用户查询', KEY `idx_status` (`status`) COMMENT '优化按状态查询' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户模块白名单表'; -- ============================================ -- 说明: -- 1. 以身份证号(id_card)+ feature_id 为单位,记录白名单屏蔽关系 -- 2. user_id 使用操作用户的ID(代理的user_id),便于以后扩展为普通用户操作 -- 3. status=1表示生效,status=2表示已失效(可手动失效或系统失效) -- 4. 一旦生效,该身份证号+feature组合永久屏蔽,除非手动失效 -- ============================================