更新若干功能

This commit is contained in:
hero920103 committed 2026-10-21 17:45:50 +08:00
1 parent 892ba5886d
commit 79d5ae6b66
45 files changed
+6755 -38

No files matched your search

@@ -0,0 +1,44 @@
-- =============================================================
-- OA工作日报:删除改为软删除(已建表环境执行)
--
-- 背景:原设计为物理删除(日报被删时同步删除评论),现改为软删除。
-- 日报:is_deleted=0 未删除;删除时写入记录 ID 作为删除批次标记。
-- 评论:is_deleted=0 未删除;删除时置 1。
--
-- 为什么唯一键要加 is_deleted:
-- 原唯一键 (tid, user_id, report_date) 会让「删除后同一天重新填写」与
-- 历史软删记录冲突。把 is_deleted 加入唯一键后,删除时写入记录 ID
-- (每条记录 ID 唯一),同一天可反复「填写→删除→重新填写」。
--
-- 适用:已执行过 create_oa_dailyreport.sql 的环境;
-- 新库直接执行 create_oa_dailyreport.sql 即为软删除结构,无需本脚本。
-- 幂等:重复执行安全。
-- =============================================================
USE `go-platform`;
-- 1) is_deleted 扩为 BIGINT UNSIGNED,用于存放删除批次(记录 ID)。MODIFY 幂等。
ALTER TABLE `yz_backend_oa_daily_report`
MODIFY COLUMN `is_deleted` BIGINT UNSIGNED NOT NULL DEFAULT 0
COMMENT '软删除标记:0=未删除;删除时写入记录ID(避免唯一键冲突)';
-- 2) 唯一键加入 is_deleted(先判断当前索引列,避免重复执行报 1091)
SET @idx_cols := (
SELECT GROUP_CONCAT(`COLUMN_NAME` ORDER BY `SEQ_IN_INDEX`)
FROM `information_schema`.`STATISTICS`
WHERE `TABLE_SCHEMA` = DATABASE()
AND `TABLE_NAME` = 'yz_backend_oa_daily_report'
AND `INDEX_NAME` = 'uk_tid_user_date'
);
SET @ddl := IF(
@idx_cols = 'tid,user_id,report_date,is_deleted',
'SELECT ''uk_tid_user_date 已包含 is_deleted,跳过'' AS msg',
'ALTER TABLE `yz_backend_oa_daily_report` DROP INDEX `uk_tid_user_date`, ADD UNIQUE KEY `uk_tid_user_date` (`tid`, `user_id`, `report_date`, `is_deleted`)'
);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 3) 核对结果
SHOW INDEX FROM `yz_backend_oa_daily_report` WHERE `Key_name` = 'uk_tid_user_date';
SHOW FULL COLUMNS FROM `yz_backend_oa_daily_report` WHERE `Field` = 'is_deleted';