-- ============================================================================= -- R-001:用户主档字段级变更审计(与《用户主档与薪酬考勤改造记录》R-001 详细设计一致) -- 说明: -- 1. 主键 F_Id 须由应用层 YitIdHelper.NextId().ToString() 生成,勿在 MySQL 内调用 C#。 -- 2. 与 BASE_USER 更新同事务插入;敏感字段禁止明文写入 F_OldValue/F_NewValue。 -- 3. 多租户:与 BASE_USER 一致走 SqlSugar Tenant。 -- ============================================================================= CREATE TABLE IF NOT EXISTS `lq_user_profile_audit` ( `F_Id` varchar(50) NOT NULL COMMENT '主键', `F_TargetUserId` varchar(50) NOT NULL COMMENT '被变更用户 BASE_USER.F_Id', `F_OperatorUserId` varchar(64) DEFAULT NULL COMMENT '操作人用户ID', `F_OperatorUserName` varchar(128) DEFAULT NULL COMMENT '操作人姓名(冗余)', `F_OperateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', `F_Action` varchar(64) NOT NULL COMMENT '操作类型,见改造文档枚举:PROFILE_UPDATE/PROFILE_CREATE/PROFILE_DELETE_SOFT/ENABLE_TOGGLE/ADMIN_RESET_PASSWORD/CURRENT_MODIFY_PASSWORD/CURRENT_BASE_INFO/CURRENT_THEME/CURRENT_LANGUAGE/CURRENT_AVATAR/RELATION_BATCH_POSITION/RELATION_BATCH_ROLE 等', `F_BatchId` varchar(50) DEFAULT NULL COMMENT '同一次请求批次ID(UUID),多字段同一保存共用', `F_FieldKey` varchar(64) NOT NULL COMMENT '属性名(与 UserEntity 一致),如 Mdid、OrganizeId、Gw;密码行为 Password;元事件可用 __META__', `F_FieldLabel` varchar(64) DEFAULT NULL COMMENT '中文展示名', `F_OldValue` text COMMENT '变更前原始值(敏感字段脱敏或占位符)', `F_NewValue` text COMMENT '变更后', `F_Source` varchar(32) NOT NULL DEFAULT 'API' COMMENT 'API/OAUTH/RELATION_SERVICE/PORTAL/BATCH_IMPORT/SYSTEM', `F_ClientIp` varchar(64) DEFAULT NULL COMMENT '客户端 IP(可选)', `F_UserAgent` varchar(500) DEFAULT NULL COMMENT 'UA(可选,截断)', `F_Remark` varchar(500) DEFAULT NULL COMMENT '备注(如失败回滚说明、导入批次号)', PRIMARY KEY (`F_Id`), KEY `IX_lq_user_profile_audit_Target_Time` (`F_TargetUserId`,`F_OperateTime`), KEY `IX_lq_user_profile_audit_Batch` (`F_BatchId`), KEY `IX_lq_user_profile_audit_Operator_Time` (`F_OperatorUserId`,`F_OperateTime`), KEY `IX_lq_user_profile_audit_Action_Time` (`F_Action`,`F_OperateTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户主档字段级变更审计'; -- ----------------------------------------------------------------------------- -- 若线上已按旧版脚本建表(无 F_Action/F_ClientIp 等),可手工执行(列已存在则跳过): -- ALTER TABLE `lq_user_profile_audit` ADD COLUMN `F_Action` varchar(64) NOT NULL DEFAULT 'PROFILE_UPDATE' COMMENT '操作类型' AFTER `F_OperateTime`; -- ……按详细设计逐列补充并调整 NOT NULL 默认值策略。 -- ----------------------------------------------------------------------------- -- 可选方案 B:复用 lq_business_operation_log(不写本表),见改造文档「方案 B」。 -- ALTER TABLE `lq_business_operation_log` -- ADD KEY `IX_lq_business_operation_log_Biz_Time` (`F_BizType`,`F_BizId`,`F_OperateTime`);