Files
yunzerwebsiteallinone/go/docs/sql/create_oa_dailyreport.sql
2026-10-21 17:45:50 +08:00

67 lines
3.9 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.
-- =============================================================
-- OA 工作日报 —— 表结构
--
-- 对应代码:
-- models/oa_daily_report.go
-- services/oauth/dailyreport_service.go
-- controllers/backend_oa_dailyreport.go(后台 PC 端)
-- controllers/app_oa_dailyreport.go(小程序端)
--
-- 设计要点:
-- 1. 每人每天一条日报,用 (tid, user_id, report_date, is_deleted) 唯一键约束;
-- user_id 存 SystemTenantUser.uid(不是 JWT 里的 identity_id)。
-- 2. 删除为软删除:is_deleted=0 表示未删除;删除时写入记录 ID 作为删除批次标记,
-- 使唯一键在「删除后同一天重新填写」时不与历史软删记录冲突。
-- 评论同步软删除(is_deleted=1)。
-- 3. 同一天允许先存草稿(status=0)后提交(status=1)。
-- 4. 不显式指定 COLLATE,沿用数据库默认排序规则,避免与其他表
-- JOIN 字符串时出现 Illegal mix of collations。
-- =============================================================
SET NAMES utf8mb4;
-- ---------------- 1. 工作日报主表 ----------------
CREATE TABLE IF NOT EXISTS `yz_backend_oa_daily_report` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID',
`user_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '作者uid(yz_system_tenant_user.uid)',
`user_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '作者姓名快照',
`org_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '作者部门ID(yz_backend_organization.id)',
`org_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '部门名称快照',
`report_date` DATE NOT NULL COMMENT '日报日期',
`today_done` TEXT COMMENT '今日完成',
`tomorrow_plan` TEXT COMMENT '明日计划',
`issues` TEXT COMMENT '问题与建议',
`attachments` TEXT COMMENT '附件JSON数组:[{"id":1,"url":"","name":"","size":0}]',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '0草稿 1已提交',
`submit_time` DATETIME DEFAULT NULL COMMENT '提交时间',
`is_deleted` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '软删除标记:0=未删除;删除时写入记录ID(避免唯一键冲突)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`delete_time` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tid_user_date` (`tid`, `user_id`, `report_date`, `is_deleted`),
KEY `idx_tid_date` (`tid`, `report_date`),
KEY `idx_tid_org_date` (`tid`, `org_id`, `report_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA-工作日报';
-- ---------------- 2. 日报评论表 ----------------
-- reply_to_id 指向同表评论ID,用于两级回复(0 表示直接评论日报)。
CREATE TABLE IF NOT EXISTS `yz_backend_oa_daily_report_comment` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID',
`report_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '日报ID',
`user_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '评论人uid',
`user_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '评论人姓名快照',
`content` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '评论内容',
`reply_to_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '回复的评论ID,0=直接评论',
`reply_to_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '被回复人姓名快照',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除标记:0=未删除 1=已删除',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`delete_time` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_report` (`report_id`, `id`),
KEY `idx_tid` (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA-工作日报评论';